Date: Thu, 17 Apr 2003 20:10:16 -0700 (PDT) From: Jim Brown <jpb@sixshooter.v6.thrupoint.net> To: freebsd-doc@FreeBSD.org Subject: Re: docs/50664: Handbook 12.4.1 (CCD) needs work Message-ID: <200304180310.h3I3AG3T021030@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR docs/50664; it has been noted by GNATS. From: Jim Brown <jpb@sixshooter.v6.thrupoint.net> To: freebsd-gnats-submit@FreeBSD.org, murray@freebsd.org Cc: Subject: Re: docs/50664: Handbook 12.4.1 (CCD) needs work Date: Thu, 17 Apr 2003 23:06:11 -0400 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 <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [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 > /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]
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304180310.h3I3AG3T021030>