<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">

<article class="faq" id="index">

 <artheader>
  <title>Linux-RAID FAQ</title>

  <author>
     <firstname>Gregory</firstname>
     <surname>Leblanc</surname>
     <affiliation>
        <address>
           <email>gleblanc (at) cu-portland.edu</email>
        </address>
     </affiliation>
  </author>

  <revhistory>

   <revision>
    <revnumber>v0.0.10</revnumber>
    <date>24 April 2001</date>
    <authorinitials>gml</authorinitials>
    <revremark>
     Added a new section and question about benchmarking.</revremark>
   </revision>

   <revision>
    <revnumber>v0.0.9</revnumber>
    <date>9 October 2000</date>
    <authorinitials>gml</authorinitials>
    <revremark>
     Updates to the location of the patches, and a couple of other
     things which I can't remember.</revremark>
   </revision>

  </revhistory>


  <abstract>
    <para>This is a FAQ for the Linux-RAID mailing list, hosted on
    vger.kernel.org.  vger.rutgers.edu is gone, so don't bother
    looking for it.  It's intended as a supplement to the existing
    Linux-RAID HOWTO, to cover questions that keep occurring on the
    mailing list.  PLEASE read this document before your post to the
    list.</para>

  </abstract>

 </artheader>

   <qandaset>

   <qandadiv>
    <title>General</title>

    <qandaentry>
     <question>
     <para>Where can I find archives for the linux-raid mailing
     list?</para>
    </question>
    <answer>
     <para>My favorite archives are at <ulink
     url="http://www.geocrawler.com/lists/3/Linux/57/0/">http://www.geocrawler.com/lists/3/Linux/57/0/</ulink>.</para>
     <para>Other archives are available at <ulink
     url="http://marc.theaimsgroup.com/?l=linux-raid&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?l=linux-raid&amp;r=1&amp;w=2</ulink></para>
     <para>Another archive site is <ulink
     url="http://www.mail-archive.com/linux-raid@vger.rutgers.edu/">http://www.mail-archive.com/linux-raid@vger.rutgers.edu/</ulink></para>
    </answer>
   </qandaentry>

   <qandaentry>
    <question>
     <para>Where can I find the latest version of this FAQ?</para>
    </question>

    <answer>
     <para>The latest version of this FAQ will be available from the
     LDP website at <ulink
     url="http://www.LinuxDoc.org/FAQ/">http://www.LinuxDoc.org/FAQ/</ulink>.
     As soon as I get my server at home fixed I'll make it available
     there as well.</para>
    </answer>
   </qandaentry>


   <qandaentry>
    <question>
     <para>What sorts of things does this list cover?</para>
    </question>

    <answer>
     <para>Well, obviously this list covers RAID in relation to
     Linux.  Most of the discussions are related to the raid code
     that's been built into the Linux kernel.  There are also a few
     discussions on getting hardware based RAID controllers working
     using Linux as the operating system.  Any and all of these
     discussions are valid for this list.</para>
    </answer>
   </qandaentry>

  </qandadiv>



  <qandadiv>
   <title>Kernel</title>

   <qandaentry>

    <question>
     <para>I'm running <replaceable>[insert your linux distribution
     here]</replaceable>.  Do I need to patch my kernel to make RAID
     work?</para>
     </question>

    <answer>
     <para>Well, the short answer is, it depends.  Some distributions
     are using the RAID 0.90 patches, while others leave the kernel
     with the older md code.  Unfortunately, I don't have a list of
     which distributions have which kernels.  If you'd like to
      maintain such a list, please email me
     &lt;<email>gleblanc@cu-portland.edu</email>&gt; as well as the
     linux-raid mailing list.</para>
     <para>
      If you download a 2.2.x kernel from ftp.kernel.org, then you
      will need to patch your kernel.</para>
    </answer>
   </qandaentry>

   <qandaentry>

    <question>
     <para>How can I tell if I need to patch my kernel?</para>
    </question>

    <answer>
     <para>That depends on which kernel series you're using.  If
     you're using the 2.4.x kernels, then you've already got the
     latest RAID code that's available.  If you're running 2.2.x, see
     the following instructions on how to find out.</para>

     <para>The easiest way is to check what's in
     <filename>/proc/mdstat</filename>.  Here's a sample from a 2.2.x
     kernel, <emphasis>with</emphasis> the RAID patches applied.

      <screen format="linespecific"> 

[gleblanc@grego1 gleblanc]$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [translucent]
read_ahead not set
unused devices: &lt;none&gt;
      </screen>

If the contents of <filename>/proc/mdstat</filename> looks like the
     above, then you don't need to patch your kernel.</para> <para>The
     "Personalities" line in your kernel may not look exactly like the
     above, if you have RAID compiled as modules.  Most distributions
     will have RAID compiled as modules to save space on the boot
     diskette.  If you're not using any RAID sets, then you will
     probably see a blank space at the end of the "Personalities"
     line, don't worry, that just means that the RAID modules aren't
     loaded yet.</para>

     <para>Here's a sample from a 2.2.x kernel,
     <emphasis>without</emphasis> the RAID patches applied.

      <screen format="linespecific">

[root@serek ~]# cat /proc/mdstat 
Personalities : [1 linear] [2 raid0] 
read_ahead not set 
md0 : inactive 
md1 : inactive 
md2 : inactive 
md3 : inactive 

      </screen>

<emphasis>If your <filename>/proc/mdstat</filename> looks like this
one, then you need to patch your kernel.</emphasis></para>

    </answer>

   </qandaentry>

   <qandaentry>

    <question>
     <para>Where can I get the latest RAID patches for my kernel?</para>
    </question>

    <answer>
     <para>The patches for the 2.2.x kernels up to, and including,
      2.2.13 are available from <ulink
      url="ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/">ftp.kernel.org</ulink>.
      Use the kernel patch that most closely matches your kernel
      revision.  For example, the 2.2.11 patch can also be used on
      2.2.12 and 2.2.13.</para> 

     <para>The patches for 2.2.14 and later kernels are at <ulink
      url="http://people.redhat.com/mingo/raid-patches/">http://people.redhat.com/mingo/raid-patches/</ulink>.
      Use the right patch for your kernel, these patches haven't
      worked on other kernel revisions yet.  Please use something like
      wget/curl/lftp to retrieve this patch, as it's easier on the
      server than using a client like Netscape.  Downloading patches
      with Lynx has been unsuccessful for me; wget may be the easiest
      way.
      <note>
       <para>These patches should also be available from
        <ulink url="ftp://ftp.kernel.org/pub/linux/kernel/people/mingo/raid-patches/">
        ftp://ftp.kernel.org/pub/linux/kernel/people/mingo/raid-patches/</ulink>
        I could not find them on my local mirror, but please check
        yours before using the main kernel.org site.  You can find a
        list of the local mirrors at <ulink
        url="http://www.kernel.org/mirrors/">http://www.kernel.org/mirrors/</ulink>.</para>
      </note>
     </para>

     </answer>
   </qandaentry>

   <qandaentry>

     <question>
      <para>How do I apply the patch to a kernel that I just
      downloaded from ftp.kernel.org?</para>
     </question>

    <answer>

     <para>First, unpack the kernel into some directory, generally
     people use <filename class="directory">/usr/src/linux</filename>.
     Change to this directory, and type <command>patch -p1 &lt;
     /path/to/raid-version.patch</command>.

      <informalexample>

       <para>On my RedHat 6.2 system, I decompressed the 2.2.16 kernel
       into <filename
       class="directory">/usr/src/linux-2.2.16</filename>.  From
       <filename class="directory">/usr/src/linux-2.2.16</filename>, I
       type in <command>patch -p1 &lt;
       <replaceable>/home/gleblanc/raid-2.2.16-A0</replaceable></command>.
       Then I rebuild the kernel using <command>make
       menuconfig</command> and related builds.</para>
      </informalexample>

    </para>

    </answer>

   </qandaentry>

   <qandaentry>

    <question>
     <para>What kind of drives can I use RAID with?  Do only SCSI or
     IDE drives work?  Do I need different patches for different kinds
     of drives?</para>
    </question>

    <answer>
     <para>Software RAID works with any block device in the Linux
     kernel.  This includes IDE and SCSI drives, as well as most
     harware RAID controllers.  There are no different patches for IDE
     drives vs. SCSI drives.</para>
    </answer>
   </qandaentry>

  </qandadiv>

  <qandadiv>
   <title>RAIDtools</title>

   <qandaentry>

    <question>
     <para>Why are the RAIDtools at <ulink
     url="http://people.redhat.com/mingo/raid-patches/">http://people.redhat.com/mingo/raid-patches/</ulink>
     labeled <emphasis>dangerous</emphasis>, and if they're dangerous,
     should I use them?</para>
    </question>

    <answer>
     <para>The tools are labeled <emphasis>dangerous</emphasis>
     because the RAID code isn't part of the <quote>stable</quote>
     Linux kernel.</para> <para>The tools found at the above URL are
     the latest and greatest.  You <emphasis>should</emphasis> use
     these tools with the kernel patches from the same
     location.</para>
    </answer>

   </qandaentry>

   <qandaentry>

    <question>
     <para>Are there any tools other than the
     <emphasis>dangerous</emphasis> ones available?</para>
    </question>

    <answer>
     <para>No, the <emphasis>dangerous</emphasis> tools available from
     <ulink
     url="http://people.redhat.com/mingo/raid-patches/">http://people.redhat.com/mingo/raid-patches/</ulink>
       are the most current tools to use.  <emphasis>Everyone using
	RAID with the patches at the above location should be using
     these <emphasis>dangerous</emphasis> tools.</emphasis></para>
    </answer>

   </qandaentry>

  </qandadiv>

  <qandadiv>
   <title>Disk Failures and Recovery</title>

   <qandaentry>

    <question>
     <para>How can I tell if one of the disks in my RAID array has
     failed?</para>
    </question>

    <answer>
     <para>A couple of things should indicate when a disk has failed.
     There should be quite a few messages in
     <filename>/var/log/messages</filename> indicating errors
     accessing that device, which should be a good indication that
     something is wrong.</para> <para>You should also notice that your
     <filename>/proc/mdstat</filename> looks different.  Here's a snip
     from a good /proc/mdstat

      <screen format="linespecific"> 

[gleblanc@grego1 gleblanc]$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [translucent]
read_ahead not set
md0 : active raid1 sdb5[0] sda5[1] 32000 blocks [2/2] [UU]
unused devices: &lt;none&gt;
      </screen>
     </para>

     <para>And here's one from a <filename>/proc/mdstat</filename>
     where one of the RAID sets has a missing disk.

      <screen format="linespecific"> 

[gleblanc@grego1 gleblanc]$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [translucent]
read_ahead not set
md0 : active raid1 sdb5[0] sda5[1] 32000 blocks [2/1] [U_]
unused devices: &lt;none&gt;
      </screen>
     </para>

     <para>I don't know if <filename>/proc/mdstat</filename> will
     reflect the status of a HOT SPARE.  If you have set one up, you
     should be watching <filename>/var/log/messages</filename> for any
     disk failures.  I'd like to get some logs of a disk failure, and
     <filename>/proc/mdstat</filename> from a system with a hot
     spare.</para>
    </answer>

   </qandaentry>

   <qandaentry>

    <question>
     <para>So my RAID set is missing a disk, what do I do now?</para>
    </question>

    <answer>
     <para>RAID generally doesn't mark a disk as bad unless it is, so
     you probably need a new disk.  Most disks have a 3 year warranty,
     but some good SCSI hard drives may have a 5 year warranty.  See
     if you can get the manufacturer to replace the failed disk for
     you.</para> <para>When you get the new disk, power down the
     system, and install it, then partition the drive so that it has
     partitions the size of your missing RAID partitions.  After
     you're finished partitioning the disk, use the command
     <command>raidhotadd</command> to put the new disk into the array
      and begin reconstruction.  See <ulink
     url="http://www.LinuxDoc.org/HOWTO/Software-RAID-HOWTO-6.html">Chapter
     6</ulink> of the <ulink
     url="http://www.LinuxDoc.org/HOWTO/Software-RAID-HOWTO.html">Software
     RAID HOWTO</ulink> for more information.</para>

    </answer>

   </qandaentry>

   <qandaentry>

    <question>
     <para><command>dmesg</command> shows <quote>md: serializing
     resync, md4 has overlapping physical units with md5</quote>.
     What does this mean?</para>
    </question>

    <answer>
     <para>In that message <quote>physical units</quote> refers to
     disks, and not to blocks on the disks.  Since there is more than
     1 RAID array that needs resyncing on a disk, the RAID code is
     going to sync md4 first, and md5 second, to avoid excessive seeks
     (also called thrashing), which would drastically slow the resync
     process.</para>
    </answer>

   </qandaentry>

  </qandadiv>

  <qandadiv>
   <title>Benchmarking</title>

   <qandaentry>

    <question>
     <para>How should I benchmark my RAID devices?  Are there any
     tools that work particularly well?</para>
    </question>

    <answer>
     <para>There are really a few options for benchmarking your RAID
     array, depending on what you're looking to test.  RAID offers the
     greatest speed increases when there are multiple threads reading
     from the same RAID volume.</para>

     <para>One tool specificly designed to test and show off these
     performance gains is <ulink
     url="http://tiobench.sourceforge.net/"
     type="http"><application>tiobench</application></ulink>.  It uses
     multiple read and write threads on the disk, and has some pretty
     good reporting.</para>

     <para>Another good tool to use is <ulink
     url="http://www.coker.com.au/bonnie++/"
     type="http"><application>bonnie++</application></ulink>.  It
     seems to be more targeted at benchmarking single drives that at
     RAID, but still provides useful information.</para>

     <para>One tool <emphasis>NOT</emphasis> to use is
     <application>hdparm</application>.  It does not give useful
     performance numbers for any drives that I've heard about, and has
     been known to give some incredibly off-the-wall numbers as well.
      If you want to do <emphasis>real</emphasis> benchmarking, use
     one of the tools listed above.</para>

    </answer>

   </qandaentry>

  </qandadiv>

 </qandaset>

</article>


<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:1
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
