]> git.ipfire.org Git - thirdparty/mdadm.git/blame_incremental - mdadm.8.in
man mdadm: add information for MDADM_EXPERIMENTAL flag
[thirdparty/mdadm.git] / mdadm.8.in
... / ...
CommitLineData
1.\" -*- nroff -*-
2.\" Copyright Neil Brown and others.
3.\" This program is free software; you can redistribute it and/or modify
4.\" it under the terms of the GNU General Public License as published by
5.\" the Free Software Foundation; either version 2 of the License, or
6.\" (at your option) any later version.
7.\" See file COPYING in distribution for details.
8.TH MDADM 8 "" v3.2
9.SH NAME
10mdadm \- manage MD devices
11.I aka
12Linux Software RAID
13
14.SH SYNOPSIS
15
16.BI mdadm " [mode] <raiddevice> [options] <component-devices>"
17
18.SH DESCRIPTION
19RAID devices are virtual devices created from two or more
20real block devices. This allows multiple devices (typically disk
21drives or partitions thereof) to be combined into a single device to
22hold (for example) a single filesystem.
23Some RAID levels include redundancy and so can survive some degree of
24device failure.
25
26Linux Software RAID devices are implemented through the md (Multiple
27Devices) device driver.
28
29Currently, Linux supports
30.B LINEAR
31md devices,
32.B RAID0
33(striping),
34.B RAID1
35(mirroring),
36.BR RAID4 ,
37.BR RAID5 ,
38.BR RAID6 ,
39.BR RAID10 ,
40.BR MULTIPATH ,
41.BR FAULTY ,
42and
43.BR CONTAINER .
44
45.B MULTIPATH
46is not a Software RAID mechanism, but does involve
47multiple devices:
48each device is a path to one common physical storage device.
49New installations should not use md/multipath as it is not well
50supported and has no ongoing development. Use the Device Mapper based
51multipath-tools instead.
52
53.B FAULTY
54is also not true RAID, and it only involves one device. It
55provides a layer over a true device that can be used to inject faults.
56
57.B CONTAINER
58is different again. A
59.B CONTAINER
60is a collection of devices that are
61managed as a set. This is similar to the set of devices connected to
62a hardware RAID controller. The set of devices may contain a number
63of different RAID arrays each utilising some (or all) of the blocks from a
64number of the devices in the set. For example, two devices in a 5-device set
65might form a RAID1 using the whole devices. The remaining three might
66have a RAID5 over the first half of each device, and a RAID0 over the
67second half.
68
69With a
70.BR CONTAINER ,
71there is one set of metadata that describes all of
72the arrays in the container. So when
73.I mdadm
74creates a
75.B CONTAINER
76device, the device just represents the metadata. Other normal arrays (RAID1
77etc) can be created inside the container.
78
79.SH MODES
80mdadm has several major modes of operation:
81.TP
82.B Assemble
83Assemble the components of a previously created
84array into an active array. Components can be explicitly given
85or can be searched for.
86.I mdadm
87checks that the components
88do form a bona fide array, and can, on request, fiddle superblock
89information so as to assemble a faulty array.
90
91.TP
92.B Build
93Build an array that doesn't have per-device metadata (superblocks). For these
94sorts of arrays,
95.I mdadm
96cannot differentiate between initial creation and subsequent assembly
97of an array. It also cannot perform any checks that appropriate
98components have been requested. Because of this, the
99.B Build
100mode should only be used together with a complete understanding of
101what you are doing.
102
103.TP
104.B Create
105Create a new array with per-device metadata (superblocks).
106Appropriate metadata is written to each device, and then the array
107comprising those devices is activated. A 'resync' process is started
108to make sure that the array is consistent (e.g. both sides of a mirror
109contain the same data) but the content of the device is left otherwise
110untouched.
111The array can be used as soon as it has been created. There is no
112need to wait for the initial resync to finish.
113
114.TP
115.B "Follow or Monitor"
116Monitor one or more md devices and act on any state changes. This is
117only meaningful for RAID1, 4, 5, 6, 10 or multipath arrays, as
118only these have interesting state. RAID0 or Linear never have
119missing, spare, or failed drives, so there is nothing to monitor.
120
121.TP
122.B "Grow"
123Grow (or shrink) an array, or otherwise reshape it in some way.
124Currently supported growth options including changing the active size
125of component devices and changing the number of active devices in
126Linear and RAID levels 0/1/4/5/6,
127changing the RAID level between 0, 1, 5, and 6, and between 0 and 10,
128changing the chunk size and layout for RAID 0,4,5,6, as well as adding or
129removing a write-intent bitmap.
130
131.TP
132.B "Incremental Assembly"
133Add a single device to an appropriate array. If the addition of the
134device makes the array runnable, the array will be started.
135This provides a convenient interface to a
136.I hot-plug
137system. As each device is detected,
138.I mdadm
139has a chance to include it in some array as appropriate.
140Optionally, when the
141.I \-\-fail
142flag is passed in we will remove the device from any active array
143instead of adding it.
144
145If a
146.B CONTAINER
147is passed to
148.I mdadm
149in this mode, then any arrays within that container will be assembled
150and started.
151
152.TP
153.B Manage
154This is for doing things to specific components of an array such as
155adding new spares and removing faulty devices.
156
157.TP
158.B Misc
159This is an 'everything else' mode that supports operations on active
160arrays, operations on component devices such as erasing old superblocks, and
161information gathering operations.
162.\"This mode allows operations on independent devices such as examine MD
163.\"superblocks, erasing old superblocks and stopping active arrays.
164
165.TP
166.B Auto-detect
167This mode does not act on a specific device or array, but rather it
168requests the Linux Kernel to activate any auto-detected arrays.
169.SH OPTIONS
170
171.SH Options for selecting a mode are:
172
173.TP
174.BR \-A ", " \-\-assemble
175Assemble a pre-existing array.
176
177.TP
178.BR \-B ", " \-\-build
179Build a legacy array without superblocks.
180
181.TP
182.BR \-C ", " \-\-create
183Create a new array.
184
185.TP
186.BR \-F ", " \-\-follow ", " \-\-monitor
187Select
188.B Monitor
189mode.
190
191.TP
192.BR \-G ", " \-\-grow
193Change the size or shape of an active array.
194
195.TP
196.BR \-I ", " \-\-incremental
197Add/remove a single device to/from an appropriate array, and possibly start the array.
198
199.TP
200.B \-\-auto-detect
201Request that the kernel starts any auto-detected arrays. This can only
202work if
203.I md
204is compiled into the kernel \(em not if it is a module.
205Arrays can be auto-detected by the kernel if all the components are in
206primary MS-DOS partitions with partition type
207.BR FD ,
208and all use v0.90 metadata.
209In-kernel autodetect is not recommended for new installations. Using
210.I mdadm
211to detect and assemble arrays \(em possibly in an
212.I initrd
213\(em is substantially more flexible and should be preferred.
214
215.P
216If a device is given before any options, or if the first option is
217.BR \-\-add ,
218.BR \-\-fail ,
219or
220.BR \-\-remove ,
221then the MANAGE mode is assumed.
222Anything other than these will cause the
223.B Misc
224mode to be assumed.
225
226.SH Options that are not mode-specific are:
227
228.TP
229.BR \-h ", " \-\-help
230Display general help message or, after one of the above options, a
231mode-specific help message.
232
233.TP
234.B \-\-help\-options
235Display more detailed help about command line parsing and some commonly
236used options.
237
238.TP
239.BR \-V ", " \-\-version
240Print version information for mdadm.
241
242.TP
243.BR \-v ", " \-\-verbose
244Be more verbose about what is happening. This can be used twice to be
245extra-verbose.
246The extra verbosity currently only affects
247.B \-\-detail \-\-scan
248and
249.BR "\-\-examine \-\-scan" .
250
251.TP
252.BR \-q ", " \-\-quiet
253Avoid printing purely informative messages. With this,
254.I mdadm
255will be silent unless there is something really important to report.
256
257.TP
258.BR \-f ", " \-\-force
259Be more forceful about certain operations. See the various modes for
260the exact meaning of this option in different contexts.
261
262.TP
263.BR \-c ", " \-\-config=
264Specify the config file. Default is to use
265.BR /etc/mdadm.conf ,
266or if that is missing then
267.BR /etc/mdadm/mdadm.conf .
268If the config file given is
269.B "partitions"
270then nothing will be read, but
271.I mdadm
272will act as though the config file contained exactly
273.B "DEVICE partitions containers"
274and will read
275.B /proc/partitions
276to find a list of devices to scan, and
277.B /proc/mdstat
278to find a list of containers to examine.
279If the word
280.B "none"
281is given for the config file, then
282.I mdadm
283will act as though the config file were empty.
284
285.TP
286.BR \-s ", " \-\-scan
287Scan config file or
288.B /proc/mdstat
289for missing information.
290In general, this option gives
291.I mdadm
292permission to get any missing information (like component devices,
293array devices, array identities, and alert destination) from the
294configuration file (see previous option);
295one exception is MISC mode when using
296.B \-\-detail
297or
298.B \-\-stop,
299in which case
300.B \-\-scan
301says to get a list of array devices from
302.BR /proc/mdstat .
303
304.TP
305.BR \-e ", " \-\-metadata=
306Declare the style of RAID metadata (superblock) to be used. The
307default is {DEFAULT_METADATA} for
308.BR \-\-create ,
309and to guess for other operations.
310The default can be overridden by setting the
311.B metadata
312value for the
313.B CREATE
314keyword in
315.BR mdadm.conf .
316
317Options are:
318.RS
319.ie '{DEFAULT_METADATA}'0.90'
320.IP "0, 0.90, default"
321.el
322.IP "0, 0.90"
323..
324Use the original 0.90 format superblock. This format limits arrays to
32528 component devices and limits component devices of levels 1 and
326greater to 2 terabytes. It is also possible for there to be confusion
327about whether the superblock applies to a whole device or just the
328last partition, if that partition starts on a 64K boundary.
329.ie '{DEFAULT_METADATA}'0.90'
330.IP "1, 1.0, 1.1, 1.2"
331.el
332.IP "1, 1.0, 1.1, 1.2 default"
333..
334Use the new version-1 format superblock. This has fewer restrictions.
335It can easily be moved between hosts with different endian-ness, and a
336recovery operation can be checkpointed and restarted. The different
337sub-versions store the superblock at different locations on the
338device, either at the end (for 1.0), at the start (for 1.1) or 4K from
339the start (for 1.2). "1" is equivalent to "1.0".
340'if '{DEFAULT_METADATA}'1.2' "default" is equivalent to "1.2".
341.IP ddf
342Use the "Industry Standard" DDF (Disk Data Format) format defined by
343SNIA.
344When creating a DDF array a
345.B CONTAINER
346will be created, and normal arrays can be created in that container.
347.IP imsm
348Use the Intel(R) Matrix Storage Manager metadata format. This creates a
349.B CONTAINER
350which is managed in a similar manner to DDF, and is supported by an
351option-rom on some platforms:
352.IP
353.B http://www.intel.com/design/chipsets/matrixstorage_sb.htm
354.PP
355.RE
356
357.TP
358.B \-\-homehost=
359This will override any
360.B HOMEHOST
361setting in the config file and provides the identity of the host which
362should be considered the home for any arrays.
363
364When creating an array, the
365.B homehost
366will be recorded in the metadata. For version-1 superblocks, it will
367be prefixed to the array name. For version-0.90 superblocks, part of
368the SHA1 hash of the hostname will be stored in the later half of the
369UUID.
370
371When reporting information about an array, any array which is tagged
372for the given homehost will be reported as such.
373
374When using Auto-Assemble, only arrays tagged for the given homehost
375will be allowed to use 'local' names (i.e. not ending in '_' followed
376by a digit string). See below under
377.BR "Auto Assembly" .
378
379.SH For create, build, or grow:
380
381.TP
382.BR \-n ", " \-\-raid\-devices=
383Specify the number of active devices in the array. This, plus the
384number of spare devices (see below) must equal the number of
385.I component-devices
386(including "\fBmissing\fP" devices)
387that are listed on the command line for
388.BR \-\-create .
389Setting a value of 1 is probably
390a mistake and so requires that
391.B \-\-force
392be specified first. A value of 1 will then be allowed for linear,
393multipath, RAID0 and RAID1. It is never allowed for RAID4, RAID5 or RAID6.
394.br
395This number can only be changed using
396.B \-\-grow
397for RAID1, RAID4, RAID5 and RAID6 arrays, and only on kernels which provide
398the necessary support.
399
400.TP
401.BR \-x ", " \-\-spare\-devices=
402Specify the number of spare (eXtra) devices in the initial array.
403Spares can also be added
404and removed later. The number of component devices listed
405on the command line must equal the number of RAID devices plus the
406number of spare devices.
407
408.TP
409.BR \-z ", " \-\-size=
410Amount (in Kibibytes) of space to use from each drive in RAID levels 1/4/5/6.
411This must be a multiple of the chunk size, and must leave about 128Kb
412of space at the end of the drive for the RAID superblock.
413If this is not specified
414(as it normally is not) the smallest drive (or partition) sets the
415size, though if there is a variance among the drives of greater than 1%, a warning is
416issued.
417
418A suffix of 'M' or 'G' can be given to indicate Megabytes or
419Gigabytes respectively.
420
421This value can be set with
422.B \-\-grow
423for RAID level 1/4/5/6. If the array was created with a size smaller
424than the currently active drives, the extra space can be accessed
425using
426.BR \-\-grow .
427The size can be given as
428.B max
429which means to choose the largest size that fits on all current drives.
430
431Before reducing the size of the array (with
432.BR "\-\-grow \-\-size=" )
433you should make sure that space isn't needed. If the device holds a
434filesystem, you would need to resize the filesystem to use less space.
435
436After reducing the array size you should check that the data stored in
437the device is still available. If the device holds a filesystem, then
438an 'fsck' of the filesystem is a minimum requirement. If there are
439problems the array can be made bigger again with no loss with another
440.B "\-\-grow \-\-size="
441command.
442
443This value can not be used with
444.B CONTAINER
445metadata such as DDF and IMSM.
446
447.TP
448.BR \-Z ", " \-\-array\-size=
449This is only meaningful with
450.B \-\-grow
451and its effect is not persistent: when the array is stopped and
452restarted the default array size will be restored.
453
454Setting the array-size causes the array to appear smaller to programs
455that access the data. This is particularly needed before reshaping an
456array so that it will be smaller. As the reshape is not reversible,
457but setting the size with
458.B \-\-array-size
459is, it is required that the array size is reduced as appropriate
460before the number of devices in the array is reduced.
461
462Before reducing the size of the array you should make sure that space
463isn't needed. If the device holds a filesystem, you would need to
464resize the filesystem to use less space.
465
466After reducing the array size you should check that the data stored in
467the device is still available. If the device holds a filesystem, then
468an 'fsck' of the filesystem is a minimum requirement. If there are
469problems the array can be made bigger again with no loss with another
470.B "\-\-grow \-\-array\-size="
471command.
472
473A suffix of 'M' or 'G' can be given to indicate Megabytes or
474Gigabytes respectively.
475A value of
476.B max
477restores the apparent size of the array to be whatever the real
478amount of available space is.
479
480.TP
481.BR \-c ", " \-\-chunk=
482Specify chunk size of kibibytes. The default when creating an
483array is 512KB. To ensure compatibility with earlier versions, the
484default when Building and array with no persistent metadata is 64KB.
485This is only meaningful for RAID0, RAID4, RAID5, RAID6, and RAID10.
486
487A suffix of 'M' or 'G' can be given to indicate Megabytes or
488Gigabytes respectively.
489
490.TP
491.BR \-\-rounding=
492Specify rounding factor for a Linear array. The size of each
493component will be rounded down to a multiple of this size.
494This is a synonym for
495.B \-\-chunk
496but highlights the different meaning for Linear as compared to other
497RAID levels. The default is 64K if a kernel earlier than 2.6.16 is in
498use, and is 0K (i.e. no rounding) in later kernels.
499
500.TP
501.BR \-l ", " \-\-level=
502Set RAID level. When used with
503.BR \-\-create ,
504options are: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4,
505raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container.
506Obviously some of these are synonymous.
507
508When a
509.B CONTAINER
510metadata type is requested, only the
511.B container
512level is permitted, and it does not need to be explicitly given.
513
514When used with
515.BR \-\-build ,
516only linear, stripe, raid0, 0, raid1, multipath, mp, and faulty are valid.
517
518Can be used with
519.B \-\-grow
520to change the RAID level in some cases. See LEVEL CHANGES below.
521
522.TP
523.BR \-p ", " \-\-layout=
524This option configures the fine details of data layout for RAID5, RAID6,
525and RAID10 arrays, and controls the failure modes for
526.IR faulty .
527
528The layout of the RAID5 parity block can be one of
529.BR left\-asymmetric ,
530.BR left\-symmetric ,
531.BR right\-asymmetric ,
532.BR right\-symmetric ,
533.BR la ", " ra ", " ls ", " rs .
534The default is
535.BR left\-symmetric .
536
537It is also possible to cause RAID5 to use a RAID4-like layout by
538choosing
539.BR parity\-first ,
540or
541.BR parity\-last .
542
543Finally for RAID5 there are DDF\-compatible layouts,
544.BR ddf\-zero\-restart ,
545.BR ddf\-N\-restart ,
546and
547.BR ddf\-N\-continue .
548
549These same layouts are available for RAID6. There are also 4 layouts
550that will provide an intermediate stage for converting between RAID5
551and RAID6. These provide a layout which is identical to the
552corresponding RAID5 layout on the first N\-1 devices, and has the 'Q'
553syndrome (the second 'parity' block used by RAID6) on the last device.
554These layouts are:
555.BR left\-symmetric\-6 ,
556.BR right\-symmetric\-6 ,
557.BR left\-asymmetric\-6 ,
558.BR right\-asymmetric\-6 ,
559and
560.BR parity\-first\-6 .
561
562When setting the failure mode for level
563.I faulty,
564the options are:
565.BR write\-transient ", " wt ,
566.BR read\-transient ", " rt ,
567.BR write\-persistent ", " wp ,
568.BR read\-persistent ", " rp ,
569.BR write\-all ,
570.BR read\-fixable ", " rf ,
571.BR clear ", " flush ", " none .
572
573Each failure mode can be followed by a number, which is used as a period
574between fault generation. Without a number, the fault is generated
575once on the first relevant request. With a number, the fault will be
576generated after that many requests, and will continue to be generated
577every time the period elapses.
578
579Multiple failure modes can be current simultaneously by using the
580.B \-\-grow
581option to set subsequent failure modes.
582
583"clear" or "none" will remove any pending or periodic failure modes,
584and "flush" will clear any persistent faults.
585
586Finally, the layout options for RAID10 are one of 'n', 'o' or 'f' followed
587by a small number. The default is 'n2'. The supported options are:
588
589.I 'n'
590signals 'near' copies. Multiple copies of one data block are at
591similar offsets in different devices.
592
593.I 'o'
594signals 'offset' copies. Rather than the chunks being duplicated
595within a stripe, whole stripes are duplicated but are rotated by one
596device so duplicate blocks are on different devices. Thus subsequent
597copies of a block are in the next drive, and are one chunk further
598down.
599
600.I 'f'
601signals 'far' copies
602(multiple copies have very different offsets).
603See md(4) for more detail about 'near', 'offset', and 'far'.
604
605The number is the number of copies of each datablock. 2 is normal, 3
606can be useful. This number can be at most equal to the number of
607devices in the array. It does not need to divide evenly into that
608number (e.g. it is perfectly legal to have an 'n2' layout for an array
609with an odd number of devices).
610
611When an array is converted between RAID5 and RAID6 an intermediate
612RAID6 layout is used in which the second parity block (Q) is always on
613the last device. To convert a RAID5 to RAID6 and leave it in this new
614layout (which does not require re-striping) use
615.BR \-\-layout=preserve .
616This will try to avoid any restriping.
617
618The converse of this is
619.B \-\-layout=normalise
620which will change a non-standard RAID6 layout into a more standard
621arrangement.
622
623.TP
624.BR \-\-parity=
625same as
626.B \-\-layout
627(thus explaining the p of
628.BR \-p ).
629
630.TP
631.BR \-b ", " \-\-bitmap=
632Specify a file to store a write-intent bitmap in. The file should not
633exist unless
634.B \-\-force
635is also given. The same file should be provided
636when assembling the array. If the word
637.B "internal"
638is given, then the bitmap is stored with the metadata on the array,
639and so is replicated on all devices. If the word
640.B "none"
641is given with
642.B \-\-grow
643mode, then any bitmap that is present is removed.
644
645To help catch typing errors, the filename must contain at least one
646slash ('/') if it is a real file (not 'internal' or 'none').
647
648Note: external bitmaps are only known to work on ext2 and ext3.
649Storing bitmap files on other filesystems may result in serious problems.
650
651.TP
652.BR \-\-bitmap\-chunk=
653Set the chunksize of the bitmap. Each bit corresponds to that many
654Kilobytes of storage.
655When using a file based bitmap, the default is to use the smallest
656size that is at-least 4 and requires no more than 2^21 chunks.
657When using an
658.B internal
659bitmap, the chunksize defaults to 64Meg, or larger if necessary to
660fit the bitmap into the available space.
661
662A suffix of 'M' or 'G' can be given to indicate Megabytes or
663Gigabytes respectively.
664
665.TP
666.BR \-W ", " \-\-write\-mostly
667subsequent devices listed in a
668.BR \-\-build ,
669.BR \-\-create ,
670or
671.B \-\-add
672command will be flagged as 'write-mostly'. This is valid for RAID1
673only and means that the 'md' driver will avoid reading from these
674devices if at all possible. This can be useful if mirroring over a
675slow link.
676
677.TP
678.BR \-\-write\-behind=
679Specify that write-behind mode should be enabled (valid for RAID1
680only). If an argument is specified, it will set the maximum number
681of outstanding writes allowed. The default value is 256.
682A write-intent bitmap is required in order to use write-behind
683mode, and write-behind is only attempted on drives marked as
684.IR write-mostly .
685
686.TP
687.BR \-\-assume\-clean
688Tell
689.I mdadm
690that the array pre-existed and is known to be clean. It can be useful
691when trying to recover from a major failure as you can be sure that no
692data will be affected unless you actually write to the array. It can
693also be used when creating a RAID1 or RAID10 if you want to avoid the
694initial resync, however this practice \(em while normally safe \(em is not
695recommended. Use this only if you really know what you are doing.
696.IP
697When the devices that will be part of a new array were filled
698with zeros before creation the operator knows the array is
699actually clean. If that is the case, such as after running
700badblocks, this argument can be used to tell mdadm the
701facts the operator knows.
702
703.TP
704.BR \-\-backup\-file=
705This is needed when
706.B \-\-grow
707is used to increase the number of raid-devices in a RAID5 or RAID6 if
708there are no spare devices available, or to shrink, change RAID level
709or layout. See the GROW MODE section below on RAID\-DEVICES CHANGES.
710The file must be stored on a separate device, not on the RAID array
711being reshaped.
712
713.TP
714.BR \-N ", " \-\-name=
715Set a
716.B name
717for the array. This is currently only effective when creating an
718array with a version-1 superblock, or an array in a DDF container.
719The name is a simple textual string that can be used to identify array
720components when assembling. If name is needed but not specified, it
721is taken from the basename of the device that is being created.
722e.g. when creating
723.I /dev/md/home
724the
725.B name
726will default to
727.IR home .
728
729.TP
730.BR \-R ", " \-\-run
731Insist that
732.I mdadm
733run the array, even if some of the components
734appear to be active in another array or filesystem. Normally
735.I mdadm
736will ask for confirmation before including such components in an
737array. This option causes that question to be suppressed.
738
739.TP
740.BR \-f ", " \-\-force
741Insist that
742.I mdadm
743accept the geometry and layout specified without question. Normally
744.I mdadm
745will not allow creation of an array with only one device, and will try
746to create a RAID5 array with one missing drive (as this makes the
747initial resync work faster). With
748.BR \-\-force ,
749.I mdadm
750will not try to be so clever.
751
752.TP
753.BR \-a ", " "\-\-auto{=yes,md,mdp,part,p}{NN}"
754Instruct mdadm how to create the device file if needed, possibly allocating
755an unused minor number. "md" causes a non-partitionable array
756to be used (though since Linux 2.6.28, these array devices are in fact
757partitionable). "mdp", "part" or "p" causes a partitionable array (2.6 and
758later) to be used. "yes" requires the named md device to have
759a 'standard' format, and the type and minor number will be determined
760from this. With mdadm 3.0, device creation is normally left up to
761.I udev
762so this option is unlikely to be needed.
763See DEVICE NAMES below.
764
765The argument can also come immediately after
766"\-a". e.g. "\-ap".
767
768If
769.B \-\-auto
770is not given on the command line or in the config file, then
771the default will be
772.BR \-\-auto=yes .
773
774If
775.B \-\-scan
776is also given, then any
777.I auto=
778entries in the config file will override the
779.B \-\-auto
780instruction given on the command line.
781
782For partitionable arrays,
783.I mdadm
784will create the device file for the whole array and for the first 4
785partitions. A different number of partitions can be specified at the
786end of this option (e.g.
787.BR \-\-auto=p7 ).
788If the device name ends with a digit, the partition names add a 'p',
789and a number, e.g.
790.IR /dev/md/home1p3 .
791If there is no trailing digit, then the partition names just have a
792number added, e.g.
793.IR /dev/md/scratch3 .
794
795If the md device name is in a 'standard' format as described in DEVICE
796NAMES, then it will be created, if necessary, with the appropriate
797device number based on that name. If the device name is not in one of these
798formats, then a unused device number will be allocated. The device
799number will be considered unused if there is no active array for that
800number, and there is no entry in /dev for that number and with a
801non-standard name. Names that are not in 'standard' format are only
802allowed in "/dev/md/".
803
804.ig XX
805.\".TP
806.\".BR \-\-symlink = no
807.\"Normally when
808.\".B \-\-auto
809.\"causes
810.\".I mdadm
811.\"to create devices in
812.\".B /dev/md/
813.\"it will also create symlinks from
814.\".B /dev/
815.\"with names starting with
816.\".B md
817.\"or
818.\".BR md_ .
819.\"Use
820.\".B \-\-symlink=no
821.\"to suppress this, or
822.\".B \-\-symlink=yes
823.\"to enforce this even if it is suppressing
824.\".IR mdadm.conf .
825.\"
826.XX
827
828.SH For assemble:
829
830.TP
831.BR \-u ", " \-\-uuid=
832uuid of array to assemble. Devices which don't have this uuid are
833excluded
834
835.TP
836.BR \-m ", " \-\-super\-minor=
837Minor number of device that array was created for. Devices which
838don't have this minor number are excluded. If you create an array as
839/dev/md1, then all superblocks will contain the minor number 1, even if
840the array is later assembled as /dev/md2.
841
842Giving the literal word "dev" for
843.B \-\-super\-minor
844will cause
845.I mdadm
846to use the minor number of the md device that is being assembled.
847e.g. when assembling
848.BR /dev/md0 ,
849.B \-\-super\-minor=dev
850will look for super blocks with a minor number of 0.
851
852.B \-\-super\-minor
853is only relevant for v0.90 metadata, and should not normally be used.
854Using
855.B \-\-uuid
856is much safer.
857
858.TP
859.BR \-N ", " \-\-name=
860Specify the name of the array to assemble. This must be the name
861that was specified when creating the array. It must either match
862the name stored in the superblock exactly, or it must match
863with the current
864.I homehost
865prefixed to the start of the given name.
866
867.TP
868.BR \-f ", " \-\-force
869Assemble the array even if the metadata on some devices appears to be
870out-of-date. If
871.I mdadm
872cannot find enough working devices to start the array, but can find
873some devices that are recorded as having failed, then it will mark
874those devices as working so that the array can be started.
875An array which requires
876.B \-\-force
877to be started may contain data corruption. Use it carefully.
878
879.TP
880.BR \-R ", " \-\-run
881Attempt to start the array even if fewer drives were given than were
882present last time the array was active. Normally if not all the
883expected drives are found and
884.B \-\-scan
885is not used, then the array will be assembled but not started.
886With
887.B \-\-run
888an attempt will be made to start it anyway.
889
890.TP
891.B \-\-no\-degraded
892This is the reverse of
893.B \-\-run
894in that it inhibits the startup of array unless all expected drives
895are present. This is only needed with
896.B \-\-scan,
897and can be used if the physical connections to devices are
898not as reliable as you would like.
899
900.TP
901.BR \-a ", " "\-\-auto{=no,yes,md,mdp,part}"
902See this option under Create and Build options.
903
904.TP
905.BR \-a ", " "\-\-add"
906This option can be used in Grow mode in two cases.
907
908If the target array is a Linear array, then
909.B \-\-add
910can be used to add one or more devices to the array. They
911are simply catenated on to the end of the array. Once added, the
912devices cannot be removed.
913
914If the
915.B \-\-raid\-disks
916option is being used to increase the number of devices in an array,
917then
918.B \-\-add
919can be used to add some extra devices to be included in the array.
920In most cases this is not needed as the extra devices can be added as
921spares first, and then the number of raid-disks can be changed.
922However for RAID0, it is not possible to add spares. So to increase
923the number of devices in a RAID0, it is necessary to set the new
924number of devices, and to add the new devices, in the same command.
925
926.TP
927.BR \-b ", " \-\-bitmap=
928Specify the bitmap file that was given when the array was created. If
929an array has an
930.B internal
931bitmap, there is no need to specify this when assembling the array.
932
933.TP
934.BR \-\-backup\-file=
935If
936.B \-\-backup\-file
937was used while reshaping an array (e.g. changing number of devices or
938chunk size) and the system crashed during the critical section, then the same
939.B \-\-backup\-file
940must be presented to
941.B \-\-assemble
942to allow possibly corrupted data to be restored, and the reshape
943to be completed.
944
945.TP
946.BR \-\-invalid\-backup
947If the file needed for the above option is not available for any
948reason an empty file can be given together with this option to
949indicate that the backup file is invalid. In this case the data that
950was being rearranged at the time of the crash could be irrecoverably
951lost, but the rest of the array may still be recoverable. This option
952should only be used as a last resort if there is no way to recover the
953backup file.
954
955
956.TP
957.BR \-U ", " \-\-update=
958Update the superblock on each device while assembling the array. The
959argument given to this flag can be one of
960.BR sparc2.2 ,
961.BR summaries ,
962.BR uuid ,
963.BR name ,
964.BR homehost ,
965.BR resync ,
966.BR byteorder ,
967.BR devicesize ,
968.BR no\-bitmap ,
969or
970.BR super\-minor .
971
972The
973.B sparc2.2
974option will adjust the superblock of an array what was created on a Sparc
975machine running a patched 2.2 Linux kernel. This kernel got the
976alignment of part of the superblock wrong. You can use the
977.B "\-\-examine \-\-sparc2.2"
978option to
979.I mdadm
980to see what effect this would have.
981
982The
983.B super\-minor
984option will update the
985.B "preferred minor"
986field on each superblock to match the minor number of the array being
987assembled.
988This can be useful if
989.B \-\-examine
990reports a different "Preferred Minor" to
991.BR \-\-detail .
992In some cases this update will be performed automatically
993by the kernel driver. In particular the update happens automatically
994at the first write to an array with redundancy (RAID level 1 or
995greater) on a 2.6 (or later) kernel.
996
997The
998.B uuid
999option will change the uuid of the array. If a UUID is given with the
1000.B \-\-uuid
1001option that UUID will be used as a new UUID and will
1002.B NOT
1003be used to help identify the devices in the array.
1004If no
1005.B \-\-uuid
1006is given, a random UUID is chosen.
1007
1008The
1009.B name
1010option will change the
1011.I name
1012of the array as stored in the superblock. This is only supported for
1013version-1 superblocks.
1014
1015The
1016.B homehost
1017option will change the
1018.I homehost
1019as recorded in the superblock. For version-0 superblocks, this is the
1020same as updating the UUID.
1021For version-1 superblocks, this involves updating the name.
1022
1023The
1024.B resync
1025option will cause the array to be marked
1026.I dirty
1027meaning that any redundancy in the array (e.g. parity for RAID5,
1028copies for RAID1) may be incorrect. This will cause the RAID system
1029to perform a "resync" pass to make sure that all redundant information
1030is correct.
1031
1032The
1033.B byteorder
1034option allows arrays to be moved between machines with different
1035byte-order.
1036When assembling such an array for the first time after a move, giving
1037.B "\-\-update=byteorder"
1038will cause
1039.I mdadm
1040to expect superblocks to have their byteorder reversed, and will
1041correct that order before assembling the array. This is only valid
1042with original (Version 0.90) superblocks.
1043
1044The
1045.B summaries
1046option will correct the summaries in the superblock. That is the
1047counts of total, working, active, failed, and spare devices.
1048
1049The
1050.B devicesize
1051option will rarely be of use. It applies to version 1.1 and 1.2 metadata
1052only (where the metadata is at the start of the device) and is only
1053useful when the component device has changed size (typically become
1054larger). The version 1 metadata records the amount of the device that
1055can be used to store data, so if a device in a version 1.1 or 1.2
1056array becomes larger, the metadata will still be visible, but the
1057extra space will not. In this case it might be useful to assemble the
1058array with
1059.BR \-\-update=devicesize .
1060This will cause
1061.I mdadm
1062to determine the maximum usable amount of space on each device and
1063update the relevant field in the metadata.
1064
1065The
1066.B no\-bitmap
1067option can be used when an array has an internal bitmap which is
1068corrupt in some way so that assembling the array normally fails. It
1069will cause any internal bitmap to be ignored.
1070
1071.ig
1072.TP
1073.B \-\-auto\-update\-homehost
1074This flag is only meaningful with auto-assembly (see discussion below).
1075In that situation, if no suitable arrays are found for this homehost,
1076.I mdadm
1077will rescan for any arrays at all and will assemble them and update the
1078homehost to match the current host.
1079..
1080
1081.SH For Manage mode:
1082
1083.TP
1084.BR \-t ", " \-\-test
1085Unless a more serious error occurred,
1086.I mdadm
1087will exit with a status of 2 if no changes were made to the array and
10880 if at least one change was made.
1089This can be useful when an indirect specifier such as
1090.BR missing ,
1091.B detached
1092or
1093.B faulty
1094is used in requesting an operation on the array.
1095.B \-\-test
1096will report failure if these specifiers didn't find any match.
1097
1098.TP
1099.BR \-a ", " \-\-add
1100hot-add listed devices.
1101If a device appears to have recently been part of the array
1102(possibly it failed or was removed) the device is re\-added as describe
1103in the next point.
1104If that fails or the device was never part of the array, the device is
1105added as a hot-spare.
1106If the array is degraded, it will immediately start to rebuild data
1107onto that spare.
1108
1109Note that this and the following options are only meaningful on array
1110with redundancy. They don't apply to RAID0 or Linear.
1111
1112.TP
1113.BR \-\-re\-add
1114re\-add a device that was previous removed from an array.
1115If the metadata on the device reports that it is a member of the
1116array, and the slot that it used is still vacant, then the device will
1117be added back to the array in the same position. This will normally
1118cause the data for that device to be recovered. However based on the
1119event count on the device, the recovery may only require sections that
1120are flagged a write-intent bitmap to be recovered or may not require
1121any recovery at all.
1122
1123When used on an array that has no metadata (i.e. it was built with
1124.BR \-\-build)
1125it will be assumed that bitmap-based recovery is enough to make the
1126device fully consistent with the array.
1127
1128When
1129.B \-\-re\-add
1130can be accompanied by
1131.BR \-\-update=devicesize .
1132See the description of this option when used in Assemble mode for an
1133explanation of its use.
1134
1135If the device name given is
1136.B missing
1137then mdadm will try to find any device that looks like it should be
1138part of the array but isn't and will try to re\-add all such devices.
1139
1140.TP
1141.BR \-r ", " \-\-remove
1142remove listed devices. They must not be active. i.e. they should
1143be failed or spare devices. As well as the name of a device file
1144(e.g.
1145.BR /dev/sda1 )
1146the words
1147.B failed
1148and
1149.B detached
1150can be given to
1151.BR \-\-remove .
1152The first causes all failed device to be removed. The second causes
1153any device which is no longer connected to the system (i.e an 'open'
1154returns
1155.BR ENXIO )
1156to be removed. This will only succeed for devices that are spares or
1157have already been marked as failed.
1158
1159.TP
1160.BR \-f ", " \-\-fail
1161mark listed devices as faulty.
1162As well as the name of a device file, the word
1163.B detached
1164can be given. This will cause any device that has been detached from
1165the system to be marked as failed. It can then be removed.
1166
1167.TP
1168.BR \-\-set\-faulty
1169same as
1170.BR \-\-fail .
1171
1172.TP
1173.BR \-\-write\-mostly
1174Subsequent devices that are added or re\-added will have the 'write-mostly'
1175flag set. This is only valid for RAID1 and means that the 'md' driver
1176will avoid reading from these devices if possible.
1177.TP
1178.BR \-\-readwrite
1179Subsequent devices that are added or re\-added will have the 'write-mostly'
1180flag cleared.
1181
1182.P
1183Each of these options requires that the first device listed is the array
1184to be acted upon, and the remainder are component devices to be added,
1185removed, marked as faulty, etc. Several different operations can be
1186specified for different devices, e.g.
1187.in +5
1188mdadm /dev/md0 \-\-add /dev/sda1 \-\-fail /dev/sdb1 \-\-remove /dev/sdb1
1189.in -5
1190Each operation applies to all devices listed until the next
1191operation.
1192
1193If an array is using a write-intent bitmap, then devices which have
1194been removed can be re\-added in a way that avoids a full
1195reconstruction but instead just updates the blocks that have changed
1196since the device was removed. For arrays with persistent metadata
1197(superblocks) this is done automatically. For arrays created with
1198.B \-\-build
1199mdadm needs to be told that this device we removed recently with
1200.BR \-\-re\-add .
1201
1202Devices can only be removed from an array if they are not in active
1203use, i.e. that must be spares or failed devices. To remove an active
1204device, it must first be marked as
1205.B faulty.
1206
1207.SH For Misc mode:
1208
1209.TP
1210.BR \-Q ", " \-\-query
1211Examine a device to see
1212(1) if it is an md device and (2) if it is a component of an md
1213array.
1214Information about what is discovered is presented.
1215
1216.TP
1217.BR \-D ", " \-\-detail
1218Print details of one or more md devices.
1219
1220.TP
1221.BR \-\-detail\-platform
1222Print details of the platform's RAID capabilities (firmware / hardware
1223topology) for a given metadata format.
1224
1225.TP
1226.BR \-Y ", " \-\-export
1227When used with
1228.B \-\-detail
1229or
1230.BR \-\-examine ,
1231output will be formatted as
1232.B key=value
1233pairs for easy import into the environment.
1234
1235.TP
1236.BR \-E ", " \-\-examine
1237Print contents of the metadata stored on the named device(s).
1238Note the contrast between
1239.B \-\-examine
1240and
1241.BR \-\-detail .
1242.B \-\-examine
1243applies to devices which are components of an array, while
1244.B \-\-detail
1245applies to a whole array which is currently active.
1246.TP
1247.B \-\-sparc2.2
1248If an array was created on a SPARC machine with a 2.2 Linux kernel
1249patched with RAID support, the superblock will have been created
1250incorrectly, or at least incompatibly with 2.4 and later kernels.
1251Using the
1252.B \-\-sparc2.2
1253flag with
1254.B \-\-examine
1255will fix the superblock before displaying it. If this appears to do
1256the right thing, then the array can be successfully assembled using
1257.BR "\-\-assemble \-\-update=sparc2.2" .
1258
1259.TP
1260.BR \-X ", " \-\-examine\-bitmap
1261Report information about a bitmap file.
1262The argument is either an external bitmap file or an array component
1263in case of an internal bitmap. Note that running this on an array
1264device (e.g.
1265.BR /dev/md0 )
1266does not report the bitmap for that array.
1267
1268.TP
1269.BR \-R ", " \-\-run
1270start a partially assembled array. If
1271.B \-\-assemble
1272did not find enough devices to fully start the array, it might leaving
1273it partially assembled. If you wish, you can then use
1274.B \-\-run
1275to start the array in degraded mode.
1276
1277.TP
1278.BR \-S ", " \-\-stop
1279deactivate array, releasing all resources.
1280
1281.TP
1282.BR \-o ", " \-\-readonly
1283mark array as readonly.
1284
1285.TP
1286.BR \-w ", " \-\-readwrite
1287mark array as readwrite.
1288
1289.TP
1290.B \-\-zero\-superblock
1291If the device contains a valid md superblock, the block is
1292overwritten with zeros. With
1293.B \-\-force
1294the block where the superblock would be is overwritten even if it
1295doesn't appear to be valid.
1296
1297.TP
1298.B \-\-kill\-subarray=
1299If the device is a container and the argument to \-\-kill\-subarray
1300specifies an inactive subarray in the container, then the subarray is
1301deleted. Deleting all subarrays will leave an 'empty-container' or
1302spare superblock on the drives. See \-\-zero\-superblock for completely
1303removing a superblock. Note that some formats depend on the subarray
1304index for generating a UUID, this command will fail if it would change
1305the UUID of an active subarray.
1306
1307.TP
1308.B \-\-update\-subarray=
1309If the device is a container and the argument to \-\-update\-subarray
1310specifies a subarray in the container, then attempt to update the given
1311superblock field in the subarray. See below in
1312.B MISC MODE
1313for details.
1314
1315.TP
1316.BR \-t ", " \-\-test
1317When used with
1318.BR \-\-detail ,
1319the exit status of
1320.I mdadm
1321is set to reflect the status of the device. See below in
1322.B MISC MODE
1323for details.
1324
1325.TP
1326.BR \-W ", " \-\-wait
1327For each md device given, wait for any resync, recovery, or reshape
1328activity to finish before returning.
1329.I mdadm
1330will return with success if it actually waited for every device
1331listed, otherwise it will return failure.
1332
1333.TP
1334.BR \-\-wait\-clean
1335For each md device given, or each device in /proc/mdstat if
1336.B \-\-scan
1337is given, arrange for the array to be marked clean as soon as possible.
1338.I mdadm
1339will return with success if the array uses external metadata and we
1340successfully waited. For native arrays this returns immediately as the
1341kernel handles dirty-clean transitions at shutdown. No action is taken
1342if safe-mode handling is disabled.
1343
1344.SH For Incremental Assembly mode:
1345.TP
1346.BR \-\-rebuild\-map ", " \-r
1347Rebuild the map file
1348.RB ( /var/run/mdadm/map )
1349that
1350.I mdadm
1351uses to help track which arrays are currently being assembled.
1352
1353.TP
1354.BR \-\-run ", " \-R
1355Run any array assembled as soon as a minimal number of devices are
1356available, rather than waiting until all expected devices are present.
1357
1358.TP
1359.BR \-\-scan ", " \-s
1360Only meaningful with
1361.B \-R
1362this will scan the
1363.B map
1364file for arrays that are being incrementally assembled and will try to
1365start any that are not already started. If any such array is listed
1366in
1367.B mdadm.conf
1368as requiring an external bitmap, that bitmap will be attached first.
1369
1370.TP
1371.BR \-\-fail ", " \-f
1372This allows the hot-plug system to remove devices that have fully disappeared
1373from the kernel. It will first fail and then remove the device from any
1374array it belongs to.
1375The device name given should be a kernel device name such as "sda",
1376not a name in
1377.IR /dev .
1378
1379.TP
1380.BR \-\-path=
1381Only used with \-\-fail. The 'path' given will be recorded so that if
1382a new device appears at the same location it can be automatically
1383added to the same array. This allows the failed device to be
1384automatically replaced by a new device without metadata if it appears
1385at specified path. This option is normally only set by a
1386.I udev
1387script.
1388
1389.SH For Monitor mode:
1390.TP
1391.BR \-m ", " \-\-mail
1392Give a mail address to send alerts to.
1393
1394.TP
1395.BR \-p ", " \-\-program ", " \-\-alert
1396Give a program to be run whenever an event is detected.
1397
1398.TP
1399.BR \-y ", " \-\-syslog
1400Cause all events to be reported through 'syslog'. The messages have
1401facility of 'daemon' and varying priorities.
1402
1403.TP
1404.BR \-d ", " \-\-delay
1405Give a delay in seconds.
1406.I mdadm
1407polls the md arrays and then waits this many seconds before polling
1408again. The default is 60 seconds. Since 2.6.16, there is no need to
1409reduce this as the kernel alerts
1410.I mdadm
1411immediately when there is any change.
1412
1413.TP
1414.BR \-r ", " \-\-increment
1415Give a percentage increment.
1416.I mdadm
1417will generate RebuildNN events with the given percentage increment.
1418
1419.TP
1420.BR \-f ", " \-\-daemonise
1421Tell
1422.I mdadm
1423to run as a background daemon if it decides to monitor anything. This
1424causes it to fork and run in the child, and to disconnect from the
1425terminal. The process id of the child is written to stdout.
1426This is useful with
1427.B \-\-scan
1428which will only continue monitoring if a mail address or alert program
1429is found in the config file.
1430
1431.TP
1432.BR \-i ", " \-\-pid\-file
1433When
1434.I mdadm
1435is running in daemon mode, write the pid of the daemon process to
1436the specified file, instead of printing it on standard output.
1437
1438.TP
1439.BR \-1 ", " \-\-oneshot
1440Check arrays only once. This will generate
1441.B NewArray
1442events and more significantly
1443.B DegradedArray
1444and
1445.B SparesMissing
1446events. Running
1447.in +5
1448.B " mdadm \-\-monitor \-\-scan \-1"
1449.in -5
1450from a cron script will ensure regular notification of any degraded arrays.
1451
1452.TP
1453.BR \-t ", " \-\-test
1454Generate a
1455.B TestMessage
1456alert for every array found at startup. This alert gets mailed and
1457passed to the alert program. This can be used for testing that alert
1458message do get through successfully.
1459
1460.TP
1461.BR \-\-no\-sharing
1462This inhibits the functionality for moving spares between arrays.
1463Only one monitoring process started with
1464.B \-\-scan
1465but without this flag is allowed, otherwise the two could interfere
1466with each other.
1467
1468.SH ASSEMBLE MODE
1469
1470.HP 12
1471Usage:
1472.B mdadm \-\-assemble
1473.I md-device options-and-component-devices...
1474.HP 12
1475Usage:
1476.B mdadm \-\-assemble \-\-scan
1477.I md-devices-and-options...
1478.HP 12
1479Usage:
1480.B mdadm \-\-assemble \-\-scan
1481.I options...
1482
1483.PP
1484This usage assembles one or more RAID arrays from pre-existing components.
1485For each array, mdadm needs to know the md device, the identity of the
1486array, and a number of component-devices. These can be found in a number of ways.
1487
1488In the first usage example (without the
1489.BR \-\-scan )
1490the first device given is the md device.
1491In the second usage example, all devices listed are treated as md
1492devices and assembly is attempted.
1493In the third (where no devices are listed) all md devices that are
1494listed in the configuration file are assembled. If not arrays are
1495described by the configuration file, then any arrays that
1496can be found on unused devices will be assembled.
1497
1498If precisely one device is listed, but
1499.B \-\-scan
1500is not given, then
1501.I mdadm
1502acts as though
1503.B \-\-scan
1504was given and identity information is extracted from the configuration file.
1505
1506The identity can be given with the
1507.B \-\-uuid
1508option, the
1509.B \-\-name
1510option, or the
1511.B \-\-super\-minor
1512option, will be taken from the md-device record in the config file, or
1513will be taken from the super block of the first component-device
1514listed on the command line.
1515
1516Devices can be given on the
1517.B \-\-assemble
1518command line or in the config file. Only devices which have an md
1519superblock which contains the right identity will be considered for
1520any array.
1521
1522The config file is only used if explicitly named with
1523.B \-\-config
1524or requested with (a possibly implicit)
1525.BR \-\-scan .
1526In the later case,
1527.B /etc/mdadm.conf
1528or
1529.B /etc/mdadm/mdadm.conf
1530is used.
1531
1532If
1533.B \-\-scan
1534is not given, then the config file will only be used to find the
1535identity of md arrays.
1536
1537Normally the array will be started after it is assembled. However if
1538.B \-\-scan
1539is not given and not all expected drives were listed, then the array
1540is not started (to guard against usage errors). To insist that the
1541array be started in this case (as may work for RAID1, 4, 5, 6, or 10),
1542give the
1543.B \-\-run
1544flag.
1545
1546If
1547.I udev
1548is active,
1549.I mdadm
1550does not create any entries in
1551.B /dev
1552but leaves that to
1553.IR udev .
1554It does record information in
1555.B /var/run/mdadm/map
1556which will allow
1557.I udev
1558to choose the correct name.
1559
1560If
1561.I mdadm
1562detects that udev is not configured, it will create the devices in
1563.B /dev
1564itself.
1565
1566In Linux kernels prior to version 2.6.28 there were two distinctly
1567different types of md devices that could be created: one that could be
1568partitioned using standard partitioning tools and one that could not.
1569Since 2.6.28 that distinction is no longer relevant as both type of
1570devices can be partitioned.
1571.I mdadm
1572will normally create the type that originally could not be partitioned
1573as it has a well defined major number (9).
1574
1575Prior to 2.6.28, it is important that mdadm chooses the correct type
1576of array device to use. This can be controlled with the
1577.B \-\-auto
1578option. In particular, a value of "mdp" or "part" or "p" tells mdadm
1579to use a partitionable device rather than the default.
1580
1581In the no-udev case, the value given to
1582.B \-\-auto
1583can be suffixed by a number. This tells
1584.I mdadm
1585to create that number of partition devices rather than the default of 4.
1586
1587The value given to
1588.B \-\-auto
1589can also be given in the configuration file as a word starting
1590.B auto=
1591on the ARRAY line for the relevant array.
1592
1593.SS Auto Assembly
1594When
1595.B \-\-assemble
1596is used with
1597.B \-\-scan
1598and no devices are listed,
1599.I mdadm
1600will first attempt to assemble all the arrays listed in the config
1601file.
1602
1603In no array at listed in the config (other than those marked
1604.BR <ignore> )
1605it will look through the available devices for possible arrays and
1606will try to assemble anything that it finds. Arrays which are tagged
1607as belonging to the given homehost will be assembled and started
1608normally. Arrays which do not obviously belong to this host are given
1609names that are expected not to conflict with anything local, and are
1610started "read-auto" so that nothing is written to any device until the
1611array is written to. i.e. automatic resync etc is delayed.
1612
1613If
1614.I mdadm
1615finds a consistent set of devices that look like they should comprise
1616an array, and if the superblock is tagged as belonging to the given
1617home host, it will automatically choose a device name and try to
1618assemble the array. If the array uses version-0.90 metadata, then the
1619.B minor
1620number as recorded in the superblock is used to create a name in
1621.B /dev/md/
1622so for example
1623.BR /dev/md/3 .
1624If the array uses version-1 metadata, then the
1625.B name
1626from the superblock is used to similarly create a name in
1627.B /dev/md/
1628(the name will have any 'host' prefix stripped first).
1629
1630This behaviour can be modified by the
1631.I AUTO
1632line in the
1633.I mdadm.conf
1634configuration file. This line can indicate that specific metadata
1635type should, or should not, be automatically assembled. If an array
1636is found which is not listed in
1637.I mdadm.conf
1638and has a metadata format that is denied by the
1639.I AUTO
1640line, then it will not be assembled.
1641The
1642.I AUTO
1643line can also request that all arrays identified as being for this
1644homehost should be assembled regardless of their metadata type.
1645See
1646.IR mdadm.conf (5)
1647for further details.
1648
1649.ig
1650If
1651.I mdadm
1652cannot find any array for the given host at all, and if
1653.B \-\-auto\-update\-homehost
1654is given, then
1655.I mdadm
1656will search again for any array (not just an array created for this
1657host) and will assemble each assuming
1658.BR \-\-update=homehost .
1659This will change the host tag in the superblock so that on the next run,
1660these arrays will be found without the second pass. The intention of
1661this feature is to support transitioning a set of md arrays to using
1662homehost tagging.
1663
1664The reason for requiring arrays to be tagged with the homehost for
1665auto assembly is to guard against problems that can arise when moving
1666devices from one host to another.
1667..
1668
1669.SH BUILD MODE
1670
1671.HP 12
1672Usage:
1673.B mdadm \-\-build
1674.I md-device
1675.BI \-\-chunk= X
1676.BI \-\-level= Y
1677.BI \-\-raid\-devices= Z
1678.I devices
1679
1680.PP
1681This usage is similar to
1682.BR \-\-create .
1683The difference is that it creates an array without a superblock. With
1684these arrays there is no difference between initially creating the array and
1685subsequently assembling the array, except that hopefully there is useful
1686data there in the second case.
1687
1688The level may raid0, linear, raid1, raid10, multipath, or faulty, or
1689one of their synonyms. All devices must be listed and the array will
1690be started once complete. It will often be appropriate to use
1691.B \-\-assume\-clean
1692with levels raid1 or raid10.
1693
1694.SH CREATE MODE
1695
1696.HP 12
1697Usage:
1698.B mdadm \-\-create
1699.I md-device
1700.BI \-\-chunk= X
1701.BI \-\-level= Y
1702.br
1703.BI \-\-raid\-devices= Z
1704.I devices
1705
1706.PP
1707This usage will initialise a new md array, associate some devices with
1708it, and activate the array.
1709
1710The named device will normally not exist when
1711.I "mdadm \-\-create"
1712is run, but will be created by
1713.I udev
1714once the array becomes active.
1715
1716As devices are added, they are checked to see if they contain RAID
1717superblocks or filesystems. They are also checked to see if the variance in
1718device size exceeds 1%.
1719
1720If any discrepancy is found, the array will not automatically be run, though
1721the presence of a
1722.B \-\-run
1723can override this caution.
1724
1725To create a "degraded" array in which some devices are missing, simply
1726give the word "\fBmissing\fP"
1727in place of a device name. This will cause
1728.I mdadm
1729to leave the corresponding slot in the array empty.
1730For a RAID4 or RAID5 array at most one slot can be
1731"\fBmissing\fP"; for a RAID6 array at most two slots.
1732For a RAID1 array, only one real device needs to be given. All of the
1733others can be
1734"\fBmissing\fP".
1735
1736When creating a RAID5 array,
1737.I mdadm
1738will automatically create a degraded array with an extra spare drive.
1739This is because building the spare into a degraded array is in general
1740faster than resyncing the parity on a non-degraded, but not clean,
1741array. This feature can be overridden with the
1742.B \-\-force
1743option.
1744
1745When creating an array with version-1 metadata a name for the array is
1746required.
1747If this is not given with the
1748.B \-\-name
1749option,
1750.I mdadm
1751will choose a name based on the last component of the name of the
1752device being created. So if
1753.B /dev/md3
1754is being created, then the name
1755.B 3
1756will be chosen.
1757If
1758.B /dev/md/home
1759is being created, then the name
1760.B home
1761will be used.
1762
1763When creating a partition based array, using
1764.I mdadm
1765with version-1.x metadata, the partition type should be set to
1766.B 0xDA
1767(non fs-data). This type selection allows for greater precision since
1768using any other [RAID auto-detect (0xFD) or a GNU/Linux partition (0x83)],
1769might create problems in the event of array recovery through a live cdrom.
1770
1771A new array will normally get a randomly assigned 128bit UUID which is
1772very likely to be unique. If you have a specific need, you can choose
1773a UUID for the array by giving the
1774.B \-\-uuid=
1775option. Be warned that creating two arrays with the same UUID is a
1776recipe for disaster. Also, using
1777.B \-\-uuid=
1778when creating a v0.90 array will silently override any
1779.B \-\-homehost=
1780setting.
1781.\"If the
1782.\".B \-\-size
1783.\"option is given, it is not necessary to list any component-devices in this command.
1784.\"They can be added later, before a
1785.\".B \-\-run.
1786.\"If no
1787.\".B \-\-size
1788.\"is given, the apparent size of the smallest drive given is used.
1789
1790When creating an array within a
1791.B CONTAINER
1792.I mdadm
1793can be given either the list of devices to use, or simply the name of
1794the container. The former case gives control over which devices in
1795the container will be used for the array. The latter case allows
1796.I mdadm
1797to automatically choose which devices to use based on how much spare
1798space is available.
1799
1800The General Management options that are valid with
1801.B \-\-create
1802are:
1803.TP
1804.B \-\-run
1805insist on running the array even if some devices look like they might
1806be in use.
1807
1808.TP
1809.B \-\-readonly
1810start the array readonly \(em not supported yet.
1811
1812.SH MANAGE MODE
1813.HP 12
1814Usage:
1815.B mdadm
1816.I device
1817.I options... devices...
1818.PP
1819
1820This usage will allow individual devices in an array to be failed,
1821removed or added. It is possible to perform multiple operations with
1822on command. For example:
1823.br
1824.B " mdadm /dev/md0 \-f /dev/hda1 \-r /dev/hda1 \-a /dev/hda1"
1825.br
1826will firstly mark
1827.B /dev/hda1
1828as faulty in
1829.B /dev/md0
1830and will then remove it from the array and finally add it back
1831in as a spare. However only one md array can be affected by a single
1832command.
1833
1834When a device is added to an active array, mdadm checks to see if it
1835has metadata on it which suggests that it was recently a member of the
1836array. If it does, it tries to "re\-add" the device. If there have
1837been no changes since the device was removed, or if the array has a
1838write-intent bitmap which has recorded whatever changes there were,
1839then the device will immediately become a full member of the array and
1840those differences recorded in the bitmap will be resolved.
1841
1842.SH MISC MODE
1843.HP 12
1844Usage:
1845.B mdadm
1846.I options ...
1847.I devices ...
1848.PP
1849
1850MISC mode includes a number of distinct operations that
1851operate on distinct devices. The operations are:
1852.TP
1853.B \-\-query
1854The device is examined to see if it is
1855(1) an active md array, or
1856(2) a component of an md array.
1857The information discovered is reported.
1858
1859.TP
1860.B \-\-detail
1861The device should be an active md device.
1862.B mdadm
1863will display a detailed description of the array.
1864.B \-\-brief
1865or
1866.B \-\-scan
1867will cause the output to be less detailed and the format to be
1868suitable for inclusion in
1869.BR mdadm.conf .
1870The exit status of
1871.I mdadm
1872will normally be 0 unless
1873.I mdadm
1874failed to get useful information about the device(s); however, if the
1875.B \-\-test
1876option is given, then the exit status will be:
1877.RS
1878.TP
18790
1880The array is functioning normally.
1881.TP
18821
1883The array has at least one failed device.
1884.TP
18852
1886The array has multiple failed devices such that it is unusable.
1887.TP
18884
1889There was an error while trying to get information about the device.
1890.RE
1891
1892.TP
1893.B \-\-detail\-platform
1894Print detail of the platform's RAID capabilities (firmware / hardware
1895topology). If the metadata is specified with
1896.B \-e
1897or
1898.B \-\-metadata=
1899then the return status will be:
1900.RS
1901.TP
19020
1903metadata successfully enumerated its platform components on this system
1904.TP
19051
1906metadata is platform independent
1907.TP
19082
1909metadata failed to find its platform components on this system
1910.RE
1911
1912.TP
1913.B \-\-update\-subarray=
1914If the device is a container and the argument to \-\-update\-subarray
1915specifies a subarray in the container, then attempt to update the given
1916superblock field in the subarray. Similar to updating an array in
1917"assemble" mode, the field to update is selected by
1918.B \-U
1919or
1920.B \-\-update=
1921option. Currently only
1922.B name
1923is supported.
1924
1925The
1926.B name
1927option updates the subarray name in the metadata, it may not affect the
1928device node name or the device node symlink until the subarray is
1929re\-assembled. If updating
1930.B name
1931would change the UUID of an active subarray this operation is blocked,
1932and the command will end in an error.
1933
1934.TP
1935.B \-\-examine
1936The device should be a component of an md array.
1937.I mdadm
1938will read the md superblock of the device and display the contents.
1939If
1940.B \-\-brief
1941or
1942.B \-\-scan
1943is given, then multiple devices that are components of the one array
1944are grouped together and reported in a single entry suitable
1945for inclusion in
1946.BR mdadm.conf .
1947
1948Having
1949.B \-\-scan
1950without listing any devices will cause all devices listed in the
1951config file to be examined.
1952
1953.TP
1954.B \-\-stop
1955The devices should be active md arrays which will be deactivated, as
1956long as they are not currently in use.
1957
1958.TP
1959.B \-\-run
1960This will fully activate a partially assembled md array.
1961
1962.TP
1963.B \-\-readonly
1964This will mark an active array as read-only, providing that it is
1965not currently being used.
1966
1967.TP
1968.B \-\-readwrite
1969This will change a
1970.B readonly
1971array back to being read/write.
1972
1973.TP
1974.B \-\-scan
1975For all operations except
1976.BR \-\-examine ,
1977.B \-\-scan
1978will cause the operation to be applied to all arrays listed in
1979.BR /proc/mdstat .
1980For
1981.BR \-\-examine,
1982.B \-\-scan
1983causes all devices listed in the config file to be examined.
1984
1985.TP
1986.BR \-b ", " \-\-brief
1987Be less verbose. This is used with
1988.B \-\-detail
1989and
1990.BR \-\-examine .
1991Using
1992.B \-\-brief
1993with
1994.B \-\-verbose
1995gives an intermediate level of verbosity.
1996
1997.SH MONITOR MODE
1998
1999.HP 12
2000Usage:
2001.B mdadm \-\-monitor
2002.I options... devices...
2003
2004.PP
2005This usage causes
2006.I mdadm
2007to periodically poll a number of md arrays and to report on any events
2008noticed.
2009.I mdadm
2010will never exit once it decides that there are arrays to be checked,
2011so it should normally be run in the background.
2012
2013As well as reporting events,
2014.I mdadm
2015may move a spare drive from one array to another if they are in the
2016same
2017.B spare-group
2018or
2019.B domain
2020and if the destination array has a failed drive but no spares.
2021
2022If any devices are listed on the command line,
2023.I mdadm
2024will only monitor those devices. Otherwise all arrays listed in the
2025configuration file will be monitored. Further, if
2026.B \-\-scan
2027is given, then any other md devices that appear in
2028.B /proc/mdstat
2029will also be monitored.
2030
2031The result of monitoring the arrays is the generation of events.
2032These events are passed to a separate program (if specified) and may
2033be mailed to a given E-mail address.
2034
2035When passing events to a program, the program is run once for each event,
2036and is given 2 or 3 command-line arguments: the first is the
2037name of the event (see below), the second is the name of the
2038md device which is affected, and the third is the name of a related
2039device if relevant (such as a component device that has failed).
2040
2041If
2042.B \-\-scan
2043is given, then a program or an E-mail address must be specified on the
2044command line or in the config file. If neither are available, then
2045.I mdadm
2046will not monitor anything.
2047Without
2048.B \-\-scan,
2049.I mdadm
2050will continue monitoring as long as something was found to monitor. If
2051no program or email is given, then each event is reported to
2052.BR stdout .
2053
2054The different events are:
2055
2056.RS 4
2057.TP
2058.B DeviceDisappeared
2059An md array which previously was configured appears to no longer be
2060configured. (syslog priority: Critical)
2061
2062If
2063.I mdadm
2064was told to monitor an array which is RAID0 or Linear, then it will
2065report
2066.B DeviceDisappeared
2067with the extra information
2068.BR Wrong-Level .
2069This is because RAID0 and Linear do not support the device-failed,
2070hot-spare and resync operations which are monitored.
2071
2072.TP
2073.B RebuildStarted
2074An md array started reconstruction. (syslog priority: Warning)
2075
2076.TP
2077.BI Rebuild NN
2078Where
2079.I NN
2080is a two-digit number (ie. 05, 48). This indicates that rebuild
2081has passed that many percent of the total. The events are generated
2082with fixed increment since 0. Increment size may be specified with
2083a commandline option (default is 20). (syslog priority: Warning)
2084
2085.TP
2086.B RebuildFinished
2087An md array that was rebuilding, isn't any more, either because it
2088finished normally or was aborted. (syslog priority: Warning)
2089
2090.TP
2091.B Fail
2092An active component device of an array has been marked as
2093faulty. (syslog priority: Critical)
2094
2095.TP
2096.B FailSpare
2097A spare component device which was being rebuilt to replace a faulty
2098device has failed. (syslog priority: Critical)
2099
2100.TP
2101.B SpareActive
2102A spare component device which was being rebuilt to replace a faulty
2103device has been successfully rebuilt and has been made active.
2104(syslog priority: Info)
2105
2106.TP
2107.B NewArray
2108A new md array has been detected in the
2109.B /proc/mdstat
2110file. (syslog priority: Info)
2111
2112.TP
2113.B DegradedArray
2114A newly noticed array appears to be degraded. This message is not
2115generated when
2116.I mdadm
2117notices a drive failure which causes degradation, but only when
2118.I mdadm
2119notices that an array is degraded when it first sees the array.
2120(syslog priority: Critical)
2121
2122.TP
2123.B MoveSpare
2124A spare drive has been moved from one array in a
2125.B spare-group
2126or
2127.B domain
2128to another to allow a failed drive to be replaced.
2129(syslog priority: Info)
2130
2131.TP
2132.B SparesMissing
2133If
2134.I mdadm
2135has been told, via the config file, that an array should have a certain
2136number of spare devices, and
2137.I mdadm
2138detects that it has fewer than this number when it first sees the
2139array, it will report a
2140.B SparesMissing
2141message.
2142(syslog priority: Warning)
2143
2144.TP
2145.B TestMessage
2146An array was found at startup, and the
2147.B \-\-test
2148flag was given.
2149(syslog priority: Info)
2150.RE
2151
2152Only
2153.B Fail,
2154.B FailSpare,
2155.B DegradedArray,
2156.B SparesMissing
2157and
2158.B TestMessage
2159cause Email to be sent. All events cause the program to be run.
2160The program is run with two or three arguments: the event
2161name, the array device and possibly a second device.
2162
2163Each event has an associated array device (e.g.
2164.BR /dev/md1 )
2165and possibly a second device. For
2166.BR Fail ,
2167.BR FailSpare ,
2168and
2169.B SpareActive
2170the second device is the relevant component device.
2171For
2172.B MoveSpare
2173the second device is the array that the spare was moved from.
2174
2175For
2176.I mdadm
2177to move spares from one array to another, the different arrays need to
2178be labeled with the same
2179.B spare-group
2180or the spares must be allowed to migrate through matching POLICY domains
2181in the configuration file. The
2182.B spare-group
2183name can be any string; it is only necessary that different spare
2184groups use different names.
2185
2186When
2187.I mdadm
2188detects that an array in a spare group has fewer active
2189devices than necessary for the complete array, and has no spare
2190devices, it will look for another array in the same spare group that
2191has a full complement of working drive and a spare. It will then
2192attempt to remove the spare from the second drive and add it to the
2193first.
2194If the removal succeeds but the adding fails, then it is added back to
2195the original array.
2196
2197If the spare group for a degraded array is not defined,
2198.I mdadm
2199will look at the rules of spare migration specified by POLICY lines in
2200.B mdadm.conf
2201and then follow similar steps as above if a matching spare is found.
2202
2203.SH GROW MODE
2204The GROW mode is used for changing the size or shape of an active
2205array.
2206For this to work, the kernel must support the necessary change.
2207Various types of growth are being added during 2.6 development.
2208
2209Currently the supported changes include
2210.IP \(bu 4
2211change the "size" attribute for RAID1, RAID4, RAID5 and RAID6.
2212.IP \(bu 4
2213increase or decrease the "raid\-devices" attribute of RAID0, RAID1, RAID4,
2214RAID5, and RAID6.
2215.IP \bu 4
2216change the chunk-size and layout of RAID0, RAID4, RAID5 and RAID6.
2217.IP \bu 4
2218convert between RAID1 and RAID5, between RAID5 and RAID6, between
2219RAID0, RAID5, and RAID5, and between RAID0 and RAID10 (in the near-2 mode).
2220.IP \(bu 4
2221add a write-intent bitmap to any array which supports these bitmaps, or
2222remove a write-intent bitmap from such an array.
2223.PP
2224
2225Using GROW on containers is currently only support for Intel's IMSM
2226container format. The number of devices in a container can be
2227increased - which affects all arrays in the container - or an array
2228in a container can be converted between levels where those levels are
2229supported by the container, and the conversion is on of those listed
2230above.
2231
2232Grow functionality (e.g. expand a number of raid devices) for Intel's
2233IMSM container format has an experimental status. It is guarded by the
2234.B MDADM_EXPERIMENTAL
2235environment variable which must be set to '1' for a GROW command to
2236succeed.
2237This is for the following reasons:
2238
2239.IP 1.
2240Intel's native IMSM check-pointing is not fully implemented yet.
2241This causes IMSM incompatibility during the grow process: an array
2242which is growing cannot roam between Microsoft Windows(R) and Linux
2243systems.
2244
2245.IP 2.
2246Interrupting a grow operation is not recommended, because it
2247has not been fully tested for Intel's IMSM container format yet.
2248
2249.SS SIZE CHANGES
2250Normally when an array is built the "size" is taken from the smallest
2251of the drives. If all the small drives in an arrays are, one at a
2252time, removed and replaced with larger drives, then you could have an
2253array of large drives with only a small amount used. In this
2254situation, changing the "size" with "GROW" mode will allow the extra
2255space to start being used. If the size is increased in this way, a
2256"resync" process will start to make sure the new parts of the array
2257are synchronised.
2258
2259Note that when an array changes size, any filesystem that may be
2260stored in the array will not automatically grow for shrink to use or
2261vacate the space. The
2262filesystem will need to be explicitly told to use the extra space
2263after growing, or to reduce its size
2264.B prior
2265to shrinking the array.
2266
2267Also the size of an array cannot be changed while it has an active
2268bitmap. If an array has a bitmap, it must be removed before the size
2269can be changed. Once the change it complete a new bitmap can be created.
2270
2271.SS RAID\-DEVICES CHANGES
2272
2273A RAID1 array can work with any number of devices from 1 upwards
2274(though 1 is not very useful). There may be times which you want to
2275increase or decrease the number of active devices. Note that this is
2276different to hot-add or hot-remove which changes the number of
2277inactive devices.
2278
2279When reducing the number of devices in a RAID1 array, the slots which
2280are to be removed from the array must already be vacant. That is, the
2281devices which were in those slots must be failed and removed.
2282
2283When the number of devices is increased, any hot spares that are
2284present will be activated immediately.
2285
2286Changing the number of active devices in a RAID5 or RAID6 is much more
2287effort. Every block in the array will need to be read and written
2288back to a new location. From 2.6.17, the Linux Kernel is able to
2289increase the number of devices in a RAID5 safely, including restarting
2290an interrupted "reshape". From 2.6.31, the Linux Kernel is able to
2291increase or decrease the number of devices in a RAID5 or RAID6.
2292
2293From 2.6.35, the Linux Kernel is able to convert a RAID0 in to a RAID4
2294or RAID5.
2295.I mdadm
2296uses this functionality and the ability to add
2297devices to a RAID4 to allow devices to be added to a RAID0. When
2298requested to do this,
2299.I mdadm
2300will convert the RAID0 to a RAID4, add the necessary disks and make
2301the reshape happen, and then convert the RAID4 back to RAID0.
2302
2303When decreasing the number of devices, the size of the array will also
2304decrease. If there was data in the array, it could get destroyed and
2305this is not reversible, so you should firstly shrink the filesystem on
2306the array to fit within the new size. To help prevent accidents,
2307.I mdadm
2308requires that the size of the array be decreased first with
2309.BR "mdadm --grow --array-size" .
2310This is a reversible change which simply makes the end of the array
2311inaccessible. The integrity of any data can then be checked before
2312the non-reversible reduction in the number of devices is request.
2313
2314When relocating the first few stripes on a RAID5 or RAID6, it is not
2315possible to keep the data on disk completely consistent and
2316crash-proof. To provide the required safety, mdadm disables writes to
2317the array while this "critical section" is reshaped, and takes a
2318backup of the data that is in that section. For grows, this backup may be
2319stored in any spare devices that the array has, however it can also be
2320stored in a separate file specified with the
2321.B \-\-backup\-file
2322option, and is required to be specified for shrinks, RAID level
2323changes and layout changes. If this option is used, and the system
2324does crash during the critical period, the same file must be passed to
2325.B \-\-assemble
2326to restore the backup and reassemble the array. When shrinking rather
2327than growing the array, the reshape is done from the end towards the
2328beginning, so the "critical section" is at the end of the reshape.
2329
2330.SS LEVEL CHANGES
2331
2332Changing the RAID level of any array happens instantaneously. However
2333in the RAID5 to RAID6 case this requires a non-standard layout of the
2334RAID6 data, and in the RAID6 to RAID5 case that non-standard layout is
2335required before the change can be accomplished. So while the level
2336change is instant, the accompanying layout change can take quite a
2337long time. A
2338.B \-\-backup\-file
2339is required. If the array is not simultaneously being grown or
2340shrunk, so that the array size will remain the same - for example,
2341reshaping a 3-drive RAID5 into a 4-drive RAID6 - the backup file will
2342be used not just for a "cricital section" but throughout the reshape
2343operation, as described below under LAYOUT CHANGES.
2344
2345.SS CHUNK-SIZE AND LAYOUT CHANGES
2346
2347Changing the chunk-size of layout without also changing the number of
2348devices as the same time will involve re-writing all blocks in-place.
2349To ensure against data loss in the case of a crash, a
2350.B --backup-file
2351must be provided for these changes. Small sections of the array will
2352be copied to the backup file while they are being rearranged. This
2353means that all the data is copied twice, once to the backup and once
2354to the new layout on the array, so this type of reshape will go very
2355slowly.
2356
2357If the reshape is interrupted for any reason, this backup file must be
2358made available to
2359.B "mdadm --assemble"
2360so the array can be reassembled. Consequently the file cannot be
2361stored on the device being reshaped.
2362
2363
2364.SS BITMAP CHANGES
2365
2366A write-intent bitmap can be added to, or removed from, an active
2367array. Either internal bitmaps, or bitmaps stored in a separate file,
2368can be added. Note that if you add a bitmap stored in a file which is
2369in a filesystem that is on the RAID array being affected, the system
2370will deadlock. The bitmap must be on a separate filesystem.
2371
2372.SH INCREMENTAL MODE
2373
2374.HP 12
2375Usage:
2376.B mdadm \-\-incremental
2377.RB [ \-\-run ]
2378.RB [ \-\-quiet ]
2379.I component-device
2380.HP 12
2381Usage:
2382.B mdadm \-\-incremental \-\-fail
2383.I component-device
2384.HP 12
2385Usage:
2386.B mdadm \-\-incremental \-\-rebuild\-map
2387.HP 12
2388Usage:
2389.B mdadm \-\-incremental \-\-run \-\-scan
2390
2391.PP
2392This mode is designed to be used in conjunction with a device
2393discovery system. As devices are found in a system, they can be
2394passed to
2395.B "mdadm \-\-incremental"
2396to be conditionally added to an appropriate array.
2397
2398Conversely, it can also be used with the
2399.B \-\-fail
2400flag to do just the opposite and find whatever array a particular device
2401is part of and remove the device from that array.
2402
2403If the device passed is a
2404.B CONTAINER
2405device created by a previous call to
2406.IR mdadm ,
2407then rather than trying to add that device to an array, all the arrays
2408described by the metadata of the container will be started.
2409
2410.I mdadm
2411performs a number of tests to determine if the device is part of an
2412array, and which array it should be part of. If an appropriate array
2413is found, or can be created,
2414.I mdadm
2415adds the device to the array and conditionally starts the array.
2416
2417Note that
2418.I mdadm
2419will normally only add devices to an array which were previously working
2420(active or spare) parts of that array. The support for automatic
2421inclusion of a new drive as a spare in some array requires
2422a configuration through POLICY in config file.
2423
2424The tests that
2425.I mdadm
2426makes are as follow:
2427.IP +
2428Is the device permitted by
2429.BR mdadm.conf ?
2430That is, is it listed in a
2431.B DEVICES
2432line in that file. If
2433.B DEVICES
2434is absent then the default it to allow any device. Similar if
2435.B DEVICES
2436contains the special word
2437.B partitions
2438then any device is allowed. Otherwise the device name given to
2439.I mdadm
2440must match one of the names or patterns in a
2441.B DEVICES
2442line.
2443
2444.IP +
2445Does the device have a valid md superblock. If a specific metadata
2446version is request with
2447.B \-\-metadata
2448or
2449.B \-e
2450then only that style of metadata is accepted, otherwise
2451.I mdadm
2452finds any known version of metadata. If no
2453.I md
2454metadata is found, the device may be still added to an array
2455as a spare if POLICY allows.
2456
2457.ig
2458.IP +
2459Does the metadata match an expected array?
2460The metadata can match in two ways. Either there is an array listed
2461in
2462.B mdadm.conf
2463which identifies the array (either by UUID, by name, by device list,
2464or by minor-number), or the array was created with a
2465.B homehost
2466specified and that
2467.B homehost
2468matches the one in
2469.B mdadm.conf
2470or on the command line.
2471If
2472.I mdadm
2473is not able to positively identify the array as belonging to the
2474current host, the device will be rejected.
2475..
2476
2477.I mdadm
2478keeps a list of arrays that it has partially assembled in
2479.B /var/run/mdadm/map
2480(or
2481.B /var/run/mdadm.map
2482if the directory doesn't exist. Or maybe even
2483.BR /dev/.mdadm.map ).
2484If no array exists which matches
2485the metadata on the new device,
2486.I mdadm
2487must choose a device name and unit number. It does this based on any
2488name given in
2489.B mdadm.conf
2490or any name information stored in the metadata. If this name
2491suggests a unit number, that number will be used, otherwise a free
2492unit number will be chosen. Normally
2493.I mdadm
2494will prefer to create a partitionable array, however if the
2495.B CREATE
2496line in
2497.B mdadm.conf
2498suggests that a non-partitionable array is preferred, that will be
2499honoured.
2500
2501If the array is not found in the config file and its metadata does not
2502identify it as belonging to the "homehost", then
2503.I mdadm
2504will choose a name for the array which is certain not to conflict with
2505any array which does belong to this host. It does this be adding an
2506underscore and a small number to the name preferred by the metadata.
2507
2508Once an appropriate array is found or created and the device is added,
2509.I mdadm
2510must decide if the array is ready to be started. It will
2511normally compare the number of available (non-spare) devices to the
2512number of devices that the metadata suggests need to be active. If
2513there are at least that many, the array will be started. This means
2514that if any devices are missing the array will not be restarted.
2515
2516As an alternative,
2517.B \-\-run
2518may be passed to
2519.I mdadm
2520in which case the array will be run as soon as there are enough
2521devices present for the data to be accessible. For a RAID1, that
2522means one device will start the array. For a clean RAID5, the array
2523will be started as soon as all but one drive is present.
2524
2525Note that neither of these approaches is really ideal. If it can
2526be known that all device discovery has completed, then
2527.br
2528.B " mdadm \-IRs"
2529.br
2530can be run which will try to start all arrays that are being
2531incrementally assembled. They are started in "read-auto" mode in
2532which they are read-only until the first write request. This means
2533that no metadata updates are made and no attempt at resync or recovery
2534happens. Further devices that are found before the first write can
2535still be added safely.
2536
2537.SH ENVIRONMENT
2538This section describes environment variables that affect how mdadm
2539operates.
2540
2541.TP
2542.B MDADM_NO_MDMON
2543Setting this value to 1 will prevent mdadm from automatically launching
2544mdmon. This variable is intended primarily for debugging mdadm/mdmon.
2545
2546.TP
2547.B MDADM_NO_UDEV
2548Normally,
2549.I mdadm
2550does not create any device nodes in /dev, but leaves that task to
2551.IR udev .
2552If
2553.I udev
2554appears not to be configured, or if this environment variable is set
2555to '1', the
2556.I mdadm
2557will create and devices that are needed.
2558
2559.SH EXAMPLES
2560
2561.B " mdadm \-\-query /dev/name-of-device"
2562.br
2563This will find out if a given device is a RAID array, or is part of
2564one, and will provide brief information about the device.
2565
2566.B " mdadm \-\-assemble \-\-scan"
2567.br
2568This will assemble and start all arrays listed in the standard config
2569file. This command will typically go in a system startup file.
2570
2571.B " mdadm \-\-stop \-\-scan"
2572.br
2573This will shut down all arrays that can be shut down (i.e. are not
2574currently in use). This will typically go in a system shutdown script.
2575
2576.B " mdadm \-\-follow \-\-scan \-\-delay=120"
2577.br
2578If (and only if) there is an Email address or program given in the
2579standard config file, then
2580monitor the status of all arrays listed in that file by
2581polling them ever 2 minutes.
2582
2583.B " mdadm \-\-create /dev/md0 \-\-level=1 \-\-raid\-devices=2 /dev/hd[ac]1"
2584.br
2585Create /dev/md0 as a RAID1 array consisting of /dev/hda1 and /dev/hdc1.
2586
2587.br
2588.B " echo 'DEVICE /dev/hd*[0\-9] /dev/sd*[0\-9]' > mdadm.conf"
2589.br
2590.B " mdadm \-\-detail \-\-scan >> mdadm.conf"
2591.br
2592This will create a prototype config file that describes currently
2593active arrays that are known to be made from partitions of IDE or SCSI drives.
2594This file should be reviewed before being used as it may
2595contain unwanted detail.
2596
2597.B " echo 'DEVICE /dev/hd[a\-z] /dev/sd*[a\-z]' > mdadm.conf"
2598.br
2599.B " mdadm \-\-examine \-\-scan \-\-config=mdadm.conf >> mdadm.conf"
2600.br
2601This will find arrays which could be assembled from existing IDE and
2602SCSI whole drives (not partitions), and store the information in the
2603format of a config file.
2604This file is very likely to contain unwanted detail, particularly
2605the
2606.B devices=
2607entries. It should be reviewed and edited before being used as an
2608actual config file.
2609
2610.B " mdadm \-\-examine \-\-brief \-\-scan \-\-config=partitions"
2611.br
2612.B " mdadm \-Ebsc partitions"
2613.br
2614Create a list of devices by reading
2615.BR /proc/partitions ,
2616scan these for RAID superblocks, and printout a brief listing of all
2617that were found.
2618
2619.B " mdadm \-Ac partitions \-m 0 /dev/md0"
2620.br
2621Scan all partitions and devices listed in
2622.BR /proc/partitions
2623and assemble
2624.B /dev/md0
2625out of all such devices with a RAID superblock with a minor number of 0.
2626
2627.B " mdadm \-\-monitor \-\-scan \-\-daemonise > /var/run/mdadm"
2628.br
2629If config file contains a mail address or alert program, run mdadm in
2630the background in monitor mode monitoring all md devices. Also write
2631pid of mdadm daemon to
2632.BR /var/run/mdadm .
2633
2634.B " mdadm \-Iq /dev/somedevice"
2635.br
2636Try to incorporate newly discovered device into some array as
2637appropriate.
2638
2639.B " mdadm \-\-incremental \-\-rebuild\-map \-\-run \-\-scan"
2640.br
2641Rebuild the array map from any current arrays, and then start any that
2642can be started.
2643
2644.B " mdadm /dev/md4 --fail detached --remove detached"
2645.br
2646Any devices which are components of /dev/md4 will be marked as faulty
2647and then remove from the array.
2648
2649.B " mdadm --grow /dev/md4 --level=6 --backup-file=/root/backup-md4
2650.br
2651The array
2652.B /dev/md4
2653which is currently a RAID5 array will be converted to RAID6. There
2654should normally already be a spare drive attached to the array as a
2655RAID6 needs one more drive than a matching RAID5.
2656
2657.B " mdadm --create /dev/md/ddf --metadata=ddf --raid-disks 6 /dev/sd[a-f]"
2658.br
2659Create a DDF array over 6 devices.
2660
2661.B " mdadm --create /dev/md/home -n3 -l5 -z 30000000 /dev/md/ddf"
2662.br
2663Create a RAID5 array over any 3 devices in the given DDF set. Use
2664only 30 gigabytes of each device.
2665
2666.B " mdadm -A /dev/md/ddf1 /dev/sd[a-f]"
2667.br
2668Assemble a pre-exist ddf array.
2669
2670.B " mdadm -I /dev/md/ddf1"
2671.br
2672Assemble all arrays contained in the ddf array, assigning names as
2673appropriate.
2674
2675.B " mdadm \-\-create \-\-help"
2676.br
2677Provide help about the Create mode.
2678
2679.B " mdadm \-\-config \-\-help"
2680.br
2681Provide help about the format of the config file.
2682
2683.B " mdadm \-\-help"
2684.br
2685Provide general help.
2686
2687.SH FILES
2688
2689.SS /proc/mdstat
2690
2691If you're using the
2692.B /proc
2693filesystem,
2694.B /proc/mdstat
2695lists all active md devices with information about them.
2696.I mdadm
2697uses this to find arrays when
2698.B \-\-scan
2699is given in Misc mode, and to monitor array reconstruction
2700on Monitor mode.
2701
2702.SS /etc/mdadm.conf
2703
2704The config file lists which devices may be scanned to see if
2705they contain MD super block, and gives identifying information
2706(e.g. UUID) about known MD arrays. See
2707.BR mdadm.conf (5)
2708for more details.
2709
2710.SS /var/run/mdadm/map
2711When
2712.B \-\-incremental
2713mode is used, this file gets a list of arrays currently being created.
2714If
2715.B /var/run/mdadm
2716does not exist as a directory, then
2717.B /var/run/mdadm.map
2718is used instead. If
2719.B /var/run
2720is not available (as may be the case during early boot),
2721.B /dev/.mdadm.map
2722is used on the basis that
2723.B /dev
2724is usually available very early in boot.
2725
2726.SH DEVICE NAMES
2727
2728.I mdadm
2729understand two sorts of names for array devices.
2730
2731The first is the so-called 'standard' format name, which matches the
2732names used by the kernel and which appear in
2733.IR /proc/mdstat .
2734
2735The second sort can be freely chosen, but must reside in
2736.IR /dev/md/ .
2737When giving a device name to
2738.I mdadm
2739to create or assemble an array, either full path name such as
2740.I /dev/md0
2741or
2742.I /dev/md/home
2743can be given, or just the suffix of the second sort of name, such as
2744.I home
2745can be given.
2746
2747When
2748.I mdadm
2749chooses device names during auto-assembly or incremental assembly, it
2750will sometimes add a small sequence number to the end of the name to
2751avoid conflicted between multiple arrays that have the same name. If
2752.I mdadm
2753can reasonably determine that the array really is meant for this host,
2754either by a hostname in the metadata, or by the presence of the array
2755in
2756.BR mdadm.conf ,
2757then it will leave off the suffix if possible.
2758Also if the homehost is specified as
2759.B <ignore>
2760.I mdadm
2761will only use a suffix if a different array of the same name already
2762exists or is listed in the config file.
2763
2764The standard names for non-partitioned arrays (the only sort of md
2765array available in 2.4 and earlier) are of the form
2766.IP
2767/dev/mdNN
2768.PP
2769where NN is a number.
2770The standard names for partitionable arrays (as available from 2.6
2771onwards) are of the form
2772.IP
2773/dev/md_dNN
2774.PP
2775Partition numbers should be indicated by added "pMM" to these, thus "/dev/md/d1p2".
2776.PP
2777From kernel version, 2.6.28 the "non-partitioned array" can actually
2778be partitioned. So the "md_dNN" names are no longer needed, and
2779partitions such as "/dev/mdNNpXX" are possible.
2780
2781.SH NOTE
2782.I mdadm
2783was previously known as
2784.IR mdctl .
2785.P
2786.I mdadm
2787is completely separate from the
2788.I raidtools
2789package, and does not use the
2790.I /etc/raidtab
2791configuration file at all.
2792
2793.SH SEE ALSO
2794For further information on mdadm usage, MD and the various levels of
2795RAID, see:
2796.IP
2797.B http://linux\-raid.osdl.org/
2798.PP
2799(based upon Jakob \(/Ostergaard's Software\-RAID.HOWTO)
2800.\".PP
2801.\"for new releases of the RAID driver check out:
2802.\"
2803.\".IP
2804.\".UR ftp://ftp.kernel.org/pub/linux/kernel/people/mingo/raid-patches
2805.\"ftp://ftp.kernel.org/pub/linux/kernel/people/mingo/raid-patches
2806.\".UE
2807.\".PP
2808.\"or
2809.\".IP
2810.\".UR http://www.cse.unsw.edu.au/~neilb/patches/linux-stable/
2811.\"http://www.cse.unsw.edu.au/~neilb/patches/linux-stable/
2812.\".UE
2813.PP
2814The latest version of
2815.I mdadm
2816should always be available from
2817.IP
2818.B http://www.kernel.org/pub/linux/utils/raid/mdadm/
2819.PP
2820Related man pages:
2821.PP
2822.IR mdmon (8),
2823.IR mdadm.conf (5),
2824.IR md (4).
2825.PP
2826.IR raidtab (5),
2827.IR raid0run (8),
2828.IR raidstop (8),
2829.IR mkraid (8).