Bug 50664

Summary: Handbook 12.4.1 (CCD) needs work
Product: Documentation Reporter: Murray Stokely <murray>
Component: Books & ArticlesAssignee: Murray Stokely <murray>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Murray Stokely freebsd_committer freebsd_triage 2003-04-07 10:00:31 UTC
The section on Software RAID / CCD in Chapter 12 is unclear, uses the
first person, and includes a lot of irrelevant personal information
about the author.

Fix: 

Rework this chapter to improve clarify and professionalism.
Sorry, no patch at this time. ;)
Comment 1 Jim Brown 2003-04-18 04:06:11 UTC
Hi,

Here is an update of Handbook 12.4.1 (CCD) per docs/50664.

Hope this helps,
jpb
===


Index: chapter.sgml
===================================================================
RCS file: /home/ncvs/doc/en_US.ISO8859-1/books/handbook/disks/chapter.sgml,v
retrieving revision 1.145
diff -u -r1.145 chapter.sgml
--- chapter.sgml	2003/03/26 02:11:55	1.145
+++ chapter.sgml	2003/04/17 21:50:46
@@ -342,57 +342,57 @@
 	    <author>
 	      <firstname>Christopher</firstname>
 	      <surname>Shumway</surname>
-	      <contrib>Written by </contrib>
+	      <contrib>Original work by </contrib>
 	    </author>
 	  </authorgroup>
 	  <authorgroup>
 	    <author>
 	      <firstname>Valentino</firstname>
 	      <surname>Vaschetto</surname>
-	      <contrib>Marked up by </contrib>
+	      <contrib>Original markup by </contrib>
 	    </author>
 	  </authorgroup>
+	  <authorgroup>
+	    <author>
+	      <firstname>Jim</firstname>
+	      <surname>Brown</surname>
+	      <contrib>Revised by </contrib>
+	    </author>
+	  </authorgroup>
 	</sect3info>
 
-	<title>ccd (Concatenated Disk Configuration)</title>
+	<title>Concatenated Disk Driver (CCD) Configuration</title>
 	<para>When choosing a mass storage solution the most important
-	  factors to consider are speed, reliability, and cost.  It is very
-	  rare to have all three in favor; normally a fast, reliable mass
+	  factors to consider are speed, reliability, and cost.  It is 
+	  rare to have all three in balance; normally a fast, reliable mass
 	  storage device is expensive, and to cut back on cost either speed
-	  or reliability must be sacrificed.  In designing my system, I
-	  ranked the requirements by most favorable to least favorable.  In
-	  this situation, cost was the biggest factor.  I needed a lot of
-	  storage for a reasonable price.  The next factor, speed, is not
-	  quite as important, since most of the usage would be over a one
-	  hundred megabit switched Ethernet, and that would most likely be
-	  the bottleneck.  The ability to spread the file input/output
-	  operations out over several disks would be more than enough speed
-	  for this network.  Finally, the consideration of reliability was
-	  an easy one to answer.  All of the data being put on this mass
-	  storage device was already backed up on CD-R's.  This drive was
-	  primarily here for online live storage for easy access, so if a
-	  drive went bad, I could just replace it, rebuild the file system,
-	  and copy back the data from CD-R's.</para>
-
-	<para>To sum it up, I need something that will give me the most
-	  amount of storage space for my money.  The cost of large IDE disks
-	  are cheap these days.  I found a place that was selling Western
-	  Digital 30.7GB 5400 RPM IDE disks for about one-hundred and thirty
-	  US dollars.  I bought three of them, giving me approximately
-	  ninety gigabytes of online storage.</para>
+	  or reliability must be sacrificed.</para>
+
+          <para>In designing the system described below, cost was chosen
+          as  the most important factor, followed by speed, then reliability.
+          Data transfer speed for this system is ulitmately
+          constrained by the network.  And while reliability is very 
important,
+          the CCD drive described below serves online data that is already
+          fully backed up on CD-R's and can easily be replaced.</para>  
+
+          <para>Defining your own requirements is the first step
+          in choosing a mass storage solution.  If your requirements prefer
+          speed or reliability over cost, your solution will differ from
+          the system described in this section.</para>
+
 
 	<sect4 id="ccd-installhw">
 	  <title>Installing the Hardware</title>
 
-	  <para>I installed the hard drives in a system that already
-	    had one IDE disk in as the system disk.  The ideal solution
-	    would be for each IDE disk to have its own IDE controller
-	    and cable, but without fronting more costs to acquire a dual
-	    IDE controller this would not be a possibility.  So, I
-	    jumpered two disks as slaves, and one as master.  One went
-	    on the first IDE controller as a slave to the system disk,
-	    and the other two where slave/master on the secondary IDE
-	    controller.</para>
+	  <para>In addition to the IDE system disk, three Western 
+            Digital 30GB, 5400 RPM IDE disks form the core
+            of the CCD disk described below providing approximately
+	    90GB of online storage.  Ideally,
+	    each IDE disk would have its own IDE controller
+	    and cable, but to minimize cost, additional 
+	    IDE controllers were not used.  Instead the disks were
+	    configured with jumpers so that each IDE controller has
+            one master, and one slave.</para>
 
 	  <para>Upon reboot, the system BIOS was configured to
 	    automatically detect the disks attached.  More importantly,
@@ -403,74 +403,74 @@
 ad2: 29333MB &lt;WDC WD307AA&gt; [59598/16/63] at ata1-master UDMA33
 ad3: 29333MB &lt;WDC WD307AA&gt; [59598/16/63] at ata1-slave 
UDMA33</programlisting>
 
-	  <para>At this point, if FreeBSD does not detect the disks, be
-	    sure that you have jumpered them correctly.  I have heard
-	    numerous reports with problems using cable select instead of
-	    true slave/master configuration.</para>
-
-	  <para>The next consideration was how to attach them as part of
-	    the file system.  I did a little research on &man.vinum.8;
-	      (<xref linkend="vinum-vinum">) and
-	      &man.ccd.4;.  In this particular configuration, &man.ccd.4;
-	    appeared to be a better choice mainly because it has fewer
-	    parts.  Less parts tends to indicate less chance of breakage.
-	    Vinum appears to be a bit of an overkill for my needs.</para>
+	  <para>Note that if FreeBSD does not detect all the disks, ensure that
+	    you have jumpered them correctly.  Most IDE drives also  have a
+            <quote>Cable Select</quote> jumper.  This is 
<emphasis>not</emphasis>
+            the jumper for the master/slave relationship.  Consult the drive
+            documentation for help in identifying the correct jumper.</para>
+
+	  <para>Next, consider how to attach them as part of
+	    the file system.  You should  research both &man.vinum.8;
+	    (<xref linkend="vinum-vinum">) and &man.ccd.4;.  In this 
+            particular configuration, &man.ccd.4; was chosen.</para>
 	</sect4>
 
 	<sect4 id="ccd-setup">
 	  <title>Setting up the CCD</title>
 
-	  <para><application>CCD</application> allows me to take
+	  <para><application>CCD</application> allows you to take
 	    several identical disks and concatenate them into one
 	    logical file system.  In order to use
-	    <application>ccd</application>, I need a kernel with
-	    <application>ccd</application> support built into it.  I
-	    added this line to my kernel configuration file and rebuilt
-	    the kernel:</para>
+	    <application>ccd</application>, you need a kernel with
+	    <application>ccd</application> support built in.
+	    Add this line to your kernel configuration file, rebuild, and 
+	    reinstall the kernel:</para>
 
 	  <programlisting>pseudo-device   ccd     4</programlisting>
 
 	  <note><para>In FreeBSD 5.0, it is not necessary to specify
 	    a number of ccd devices, as the ccd device driver is now
-	    cloning -- new device instances will automatically be
+	    self-cloning -- new device instances will automatically be
 	    created on demand.</para></note>
 
 	  <para><application>ccd</application> support can also be
-	    loaded as a kernel loadable module in FreeBSD 4.0 or
-	    later.</para>
+	    loaded as a kernel loadable module in FreeBSD 3.0 or
+	    later. See &man.ccd.4; for information on loading 
+            <application>ccd</application> as a kernel loadable 
module.</para>
 
-	  <para>To set up <application>ccd</application>, first I need
-	    to disklabel the disks.  Here is how I disklabeled
-	    them:</para>
+	  <para>To set up <application>ccd</application>, you must first use
+	    &man.disklabel.8 to label the disks:</para>
 
 	  <programlisting>disklabel -r -w ad1 auto
 disklabel -r -w ad2 auto
 disklabel -r -w ad3 auto</programlisting>
 
-	  <para>This created a disklabel ad1c, ad2c and ad3c that
+	  <para>This creates a disklabel for ad1c, ad2c and ad3c that
 	    spans the entire disk.</para>
 
-	  <para>The next step is to change the disklabel type.  To do
-	    that I had to edit the disklabel:</para>
+	  <para>The next step is to change the disklabel type.
+	    You can use <application>disklabel</application> to
+            edit the disks:</para>
 
 	  <programlisting>disklabel -e ad1
 disklabel -e ad2
 disklabel -e ad3</programlisting>
 
-	  <para>This opened up the current disklabel on each disk
-	    respectively in whatever editor the <envar>EDITOR</envar>
-	    environment variable was set to, in my case, &man.vi.1;.
-	    Inside the editor I had a section like this:</para>
+	  <para>This openes up the current disklabel on each disk
+	    with the editor specified by the <envar>EDITOR</envar>
+	    environment variable, typically &man.vi.1;.</para>
 
+	    <para>An unmodified disklabel will look something like this:</para>
+
 	  <programlisting>8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 
59597)</programlisting>
 
-	  <para>I needed to add a new "e" partition for &man.ccd.4; to
-	    use. This usually can be copied of the "c" partition, but
-	    the <option>fstype</option> must be <userinput>4.2BSD</userinput>.
-	    Once I was done,
-	    my disklabel should look like this:</para>
+	  <para>Add a new "e" partition for &man.ccd.4; to
+	    use. This can usually be copied from the <quote>c</quote> partition, but
+	    the <option>fstype</option> <emphasis>must</emphasis> 
+            be <userinput>4.2BSD</userinput>.  The disklabel should now look
+            something like this:</para>
 
 	  <programlisting>8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
@@ -482,12 +482,7 @@
 	<sect4 id="ccd-buildingfs">
 	  <title>Building the File System</title>
 
-	  <para>Now that I have all of the disks labeled, I needed to
-	    build the <application>ccd</application>.  To do that, I
-	    used a utility called &man.ccdconfig.8;.
-	    <command>ccdconfig</command> takes several arguments, the
-	    first argument being the device to configure, in this case,
-	    <devicename>/dev/ccd0c</devicename>.  The device node for
+            <para>The device node for
 	    <devicename>ccd0c</devicename> may not exist yet, so to
 	    create it, perform the following commands:</para>
 
@@ -496,60 +491,89 @@
 
 	  <note><para>In FreeBSD 5.0, &man.devfs.5; will automatically
 	    manage device nodes in <filename>/dev</filename>, so use of
-	    <command>MAKEDEV</command> is not necessary.</para></note>
-
-	  <para>The next argument <command>ccdconfig</command> expects
-	    is the interleave for the file system.  The interleave
-	    defines the size of a stripe in disk blocks, normally five
-	    hundred and twelve bytes.  So, an interleave of thirty-two
-	    would be sixteen thousand three hundred and eighty-four
-	    bytes.</para>
-
-	  <para>After the interleave comes the flags for
-	    <command>ccdconfig</command>.  If you want to enable drive
-	    mirroring, you can specify a flag here.  In this
-	    configuration, I am not mirroring the
-	    <application>ccd</application>, so I left it as zero.</para>
-
-	  <para>The final arguments to <command>ccdconfig</command>
-	    are the devices to place into the array.  Putting it all
-	    together I get this command:</para>
-
-	  <programlisting>ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e 
/dev/ad3e</programlisting>
+	    <command>MAKEDEV</command> may not be necessary.</para></note>
 
-	  <para>This configures the <application>ccd</application>.
-	    I can now &man.newfs.8; the file system.</para>
+	  <para>Now that you have all of the disks labeled, you must
+	    build the <application>ccd</application>.  To do that,
+	    use  &man.ccdconfig.8;, with options similar to the following:
+
+	    <programlisting>ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e 
/dev/ad3e</programlisting>
+
+	    The use and meaning of each option is shown below:</para>
+
+	    <programlisting>ccd0 <co id="co-ccd-dev">
+32  <co id="co-ccd-interleave">
+0 <co id="co-ccd-flags">
+/dev/ad1e <co id="co-ccd-devs">
+/dev/ad2e
+/dev/ad3e</programlisting>
+
+          <calloutlist>
+
+            <callout arearefs="co-ccd-dev">
+	    <para>The first argument is the device to configure, in this case,
+	    <devicename>/dev/ccd0c</devicename>. The <filename>/dev/</filename>
+            portion is optional.</para>
+            </callout>
+
+            <callout arearefs="co-ccd-interleave">
+
+	    <para>The interleave for the file system.  The interleave
+	    defines the size of a stripe in disk blocks, each normally 512 bytes.
+	    So, an interleave of 32 would be 16,384 bytes.</para>
+            </callout>
+
+            <callout arearefs="co-ccd-flags">
+	    <para>Flags for <command>ccdconfig</command>.  If you want to enable 
drive
+	    mirroring, you can specify a flag here. This 
+	    configuration does not provide mirroring for  
+	    <application>ccd</application>, so it is set at 0 (zero).</para>
+            </callout>
+
+            <callout arearefs="co-ccd-devs">
+	    <para>The final arguments to <command>ccdconfig</command>
+	    are the devices to place into the array.  Use the complete pathname 
+	    for each device.</para>
+            </callout>
+          </calloutlist>
+
+
+	  <para>After running <command>ccdconfig</command> the 
<application>ccd</application>
+          is configured. A file system can be installed. Refer to 
&man.newfs.8; 
+          for options, or simply run: </para>
 
 	  <programlisting>newfs /dev/ccd0c</programlisting>
 
+
 	</sect4>
 
 	<sect4 id="ccd-auto">
 	  <title>Making it all Automatic</title>
 
-	  <para>Finally, if I want to be able to mount the
-	    <application>ccd</application>, I need to
-	    configure it first.  I write out my current configuration to
+	  <para>Generally, you will want to mount the
+	    <application>ccd</application> upon each reboot. To do this, you must
+	    configure it first.  Write out your current configuration to
 	    <filename>/etc/ccd.conf</filename> using the following command:</para>
 
 	  <programlisting>ccdconfig -g &gt; /etc/ccd.conf</programlisting>
 
-	  <para>When I reboot, the script <command>/etc/rc</command>
-	    runs <command>ccdconfig -C</command> if /etc/ccd.conf
+	  <para>During reboot, the script <command>/etc/rc</command>
+	    runs <command>ccdconfig -C</command> if 
<filename>/etc/ccd.conf</filename>
 	    exists. This automatically configures the
 	    <application>ccd</application> so it can be mounted.</para>
 
-	  <para>If you are booting into single user mode, before you can
+	  <note><para>If you are booting into single user mode, before you can
 	    <command>mount</command> the <application>ccd</application>, you
 	    need to issue the following command to configure the
 	    array:</para>
 
 	  <programlisting>ccdconfig -C</programlisting>
+          </note>
 
-	  <para>Then, we need an entry for the
-	    <application>ccd</application> in
+	  <para>To automatically mount the <application>ccd</application>,
+            place an entry for the <application>ccd</application> in
 	    <filename>/etc/fstab</filename> so it will be mounted at
-	    boot time.</para>
+	    boot time:</para>
 
 	  <programlisting>/dev/ccd0c              /media       ufs     rw      2       
2</programlisting>
 	</sect4>
@@ -566,7 +590,7 @@
 	  storage.  &man.vinum.8; implements the RAID-0, RAID-1 and
 	  RAID-5 models, both individually and in combination.</para>
 
-	<para>See the <xref linkend="vinum-vinum"> for more
+	<para>See <xref linkend="vinum-vinum"> for more
 	  information about &man.vinum.8;.</para>
       </sect3>
     </sect2>
@@ -578,16 +602,19 @@
 	<primary>RAID</primary>
 	<secondary>Hardware</secondary>
       </indexterm>
+
       <para>FreeBSD also supports a variety of hardware 
<acronym>RAID</acronym>
-        controllers.  In which case the actual <acronym>RAID</acronym> system
-	is built and controlled by the card itself.  Using an on-card
-	<acronym>BIOS</acronym>, the card will control most of the disk operations
-	itself.  The following is a brief setup using a Promise <acronym>IDE 
RAID</acronym>
-	controller.  When this card is installed and the system started up, it will
-	display a prompt requesting information.  Follow the on screen instructions
-	to enter the cards setup screen.  From here a user should have the ability 
to
-	combine all the attached drives.  When doing this, the disk(s) will look 
like
-	a single drive to FreeBSD.  Other <acronym>RAID</acronym> levels can be 
setup
+        controllers.  These devices control a <acronym>RAID</acronym> 
subsystem
+        without the need for FreeBSD specific <acronym>RAID</acronym> 
software 
+        that manages the <acronym>RAID</acronym> array.</para>
+
+      <para>Using an on-card <acronym>BIOS</acronym>, the card controls most 
of the disk operations
+	itself.  The following is a brief setup description using a <acronym>Promise 
IDE RAID</acronym>
+	controller.  When this card is installed and the system is started up, it 
+	displays a prompt requesting information.  Follow the instructions
+	to enter the cards setup screen.  From here, you have the ability to
+	combine all the attached drives.  After doing so, the disk(s) will look like
+	a single drive to FreeBSD.  Other <acronym>RAID</acronym> levels can be set 
up
 	accordingly.
       </para>
     </sect2>
@@ -608,7 +635,7 @@
 ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 
11) status=59 error=40
 ar0: WARNING - mirror lost</programlisting>
 
-      <para>Using &man.atacontrol.8;, check to see how things look:</para>
+      <para>Using &man.atacontrol.8;, check for further information:</para>
 
       <screen>&prompt.root; <userinput>atacontrol list</userinput>
 ATA channel 0:
@@ -656,8 +683,9 @@
 	</step>
 
 	<step>
-	  <para>The rebuild command hangs until complete, its possible to open 
another
-	    terminal and check on the progress by issuing the following 
command:</para>
+	  <para>The rebuild command hangs until complete.  However, it is possible 
to open another
+	  terminal (using <keycombo action="simul"><keycap>Alt</keycap> 
<keycap>F<replaceable>n</replaceable></keycap></keycombo>)
+          and check on the progress by issuing the following command:</para>
 
 	  <screen>&prompt.root; <userinput>dmesg | tail -10</userinput>
 [output removed]
Comment 2 Murray Stokely freebsd_committer freebsd_triage 2003-05-04 11:29:45 UTC
State Changed
From-To: open->analyzed

Thanks for the patch.  I'm working on this and should commit something soon. 



Comment 3 Murray Stokely freebsd_committer freebsd_triage 2003-05-04 11:29:45 UTC
Responsible Changed
From-To: freebsd-doc->murray

Thanks for the patch.  I'm working on this and should commit something soon.
Comment 4 Murray Stokely freebsd_committer freebsd_triage 2003-05-04 13:20:17 UTC
State Changed
From-To: analyzed->closed

Your change has been committed.  It may take up to 24 hours to reach 
the website.  Thanks for the submission!