Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 71 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       mdadm [mode] <raiddevice> [options] <component-devices>


       RAID  devices are virtual devices created from two or more
       real block devices. This allows  multiple  devices  (typi­
       cally  disk  drives or partitions there-of) to be combined
       into a single  device  to  hold  (for  example)  a  single
       filesystem.   Some  RAID  levels include redundancy and so
       can survive some degree of device failure.

       Linux Software RAID devices are implemented through the md
       (Multiple Devices) device driver.

       Currently, Linux supports LINEAR md devices, RAID0 (strip­
       ing), RAID1 (mirroring), RAID4, RAID5, and MULTIPATH.

       MULTIPATH is not  a  Software  RAID  mechanism,  but  does
       involve  multiple devices.  For MULTIPATH each device is a
       path to one common physical storage device.

       mdadm is a program that can be used to create, manage, and
       monitor  MD devices.  As such it provides a similar set of
       functionality to the raidtools packages.  The key  differ­
       ences between mdadm and raidtools are:

       ·   mdadm is a single program and not a collection of pro­

       ·   mdadm can perform (almost) all of its functions  with­
           out  having  a configuration file and does not use one
           by default.  Also mdadm helps with management  of  the
           configuration file.

       ·   mdadm   can  provide  information  about  your  arrays
           (through Query, Detail, and  Examine)  that  raidtools

       mdadm  does not use /etc/raidtab, the raidtools configura­
       tion file, at all.  It has a different configuration  file
       with a different format and an different purpose.


       mdadm has 6 major modes of operation:

              Assemble  the  parts  of a previously created array
              into an active array. Components can be  explicitly
              an array such as adding  new  spares  and  removing
              faulty devices.

       Misc   This  mode allows operations on independent devices
              such  as  examine  MD  superblocks,   erasing   old
              superblocks and stopping active arrays.

       Follow or Monitor
              Monitor one or more md devices and act on any state
              changes.  This is only meaningful for raid1,  raid5
              or  multipath arrays as only these have interesting
              state.  raid0 or linear never have missing,  spare,
              or failed drives, so there is nothing to monitor.


       Available options are:

       -A, --assemble
              Assemble a pre-existing array.

       -B, --build
              Build a legacy array without superblocks.

       -C, --create
              Create a new array.

       -Q, --query
              Examine  a  device to see (1) if it is an md device
              and (2) if it  is  a  component  of  an  md  array.
              Information  about what is discovered is presented.

       -D, --detail
              Print detail of one or more md devices.

       -E, --examine
              Print content of md superblock on device(s).

       -F, --follow, --monitor
              Select Monitor mode.

       -v, --verbose
              Be more verbose about what is happening.

       -b, --brief
              Be less verbose.  This is used  with  --detail  and

       -f, --force
              Be more forceful about certain operations.  See the
              various modes of the exact meaning of  this  option
              in different contexts.

       -c, --config=
              Specify    the    config    file.     Default    is
              /etc/mdadm.conf.  If the config file given is  par­
              titions  then  nothing will be read, but mdadm will
              act as though the  config  file  contained  exactly
              DEVICE partitions and will read /proc/partitions to
              find a list of devices to scan.  If the  word  none
              is  given  for the config file, then mdadm will act
              as though the config file were empty.

       -s, --scan
              scan config file or /proc/mdstat for missing infor­
              mation.   In  general, this option gives mdadm per­
              mission to get any missing information, like compo­
              nent  devices, array devices, array identities, and
              alert  destination  from  the  configuration  file:
              /etc/mdadm.conf.   One  exception is MISC mode when
              using --detail or --stop in which case --scan  says
              to get a list of array devices from /proc/mdstat.

For create or build:

       -c, --chunk=
              Specify  chunk  size  of kibibytes.  The default is

              Specify rounding factor for linear  array  (==chunk

       -l, --level=
              Set  raid  level.  When used with --create, options
              are: linear, raid0, 0, stripe,  raid1,  1,  mirror,
              raid5,  4, raid5, 5, multipath, mp.  Obviously some
              same as --parity

       -n, --raid-devices=
              Specify the number of active devices in the  array.
              This,  plus the number of spare devices (see below)
              must equal the number of component-devices (includ­
              ing  "missing" devices) that are listed on the com­
              mand line.  Setting a value of 1 is probably a mis­
              take  and  so  requires  that  --force be specified
              first.  A value of 1 will then be allowed for  lin­
              ear,  multipath,  raid0  and  raid1.   It  is never
              allowed for raid4 or raid5.
              Note that this number cannot be  changed  once  the
              array has been created.

       -x, --spare-devices=
              Specify  the number of spare (eXtra) devices in the
              initial  array.   Spares  can  also  be  added  and
              removed  later.   The  number  of component devices
              listed on the command line must equal the number of
              raid devices plus the number of spare devices.

       -z, --size=
              Amount  (in  Kibibytes)  of  space to use from each
              drive in RAID1/4/5.  This must be a multiple of the
              chunk  size, and must leave about 128Kb of space at
              the end of the drive for the RAID  superblock.   If
              this  is  not specified (as it normally is not) the
              smallest drive (or partition) sets the size, though
              if  there is a variance among the drives of greater
              than 1%, a warning is issued.

For assemble:

       -u, --uuid=
              uuid of array to assemble. Devices which don't have
              this uuid are excluded

       -m, --super-minor=
              Minor  number of device that array was created for.
              Devices which don't  have  this  minor  number  are
              excluded.  If you create an array as /dev/md1, then
              all superblocks will contain the  minor  number  1,
              even if the array is later assembled as /dev/md2.

              Giving  the  literal  word  "dev" for --super-minor
              will cause mdadm to use the minor number of the  md
              used,  then  the  array  will  be assembled but not
              started.  With --run an attempt  will  be  made  to
              start it anyway.

       -U, --update=
              Update  the  superblock on each device while assem­
              bling the array.  The argument given to  this  flag
              can be either sparc2.2 or super-minor.

              The  sparc2.2 option will  adjust the superblock of
              an array what was created on a Sparc  machine  run­
              ning  a  patched 2.2 Linux kernel.  This kernel got
              the alignment of part of the superblock wrong.  You
              can use the --examine --sparc2.2 option to mdadm to
              see what effect this would have.

              The super-minor option  will  update  the  prefered
              minor  field  on each superblock to match the minor
              number of the array being assembled.  This  is  not
              need  on  2.6  and  later kernels as they make this
              adjustment automatically.

For Manage mode:

       -a, --add
              hotadd listed devices.

       -r, --remove
              remove listed devices.  They must  not  be  active.
              i.e. they should be failed or spare devices.

       -f, --fail, --set-faulty
              mark listed devices as faulty.

              mark  listed  devices  as clean. (Only supported by

              mark listed devices as active. (Only  supported  by

              mark listed devices as inactive. (Only supported by

For Misc mode:

       -R, --run
              start a partially built array.

       -S, --stop
              deactivate array, releasing all resources.

       -o, --readonly
              mark array as readonly.

       -w, --readwrite
              mark array as readwrite.

              If  the  device contains a valid md superblock, the
              block is over-written with zeros.  With --force the
              block where the superblock would be is over-written
              even if it doesn't appear to be valid.

For Monitor mode:

       -m, --mail
              Give a mail address to send alerts to.

       -p, --program, --alert
              Give a program to  be  run  whenever  an  event  is

       -d, --delay
              Give a delay in seconds.  mdadm polls the md arrays
              and then waits this  many  seconds  before  polling
              again.  The default is 60 seconds.

       -f, --daemonise
              Tell  mdadm  to  run  as  a background daemon if it
              decides to monitor anything.   This  causes  it  to
              fork  and  run in the child, and to disconnect form
              the terminal.  The process id of the child is writ­
              ten  to  stdout.   This is useful with --scan which
              will only continue monitoring if a mail address  or
              alert program is found in the config file.

       -1, --oneshot
              Check  arrays only once.  This will generate NewAr­

       This  usage  assembles  one  or more raid arrays from pre-
       existing components.  For each array, mdadm needs to  know
       the  md device, the identity of the array, and a number of
       component-devices. These can be found in a number of ways.

       In  the first usage example (without the --scan) the first
       device given is the md device.  In the second usage  exam­
       ple,  all  devices  listed  are  treated as md devices and
       assembly is attempted.  In the third (where no devices are
       listed)  all  md devices that are listed in the configura­
       tion file are assembled.

       If precisely one device  is  listed,  but  --scan  is  not
       given,  that  mdadm  acts  as  though --scan was given and
       identify information is extracted from  the  configuration

       The identity can be given with the --uuid option, with the
       --super-minor option, can be found  in the config file, or
       will be taken from the super block on the first component-
       device listed on the command line.

       Devices can be given on the --assemble command line or  in
       the  config file. Only devices which have an md superblock
       which contains the right identity will be  considered  for
       any array.

       The  config  file  is  only  used if explicitly named with
       --config or requested with (a possibly  implicit)  --scan.
       In the later case, /etc/mdadm.conf is used.

       If  --scan is not given, then the config file will only be
       used to find the identity of md arrays.

       Normally the array will be started after it is  assembled.
       However  if  --scan  is  not given and insufficient drives
       were listed to start a complete (non-degraded) array, then
       the  array is not started (to guard against usage errors).
       To insist that the array be started in this case  (as  may
       work for RAID1 or RAID5), give the --run flag.


       Usage:  mdadm  --build  device --chunk=X --level=Y --raid-
                   devices=Z devices

       This usage is similar to --create.  The difference is that
       it creates a legacy array without a superblock. With these

       This  usage will initialise a new md array, associate some
       devices with it, and activate the array.

       As devices are added, they are checked to see if they con­
       tain  raid  superblocks  or  filesystems.  They  are  also
       checked to see if the variance in device size exceeds  1%.

       If  any discrepancy is found, the array will not automati­
       cally be run, though the presence of a --run can  override
       this caution.

       To  create  a  "degraded"  array in which some devices are
       missing, simply give the word  "missing"  in  place  of  a
       device  name.   This  will cause mdadm to leave the corre­
       sponding slot in the array empty.  For a  RAID4  or  RAID5
       array  at  most  one  slot  can be "missing".  For a RAID1
       array, only one real device needs to be given.  All of the
       others can be "missing".

       The  General Management options that are valid with --cre­
       ate are:

       --run  insist of running the array even  if  some  devices
              look like they might be in use.

              start the array readonly - not supported yet.


       Usage: mdadm device options... devices...

       This usage will allow individual devices in an array to be
       failed, removed or added.  It is possible to perform  mul­
       tiple operations with on command. For example:
         mdadm /dev/md0 -f /dev/hda1 -r /dev/hda1 -a /dev/hda1
       will firstly mark /dev/hda1 as faulty in /dev/md0 and will
       then remove it from the array and finally add it  back  in
       as  a spare.  However only one md array can be affected by
       a single command.


       Usage: mdadm options ...  devices ...

       MISC mode includes a number if  distinct  operations  that
       operate on distinct devices.  The operations are:

              The  device  should  be a component of an md array.
              mdadm will read the md superblock of the device and
              display  the  contents.   If  --brief  is given, or
              --scan then multiple devices that are components of
              the  one array are grouped together and reported in
              a  single   entry   suitable   for   inclusion   in

              Having  --scan  without  listing  any  devices will
              cause all devices listed in the config file  to  be

       --stop This  devices should active md arrays which will be
              deactivated, if they are not currently in use.

       --run  This will fully activate a partially  assembled  md

              This  will  mark an active array as read-only, pro­
              viding that it is not currently being used.

              This will change a readonly  array  back  to  being

       --scan For  all  operations  except --examine, --scan will
              cause the operation to be  applied  to  all  arrays
              listed  in  /proc/mdstat.   For  --examine,  --scan
              causes all devices listed in the config file to  be


       Usage: mdadm --monitor options... devices...

       This  usage  causes mdadm to periodically poll a number of
       md arrays and to report on any events noticed.  mdadm will
       never  exit  once  it  decides that there are arrays to be
       checked, so it should normally be run in the background.

       As well as reporting events, mdadm may move a spare  drive
       from  one  array to another if they are in the same spare-
       each event and is given 2 or  3  command-line  arguements.
       The  first is the name of the event (see below).  The sec­
       ond is the name of the md device which  is  affected,  and
       the  third  is  the  name of a related device if relevant,
       such as a component device that has failed.

       If --scan is given, then a program or  an  E-mail  address
       must  be  specified  on  the command line or in the config
       file.  If neither are available, then mdadm will not moni­
       tor anything.  Without --scan mdadm will continue monitor­
       ing as long as something was found to monitor.  If no pro­
       gram  or  email  is  given, then each event is reported to

       The different events are:

                  An md array  which  previously  was  configured
                  appears to no longer be configured.

                  An md array started reconstruction.

                  Where  NN  is 20, 40, 60, or 80, this indicates
                  that rebuild has passed that many percentage of
                  the total.

           Fail   An active component device of an array has been
                  marked as faulty.

                  A  spare  component  device  which  was   being
                  rebuilt  to replace a faulty device has failed.

                  A  spare  component  device  which  was   being
                  rebuilt to replace a faulty device as been suc­
                  cessfully rebuild and has been made active.

                  A  new  md  array  has  been  detected  in  the
                  /proc/mdstat file.

       Only  Fail  and  FailSpare  cause  Email  to be sent.  All
       events cause the program to be run.  The  program  is  run
       with  two  or  three arguments, they being the event name,
       the array device and possibly a second device.

       Each event has an associated array device (e.g.  /dev/md1)
       and  possibly  a  second device.  For Fail, FailSpare, and
       SpareActive the second device is  the  relevant  component
       device.  For MoveSpare the second device is the array that
       the spare was moved from.

       For mdadm to move spares from one array  to  another,  the
       different  arrays need to be labelled with the same spare-
       group in the configuration file.  The spare-group name can
       be  any  string. It is only necessary that different spare
       groups use different names.

       When mdadm detects that an array which is in a spare group
       has  fewer  active devices than necessary for the complete
       array, and has no spare devices, it will look for  another
       array  in  the same spare group that has a full complement
       of working drive and a spare.  It  will  then  attempt  to
       remove  the  spare from the second drive and add it to the
       first.  If the removal succeeds but the adding fails, then
       it is added back to the original array.


         mdadm --query /dev/name-of-device
       This  will  find out if a given device is a raid array, or
       is part of one, and will provide brief  information  about
       the device.

         mdadm --assemble --scan
       This  will  assemble  and  start  all arrays listed in the
       standard confile file.  This command will typically go  in
       a system startup file.

         mdadm --stop --scan
       This  will shut down all array that can be shut down (i.e.
       are not currently in used).  This will typically going  in
       a system shutdown script.

         mdadm --follow --scan --delay=120
       If  (and  only  if)  there  is an Email address or program
       given in the standard config file, then monitor the status
       of  all  arrays listed in that file by polling them ever 2

          mdadm  --create  /dev/md0  --level=1   --raid-devices=2
       Create  /dev/md0  as a RAID1 array consisting of /dev/hda1
       store  the  information  is  the  format of a config file.
       This file is very likely to contain unwanted detail,  par­
       ticularly the devices= entries.  It should be reviewed and
       edited before being used as an actual config file.

         mdadm --examine --brief --scan --config=partitions
         mdadm -Ebsc partitions
       Create a list of devices by reading /proc/partitions, scan
       these  for  RAID superblocks, and printout a brief listing
       of all that was found.

         mdadm -Ac partitions -m 0 /dev/md0
       Scan all partitions and devices listed in /proc/partitions
       and  assemble /dev/md0 out of all such devices with a RAID
       superblock with a minor number of 0.

         mdadm --monitor --scan --daemonise > /var/run/mdadm
       If config file contains a mail address or  alert  program,
       run mdadm in the background in monitor mode monitoring all
       md  devices.   Also  write  pid   of   mdadm   daemon   to

         mdadm --create --help
       Providew help about the Create mode.

         mdadm --config --help
       Provide help about the format of the config file.

         mdadm --help
       Provide general help.


       If  you're  using the /proc filesystem, /proc/mdstat lists
       all active md devices with information about them.   mdadm
       uses  this  to  find  arrays  when --scan is given in Misc
       mode, and to monitor array reconstruction on Monitor mode.

       The  config file lists which devices may be scanned to see
       if they contain MD  super  block,  and  gives  identifying
       information  (e.g.  UUID)  about  known  MD  arrays.   See
       mdadm.conf(5) for more details.


       mdadm was previously known as mdctl.


       mdadm.conf(5), md(4).

       raidtab(5), raid0run(8), raidstop(8), mkraid(8)

v1.3.0                                                   MDADM(8)
Help us cut cost by not downloading the whole site!
Use of automated download sofware ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and therefore is expressedly prohibited. For more details on this, take a look here



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
The Linux Tutorial welcomes your suggestions and ideas.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.14 Seconds