]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - md.man
mdadm-0.8
[thirdparty/mdadm.git] / md.man
diff --git a/md.man b/md.man
index 0e85f4cc7dc5e39087ca690522e5b545a1ec5d53..c9ee2ec8d88f6eef1dd02e18161d95e2dc020fcf 100644 (file)
--- a/md.man
+++ b/md.man
@@ -11,10 +11,10 @@ S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        The  m\bmd\bd  driver  provides virtual devices that are created
-       from one or more  independant  underlying  devices.   This
+       from one or more  independent  underlying  devices.   This
        array  of devices often contains redundancy, and hence the
        acronym RAID which stands for a Redundant Array  of  Inde-
-       pendant Devices.
+       pendent Devices.
 
        m\bmd\bd support RAID levels 1 (mirroring) 4 (striped array with
        parity device) and 5 (striped array with distributed  par-
@@ -23,14 +23,14 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        function.
 
        m\bmd\bd  also  supports a number of pseudo RAID (non-redundant)
-       configuations  including  RAID0  (striped  array),  LINEAR
+       configurations including  RAID0  (striped  array),  LINEAR
        (catenated array) and MULTIPATH (a set of different inter-
        faces to the same device).
 
 
    M\bMD\bD S\bSU\bUP\bPE\bER\bR B\bBL\bLO\bOC\bCK\bK
        With the exception of Legacy Arrays described below,  each
-       device  that is incorportated into an MD array has a _\bs_\bu_\bp_\be_\br
+       device  that  is incorporated into an MD array has a _\bs_\bu_\bp_\be_\br
        _\bb_\bl_\bo_\bc_\bk  written  towards  the  end  of  the  device.   This
        superblock  records  information  about  the structure and
        state of the array so that the array can be  reliably  re-
@@ -77,16 +77,139 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
 
 
-
    R\bRA\bAI\bID\bD0\b0
        A RAID0 array (which has zero redundancy) is also known as
-       a striped array.
+       a  striped array.  A RAID0 array is configured at creation
+       with a C\bCh\bhu\bun\bnk\bk S\bSi\biz\bze\be which must be a multiple of 4 kibibytes.
+
+       The  RAID0  driver  places the first chunk of the array to
+       the first device, the second chunk to the  second  device,
+       and  so  on until all drives have been assigned one chuck.
+       This collection of chunks forms a s\bst\btr\bri\bip\bpe\be.  Further  chunks
+       are  gathered  into  stripes  in  the  same  way which are
+       assigned to the remaining space in the drives.
+
+       If device in the array are not all  the  same  size,  then
+       once  the  smallest  devices has been exhausted, the RAID0
+       driver starts collecting chunks into smaller stripes  that
+       only span the drives which still have remaining space.
+
+
 
    R\bRA\bAI\bID\bD1\b1
+       A RAID1 array is also known as a mirrored set (though mir-
+       rors tend to provide reflect images, which RAID1 does not)
+       or a plex.
+
+       Once  initialised,  each  device in a RAID1 array contains
+       exactly the same data.  Changes are written to all devices
+       in  parallel.   Data  is  read  from  any one device.  The
+       driver attempts to distribute  read  requests  across  all
+       devices to maximise performance.
+
+       All  devices in a RAID1 array should be the same size.  If
+       they are not, then only the amount of space  available  on
+       the  smallest  device  is  used.  Any extra space on other
+       devices is wasted.
+
+
    R\bRA\bAI\bID\bD4\b4
+       A RAID4 array is like a RAID0 array with an  extra  device
+       for  storing  parity.   Unlike  RAID0, RAID4 also requires
+       that all stripes  span  all  drives,  so  extra  space  on
+       devices that are larger than the smallest is wasted.
+
+       When  any  block  in  a RAID4 array is modified the parity
+       block for that stripe (i.e. the block in the parity device
+       at  the same device offset as the stripe) is also modified
+       so that the parity block always contains the "parity"  for
+       the  whole stripe.  i.e. its contents is equivalent to the
+       result of performing an exclusive-or operation between all
+       the data blocks in the stripe.
+
+       This  allows  the  array  to  continue  to function if one
+       device fails.  The data that was on  that  device  can  be
+       calculated  as  needed from the parity block and the other
+       data blocks.
+
+
    R\bRA\bAI\bID\bD5\b5
+       RAID5 is very similar to RAID4.  The  difference  is  that
+       the  parity  blocks for each stripe, instead of being on a
+       single device, are distributed across all  devices.   This
+       allows  more  parallelism  when  writing  as two different
+       block updates will quite possibly affect parity blocks  on
+       different devices so there is less contention.
+
+       This  also  allows  more  parallelism when reading as read
+       requests are distributed over all the devices in the array
+       instead of all but one.
+
+
    M\bMU\bUT\bTI\bIP\bPA\bAT\bTH\bH
-   R\bRE\bEB\bBU\bUI\bIL\bLD\bD/\b/R\bRE\bES\bSY\bYN\bNC\bC
+       MULTIPATH is not really a RAID at all as there is only one
+       real device in a MULTIPATH md array.   However  there  are
+       multiple  access points (paths) to this device, and one of
+       these paths might fail, so there are some similarities.
+
+       A MULTIPATH array is composed of  a  number  of  different
+       devices,  often  fibre  channel interfaces, that all refer
+       the the same real device.   If  one  of  these  interfaces
+       fails  (e.g.  due to cable problems), the multipath driver
+       to attempt to redirect requests to another interface.
+
+
+
+   U\bUN\bNC\bCL\bLE\bEA\bAN\bN S\bSH\bHU\bUT\bTD\bDO\bOW\bWN\bN
+       When changes are made to an RAID1, RAID4, or  RAID5  array
+       there  is a possibility of inconsistency for short periods
+       of time as each update requires are least two block to  be
+       written  to  different  devices, and these writes probably
+       wont happen at exactly the same time.  This  is  a  system
+       with  one  of  these arrays is shutdown in the middle of a
+       write operation (e.g. due to power failure), the array may
+       not be consistent.
+
+       The handle this situation, the md driver marks an array as
+       "dirty" before writing any data to it,  and  marks  it  as
+       "clean"  when  the  array is being disabled, e.g. at shut-
+       down.  If the md driver finds an  array  to  be  dirty  at
+       startup,  it  proceeds  to  correct any possibly inconsis-
+       tency.  For RAID1, this involves copying the  contents  of
+       the first drive onto all other drives.  For RAID4 or RAID5
+       this involves recalculating the parity for each stripe and
+       making sure that the parity block has the correct data.
+
+       If  a RAID4 or RAID5 array is degraded (missing one drive)
+       when it is restarted after an unclean shutdown, it  cannot
+       recalculate  parity, and so it is possible that data might
+       be undetectably corrupted.  The md driver  currently  d\bdo\boe\bes\bs
+       n\bno\bot\bt alert the operator to this condition.  It should prob-
+       ably fail to start an array in this condition without man-
+       ual intervention.
+
+
+   R\bRE\bEC\bCO\bOV\bVE\bER\bRY\bY
+       If the md driver detects any error on a device in a RAID1,
+       RAID4, or RAID5 array, it immediately disables that device
+       (marking  it  as  faulty)  and  continues operation on the
+       remaining devices.  If there is a spare drive, the  driver
+       will  start recreating on one of the spare drives the data
+       what was on that failed drive, either by copying a working
+       drive  in  a RAID1 configuration, or by doing calculations
+       with the parity block on RAID4 and RAID5.
+
+       Why this recovery process is happening, the md driver will
+       monitor  accesses to the array and will slow down the rate
+       of recovery if other activity is happening, so that normal
+       access  to the array will not be unduly affected.  When no
+       other activity is happening, the recovery process proceeds
+       at  full speed.  The actual speed targets for the two dif-
+       ferent situations can be controlled by the s\bsp\bpe\bee\bed\bd_\b_l\bli\bim\bmi\bit\bt_\b_m\bmi\bin\bn
+       and s\bsp\bpe\bee\bed\bd_\b_l\bli\bim\bmi\bit\bt_\b_m\bma\bax\bx control files mentioned below.
+
+
+
 F\bFI\bIL\bLE\bES\bS
        /\b/p\bpr\bro\boc\bc/\b/m\bmd\bds\bst\bta\bat\bt
               Contains  information about the status of currently