3379 lines
100 KiB
Groff
3379 lines
100 KiB
Groff
.\" -*- nroff -*-
|
|
.\" Copyright Neil Brown and others.
|
|
.\" This program is free software; you can redistribute it and/or modify
|
|
.\" it under the terms of the GNU General Public License as published by
|
|
.\" the Free Software Foundation; either version 2 of the License, or
|
|
.\" (at your option) any later version.
|
|
.\" See file COPYING in distribution for details.
|
|
.TH MDADM 8 "" v4.4
|
|
.SH NAME
|
|
mdadm \- manage MD devices
|
|
.I aka
|
|
Linux Software RAID
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.BI mdadm " [mode] <raiddevice> [options] <component-devices>"
|
|
|
|
.SH DESCRIPTION
|
|
RAID devices are virtual devices created from two or more
|
|
real block devices. This allows multiple devices (typically disk
|
|
drives or partitions thereof) to be combined into a single device to
|
|
hold (for example) a single filesystem.
|
|
Some RAID levels include redundancy and so can survive some degree of
|
|
device failure.
|
|
|
|
Linux Software RAID devices are implemented through the md (Multiple
|
|
Devices) device driver.
|
|
|
|
Currently, Linux supports
|
|
.B LINEAR
|
|
md devices,
|
|
.B RAID0
|
|
(striping),
|
|
.B RAID1
|
|
(mirroring),
|
|
.BR RAID4 ,
|
|
.BR RAID5 ,
|
|
.BR RAID6 ,
|
|
.BR RAID10 ,
|
|
.BR MULTIPATH ,
|
|
.BR FAULTY ,
|
|
and
|
|
.BR CONTAINER .
|
|
|
|
.B MULTIPATH
|
|
is not a Software RAID mechanism, but does involve
|
|
multiple devices:
|
|
each device is a path to one common physical storage device.
|
|
New installations should not use md/multipath as it is not well
|
|
supported and has no ongoing development. Use the Device Mapper based
|
|
multipath-tools instead. It is deprecated and support will be removed in the future.
|
|
|
|
.B FAULTY
|
|
is also not true RAID, and it only involves one device. It
|
|
provides a layer over a true device that can be used to inject faults. It is deprecated
|
|
and support will be removed in the future.
|
|
|
|
.B CONTAINER
|
|
is different again. A
|
|
.B CONTAINER
|
|
is a collection of devices that are
|
|
managed as a set. This is similar to the set of devices connected to
|
|
a hardware RAID controller. The set of devices may contain a number
|
|
of different RAID arrays each utilising some (or all) of the blocks from a
|
|
number of the devices in the set. For example, two devices in a 5-device set
|
|
might form a RAID1 using the whole devices. The remaining three might
|
|
have a RAID5 over the first half of each device, and a RAID0 over the
|
|
second half.
|
|
|
|
With a
|
|
.BR CONTAINER ,
|
|
there is one set of metadata that describes all of
|
|
the arrays in the container. So when
|
|
.I mdadm
|
|
creates a
|
|
.B CONTAINER
|
|
device, the device just represents the metadata. Other normal arrays (RAID1
|
|
etc) can be created inside the container.
|
|
|
|
.SH MODES
|
|
mdadm has several major modes of operation:
|
|
.TP
|
|
.B Assemble
|
|
Assemble the components of a previously created
|
|
array into an active array. Components can be explicitly given
|
|
or can be searched for.
|
|
.I mdadm
|
|
checks that the components
|
|
do form a bona fide array, and can, on request, fiddle superblock
|
|
information so as to assemble a faulty array.
|
|
|
|
.TP
|
|
.B Build
|
|
Build an array that doesn't have per-device metadata (superblocks). For these
|
|
sorts of arrays,
|
|
.I mdadm
|
|
cannot differentiate between initial creation and subsequent assembly
|
|
of an array. It also cannot perform any checks that appropriate
|
|
components have been requested. Because of this, the
|
|
.B Build
|
|
mode should only be used together with a complete understanding of
|
|
what you are doing.
|
|
|
|
.TP
|
|
.B Create
|
|
Create a new array with per-device metadata (superblocks).
|
|
Appropriate metadata is written to each device, and then the array
|
|
comprising those devices is activated. A 'resync' process is started
|
|
to make sure that the array is consistent (e.g. both sides of a mirror
|
|
contain the same data) but the content of the device is left otherwise
|
|
untouched.
|
|
The array can be used as soon as it has been created. There is no
|
|
need to wait for the initial resync to finish.
|
|
|
|
.TP
|
|
.B "Follow or Monitor"
|
|
Monitor one or more md devices and act on any state changes. This is
|
|
only meaningful for RAID1, 4, 5, 6, 10 or multipath arrays, as
|
|
only these have interesting state. RAID0 or Linear never have
|
|
missing, spare, or failed drives, so there is nothing to monitor.
|
|
|
|
.TP
|
|
.B "Grow"
|
|
Grow (or shrink) an array, or otherwise reshape it in some way.
|
|
Currently supported growth options including changing the active size
|
|
of component devices and changing the number of active devices in
|
|
Linear and RAID levels 0/1/4/5/6,
|
|
changing the RAID level between 0, 1, 5, and 6, and between 0 and 10,
|
|
changing the chunk size and layout for RAID 0,4,5,6,10 as well as adding or
|
|
removing a write-intent bitmap and changing the array's consistency policy.
|
|
|
|
.TP
|
|
.B "Incremental Assembly"
|
|
Add a single device to an appropriate array. If the addition of the
|
|
device makes the array runnable, the array will be started.
|
|
This provides a convenient interface to a
|
|
.I hot-plug
|
|
system. As each device is detected,
|
|
.I mdadm
|
|
has a chance to include it in some array as appropriate.
|
|
Optionally, when the
|
|
.I \-\-fail
|
|
flag is passed in we will remove the device from any active array
|
|
instead of adding it.
|
|
|
|
If a
|
|
.B CONTAINER
|
|
is passed to
|
|
.I mdadm
|
|
in this mode, then any arrays within that container will be assembled
|
|
and started.
|
|
|
|
.TP
|
|
.B Manage
|
|
This is for doing things to specific components of an array such as
|
|
adding new spares and removing faulty devices.
|
|
|
|
.TP
|
|
.B Misc
|
|
This is an 'everything else' mode that supports operations on active
|
|
arrays, operations on component devices such as erasing old superblocks, and
|
|
information-gathering operations.
|
|
.\"This mode allows operations on independent devices such as examine MD
|
|
.\"superblocks, erasing old superblocks and stopping active arrays.
|
|
|
|
.TP
|
|
.B Auto-detect
|
|
This mode does not act on a specific device or array, but rather it
|
|
requests the Linux Kernel to activate any auto-detected arrays.
|
|
.SH OPTIONS
|
|
|
|
.SH Options for selecting a mode are:
|
|
|
|
.TP
|
|
.BR \-A ", " \-\-assemble
|
|
Assemble a pre-existing array.
|
|
|
|
.TP
|
|
.BR \-B ", " \-\-build
|
|
Build a legacy array without superblocks.
|
|
|
|
.TP
|
|
.BR \-C ", " \-\-create
|
|
Create a new array.
|
|
|
|
.TP
|
|
.BR \-F ", " \-\-follow ", " \-\-monitor
|
|
Select
|
|
.B Monitor
|
|
mode.
|
|
|
|
.TP
|
|
.BR \-G ", " \-\-grow
|
|
Change the size or shape of an active array.
|
|
|
|
.TP
|
|
.BR \-I ", " \-\-incremental
|
|
Add/remove a single device to/from an appropriate array, and possibly start the array.
|
|
|
|
.TP
|
|
.B \-\-auto-detect
|
|
Request that the kernel starts any auto-detected arrays. This can only
|
|
work if
|
|
.I md
|
|
is compiled into the kernel \(em not if it is a module.
|
|
Arrays can be auto-detected by the kernel if all the components are in
|
|
primary MS-DOS partitions with partition type
|
|
.BR FD ,
|
|
and all use v0.90 metadata.
|
|
In-kernel autodetect is not recommended for new installations. Using
|
|
.I mdadm
|
|
to detect and assemble arrays \(em possibly in an
|
|
.I initrd
|
|
\(em is substantially more flexible and should be preferred.
|
|
|
|
.P
|
|
If a device is given before any options, or if the first option is
|
|
one of
|
|
.BR \-\-add ,
|
|
.BR \-\-re\-add ,
|
|
.BR \-\-add\-spare ,
|
|
.BR \-\-fail ,
|
|
.BR \-\-remove ,
|
|
or
|
|
.BR \-\-replace ,
|
|
then the MANAGE mode is assumed.
|
|
Anything other than these will cause the
|
|
.B Misc
|
|
mode to be assumed.
|
|
|
|
.SH Options that are not mode-specific are:
|
|
|
|
.TP
|
|
.BR \-h ", " \-\-help
|
|
Display a general help message or, after one of the above options, a
|
|
mode-specific help message.
|
|
|
|
.TP
|
|
.B \-\-help\-options
|
|
Display more detailed help about command-line parsing and some commonly
|
|
used options.
|
|
|
|
.TP
|
|
.BR \-V ", " \-\-version
|
|
Print version information for mdadm.
|
|
|
|
.TP
|
|
.BR \-v ", " \-\-verbose
|
|
Be more verbose about what is happening. This can be used twice to be
|
|
extra-verbose.
|
|
The extra verbosity currently only affects
|
|
.B \-\-detail \-\-scan
|
|
and
|
|
.BR "\-\-examine \-\-scan" .
|
|
|
|
.TP
|
|
.BR \-q ", " \-\-quiet
|
|
Avoid printing purely informative messages. With this,
|
|
.I mdadm
|
|
will be silent unless there is something really important to report.
|
|
|
|
|
|
.TP
|
|
.BR \-f ", " \-\-force
|
|
Be more forceful about certain operations. See the various modes for
|
|
the exact meaning of this option in different contexts.
|
|
|
|
.TP
|
|
.BR \-c ", " \-\-config=
|
|
Specify the config file or directory. If not specified, the default config file
|
|
and default conf.d directory will be used. See
|
|
.BR mdadm.conf (5)
|
|
for more details.
|
|
|
|
If the config file given is
|
|
.B "partitions"
|
|
then nothing will be read, but
|
|
.I mdadm
|
|
will act as though the config file contained exactly
|
|
.br
|
|
.B " DEVICE partitions containers"
|
|
.br
|
|
and will read
|
|
.B /proc/partitions
|
|
to find a list of devices to scan, and
|
|
.B /proc/mdstat
|
|
to find a list of containers to examine.
|
|
If the word
|
|
.B "none"
|
|
is given for the config file, then
|
|
.I mdadm
|
|
will act as though the config file were empty.
|
|
|
|
If the name given is of a directory, then
|
|
.I mdadm
|
|
will collect all the files contained in the directory with a name ending
|
|
in
|
|
.BR .conf ,
|
|
sort them lexically, and process all of those files as config files.
|
|
|
|
.TP
|
|
.BR \-s ", " \-\-scan
|
|
Scan config file or
|
|
.B /proc/mdstat
|
|
for missing information.
|
|
In general, this option gives
|
|
.I mdadm
|
|
permission to get any missing information (like component devices,
|
|
array devices, array identities, and alert destination) from the
|
|
configuration file (see previous option);
|
|
one exception is MISC mode when using
|
|
.B \-\-detail
|
|
or
|
|
.B \-\-stop,
|
|
in which case
|
|
.B \-\-scan
|
|
says to get a list of array devices from
|
|
.BR /proc/mdstat .
|
|
|
|
.TP
|
|
.BR \-e ", " \-\-metadata=
|
|
Declare the style of RAID metadata (superblock) to be used. The
|
|
default is {DEFAULT_METADATA} for
|
|
.BR \-\-create ,
|
|
and to guess for other operations.
|
|
The default can be overridden by setting the
|
|
.B metadata
|
|
value for the
|
|
.B CREATE
|
|
keyword in
|
|
.BR mdadm.conf .
|
|
|
|
Options are:
|
|
.RS
|
|
.ie '{DEFAULT_METADATA}'0.90'
|
|
.IP "0, 0.90, default"
|
|
.el
|
|
.IP "0, 0.90"
|
|
Use the original 0.90 format superblock. This format limits arrays to
|
|
28 component devices and limits component devices of levels 1 and
|
|
greater to 2 terabytes. It is also possible for there to be confusion
|
|
about whether the superblock applies to a whole device or just the
|
|
last partition, if that partition starts on a 64K boundary.
|
|
.ie '{DEFAULT_METADATA}'0.90'
|
|
.IP "1, 1.0, 1.1, 1.2"
|
|
.el
|
|
.IP "1, 1.0, 1.1, 1.2 default"
|
|
Use the new version-1 format superblock. This has fewer restrictions.
|
|
It can easily be moved between hosts with different endian-ness, and a
|
|
recovery operation can be checkpointed and restarted. The different
|
|
sub-versions store the superblock at different locations on the
|
|
device, either at the end (for 1.0), at the start (for 1.1) or 4K from
|
|
the start (for 1.2). "1" is equivalent to "1.2" (the commonly
|
|
preferred 1.x format).
|
|
'if '{DEFAULT_METADATA}'1.2' "default" is equivalent to "1.2".
|
|
.IP ddf
|
|
Use the "Industry Standard" DDF (Disk Data Format) format defined by
|
|
SNIA. DDF is deprecated and there is no active development around it.
|
|
When creating a DDF array a
|
|
.B CONTAINER
|
|
will be created, and normal arrays can be created in that container.
|
|
.IP imsm
|
|
Use the Intel(R) Matrix Storage Manager metadata format. This creates a
|
|
.B CONTAINER
|
|
which is managed in a similar manner to DDF, and is supported by an
|
|
option-rom on some platforms:
|
|
.IP
|
|
.B https://www.intel.com/content/www/us/en/support/products/122484
|
|
.PP
|
|
.RE
|
|
|
|
.TP
|
|
.B \-\-homehost=
|
|
This will override any
|
|
.B HOMEHOST
|
|
setting in the config file and provides the identity of the host which
|
|
should be considered the home for any arrays.
|
|
|
|
When creating an array, the
|
|
.B homehost
|
|
will be recorded in the metadata. For version-1 superblocks, it will
|
|
be prefixed to the array name. For version-0.90 superblocks, part of
|
|
the SHA1 hash of the hostname will be stored in the latter half of the
|
|
UUID.
|
|
|
|
When reporting information about an array, any array which is tagged
|
|
for the given homehost will be reported as such.
|
|
|
|
When using Auto-Assemble, only arrays tagged for the given homehost
|
|
will be allowed to use 'local' names (i.e. not ending in '_' followed
|
|
by a digit string). See below under
|
|
.BR "Auto-Assembly" .
|
|
|
|
The special name "\fBany\fP" can be used as a wild card. If an array
|
|
is created with
|
|
.B --homehost=any
|
|
then the name "\fBany\fP" will be stored in the array and it can be
|
|
assembled in the same way on any host. If an array is assembled with
|
|
this option, then the homehost recorded on the array will be ignored.
|
|
|
|
.TP
|
|
.B \-\-prefer=
|
|
When
|
|
.I mdadm
|
|
needs to print the name for a device it normally finds the name in
|
|
.B /dev
|
|
which refers to the device and is the shortest. When a path component is
|
|
given with
|
|
.B \-\-prefer
|
|
.I mdadm
|
|
will prefer a longer name if it contains that component. For example
|
|
.B \-\-prefer=by-uuid
|
|
will prefer a name in a subdirectory of
|
|
.B /dev
|
|
called
|
|
.BR by-uuid .
|
|
|
|
This functionality is currently only provided by
|
|
.B \-\-detail
|
|
and
|
|
.BR \-\-monitor .
|
|
|
|
.TP
|
|
.B \-\-home\-cluster=
|
|
specifies the cluster name for the md device. The md device can be assembled
|
|
only on the cluster which matches the name specified. If this option is not
|
|
provided, mdadm tries to detect the cluster name automatically.
|
|
|
|
.SH For create, build, or grow:
|
|
|
|
.TP
|
|
.BR \-n ", " \-\-raid\-devices=
|
|
Specify the number of active devices in the array. This, plus the
|
|
number of spare devices (see below) must equal the number of
|
|
.I component-devices
|
|
(including "\fBmissing\fP" devices)
|
|
that are listed on the command line for
|
|
.BR \-\-create .
|
|
Setting a value of 1 is probably
|
|
a mistake and so requires that
|
|
.B \-\-force
|
|
be specified first. A value of 1 will then be allowed for linear,
|
|
multipath, RAID0 and RAID1. It is never allowed for RAID4, RAID5 or RAID6.
|
|
.br
|
|
This number can only be changed using
|
|
.B \-\-grow
|
|
for RAID1, RAID4, RAID5 and RAID6 arrays.
|
|
|
|
.TP
|
|
.BR \-x ", " \-\-spare\-devices=
|
|
Specify the number of spare (eXtra) devices in the initial array.
|
|
Spares can also be added
|
|
and removed later. The number of component devices listed
|
|
on the command line must equal the number of RAID devices plus the
|
|
number of spare devices.
|
|
|
|
.TP
|
|
.BR \-z ", " \-\-size=
|
|
Amount (in Kilobytes) of space to use from each drive in RAID levels 1/4/5/6/10
|
|
and for RAID 0 on external metadata.
|
|
This must be a multiple of the chunk size, and must leave about 128Kb
|
|
of space at the end of the drive for the RAID superblock.
|
|
If this is not specified
|
|
(as it normally is not) the smallest drive (or partition) sets the
|
|
size, though if there is a variance among the drives of greater than 1%, a warning is
|
|
issued.
|
|
|
|
A suffix of 'K', 'M', 'G' or 'T' can be given to indicate Kilobytes,
|
|
Megabytes, Gigabytes or Terabytes respectively.
|
|
|
|
Sometimes a replacement drive can be a little smaller than the
|
|
original drives though this should be minimised by IDEMA standards.
|
|
Such a replacement drive will be rejected by
|
|
.IR md .
|
|
To guard against this it can be useful to set the initial size
|
|
slightly smaller than the smaller device with the aim that it will
|
|
still be larger than any replacement.
|
|
|
|
This option can be used with
|
|
.B \-\-create
|
|
for determining the initial size of an array. For external metadata,
|
|
it can be used on a volume, but not on a container itself.
|
|
Setting the initial size of
|
|
.B RAID 0
|
|
array is only valid for external metadata.
|
|
|
|
This value can be set with
|
|
.B \-\-grow
|
|
for RAID level 1/4/5/6/10 though
|
|
DDF arrays may not be able to support this.
|
|
RAID 0 array size cannot be changed.
|
|
If the array was created with a size smaller than the currently
|
|
active drives, the extra space can be accessed using
|
|
.BR \-\-grow .
|
|
The size can be given as
|
|
.B max
|
|
which means to choose the largest size that fits on all current drives.
|
|
|
|
Before reducing the size of the array (with
|
|
.BR "\-\-grow \-\-size=" )
|
|
you should make sure that space isn't needed. If the device holds a
|
|
filesystem, you would need to resize the filesystem to use less space.
|
|
|
|
After reducing the array size you should check that the data stored in
|
|
the device is still available. If the device holds a filesystem, then
|
|
an 'fsck' of the filesystem is a minimum requirement. If there are
|
|
problems the array can be made bigger again with no loss with another
|
|
.B "\-\-grow \-\-size="
|
|
command.
|
|
|
|
.TP
|
|
.BR \-Z ", " \-\-array\-size=
|
|
This is only meaningful with
|
|
.B \-\-grow
|
|
and its effect is not persistent: when the array is stopped and
|
|
restarted the default array size will be restored.
|
|
|
|
Setting the array-size causes the array to appear smaller to programs
|
|
that access the data. This is particularly needed before reshaping an
|
|
array so that it will be smaller. As the reshape is not reversible,
|
|
but setting the size with
|
|
.B \-\-array-size
|
|
is, it is required that the array size is reduced as appropriate
|
|
before the number of devices in the array is reduced.
|
|
|
|
Before reducing the size of the array you should make sure that space
|
|
isn't needed. If the device holds a filesystem, you would need to
|
|
resize the filesystem to use less space.
|
|
|
|
After reducing the array size you should check that the data stored in
|
|
the device is still available. If the device holds a filesystem, then
|
|
an 'fsck' of the filesystem is a minimum requirement. If there are
|
|
problems the array can be made bigger again with no loss with another
|
|
.B "\-\-grow \-\-array\-size="
|
|
command.
|
|
|
|
A suffix of 'K', 'M', 'G' or 'T' can be given to indicate Kilobytes,
|
|
Megabytes, Gigabytes or Terabytes respectively.
|
|
A value of
|
|
.B max
|
|
restores the apparent size of the array to be whatever the real
|
|
amount of available space is.
|
|
|
|
Clustered arrays do not support this parameter yet.
|
|
|
|
.TP
|
|
.BR \-c ", " \-\-chunk=
|
|
Specify chunk size in kilobytes. The default when creating an
|
|
array is 512KB. To ensure compatibility with earlier versions, the
|
|
default when building an array with no persistent metadata is 64KB.
|
|
This is only meaningful for RAID0, RAID4, RAID5, RAID6, and RAID10.
|
|
|
|
RAID4, RAID5, RAID6, and RAID10 require the chunk size to be a power
|
|
of 2, with minimal chunk size being 4KB.
|
|
|
|
A suffix of 'K', 'M', 'G' or 'T' can be given to indicate Kilobytes,
|
|
Megabytes, Gigabytes or Terabytes respectively.
|
|
|
|
.TP
|
|
.BR \-\-rounding=
|
|
Specify the rounding factor for a Linear array. The size of each
|
|
component will be rounded down to a multiple of this size.
|
|
This is a synonym for
|
|
.B \-\-chunk
|
|
but highlights the different meaning for Linear as compared to other
|
|
RAID levels. The default is 0K (i.e. no rounding).
|
|
|
|
.TP
|
|
.BR \-l ", " \-\-level=
|
|
Set RAID level. When used with
|
|
.BR \-\-create ,
|
|
options are: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4,
|
|
raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container.
|
|
Obviously some of these are synonymous.
|
|
|
|
When a
|
|
.B CONTAINER
|
|
metadata type is requested, only the
|
|
.B container
|
|
level is permitted, and it does not need to be explicitly given.
|
|
|
|
When used with
|
|
.BR \-\-build ,
|
|
only linear, stripe, raid0, 0, raid1, multipath, mp, and faulty are valid.
|
|
|
|
Can be used with
|
|
.B \-\-grow
|
|
to change the RAID level in some cases. See LEVEL CHANGES below.
|
|
|
|
.TP
|
|
.BR \-p ", " \-\-layout=
|
|
This option configures the fine details of data layout for RAID5, RAID6,
|
|
and RAID10 arrays, and controls the failure modes for
|
|
.IR faulty .
|
|
It can also be used for working around a kernel bug with RAID0, but generally
|
|
doesn't need to be used explicitly.
|
|
|
|
The layout of the RAID5 parity block can be one of
|
|
.BR left\-asymmetric ,
|
|
.BR left\-symmetric ,
|
|
.BR right\-asymmetric ,
|
|
.BR right\-symmetric ,
|
|
.BR la ", " ra ", " ls ", " rs .
|
|
The default is
|
|
.BR left\-symmetric .
|
|
|
|
It is also possible to cause RAID5 to use a RAID4-like layout by
|
|
choosing
|
|
.BR parity\-first ,
|
|
or
|
|
.BR parity\-last .
|
|
|
|
Finally for RAID5 there are DDF\-compatible layouts,
|
|
.BR ddf\-zero\-restart ,
|
|
.BR ddf\-N\-restart ,
|
|
and
|
|
.BR ddf\-N\-continue .
|
|
|
|
These same layouts are available for RAID6. There are also 4 layouts
|
|
that will provide an intermediate stage for converting between RAID5
|
|
and RAID6. These provide a layout which is identical to the
|
|
corresponding RAID5 layout on the first N\-1 devices, and has the 'Q'
|
|
syndrome (the second 'parity' block used by RAID6) on the last device.
|
|
These layouts are:
|
|
.BR left\-symmetric\-6 ,
|
|
.BR right\-symmetric\-6 ,
|
|
.BR left\-asymmetric\-6 ,
|
|
.BR right\-asymmetric\-6 ,
|
|
and
|
|
.BR parity\-first\-6 .
|
|
|
|
When setting the failure mode for level
|
|
.I faulty,
|
|
the options are:
|
|
.BR write\-transient ", " wt ,
|
|
.BR read\-transient ", " rt ,
|
|
.BR write\-persistent ", " wp ,
|
|
.BR read\-persistent ", " rp ,
|
|
.BR write\-all ,
|
|
.BR read\-fixable ", " rf ,
|
|
.BR clear ", " flush ", " none .
|
|
|
|
Each failure mode can be followed by a number, which is used as a period
|
|
between fault generation. Without a number, the fault is generated
|
|
once on the first relevant request. With a number, the fault will be
|
|
generated after that many requests, and will continue to be generated
|
|
every time the period elapses.
|
|
|
|
Multiple failure modes can be current simultaneously by using the
|
|
.B \-\-grow
|
|
option to set subsequent failure modes.
|
|
|
|
"clear" or "none" will remove any pending or periodic failure modes,
|
|
and "flush" will clear any persistent faults.
|
|
|
|
The layout options for RAID10 are one of 'n', 'o' or 'f' followed
|
|
by a small number signifying the number of copies of each datablock.
|
|
The default is 'n2'. The supported options are:
|
|
|
|
.I 'n'
|
|
signals 'near' copies. Multiple copies of one data block are at
|
|
similar offsets in different devices.
|
|
|
|
.I 'o'
|
|
signals 'offset' copies. Rather than the chunks being duplicated
|
|
within a stripe, whole stripes are duplicated but are rotated by one
|
|
device so duplicate blocks are on different devices. Thus subsequent
|
|
copies of a block are in the next drive, and are one chunk further
|
|
down.
|
|
|
|
.I 'f'
|
|
signals 'far' copies
|
|
(multiple copies have very different offsets).
|
|
See md(4) for more detail about 'near', 'offset', and 'far'.
|
|
|
|
As for the number of copies of each data block, 2 is normal, 3
|
|
can be useful. This number can be at most equal to the number of
|
|
devices in the array. It does not need to divide evenly into that
|
|
number (e.g. it is perfectly legal to have an 'n2' layout for an array
|
|
with an odd number of devices).
|
|
|
|
A bug introduced in Linux 3.14 means that RAID0 arrays
|
|
.B "with devices of differing sizes"
|
|
started using a different layout. This could lead to
|
|
data corruption. Since Linux 5.4 (and various stable releases that received
|
|
backports), the kernel will not accept such an array unless
|
|
a layout is explicitly set. It can be set to
|
|
.RB ' original '
|
|
or
|
|
.RB ' alternate '.
|
|
When creating a new array,
|
|
.I mdadm
|
|
will select
|
|
.RB ' original '
|
|
by default, so the layout does not normally need to be set.
|
|
An array created for either
|
|
.RB ' original '
|
|
or
|
|
.RB ' alternate '
|
|
will not be recognized by an (unpatched) kernel prior to 5.4. To create
|
|
a RAID0 array with devices of differing sizes that can be used on an
|
|
older kernel, you can set the layout to
|
|
.RB ' dangerous '.
|
|
This will use whichever layout the running kernel supports, so the data
|
|
on the array may become corrupt when changing kernel from pre-3.14 to a
|
|
later kernel.
|
|
|
|
When an array is converted between RAID5 and RAID6 an intermediate
|
|
RAID6 layout is used in which the second parity block (Q) is always on
|
|
the last device. To convert a RAID5 to RAID6 and leave it in this new
|
|
layout (which does not require re-striping) use
|
|
.BR \-\-layout=preserve .
|
|
This will try to avoid any restriping.
|
|
|
|
The converse of this is
|
|
.B \-\-layout=normalise
|
|
which will change a non-standard RAID6 layout into a more standard
|
|
arrangement.
|
|
|
|
.TP
|
|
.BR \-\-parity=
|
|
same as
|
|
.B \-\-layout
|
|
(thus explaining the p of
|
|
.BR \-p ).
|
|
|
|
.TP
|
|
.BR \-b ", " \-\-bitmap=
|
|
Specify how to store a write-intent bitmap. Following values are supported:
|
|
|
|
.B internal
|
|
- the bitmap is stored with the metadata on the array and so is replicated on all devices.
|
|
|
|
.B clustered
|
|
- the array is created for a clustered environment. One bitmap is created for each node as defined
|
|
by the
|
|
.B \-\-nodes
|
|
parameter and are stored internally.
|
|
|
|
.B none
|
|
- create array with no bitmap or remove any present bitmap (grow mode).
|
|
|
|
Setting bitmap for file is deprecated and should not be used. The file should not exist unless
|
|
.B \-\-force
|
|
is also given. The same file should be provided when assembling the array. The file name must
|
|
contain at least one slash ('/'). Bitmap files are only known to work on ext2 and ext3. Storing
|
|
bitmap files on other filesystems may result in serious problems.
|
|
|
|
When creating an array on devices which are 100G or larger,
|
|
.I mdadm
|
|
automatically adds an internal bitmap as it will usually be
|
|
beneficial. This can be suppressed with
|
|
.B "\-\-bitmap=none"
|
|
or by selecting a different consistency policy with
|
|
.BR \-\-consistency\-policy .
|
|
|
|
.TP
|
|
.BR \-\-bitmap\-chunk=
|
|
Set the chunk size of the bitmap. Each bit corresponds to that many
|
|
Kilobytes of storage.
|
|
When using a file-based bitmap, the default is to use the smallest
|
|
size that is at least 4 and requires no more than 2^21 chunks.
|
|
When using an
|
|
.B internal
|
|
bitmap, the chunk size defaults to 64Meg, or larger if necessary to
|
|
fit the bitmap into the available space.
|
|
|
|
A suffix of 'K', 'M', 'G' or 'T' can be given to indicate Kilobytes,
|
|
Megabytes, Gigabytes or Terabytes respectively.
|
|
|
|
.TP
|
|
.BR \-W ", " \-\-write\-mostly
|
|
subsequent devices listed in a
|
|
.BR \-\-build ,
|
|
.BR \-\-create ,
|
|
or
|
|
.B \-\-add
|
|
command will be flagged as 'write\-mostly'. This is valid for RAID1
|
|
only and means that the 'md' driver will avoid reading from these
|
|
devices if at all possible. This can be useful if mirroring over a
|
|
slow link.
|
|
|
|
.TP
|
|
.BR \-\-write\-behind=
|
|
Specify that write-behind mode should be enabled (valid for RAID1
|
|
only). If an argument is specified, it will set the maximum number
|
|
of outstanding writes allowed. The default value is 256.
|
|
A write-intent bitmap is required in order to use write-behind
|
|
mode, and write-behind is only attempted on drives marked as
|
|
.IR write-mostly .
|
|
|
|
.TP
|
|
.BR \-\-failfast
|
|
subsequent devices listed in a
|
|
.B \-\-create
|
|
or
|
|
.B \-\-add
|
|
command will be flagged as 'failfast'. This is valid for RAID1 and
|
|
RAID10 only. IO requests to these devices will be encouraged to fail
|
|
quickly rather than cause long delays due to error handling. Also no
|
|
attempt is made to repair a read error on these devices.
|
|
|
|
If an array becomes degraded so that the 'failfast' device is the only
|
|
usable device, the 'failfast' flag will then be ignored and extended
|
|
delays will be preferred to complete failure.
|
|
|
|
The 'failfast' flag is appropriate for storage arrays which have a
|
|
low probability of true failure, but which may sometimes
|
|
cause unacceptable delays due to internal maintenance functions.
|
|
|
|
.TP
|
|
.BR \-\-assume\-clean
|
|
Tell
|
|
.I mdadm
|
|
that the array pre-existed and is known to be clean. It can be useful
|
|
when trying to recover from a major failure as you can be sure that no
|
|
data will be affected unless you actually write to the array. It can
|
|
also be used when creating a RAID1 or RAID10 if you want to avoid the
|
|
initial resync, however this practice \(em while normally safe \(em is not
|
|
recommended. Use this only if you really know what you are doing.
|
|
.IP
|
|
When the devices that will be part of a new array were filled
|
|
with zeros before creation the operator knows the array is
|
|
actually clean. If that is the case, such as after running
|
|
badblocks, this argument can be used to tell mdadm the
|
|
facts the operator knows.
|
|
.IP
|
|
When an array is resized to a larger size with
|
|
.B "\-\-grow \-\-size="
|
|
the new space is normally resynced in that same way that the whole
|
|
array is resynced at creation.
|
|
.B \-\-assume\-clean
|
|
can be used with that command to avoid the automatic resync.
|
|
|
|
.TP
|
|
.BR \-\-write-zeroes
|
|
When creating an array, send write zeroes requests to all the block
|
|
devices. This should zero the data area on all disks such that the
|
|
initial sync is not necessary and, if successful, will behave as if
|
|
.B \-\-assume\-clean
|
|
was specified.
|
|
.IP
|
|
This is intended for use with devices that have hardware offload for
|
|
zeroing, but despite this zeroing can still take several minutes for
|
|
large disks. Thus a message is printed before and after zeroing and
|
|
each disk is zeroed in parallel with the others.
|
|
.IP
|
|
This is only meaningful with --create.
|
|
|
|
.TP
|
|
.BR \-\-backup\-file=
|
|
This is needed when
|
|
.B \-\-grow
|
|
is used to increase the number of raid devices in a RAID5 or RAID6 if
|
|
there are no spare devices available, or to shrink, change RAID level
|
|
or layout. See the GROW MODE section below on RAID\-DEVICES CHANGES.
|
|
The file must be stored on a separate device, not on the RAID array
|
|
being reshaped.
|
|
|
|
.TP
|
|
.B \-\-data\-offset=
|
|
Arrays with 1.x metadata can leave a gap between the start of the
|
|
device and the start of array data. This gap can be used for various
|
|
metadata. The start of data is known as the
|
|
.IR data\-offset .
|
|
Normally an appropriate data offset is computed automatically.
|
|
However it can be useful to set it explicitly such as when re-creating
|
|
an array which was originally created using a different version of
|
|
.I mdadm
|
|
which computed a different offset.
|
|
|
|
Setting the offset explicitly over-rides the default. The value given
|
|
is in Kilobytes unless a suffix of 'K', 'M', 'G' or 'T' is used to explicitly
|
|
indicate Kilobytes, Megabytes, Gigabytes or Terabytes respectively.
|
|
|
|
.B \-\-data\-offset
|
|
can also be used with
|
|
.B --grow
|
|
for some RAID levels (initially on RAID10). This allows the
|
|
data\-offset to be changed as part of the reshape process. When the
|
|
data offset is changed, no backup file is required as the difference
|
|
in offsets is used to provide the same functionality.
|
|
|
|
When the new offset is earlier than the old offset, the number of
|
|
devices in the array cannot shrink. When it is after the old offset,
|
|
the number of devices in the array cannot increase.
|
|
|
|
When creating an array,
|
|
.B \-\-data\-offset
|
|
can be specified as
|
|
.BR variable .
|
|
In the case each member device is expected to have an offset appended
|
|
to the name, separated by a colon. This makes it possible to recreate
|
|
exactly an array which has varying data offsets (as can happen when
|
|
different versions of
|
|
.I mdadm
|
|
are used to add different devices).
|
|
|
|
.TP
|
|
.BR \-\-continue
|
|
This option is complementary to the
|
|
.B \-\-freeze-reshape
|
|
option for assembly. It is needed when
|
|
.B \-\-grow
|
|
operation is interrupted and it is not restarted automatically due to
|
|
.B \-\-freeze-reshape
|
|
usage during array assembly. This option is used together with
|
|
.BR \-G
|
|
, (
|
|
.BR \-\-grow
|
|
) command and device for a pending reshape to be continued.
|
|
All parameters required for reshape continuation will be read from array metadata.
|
|
If initial
|
|
.BR \-\-grow
|
|
command had required
|
|
.BR \-\-backup\-file=
|
|
option to be set, continuation option will require to have exactly the same
|
|
backup file given as well.
|
|
.IP
|
|
Any other parameter passed together with
|
|
.BR \-\-continue
|
|
option will be ignored.
|
|
|
|
.TP
|
|
.BR \-N ", " \-\-name=
|
|
Set a
|
|
.B name
|
|
for the array. It must be
|
|
.BR "POSIX PORTABLE NAME"
|
|
compatible and cannot be longer than 32 chars. This is effective when creating an array
|
|
with a v1 metadata, or an external array.
|
|
|
|
If name is needed but not specified, it is taken from the basename of the device
|
|
that is being created. See
|
|
.BR "DEVICE NAMES"
|
|
|
|
.TP
|
|
.BR \-R ", " \-\-run
|
|
Insist that
|
|
.I mdadm
|
|
run the array, even if some of the components
|
|
appear to be active in another array or filesystem. Normally
|
|
.I mdadm
|
|
will ask for confirmation before including such components in an
|
|
array. This option causes that question to be suppressed.
|
|
|
|
.TP
|
|
.BR \-f ", " \-\-force
|
|
Insist that
|
|
.I mdadm
|
|
accept the geometry and layout specified without question. Normally
|
|
.I mdadm
|
|
will not allow the creation of an array with only one device, and will try
|
|
to create a RAID5 array with one missing drive (as this makes the
|
|
initial resync work faster). With
|
|
.BR \-\-force ,
|
|
.I mdadm
|
|
will not try to be so clever.
|
|
|
|
.TP
|
|
.BR \-o ", " \-\-readonly
|
|
Start the array
|
|
.B read only
|
|
rather than read-write as normal. No writes will be allowed to the
|
|
array, and no resync, recovery, or reshape will be started. It works with
|
|
Create, Assemble, Manage and Misc mode.
|
|
|
|
.TP
|
|
.BR \-a ", " "\-\-add"
|
|
This option can be used in Grow mode in two cases.
|
|
|
|
If the target array is a Linear array, then
|
|
.B \-\-add
|
|
can be used to add one or more devices to the array. They
|
|
are simply catenated on to the end of the array. Once added, the
|
|
devices cannot be removed.
|
|
|
|
If the
|
|
.B \-\-raid\-disks
|
|
option is being used to increase the number of devices in an array,
|
|
then
|
|
.B \-\-add
|
|
can be used to add some extra devices to be included in the array.
|
|
In most cases this is not needed as the extra devices can be added as
|
|
spares first, and then the number of raid disks can be changed.
|
|
However, for RAID0 it is not possible to add spares. So to increase
|
|
the number of devices in a RAID0, it is necessary to set the new
|
|
number of devices, and to add the new devices, in the same command.
|
|
|
|
.TP
|
|
.BR \-\-nodes
|
|
Only works when the array is created for a clustered environment. It specifies
|
|
the maximum number of nodes in the cluster that will use this device
|
|
simultaneously. If not specified, this defaults to 4.
|
|
|
|
.TP
|
|
.BR \-\-write-journal
|
|
Specify journal device for the RAID-4/5/6 array. The journal device
|
|
should be an SSD with a reasonable lifetime.
|
|
|
|
.TP
|
|
.BR \-k ", " \-\-consistency\-policy=
|
|
Specify how the array maintains consistency in the case of an unexpected shutdown.
|
|
Only relevant for RAID levels with redundancy.
|
|
Currently supported options are:
|
|
.RS
|
|
|
|
.TP
|
|
.B resync
|
|
Full resync is performed and all redundancy is regenerated when the array is
|
|
started after an unclean shutdown.
|
|
|
|
.TP
|
|
.B bitmap
|
|
Resync assisted by a write-intent bitmap. Implicitly selected when using
|
|
.BR \-\-bitmap .
|
|
|
|
.TP
|
|
.B journal
|
|
For RAID levels 4/5/6, the journal device is used to log transactions and replay
|
|
after an unclean shutdown. Implicitly selected when using
|
|
.BR \-\-write\-journal .
|
|
|
|
.TP
|
|
.B ppl
|
|
For RAID5 only, Partial Parity Log is used to close the write hole and
|
|
eliminate resync. PPL is stored in the metadata region of RAID member drives,
|
|
no additional journal drive is needed.
|
|
|
|
.PP
|
|
Can be used with \-\-grow to change the consistency policy of an active array
|
|
in some cases. See CONSISTENCY POLICY CHANGES below.
|
|
.RE
|
|
|
|
|
|
.SH For assemble:
|
|
|
|
.TP
|
|
.BR \-u ", " \-\-uuid=
|
|
uuid of array to assemble. Devices which don't have this uuid are
|
|
excluded
|
|
|
|
.TP
|
|
.BR \-m ", " \-\-super\-minor=
|
|
Minor number of device that array was created for. Devices which
|
|
don't have this minor number are excluded. If you create an array as
|
|
/dev/md1, then all superblocks will contain the minor number 1, even if
|
|
the array is later assembled as /dev/md2.
|
|
|
|
Giving the literal word "dev" for
|
|
.B \-\-super\-minor
|
|
will cause
|
|
.I mdadm
|
|
to use the minor number of the md device that is being assembled.
|
|
e.g. when assembling
|
|
.BR /dev/md0 ,
|
|
.B \-\-super\-minor=dev
|
|
will look for super blocks with a minor number of 0.
|
|
|
|
.B \-\-super\-minor
|
|
is only relevant for v0.90 metadata, and should not normally be used.
|
|
Using
|
|
.B \-\-uuid
|
|
is much safer.
|
|
|
|
.TP
|
|
.BR \-N ", " \-\-name=
|
|
Specify the name of the array to assemble. It must be
|
|
.BR "POSIX PORTABLE NAME"
|
|
compatible and cannot be longer than 32 chars. This must be the name
|
|
that was specified when creating the array. It must either match
|
|
the name stored in the superblock exactly, or it must match
|
|
with the current
|
|
.I homehost
|
|
prefixed to the start of the given name.
|
|
|
|
.TP
|
|
.BR \-f ", " \-\-force
|
|
Assemble the array even if the metadata on some devices appears to be
|
|
out-of-date. If
|
|
.I mdadm
|
|
cannot find enough working devices to start the array, but can find
|
|
some devices that are recorded as having failed, then it will mark
|
|
those devices as working so that the array can be started. This works only for
|
|
native. For external metadata it allows to start dirty degraded RAID 4, 5, 6.
|
|
An array which requires
|
|
.B \-\-force
|
|
to be started may contain data corruption. Use it carefully.
|
|
|
|
.TP
|
|
.BR \-R ", " \-\-run
|
|
Attempt to start the array even if fewer drives were given than were
|
|
present last time the array was active. Normally if not all the
|
|
expected drives are found and
|
|
.B \-\-scan
|
|
is not used, then the array will be assembled but not started.
|
|
With
|
|
.B \-\-run
|
|
an attempt will be made to start it anyway.
|
|
|
|
.TP
|
|
.B \-\-no\-degraded
|
|
This is the reverse of
|
|
.B \-\-run
|
|
in that it inhibits the startup of array unless all expected drives
|
|
are present. This is only needed with
|
|
.B \-\-scan,
|
|
and can be used if the physical connections to devices are
|
|
not as reliable as you would like.
|
|
|
|
.TP
|
|
.BR \-b ", " \-\-bitmap=
|
|
Specify the bitmap file that was given when the array was created. If
|
|
an array has an
|
|
.B internal
|
|
bitmap, there is no need to specify this when assembling the array.
|
|
|
|
.TP
|
|
.BR \-\-backup\-file=
|
|
If
|
|
.B \-\-backup\-file
|
|
was used while reshaping an array (e.g. changing number of devices or
|
|
chunk size) and the system crashed during the critical section, then the same
|
|
.B \-\-backup\-file
|
|
must be presented to
|
|
.B \-\-assemble
|
|
to allow possibly corrupted data to be restored, and the reshape
|
|
to be completed.
|
|
|
|
.TP
|
|
.BR \-\-invalid\-backup
|
|
If the file needed for the above option is not available for any
|
|
reason an empty file can be given together with this option to
|
|
indicate that the backup file is invalid. In this case the data that
|
|
was being rearranged at the time of the crash could be irrecoverably
|
|
lost, but the rest of the array may still be recoverable. This option
|
|
should only be used as a last resort if there is no way to recover the
|
|
backup file.
|
|
|
|
|
|
.TP
|
|
.BR \-U ", " \-\-update=
|
|
Update the superblock on each device while assembling the array. The
|
|
argument given to this flag can be one of
|
|
.BR summaries ,
|
|
.BR uuid ,
|
|
.BR name ,
|
|
.BR nodes ,
|
|
.BR homehost ,
|
|
.BR home-cluster ,
|
|
.BR resync ,
|
|
.BR byteorder ,
|
|
.BR devicesize ,
|
|
.BR no\-bitmap ,
|
|
.BR bbl ,
|
|
.BR no\-bbl ,
|
|
.BR ppl ,
|
|
.BR no\-ppl ,
|
|
.BR layout\-original ,
|
|
.BR layout\-alternate ,
|
|
.BR layout\-unspecified ,
|
|
.BR metadata ,
|
|
or
|
|
.BR super\-minor .
|
|
|
|
The
|
|
.B super\-minor
|
|
option will update the
|
|
.B "preferred minor"
|
|
field on each superblock to match the minor number of the array being
|
|
assembled.
|
|
This can be useful if
|
|
.B \-\-examine
|
|
reports a different "Preferred Minor" to
|
|
.BR \-\-detail .
|
|
In some cases this update will be performed automatically
|
|
by the kernel driver. In particular, the update happens automatically
|
|
at the first write to an array with redundancy (RAID level 1 or
|
|
greater).
|
|
|
|
The
|
|
.B uuid
|
|
option will change the uuid of the array. If a UUID is given with the
|
|
.B \-\-uuid
|
|
option that UUID will be used as a new UUID and will
|
|
.B NOT
|
|
be used to help identify the devices in the array.
|
|
If no
|
|
.B \-\-uuid
|
|
is given, a random UUID is chosen.
|
|
|
|
The
|
|
.B name
|
|
option will change the
|
|
.I name
|
|
of the array as stored in the superblock. This is only supported for
|
|
version-1 superblocks.
|
|
|
|
The
|
|
.B nodes
|
|
option will change the
|
|
.I nodes
|
|
of the array as stored in the bitmap superblock. This option only
|
|
works for a clustered environment.
|
|
|
|
The
|
|
.B homehost
|
|
option will change the
|
|
.I homehost
|
|
as recorded in the superblock. For version-0 superblocks, this is the
|
|
same as updating the UUID.
|
|
For version-1 superblocks, this involves updating the name.
|
|
|
|
The
|
|
.B home\-cluster
|
|
option will change the cluster name as recorded in the superblock and
|
|
bitmap. This option only works for a clustered environment.
|
|
|
|
The
|
|
.B resync
|
|
option will cause the array to be marked
|
|
.I dirty
|
|
meaning that any redundancy in the array (e.g. parity for RAID5,
|
|
copies for RAID1) may be incorrect. This will cause the RAID system
|
|
to perform a "resync" pass to make sure that all redundant information
|
|
is correct.
|
|
|
|
The
|
|
.B byteorder
|
|
option allows arrays to be moved between machines with different
|
|
byte-order, such as from a big-endian machine like a Sparc or some
|
|
MIPS machines, to a little-endian x86_64 machine.
|
|
When assembling such an array for the first time after a move, giving
|
|
.B "\-\-update=byteorder"
|
|
will cause
|
|
.I mdadm
|
|
to expect superblocks to have their byteorder reversed, and will
|
|
correct that order before assembling the array. This is only valid
|
|
with original (Version 0.90) superblocks.
|
|
|
|
The
|
|
.B summaries
|
|
option will correct the summaries in the superblock. That is the
|
|
counts of total, working, active, failed, and spare devices.
|
|
|
|
The
|
|
.B devicesize
|
|
option will rarely be of use. It applies to version 1.1 and 1.2 metadata
|
|
only (where the metadata is at the start of the device) and is only
|
|
useful when the component device has changed size (typically become
|
|
larger). The version 1 metadata records the amount of the device that
|
|
can be used to store data, so if a device in a version 1.1 or 1.2
|
|
array becomes larger, the metadata will still be visible, but the
|
|
extra space will not. In this case it might be useful to assemble the
|
|
array with
|
|
.BR \-\-update=devicesize .
|
|
This will cause
|
|
.I mdadm
|
|
to determine the maximum usable amount of space on each device and
|
|
update the relevant field in the metadata.
|
|
|
|
The
|
|
.B metadata
|
|
option only works on v0.90 metadata arrays and will convert them to
|
|
v1.0 metadata. The array must not be dirty (i.e. it must not need a
|
|
sync) and it must not have a write-intent bitmap.
|
|
|
|
The old metadata will remain on the devices, but will appear older
|
|
than the new metadata and so will usually be ignored. The old metadata
|
|
(or indeed the new metadata) can be removed by giving the appropriate
|
|
.B \-\-metadata=
|
|
option to
|
|
.BR \-\-zero\-superblock .
|
|
|
|
The
|
|
.B no\-bitmap
|
|
option can be used when an array has an internal bitmap which is
|
|
corrupt in some way so that assembling the array normally fails. It
|
|
will cause any internal bitmap to be ignored.
|
|
|
|
The
|
|
.B bbl
|
|
option will reserve space in each device for a bad block list. This
|
|
will be 4K in size and positioned near the end of any free space
|
|
between the superblock and the data.
|
|
|
|
The
|
|
.B no\-bbl
|
|
option will cause any reservation of space for a bad block list to be
|
|
removed. If the bad block list contains entries, this will fail, as
|
|
removing the list could cause data corruption.
|
|
|
|
The
|
|
.B ppl
|
|
option will enable PPL for a RAID5 array and reserve space for PPL on each
|
|
device. There must be enough free space between the data and superblock and a
|
|
write-intent bitmap or journal must not be used.
|
|
|
|
The
|
|
.B no\-ppl
|
|
option will disable PPL in the superblock.
|
|
|
|
The
|
|
.B layout\-original
|
|
and
|
|
.B layout\-alternate
|
|
options are for RAID0 arrays with non-uniform devices size that were in
|
|
use before Linux 5.4. If the array was being used with Linux 3.13 or
|
|
earlier, then to assemble the array on a new kernel,
|
|
.B \-\-update=layout\-original
|
|
must be given. If the array was created and used with a kernel from Linux 3.14 to
|
|
Linux 5.3, then
|
|
.B \-\-update=layout\-alternate
|
|
must be given. This only needs to be given once. Subsequent assembly of the array
|
|
will happen normally.
|
|
For more information, see
|
|
.IR md (4).
|
|
|
|
The
|
|
.B layout\-unspecified
|
|
option reverts the effect of
|
|
.B layout\-orignal
|
|
or
|
|
.B layout\-alternate
|
|
and allows the array to be again used on a kernel prior to Linux 5.3.
|
|
This option should be used with great caution.
|
|
|
|
.TP
|
|
.BR \-\-freeze\-reshape
|
|
This option is intended to be used in start-up scripts during the initrd boot phase.
|
|
When the array under reshape is assembled during the initrd phase, this option
|
|
stops the reshape after the reshape-critical section has been restored. This happens
|
|
before the file system pivot operation and avoids loss of filesystem context.
|
|
Losing file system context would cause reshape to be broken.
|
|
|
|
Reshape can be continued later using the
|
|
.B \-\-continue
|
|
option for the grow command.
|
|
|
|
.SH For Manage mode:
|
|
|
|
.TP
|
|
.BR \-t ", " \-\-test
|
|
Unless a more serious error occurred,
|
|
.I mdadm
|
|
will exit with a status of 2 if no changes were made to the array and
|
|
0 if at least one change was made.
|
|
This can be useful when an indirect specifier such as
|
|
.BR missing ,
|
|
.B detached
|
|
or
|
|
.B faulty
|
|
is used in requesting an operation on the array.
|
|
.B \-\-test
|
|
will report failure if these specifiers didn't find any match.
|
|
|
|
.TP
|
|
.BR \-a ", " \-\-add
|
|
hot-add listed devices.
|
|
If a device appears to have recently been part of the array
|
|
(possibly it failed or was removed) the device is re\-added as described
|
|
in the next point.
|
|
If that fails or the device was never part of the array, the device is
|
|
added as a hot-spare.
|
|
If the array is degraded, it will immediately start to rebuild data
|
|
onto that spare.
|
|
|
|
Note that this and the following options are only meaningful on array
|
|
with redundancy. They don't apply to RAID0 or Linear.
|
|
|
|
.TP
|
|
.BR \-\-re\-add
|
|
re\-add a device that was previously removed from an array.
|
|
If the metadata on the device reports that it is a member of the
|
|
array, and the slot that it used is still vacant, then the device will
|
|
be added back to the array in the same position. This will normally
|
|
cause the data for that device to be recovered. However, based on the
|
|
event count on the device, the recovery may only require sections that
|
|
are flagged by a write-intent bitmap to be recovered or may not require
|
|
any recovery at all.
|
|
|
|
When used on an array that has no metadata (i.e. it was built with
|
|
.BR \-\-build)
|
|
it will be assumed that bitmap-based recovery is enough to make the
|
|
device fully consistent with the array.
|
|
|
|
.B \-\-re\-add
|
|
can also be accompanied by
|
|
.BR \-\-update=devicesize ,
|
|
.BR \-\-update=bbl ", or"
|
|
.BR \-\-update=no\-bbl .
|
|
See descriptions of these options when used in Assemble mode for an
|
|
explanation of their use.
|
|
|
|
If the device name given is
|
|
.B missing
|
|
then
|
|
.I mdadm
|
|
will try to find any device that looks like it should be
|
|
part of the array but isn't and will try to re\-add all such devices.
|
|
|
|
If the device name given is
|
|
.B faulty
|
|
then
|
|
.I mdadm
|
|
will find all devices in the array that are marked
|
|
.BR faulty ,
|
|
remove them and attempt to immediately re\-add them. This can be
|
|
useful if you are certain that the reason for failure has been
|
|
resolved.
|
|
|
|
.TP
|
|
.B \-\-add\-spare
|
|
Add a device as a spare. This is similar to
|
|
.B \-\-add
|
|
except that it does not attempt
|
|
.B \-\-re\-add
|
|
first. The device will be added as a spare even if it looks like it
|
|
could be a recent member of the array.
|
|
|
|
.TP
|
|
.BR \-r ", " \-\-remove
|
|
remove listed devices. They must not be active. i.e. they should
|
|
be failed or spare devices.
|
|
|
|
As well as the name of a device file
|
|
(e.g.
|
|
.BR /dev/sda1 )
|
|
the words
|
|
.BR failed ,
|
|
.B detached
|
|
and names like
|
|
.B set-A
|
|
can be given to
|
|
.BR \-\-remove .
|
|
The first causes all failed devices to be removed. The second causes
|
|
any device which is no longer connected to the system (i.e an 'open'
|
|
returns
|
|
.BR ENXIO )
|
|
to be removed.
|
|
The third will remove a set as described below under
|
|
.BR \-\-fail .
|
|
|
|
.TP
|
|
.BR \-f ", " \-\-fail
|
|
Mark listed devices as faulty.
|
|
As well as the name of a device file, the word
|
|
.B detached
|
|
or a set name like
|
|
.B set\-A
|
|
can be given. The former will cause any device that has been detached from
|
|
the system to be marked as failed. It can then be removed.
|
|
|
|
For RAID10 arrays where the number of copies evenly divides the number
|
|
of devices, the devices can be conceptually divided into sets where
|
|
each set contains a single complete copy of the data on the array.
|
|
Sometimes a RAID10 array will be configured so that these sets are on
|
|
separate controllers. In this case, all the devices in one set can be
|
|
failed by giving a name like
|
|
.B set\-A
|
|
or
|
|
.B set\-B
|
|
to
|
|
.BR \-\-fail .
|
|
The appropriate set names are reported by
|
|
.BR \-\-detail .
|
|
|
|
.TP
|
|
.BR \-\-set\-faulty
|
|
same as
|
|
.BR \-\-fail .
|
|
|
|
.TP
|
|
.B \-\-replace
|
|
Mark listed devices as requiring replacement. As soon as a spare is
|
|
available, it will be rebuilt and will replace the marked device.
|
|
This is similar to marking a device as faulty, but the device remains
|
|
in service during the recovery process to increase resilience against
|
|
multiple failures. When the replacement process finishes, the
|
|
replaced device will be marked as faulty.
|
|
|
|
.TP
|
|
.B \-\-with
|
|
This can follow a list of
|
|
.B \-\-replace
|
|
devices. The devices listed after
|
|
.B \-\-with
|
|
will preferentially be used to replace the devices listed after
|
|
.BR \-\-replace .
|
|
These devices must already be spare devices in the array.
|
|
|
|
.TP
|
|
.BR \-\-write\-mostly
|
|
Subsequent devices that are added or re\-added will have the 'write-mostly'
|
|
flag set. This is only valid for RAID1 and means that the 'md' driver
|
|
will avoid reading from these devices if possible.
|
|
.TP
|
|
.BR \-\-readwrite
|
|
Subsequent devices that are added or re\-added will have the 'write-mostly'
|
|
flag cleared.
|
|
.TP
|
|
.BR \-\-cluster\-confirm
|
|
Confirm the existence of the device. This is issued in response to an \-\-add
|
|
request by a node in a cluster. When a node adds a device it sends a message
|
|
to all nodes in the cluster to look for a device with a UUID. This translates
|
|
to a udev notification with the UUID of the device to be added and the slot
|
|
number. The receiving node must acknowledge this message
|
|
with \-\-cluster\-confirm. Valid arguments are <slot>:<devicename> in case
|
|
the device is found or <slot>:missing in case the device is not found.
|
|
|
|
.TP
|
|
.BR \-\-add-journal
|
|
Add a journal to an existing array, or recreate journal for a RAID-4/5/6 array
|
|
that lost a journal device. To avoid interrupting ongoing write operations,
|
|
.B \-\-add-journal
|
|
only works for array in Read-Only state.
|
|
|
|
.TP
|
|
.BR \-\-failfast
|
|
Subsequent devices that are added or re\-added will have
|
|
the 'failfast' flag set. This is only valid for RAID1 and RAID10 and
|
|
means that the 'md' driver will avoid long timeouts on error handling
|
|
where possible.
|
|
.TP
|
|
.BR \-\-nofailfast
|
|
Subsequent devices that are re\-added will be re\-added without
|
|
the 'failfast' flag set.
|
|
|
|
.P
|
|
Each of these options requires that the first device listed is the array
|
|
to be acted upon, and the remainder are component devices to be added,
|
|
removed, marked as faulty, etc. Several different operations can be
|
|
specified for different devices, e.g.
|
|
.in +5
|
|
mdadm /dev/md0 \-\-add /dev/sda1 \-\-fail /dev/sdb1 \-\-remove /dev/sdb1
|
|
.in -5
|
|
Each operation applies to all devices listed until the next
|
|
operation.
|
|
|
|
If an array is using a write-intent bitmap, then devices which have
|
|
been removed can be re\-added in a way that avoids a full
|
|
reconstruction but instead just updates the blocks that have changed
|
|
since the device was removed. For arrays with persistent metadata
|
|
(superblocks) this is done automatically. For arrays created with
|
|
.B \-\-build
|
|
mdadm needs to be told that this device we removed recently with
|
|
.BR \-\-re\-add .
|
|
|
|
Devices can only be removed from an array if they are not in active
|
|
use, i.e. that must be spares or failed devices. To remove an active
|
|
device, it must first be marked as
|
|
.B faulty.
|
|
|
|
.SH For Misc mode:
|
|
|
|
.TP
|
|
.BR \-Q ", " \-\-query
|
|
Examine a device to see
|
|
(1) if it is an md device and (2) if it is a component of an md
|
|
array.
|
|
Information about what is discovered is presented.
|
|
|
|
.TP
|
|
.BR \-D ", " \-\-detail
|
|
Print details of one or more md devices.
|
|
|
|
.TP
|
|
.BR \-\-detail\-platform
|
|
Print details of the platform's RAID capabilities (firmware / hardware
|
|
topology) for a given metadata format. If used without an argument, mdadm
|
|
will scan all controllers looking for their capabilities. Otherwise, mdadm
|
|
will only look at the controller specified by the argument in the form of an
|
|
absolute filepath or a link, e.g.
|
|
.IR /sys/devices/pci0000:00/0000:00:1f.2 .
|
|
|
|
.TP
|
|
.BR \-Y ", " \-\-export
|
|
When used with
|
|
.BR \-\-detail ,
|
|
.BR \-\-detail-platform ,
|
|
.BR \-\-examine ,
|
|
or
|
|
.B \-\-incremental
|
|
output will be formatted as
|
|
.B key=value
|
|
pairs for easy import into the environment.
|
|
|
|
With
|
|
.B \-\-incremental
|
|
The value
|
|
.B MD_STARTED
|
|
indicates whether an array was started
|
|
.RB ( yes )
|
|
or not, which may include a reason
|
|
.RB ( unsafe ", " nothing ", " no ).
|
|
Also the value
|
|
.B MD_FOREIGN
|
|
indicates if the array is expected on this host
|
|
.RB ( no ),
|
|
or seems to be from elsewhere
|
|
.RB ( yes ).
|
|
|
|
.TP
|
|
.BR \-E ", " \-\-examine
|
|
Print contents of the metadata stored on the named device(s).
|
|
Note the contrast between
|
|
.B \-\-examine
|
|
and
|
|
.BR \-\-detail .
|
|
.B \-\-examine
|
|
applies to devices which are components of an array, while
|
|
.B \-\-detail
|
|
applies to a whole array which is currently active.
|
|
|
|
.TP
|
|
.BR \-X ", " \-\-examine\-bitmap
|
|
Report information about a bitmap file.
|
|
The argument is either an external bitmap file or an array component
|
|
in case of an internal bitmap. Note that running this on an array
|
|
device (e.g.
|
|
.BR /dev/md0 )
|
|
does not report the bitmap for that array.
|
|
|
|
.TP
|
|
.B \-\-examine\-badblocks
|
|
List the bad-blocks recorded for the device, if a bad-blocks list has
|
|
been configured. Currently only
|
|
.B 1.x
|
|
and
|
|
.B IMSM
|
|
metadata support bad-blocks lists.
|
|
|
|
.TP
|
|
.BI \-\-dump= directory
|
|
.TP
|
|
.BI \-\-restore= directory
|
|
Save metadata from lists devices, or restore metadata to listed devices.
|
|
|
|
.TP
|
|
.BR \-R ", " \-\-run
|
|
start a partially assembled array. If
|
|
.B \-\-assemble
|
|
did not find enough devices to fully start the array, it might leaving
|
|
it partially assembled. If you wish, you can then use
|
|
.B \-\-run
|
|
to start the array in degraded mode.
|
|
|
|
.TP
|
|
.BR \-S ", " \-\-stop
|
|
deactivate array, releasing all resources.
|
|
|
|
.TP
|
|
.BR \-o ", " \-\-readonly
|
|
mark array as readonly.
|
|
|
|
.TP
|
|
.BR \-w ", " \-\-readwrite
|
|
mark array as readwrite.
|
|
|
|
.TP
|
|
.B \-\-zero\-superblock
|
|
If the device contains a valid md superblock, the block is
|
|
overwritten with zeros. With
|
|
.B \-\-force
|
|
the block where the superblock would be is overwritten even if it
|
|
doesn't appear to be valid.
|
|
|
|
.B Note:
|
|
Be careful when calling \-\-zero\-superblock with clustered raid. Make sure
|
|
the array isn't used or assembled in another cluster node before executing it.
|
|
|
|
.TP
|
|
.B \-\-kill\-subarray=
|
|
If the device is a container and the argument to \-\-kill\-subarray
|
|
specifies an inactive subarray in the container, then the subarray is
|
|
deleted. Deleting all subarrays will leave an 'empty-container' or
|
|
spare superblock on the drives. See
|
|
.B \-\-zero\-superblock
|
|
for completely
|
|
removing a superblock. Note that some formats depend on the subarray
|
|
index for generating a UUID, this command will fail if it would change
|
|
the UUID of an active subarray.
|
|
|
|
.TP
|
|
.B \-\-update\-subarray=
|
|
If the device is a container and the argument to \-\-update\-subarray
|
|
specifies a subarray in the container, then attempt to update the given
|
|
superblock field in the subarray. See below in
|
|
.B MISC MODE
|
|
for details.
|
|
|
|
.TP
|
|
.BR \-t ", " \-\-test
|
|
When used with
|
|
.BR \-\-detail ,
|
|
the exit status of
|
|
.I mdadm
|
|
is set to reflect the status of the device. See below in
|
|
.B MISC MODE
|
|
for details.
|
|
|
|
.TP
|
|
.BR \-W ", " \-\-wait
|
|
For each md device given, wait for any resync, recovery, or reshape
|
|
activity to finish before returning.
|
|
.I mdadm
|
|
will return with success if it actually waited for every device
|
|
listed, otherwise it will return failure.
|
|
|
|
.TP
|
|
.BR \-\-wait\-clean
|
|
For each md device given, or each device in /proc/mdstat if
|
|
.B \-\-scan
|
|
is given, arrange for the array to be marked clean as soon as possible.
|
|
.I mdadm
|
|
will return with success if the array uses external metadata and we
|
|
successfully waited. For native arrays, this returns immediately as the
|
|
kernel handles dirty-clean transitions at shutdown. No action is taken
|
|
if safe-mode handling is disabled.
|
|
|
|
.TP
|
|
.B \-\-action=
|
|
Set the "sync_action" for all md devices given to one of
|
|
.BR idle ,
|
|
.BR frozen ,
|
|
.BR check ,
|
|
.BR repair .
|
|
Setting to
|
|
.B idle
|
|
will abort any currently running action though some actions will
|
|
automatically restart.
|
|
Setting to
|
|
.B frozen
|
|
will abort any current action and ensure no other action starts
|
|
automatically.
|
|
|
|
Details of
|
|
.B check
|
|
and
|
|
.B repair
|
|
can be found it
|
|
.IR md (4)
|
|
under
|
|
.BR "SCRUBBING AND MISMATCHES" .
|
|
|
|
.TP
|
|
.B \-\-udev\-rules=
|
|
it generates the udev rules to the file that handles hot-plug bare devices.
|
|
Given the POLICYs defined under
|
|
.IR {CONFFILE}\ (or {CONFFILE2})
|
|
|
|
See
|
|
.BR mdadm.conf (5)
|
|
for more details and usage examples about POLICY.
|
|
|
|
.SH For Incremental Assembly mode:
|
|
.TP
|
|
.BR \-\-rebuild\-map ", " \-r
|
|
Rebuild the map file
|
|
.RB ( {MAP_PATH} )
|
|
that
|
|
.I mdadm
|
|
uses to help track which arrays are currently being assembled.
|
|
|
|
.TP
|
|
.BR \-\-run ", " \-R
|
|
Run any array assembled as soon as a minimal number of devices is
|
|
available, rather than waiting until all expected devices are present.
|
|
|
|
.TP
|
|
.BR \-\-scan ", " \-s
|
|
Only meaningful with
|
|
.B \-R
|
|
this will scan the
|
|
.B map
|
|
file for arrays that are being incrementally assembled and will try to
|
|
start any that are not already started. If any such array is listed
|
|
in
|
|
.B mdadm.conf
|
|
as requiring an external bitmap, that bitmap will be attached first.
|
|
|
|
.TP
|
|
.BR \-\-fail ", " \-f
|
|
This allows the hot-plug system to remove devices that have fully disappeared
|
|
from the kernel. It will first fail and then remove the device from any
|
|
array it belongs to.
|
|
The device name given should be a kernel device name such as "sda",
|
|
not a name in
|
|
.IR /dev .
|
|
|
|
.TP
|
|
.BR \-\-path=
|
|
Only used with \-\-fail. The 'path' given will be recorded so that if
|
|
a new device appears at the same location it can be automatically
|
|
added to the same array. This allows the failed device to be
|
|
automatically replaced by a new device without metadata if it appears
|
|
at specified path. This option is normally only set by an
|
|
.I udev
|
|
script.
|
|
|
|
.SH For Monitor mode:
|
|
.TP
|
|
.BR \-m ", " \-\-mail
|
|
Give an mail address to send alerts to. Can be configured in
|
|
.B mdadm.conf
|
|
as MAILADDR.
|
|
|
|
.TP
|
|
.BR \-p ", " \-\-program ", " \-\-alert
|
|
Give a program to be run whenever an event is detected. Can be configured in
|
|
.B mdadm.conf
|
|
as PROGRAM.
|
|
|
|
.TP
|
|
.BR \-y ", " \-\-syslog
|
|
Cause all events to be reported through 'syslog'. The messages have
|
|
facility of 'daemon' and varying priorities.
|
|
|
|
.TP
|
|
.BR \-d ", " \-\-delay
|
|
Give a delay in seconds. The default is 60 seconds.
|
|
.I mdadm
|
|
polls the md arrays and then waits this many seconds before polling again if no event happened.
|
|
Can be configured in
|
|
.B mdadm.conf
|
|
as MONITORDELAY.
|
|
|
|
.TP
|
|
.BR \-r ", " \-\-increment
|
|
Give a percentage increment.
|
|
.I mdadm
|
|
will generate RebuildNN events with the given percentage increment.
|
|
|
|
.TP
|
|
.BR \-f ", " \-\-daemonise
|
|
Tell
|
|
.I mdadm
|
|
to run as a background daemon if it decides to monitor anything. This
|
|
causes it to fork and run in the child, and to disconnect from the
|
|
terminal. The process id of the child is written to stdout.
|
|
This is useful with
|
|
.B \-\-scan
|
|
which will only continue monitoring if a mail address or alert program
|
|
is found in the config file.
|
|
|
|
.TP
|
|
.BR \-i ", " \-\-pid\-file
|
|
When
|
|
.I mdadm
|
|
is running in daemon mode, write the pid of the daemon process to
|
|
the specified file, instead of printing it on standard output.
|
|
|
|
.TP
|
|
.BR \-1 ", " \-\-oneshot
|
|
Check arrays only once. This will generate
|
|
.B NewArray
|
|
events and more significantly
|
|
.B DegradedArray
|
|
and
|
|
.B SparesMissing
|
|
events. Running
|
|
.in +5
|
|
.B " mdadm \-\-monitor \-\-scan \-1"
|
|
.in -5
|
|
from a cron script will ensure regular notification of any degraded arrays.
|
|
|
|
.TP
|
|
.BR \-t ", " \-\-test
|
|
Generate a
|
|
.B TestMessage
|
|
alert for every array found at startup. This alert gets mailed and
|
|
passed to the alert program. This can be used for testing that alert
|
|
message do get through successfully.
|
|
|
|
.TP
|
|
.BR \-\-no\-sharing
|
|
This inhibits the functionality for moving spares between arrays.
|
|
Only one monitoring process started with
|
|
.B \-\-scan
|
|
but without this flag is allowed, otherwise the two could interfere
|
|
with each other.
|
|
|
|
.SH ASSEMBLE MODE
|
|
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-assemble
|
|
.I md-device options-and-component-devices...
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-assemble \-\-scan
|
|
.I md-devices-and-options...
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-assemble \-\-scan
|
|
.I options...
|
|
|
|
.PP
|
|
This usage assembles one or more RAID arrays from pre-existing components.
|
|
For each array, mdadm needs to know the md device, the identity of the
|
|
array, and the number of component devices. These can be found in a number of ways.
|
|
|
|
In the first usage example (without the
|
|
.BR \-\-scan )
|
|
the first device given is the md device.
|
|
In the second usage example, all devices listed are treated as md
|
|
devices and assembly is attempted.
|
|
In the third (where no devices are listed) all md devices that are
|
|
listed in the configuration file are assembled. If no arrays are
|
|
described by the configuration file, then any arrays that
|
|
can be found on unused devices will be assembled.
|
|
|
|
If precisely one device is listed, but
|
|
.B \-\-scan
|
|
is not given, then
|
|
.I mdadm
|
|
acts as though
|
|
.B \-\-scan
|
|
was given and identity information is extracted from the configuration file.
|
|
|
|
The identity can be given with the
|
|
.B \-\-uuid
|
|
option, the
|
|
.B \-\-name
|
|
option, or the
|
|
.B \-\-super\-minor
|
|
option, will be taken from the md-device record in the config file, or
|
|
will be taken from the super block of the first component-device
|
|
listed on the command line.
|
|
|
|
Devices can be given on the
|
|
.B \-\-assemble
|
|
command line or in the config file. Only devices which have an md
|
|
superblock which contains the right identity will be considered for
|
|
any array.
|
|
|
|
The config file is only used if explicitly named with
|
|
.B \-\-config
|
|
or requested with (a possibly implicit)
|
|
.BR \-\-scan .
|
|
In the latter case, the default config file is used. See
|
|
.BR mdadm.conf (5)
|
|
for more details.
|
|
|
|
If
|
|
.B \-\-scan
|
|
is not given, then the config file will only be used to find the
|
|
identity of md arrays.
|
|
|
|
Normally the array will be started after it is assembled. However if
|
|
.B \-\-scan
|
|
is not given and not all expected drives were listed, then the array
|
|
is not started (to guard against usage errors). To insist that the
|
|
array be started in this case (as may work for RAID1, 4, 5, 6, or 10),
|
|
give the
|
|
.B \-\-run
|
|
flag.
|
|
|
|
If
|
|
.I udev
|
|
is active,
|
|
.I mdadm
|
|
does not create any entries in
|
|
.B /dev
|
|
but leaves that to
|
|
.IR udev .
|
|
It does record information in
|
|
.B {MAP_PATH}
|
|
which will allow
|
|
.I udev
|
|
to choose the correct name.
|
|
|
|
If
|
|
.I mdadm
|
|
detects that udev is not configured, it will create the devices in
|
|
.B /dev
|
|
itself.
|
|
|
|
.SS Auto-Assembly
|
|
When
|
|
.B \-\-assemble
|
|
is used with
|
|
.B \-\-scan
|
|
and no devices are listed,
|
|
.I mdadm
|
|
will first attempt to assemble all the arrays listed in the config
|
|
file.
|
|
|
|
If no arrays are listed in the config (other than those marked
|
|
.BR <ignore> )
|
|
it will look through the available devices for possible arrays and
|
|
will try to assemble anything that it finds. Arrays which are tagged
|
|
as belonging to the given homehost will be assembled and started
|
|
normally. Arrays which do not obviously belong to this host are given
|
|
names that are expected not to conflict with anything local, and are
|
|
started "read-auto" so that nothing is written to any device until the
|
|
array is written to. i.e. automatic resync etc is delayed.
|
|
|
|
If
|
|
.I mdadm
|
|
finds a consistent set of devices that look like they should comprise
|
|
an array, and if the superblock is tagged as belonging to the given
|
|
home host, it will automatically choose a device name and try to
|
|
assemble the array. If the array uses version-0.90 metadata, then the
|
|
.B minor
|
|
number as recorded in the superblock is used to create a name in
|
|
.B /dev/md/
|
|
so for example
|
|
.BR /dev/md/3 .
|
|
If the array uses version-1 metadata, then the
|
|
.B name
|
|
from the superblock is used to similarly create a name in
|
|
.B /dev/md/
|
|
(the name will have any 'host' prefix stripped first).
|
|
|
|
This behaviour can be modified by the
|
|
.I AUTO
|
|
line in the
|
|
.I mdadm.conf
|
|
configuration file. This line can indicate that specific metadata
|
|
type should, or should not, be automatically assembled. If an array
|
|
is found which is not listed in
|
|
.I mdadm.conf
|
|
and has a metadata format that is denied by the
|
|
.I AUTO
|
|
line, then it will not be assembled.
|
|
The
|
|
.I AUTO
|
|
line can also request that all arrays identified as being for this
|
|
homehost should be assembled regardless of their metadata type.
|
|
See
|
|
.IR mdadm.conf (5)
|
|
for further details.
|
|
|
|
Note: Auto-assembly cannot be used for assembling and activating some
|
|
arrays which are undergoing reshape. In particular as the
|
|
.B backup\-file
|
|
cannot be given, any reshape which requires a backup file to continue
|
|
cannot be started by auto-assembly. An array which is growing to more
|
|
devices and has passed the critical section can be assembled using
|
|
auto-assembly.
|
|
|
|
.SH BUILD MODE
|
|
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-build
|
|
.I md-device
|
|
.BI \-\-chunk= X
|
|
.BI \-\-level= Y
|
|
.BI \-\-raid\-devices= Z
|
|
.I devices
|
|
|
|
.PP
|
|
This usage is similar to
|
|
.BR \-\-create .
|
|
The difference is that it creates an array without a superblock. With
|
|
these arrays there is no difference between initially creating the array and
|
|
subsequently assembling the array, except that hopefully there is useful
|
|
data there in the second case.
|
|
|
|
The level may raid0, linear, raid1, raid10, multipath, or faulty, or
|
|
one of their synonyms. All devices must be listed and the array will
|
|
be started once complete. It will often be appropriate to use
|
|
.B \-\-assume\-clean
|
|
with levels raid1 or raid10.
|
|
|
|
.SH CREATE MODE
|
|
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-create
|
|
.I md-device
|
|
.BI \-\-chunk= X
|
|
.BI \-\-level= Y
|
|
.BI \-\-raid\-devices= Z
|
|
.I devices
|
|
|
|
.PP
|
|
This usage will initialize a new md array, associate some devices with
|
|
it, and activate the array.
|
|
|
|
.I md-device
|
|
is a new device. This could be standard name or chosen name. For details see:
|
|
.BR "DEVICE NAMES"
|
|
|
|
The named device will normally not exist when
|
|
.I "mdadm \-\-create"
|
|
is run, but will be created by
|
|
.I udev
|
|
once the array becomes active.
|
|
|
|
The max length md-device name is limited to 32 characters.
|
|
Different metadata types have more strict limitation
|
|
(like IMSM where only 16 characters are allowed).
|
|
For that reason, long name could be truncated or rejected, it depends on metadata policy.
|
|
|
|
As devices are added, they are checked to see if they contain RAID
|
|
superblocks or filesystems. They are also checked to see if the variance in
|
|
device size exceeds 1%.
|
|
|
|
If any discrepancy is found, the array will not automatically be run, though
|
|
the presence of a
|
|
.B \-\-run
|
|
can override this caution.
|
|
|
|
To create a "degraded" array in which some devices are missing, simply
|
|
give the word "\fBmissing\fP"
|
|
in place of a device name. This will cause
|
|
.I mdadm
|
|
to leave the corresponding slot in the array empty.
|
|
For a RAID4 or RAID5 array at most one slot can be
|
|
"\fBmissing\fP"; for a RAID6 array at most two slots.
|
|
For a RAID1 array, only one real device needs to be given. All of the
|
|
others can be
|
|
"\fBmissing\fP".
|
|
|
|
When creating a RAID5 array,
|
|
.I mdadm
|
|
will automatically create a degraded array with an extra spare drive.
|
|
This is because building the spare into a degraded array is in general
|
|
faster than resyncing the parity on a non-degraded, but not clean,
|
|
array. This feature can be overridden with the
|
|
.B \-\-force
|
|
option.
|
|
|
|
When creating a partition based array, using
|
|
.I mdadm
|
|
with version-1.x metadata, the partition type should be set to
|
|
.B 0xDA
|
|
(non fs-data). This type of selection allows for greater precision since
|
|
using any other [RAID auto-detect (0xFD) or a GNU/Linux partition (0x83)],
|
|
might create problems in the event of array recovery through a live cdrom.
|
|
|
|
A new array will normally get a randomly assigned 128bit UUID which is
|
|
very likely to be unique. If you have a specific need, you can choose
|
|
a UUID for the array by giving the
|
|
.B \-\-uuid=
|
|
option. Be warned that creating two arrays with the same UUID is a
|
|
recipe for disaster. Also, using
|
|
.B \-\-uuid=
|
|
when creating a v0.90 array will silently override any
|
|
.B \-\-homehost=
|
|
setting.
|
|
.\"If the
|
|
.\".B \-\-size
|
|
.\"option is given, it is not necessary to list any component devices in this command.
|
|
.\"They can be added later, before a
|
|
.\".B \-\-run.
|
|
.\"If no
|
|
.\".B \-\-size
|
|
.\"is given, the apparent size of the smallest drive given is used.
|
|
|
|
If the array type supports a write-intent bitmap, and if the devices
|
|
in the array exceed 100G is size, an internal write-intent bitmap
|
|
will automatically be added unless some other option is explicitly
|
|
requested with the
|
|
.B \-\-bitmap
|
|
option or a different consistency policy is selected with the
|
|
.B \-\-consistency\-policy
|
|
option. In any case, space for a bitmap will be reserved so that one
|
|
can be added later with
|
|
.BR "\-\-grow \-\-bitmap=internal" .
|
|
|
|
If the metadata type supports it (currently only 1.x and IMSM metadata),
|
|
space will be allocated to store a bad block list. This allows a modest
|
|
number of bad blocks to be recorded, allowing the drive to remain in
|
|
service while only partially functional.
|
|
|
|
When creating an array within a
|
|
.B CONTAINER
|
|
.I mdadm
|
|
can be given either the list of devices to use, or simply the name of
|
|
the container. The former case gives control over which devices in
|
|
the container will be used for the array. The latter case allows
|
|
.I mdadm
|
|
to automatically choose which devices to use based on how much spare
|
|
space is available.
|
|
|
|
The General Management options that are valid with
|
|
.B \-\-create
|
|
are:
|
|
.TP
|
|
.B \-\-run
|
|
insist on running the array even if some devices look like they might
|
|
be in use.
|
|
|
|
.TP
|
|
.B \-\-readonly
|
|
start the array in readonly mode.
|
|
|
|
.SH MANAGE MODE
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm
|
|
.I device
|
|
.I options... devices...
|
|
.PP
|
|
|
|
This usage will allow individual devices in an array to be failed,
|
|
removed or added. It is possible to perform multiple operations with
|
|
on command. For example:
|
|
.br
|
|
.B " mdadm /dev/md0 \-f /dev/hda1 \-r /dev/hda1 \-a /dev/hda1"
|
|
.br
|
|
will firstly mark
|
|
.B /dev/hda1
|
|
as faulty in
|
|
.B /dev/md0
|
|
and will then remove it from the array and finally add it back
|
|
in as a spare. However, only one md array can be affected by a single
|
|
command.
|
|
|
|
When a device is added to an active array, mdadm checks to see if it
|
|
has metadata on it which suggests that it was recently a member of the
|
|
array. If it does, it tries to "re\-add" the device. If there have
|
|
been no changes since the device was removed, or if the array has a
|
|
write-intent bitmap which has recorded whatever changes there were,
|
|
then the device will immediately become a full member of the array and
|
|
those differences recorded in the bitmap will be resolved.
|
|
|
|
.SH MISC MODE
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm
|
|
.I options ...
|
|
.I devices ...
|
|
.PP
|
|
|
|
MISC mode includes a number of distinct operations that
|
|
operate on distinct devices. The operations are:
|
|
.TP
|
|
.B \-\-query
|
|
The device is examined to see if it is
|
|
(1) an active md array, or
|
|
(2) a component of an md array.
|
|
The information discovered is reported.
|
|
|
|
.TP
|
|
.B \-\-detail
|
|
The device should be an active md device.
|
|
.B mdadm
|
|
will display a detailed description of the array.
|
|
.B \-\-brief
|
|
or
|
|
.B \-\-scan
|
|
will cause the output to be less detailed and the format to be
|
|
suitable for inclusion in
|
|
.BR mdadm.conf .
|
|
The exit status of
|
|
.I mdadm
|
|
will normally be 0 unless
|
|
.I mdadm
|
|
failed to get useful information about the device(s); however, if the
|
|
.B \-\-test
|
|
option is given, then the exit status will be:
|
|
.RS
|
|
.TP
|
|
0
|
|
The array is functioning normally.
|
|
.TP
|
|
1
|
|
The array has at least one failed device.
|
|
.TP
|
|
2
|
|
The array has multiple failed devices such that it is unusable.
|
|
.TP
|
|
4
|
|
There was an error while trying to get information about the device.
|
|
.RE
|
|
|
|
.TP
|
|
.B \-\-detail\-platform
|
|
Print detail of the platform's RAID capabilities (firmware / hardware
|
|
topology). If the metadata is specified with
|
|
.B \-e
|
|
or
|
|
.B \-\-metadata=
|
|
then the return status will be:
|
|
.RS
|
|
.TP
|
|
0
|
|
metadata successfully enumerated its platform components on this system
|
|
.TP
|
|
1
|
|
metadata is platform independent
|
|
.TP
|
|
2
|
|
metadata failed to find its platform components on this system
|
|
.RE
|
|
|
|
.TP
|
|
.B \-\-update\-subarray=
|
|
If the device is a container and the argument to \-\-update\-subarray
|
|
specifies a subarray in the container, then attempt to update the given
|
|
superblock field in the subarray. Similar to updating an array in
|
|
"assemble" mode, the field to update is selected by
|
|
.B \-U
|
|
or
|
|
.B \-\-update=
|
|
option. The supported options are
|
|
.BR name ,
|
|
.BR ppl ,
|
|
.BR no\-ppl ,
|
|
.BR bitmap
|
|
and
|
|
.BR no\-bitmap .
|
|
|
|
The
|
|
.B name
|
|
option updates the subarray name in the metadata. It must be
|
|
.BR "POSIX PORTABLE NAME"
|
|
compatible and cannot be longer than 32 chars. If successes, new value will be respected after
|
|
next assembly.
|
|
|
|
The
|
|
.B ppl
|
|
and
|
|
.B no\-ppl
|
|
options enable and disable PPL in the metadata. Currently supported only for
|
|
IMSM subarrays.
|
|
|
|
The
|
|
.B bitmap
|
|
and
|
|
.B no\-bitmap
|
|
options enable and disable write-intent bitmap in the metadata. Currently supported only for
|
|
IMSM subarrays.
|
|
|
|
.TP
|
|
.B \-\-examine
|
|
The device should be a component of an md array.
|
|
.I mdadm
|
|
will read the md superblock of the device and display the contents.
|
|
If
|
|
.B \-\-brief
|
|
or
|
|
.B \-\-scan
|
|
is given, then multiple devices that are components of the one array
|
|
are grouped together and reported in a single entry suitable
|
|
for inclusion in
|
|
.BR mdadm.conf .
|
|
|
|
Having
|
|
.B \-\-scan
|
|
without listing any devices will cause all devices listed in the
|
|
config file to be examined.
|
|
|
|
.TP
|
|
.BI \-\-dump= directory
|
|
If the device contains RAID metadata, a file will be created in the
|
|
.I directory
|
|
and the metadata will be written to it. The file will be the same
|
|
size as the device and will have the metadata written at the
|
|
same location as it exists in the device. However, the file will be "sparse" so
|
|
that only those blocks containing metadata will be allocated. The
|
|
total space used will be small.
|
|
|
|
The filename used in the
|
|
.I directory
|
|
will be the base name of the device. Further, if any links appear in
|
|
.I /dev/disk/by-id
|
|
which point to the device, then hard links to the file will be created
|
|
in
|
|
.I directory
|
|
based on these
|
|
.I by-id
|
|
names.
|
|
|
|
Multiple devices can be listed and their metadata will all be stored
|
|
in the one directory.
|
|
|
|
.TP
|
|
.BI \-\-restore= directory
|
|
This is the reverse of
|
|
.BR \-\-dump .
|
|
.I mdadm
|
|
will locate a file in the directory that has a name appropriate for
|
|
the given device and will restore metadata from it. Names that match
|
|
.I /dev/disk/by-id
|
|
names are preferred, however if two of those refer to different files,
|
|
.I mdadm
|
|
will not choose between them but will abort the operation.
|
|
|
|
If a file name is given instead of a
|
|
.I directory
|
|
then
|
|
.I mdadm
|
|
will restore from that file to a single device, always provided the
|
|
size of the file matches that of the device, and the file contains
|
|
valid metadata.
|
|
.TP
|
|
.B \-\-stop
|
|
The devices should be active md arrays which will be deactivated, as
|
|
long as they are not currently in use.
|
|
|
|
.TP
|
|
.B \-\-run
|
|
This will fully activate a partially assembled md array.
|
|
|
|
.TP
|
|
.B \-\-readonly
|
|
This will mark an active array as read-only, providing that it is
|
|
not currently being used.
|
|
|
|
.TP
|
|
.B \-\-readwrite
|
|
This will change a
|
|
.B readonly
|
|
array back to being read/write.
|
|
|
|
.TP
|
|
.B \-\-scan
|
|
For all operations except
|
|
.BR \-\-examine ,
|
|
.B \-\-scan
|
|
will cause the operation to be applied to all arrays listed in
|
|
.BR /proc/mdstat .
|
|
For
|
|
.BR \-\-examine,
|
|
.B \-\-scan
|
|
causes all devices listed in the config file to be examined.
|
|
|
|
.TP
|
|
.BR \-b ", " \-\-brief
|
|
Be less verbose. This is used with
|
|
.B \-\-detail
|
|
and
|
|
.BR \-\-examine .
|
|
Using
|
|
.B \-\-brief
|
|
with
|
|
.B \-\-verbose
|
|
gives an intermediate level of verbosity.
|
|
|
|
.SH MONITOR MODE
|
|
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-monitor
|
|
.I options... devices...
|
|
|
|
.PP
|
|
Monitor option can work in two modes:
|
|
.IP \(bu 4
|
|
system wide mode, follow all md devices based on
|
|
.B /proc/mdstat,
|
|
.IP \(bu 4
|
|
follow only specified MD devices in command line.
|
|
.PP
|
|
|
|
.B \-\-scan -
|
|
indicates system wide mode. Option causes the
|
|
.I monitor
|
|
to track all md devices that appear in
|
|
.B /proc/mdstat.
|
|
If it is not set, then at least one
|
|
.B device
|
|
must be specified.
|
|
|
|
Monitor usage causes
|
|
.I mdadm
|
|
to periodically poll a number of md arrays and to report on any events
|
|
noticed.
|
|
|
|
In both modes,
|
|
.I monitor
|
|
will work as long as there is an active array with redundancy and it is defined to follow (for
|
|
.B \-\-scan
|
|
every array is followed).
|
|
|
|
As well as reporting events,
|
|
.I mdadm
|
|
may move a spare drive from one array to another if they are in the
|
|
same
|
|
.B spare-group
|
|
or
|
|
.B domain
|
|
and if the destination array has a failed drive but no spares.
|
|
|
|
The result of monitoring the arrays is the generation of events.
|
|
These events are passed to a separate program (if specified) and may
|
|
be mailed to a given E-mail address.
|
|
|
|
When passing events to a program, the program is run once for each event,
|
|
and is given 2 or 3 command-line arguments: the first is the
|
|
name of the event (see below), the second is the name of the
|
|
md device which is affected, and the third is the name of a related
|
|
device if relevant (such as a component device that has failed).
|
|
|
|
If
|
|
.B \-\-scan
|
|
is given, then a
|
|
.B program
|
|
or an
|
|
.B e-mail
|
|
address must be specified on the command line or in the config file. If neither are available, then
|
|
.I mdadm
|
|
will not monitor anything. For devices given directly in command line, without
|
|
.B program
|
|
or
|
|
.B email
|
|
specified, each event is reported to
|
|
.BR stdout.
|
|
|
|
Note: On systems where mdadm monitoring is managed through systemd, the mdmonitor.service
|
|
should be present. This service is designed to be the primary solution for array monitoring.
|
|
It is configured to operate in system-wide mode. It is initiated by udev when start criteria are
|
|
met, e.g.
|
|
.B mdadm.conf
|
|
exists and necessary configuration parameters are set.
|
|
It is kept alive as long as a redundant RAID array is active; it stops otherwise. User should
|
|
customize MAILADDR in
|
|
.B mdadm.conf
|
|
to receive mail notifications. MONITORDELAY, MAILFROM and PROGRAM are optional. See
|
|
.BR mdadm.conf (5)
|
|
for detailed description of these options.
|
|
Use systemctl status mdmonitor.service to verify status or determine if additional configuration
|
|
is needed.
|
|
|
|
The different events are:
|
|
|
|
.RS 4
|
|
.TP
|
|
.B DeviceDisappeared
|
|
An md array which previously was configured appears to no longer be
|
|
configured. (syslog priority: Critical)
|
|
|
|
If
|
|
.I mdadm
|
|
was told to monitor an array which is RAID0 or Linear, then it will
|
|
report
|
|
.B DeviceDisappeared
|
|
with the extra information
|
|
.BR Wrong-Level .
|
|
This is because RAID0 and Linear do not support the device-failed,
|
|
hot-spare and resync operations which are monitored.
|
|
|
|
.TP
|
|
.B RebuildStarted
|
|
An md array started reconstruction (e.g. recovery, resync, reshape,
|
|
check, repair). (syslog priority: Warning)
|
|
|
|
.TP
|
|
.BI Rebuild NN
|
|
Where
|
|
.I NN
|
|
is a two-digit number (eg. 05, 48). This indicates that the rebuild
|
|
has reached that percentage of the total. The events are generated
|
|
at a fixed increment from 0. The increment size may be specified with
|
|
a command-line option (the default is 20). (syslog priority: Warning)
|
|
|
|
.TP
|
|
.B RebuildFinished
|
|
An md array that was rebuilding, isn't any more, either because it
|
|
finished normally or was aborted. (syslog priority: Warning)
|
|
|
|
.TP
|
|
.B Fail
|
|
An active component device of an array has been marked as
|
|
faulty. (syslog priority: Critical)
|
|
|
|
.TP
|
|
.B FailSpare
|
|
A spare component device which was being rebuilt to replace a faulty
|
|
device has failed. (syslog priority: Critical)
|
|
|
|
.TP
|
|
.B SpareActive
|
|
A spare component device which was being rebuilt to replace a faulty
|
|
device has been successfully rebuilt and has been made active.
|
|
(syslog priority: Info)
|
|
|
|
.TP
|
|
.B NewArray
|
|
A new md array has been detected in the
|
|
.B /proc/mdstat
|
|
file. (syslog priority: Info)
|
|
|
|
.TP
|
|
.B DegradedArray
|
|
A newly noticed array appears to be degraded. This message is not
|
|
generated when
|
|
.I mdadm
|
|
notices a drive failure which causes degradation, but only when
|
|
.I mdadm
|
|
notices that an array is degraded when it first sees the array.
|
|
(syslog priority: Critical)
|
|
|
|
.TP
|
|
.B MoveSpare
|
|
A spare drive has been moved from one array in a
|
|
.B spare-group
|
|
or
|
|
.B domain
|
|
to another to allow a failed drive to be replaced.
|
|
(syslog priority: Info)
|
|
|
|
.TP
|
|
.B SparesMissing
|
|
If
|
|
.I mdadm
|
|
has been told, via the config file, that an array should have a certain
|
|
number of spare devices, and
|
|
.I mdadm
|
|
detects that it has fewer than this number when it first sees the
|
|
array, it will report a
|
|
.B SparesMissing
|
|
message.
|
|
(syslog priority: Warning)
|
|
|
|
.TP
|
|
.B TestMessage
|
|
An array was found at startup, and the
|
|
.B \-\-test
|
|
flag was given.
|
|
(syslog priority: Info)
|
|
.RE
|
|
|
|
Only
|
|
.B Fail,
|
|
.B FailSpare,
|
|
.B DegradedArray,
|
|
.B SparesMissing
|
|
and
|
|
.B TestMessage
|
|
cause Email to be sent. All events cause the program to be run.
|
|
The program is run with two or three arguments: the event
|
|
name, the array device and possibly a second device.
|
|
|
|
Each event has an associated array device (e.g.
|
|
.BR /dev/md1 )
|
|
and possibly a second device. For
|
|
.BR Fail ,
|
|
.BR FailSpare ,
|
|
and
|
|
.B SpareActive
|
|
the second device is the relevant component device.
|
|
For
|
|
.B MoveSpare
|
|
the second device is the array that the spare was moved from.
|
|
|
|
For
|
|
.I mdadm
|
|
to move spares from one array to another, the different arrays need to
|
|
be labeled with the same
|
|
.B spare-group
|
|
or the spares must be allowed to migrate through matching POLICY domains
|
|
in the configuration file. The
|
|
.B spare-group
|
|
name can be any string; it is only necessary that different spare
|
|
groups use different names.
|
|
|
|
When
|
|
.I mdadm
|
|
detects that an array in a spare group has fewer active
|
|
devices than necessary for the complete array, and has no spare
|
|
devices, it will look for another array in the same spare group that
|
|
has a full complement of working drives and a spare. It will then
|
|
attempt to remove the spare from the second array and add it to the
|
|
first.
|
|
If the removal succeeds but the adding fails, then it is added back to
|
|
the original array.
|
|
|
|
If the spare group for a degraded array is not defined,
|
|
.I mdadm
|
|
will look at the rules of spare migration specified by POLICY lines in
|
|
.B mdadm.conf
|
|
and then follow similar steps as above if a matching spare is found.
|
|
|
|
.SH GROW MODE
|
|
The GROW mode is used for changing the size or shape of an active
|
|
array.
|
|
|
|
The following changes are supported:
|
|
.IP \(bu 4
|
|
change the "size" attribute for RAID1, RAID4, RAID5 and RAID6.
|
|
.IP \(bu 4
|
|
increase or decrease the "raid\-devices" attribute of RAID0, RAID1, RAID4,
|
|
RAID5, and RAID6.
|
|
.IP \(bu 4
|
|
change the chunk-size and layout of RAID0, RAID4, RAID5, RAID6 and RAID10.
|
|
.IP \(bu 4
|
|
convert between RAID1 and RAID5, between RAID5 and RAID6, between
|
|
RAID0, RAID4, and RAID5, and between RAID0 and RAID10 (in the near-2 mode).
|
|
.IP \(bu 4
|
|
add a write-intent bitmap to any array which supports these bitmaps, or
|
|
remove a write-intent bitmap from such an array.
|
|
.IP \(bu 4
|
|
change the array's consistency policy.
|
|
.PP
|
|
|
|
Using GROW on containers is currently supported only for Intel's IMSM
|
|
container format. The number of devices in a container can be
|
|
increased - which affects all arrays in the container - or an array
|
|
in a container can be converted between levels where those levels are
|
|
supported by the container, and the conversion is on of those listed
|
|
above.
|
|
|
|
.PP
|
|
Notes:
|
|
.IP \(bu 4
|
|
Intel's native checkpointing doesn't use
|
|
.B --backup-file
|
|
option and it is transparent for assembly feature.
|
|
.IP \(bu 4
|
|
Roaming between Windows(R) and Linux systems for IMSM metadata is not
|
|
supported during grow process.
|
|
.IP \(bu 4
|
|
When growing a raid0 device, the new component disk size (or external
|
|
backup size) should be larger than LCM(old, new) * chunk-size * 2,
|
|
where LCM() is the least common multiple of the old and new count of
|
|
component disks, and "* 2" comes from the fact that mdadm refuses to
|
|
use more than half of a spare device for backup space.
|
|
|
|
.SS SIZE CHANGES
|
|
Normally when an array is built the "size" is taken from the smallest
|
|
of the drives. If all the small drives in an arrays are, over time,
|
|
removed and replaced with larger drives, then you could have an
|
|
array of large drives with only a small amount used. In this
|
|
situation, changing the "size" with "GROW" mode will allow the extra
|
|
space to start being used. If the size is increased in this way, a
|
|
"resync" process will start to make sure the new parts of the array
|
|
are synchronised.
|
|
|
|
Note that when an array changes size, any filesystem that may be
|
|
stored in the array will not automatically grow or shrink to use or
|
|
vacate the space. The
|
|
filesystem will need to be explicitly told to use the extra space
|
|
after growing, or to reduce its size
|
|
.B prior
|
|
to shrinking the array.
|
|
|
|
Also, the size of an array cannot be changed while it has an active
|
|
bitmap. If an array has a bitmap, it must be removed before the size
|
|
can be changed. Once the change is complete a new bitmap can be created.
|
|
|
|
.PP
|
|
Note:
|
|
.B "--grow --size"
|
|
is not yet supported for external file bitmap.
|
|
|
|
.SS RAID\-DEVICES CHANGES
|
|
|
|
A RAID1 array can work with any number of devices from 1 upwards
|
|
(though 1 is not very useful). There may be times which you want to
|
|
increase or decrease the number of active devices. Note that this is
|
|
different to hot-add or hot-remove which changes the number of
|
|
inactive devices.
|
|
|
|
When reducing the number of devices in a RAID1 array, the slots which
|
|
are to be removed from the array must already be vacant. That is, the
|
|
devices which were in those slots must be failed and removed.
|
|
|
|
When the number of devices is increased, any hot spares that are
|
|
present will be activated immediately.
|
|
|
|
Changing the number of active devices in a RAID5 or RAID6 is much more
|
|
effort. Every block in the array will need to be read and written
|
|
back to a new location. Linux Kernel is able to increase or decrease
|
|
the number of devices in a RAID5 and RAID6 safely, including restarting
|
|
an interrupted "reshape".
|
|
|
|
The Linux Kernel is able to convert a RAID0 into a RAID4 or RAID5.
|
|
.I mdadm
|
|
uses this functionality and the ability to add
|
|
devices to a RAID4 to allow devices to be added to a RAID0. When
|
|
requested to do this,
|
|
.I mdadm
|
|
will convert the RAID0 to a RAID4, add the necessary disks and make
|
|
the reshape happen, and then convert the RAID4 back to RAID0.
|
|
|
|
When decreasing the number of devices, the size of the array will also
|
|
decrease. If there was data in the array, it could get destroyed and
|
|
this is not reversible, so you should firstly shrink the filesystem on
|
|
the array to fit within the new size. To help prevent accidents,
|
|
.I mdadm
|
|
requires that the size of the array be decreased first with
|
|
.BR "mdadm --grow --array-size" .
|
|
This is a reversible change which simply makes the end of the array
|
|
inaccessible. The integrity of any data can then be checked before
|
|
the non-reversible reduction in the number of devices is request.
|
|
|
|
When relocating the first few stripes on a RAID5 or RAID6, it is not
|
|
possible to keep the data on disk completely consistent and
|
|
crash-proof. To provide the required safety, mdadm disables writes to
|
|
the array while this "critical section" is reshaped, and takes a
|
|
backup of the data that is in that section. For grows, this backup may be
|
|
stored in any spare devices that the array has, however it can also be
|
|
stored in a separate file specified with the
|
|
.B \-\-backup\-file
|
|
option, and is required to be specified for shrinks, RAID level
|
|
changes and layout changes. If this option is used, and the system
|
|
does crash during the critical period, the same file must be passed to
|
|
.B \-\-assemble
|
|
to restore the backup and reassemble the array. When shrinking rather
|
|
than growing the array, the reshape is done from the end towards the
|
|
beginning, so the "critical section" is at the end of the reshape.
|
|
|
|
.SS LEVEL CHANGES
|
|
|
|
Changing the RAID level of any array happens instantaneously. However
|
|
in the RAID5 to RAID6 case this requires a non-standard layout of the
|
|
RAID6 data, and in the RAID6 to RAID5 case that non-standard layout is
|
|
required before the change can be accomplished. So while the level
|
|
change is instant, the accompanying layout change can take quite a
|
|
long time. A
|
|
.B \-\-backup\-file
|
|
is required. If the array is not simultaneously being grown or
|
|
shrunk, so that the array size will remain the same - for example,
|
|
reshaping a 3-drive RAID5 into a 4-drive RAID6 - the backup file will
|
|
be used not just for a "critical section" but throughout the reshape
|
|
operation, as described below under LAYOUT CHANGES.
|
|
|
|
.SS CHUNK-SIZE AND LAYOUT CHANGES
|
|
|
|
Changing the chunk-size or layout without also changing the number of
|
|
devices as the same time will involve re-writing all blocks in-place.
|
|
To ensure against data loss in the case of a crash, a
|
|
.B --backup-file
|
|
must be provided for these changes. Small sections of the array will
|
|
be copied to the backup file while they are being rearranged. This
|
|
means that all the data is copied twice, once to the backup and once
|
|
to the new layout on the array, so this type of reshape will go very
|
|
slowly.
|
|
|
|
If the reshape is interrupted for any reason, this backup file must be
|
|
made available to
|
|
.B "mdadm --assemble"
|
|
so the array can be reassembled. Consequently, the file cannot be
|
|
stored on the device being reshaped.
|
|
|
|
|
|
.SS BITMAP CHANGES
|
|
|
|
A write-intent bitmap can be added to, or removed from, an active
|
|
array. Either internal bitmaps, or bitmaps stored in a separate file,
|
|
can be added. Note that if you add a bitmap stored in a file which is
|
|
in a filesystem that is on the RAID array being affected, the system
|
|
will deadlock. The bitmap must be on a separate filesystem.
|
|
|
|
.SS CONSISTENCY POLICY CHANGES
|
|
|
|
The consistency policy of an active array can be changed by using the
|
|
.B \-\-consistency\-policy
|
|
option in Grow mode. Currently this works only for the
|
|
.B ppl
|
|
and
|
|
.B resync
|
|
policies and allows to enable or disable the RAID5 Partial Parity Log (PPL).
|
|
|
|
.SH INCREMENTAL MODE
|
|
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-incremental
|
|
.RB [ \-\-run ]
|
|
.RB [ \-\-quiet ]
|
|
.I component-device
|
|
.RI [ optional-aliases-for-device ]
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-incremental \-\-fail
|
|
.I component-device
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-incremental \-\-rebuild\-map
|
|
.HP 12
|
|
Usage:
|
|
.B mdadm \-\-incremental \-\-run \-\-scan
|
|
|
|
.PP
|
|
This mode is designed to be used in conjunction with a device
|
|
discovery system. As devices are found in a system, they can be
|
|
passed to
|
|
.B "mdadm \-\-incremental"
|
|
to be conditionally added to an appropriate array.
|
|
|
|
Conversely, it can also be used with the
|
|
.B \-\-fail
|
|
flag to do just the opposite and find whatever array a particular device
|
|
is part of and remove the device from that array.
|
|
|
|
If the device passed is a
|
|
.B CONTAINER
|
|
device created by a previous call to
|
|
.IR mdadm ,
|
|
then rather than trying to add that device to an array, all the arrays
|
|
described by the metadata of the container will be started.
|
|
|
|
.I mdadm
|
|
performs a number of tests to determine if the device is part of an
|
|
array, and which array it should be part of. If an appropriate array
|
|
is found, or can be created,
|
|
.I mdadm
|
|
adds the device to the array and conditionally starts the array.
|
|
|
|
Note that
|
|
.I mdadm
|
|
will normally only add devices to an array which were previously working
|
|
(active or spare) parts of that array. The support for automatic
|
|
inclusion of a new drive as a spare in some array requires
|
|
a configuration through POLICY in config file.
|
|
|
|
The tests that
|
|
.I mdadm
|
|
makes are as follow:
|
|
.IP +
|
|
Is the device permitted by
|
|
.BR mdadm.conf ?
|
|
That is, is it listed in a
|
|
.B DEVICES
|
|
line in that file. If
|
|
.B DEVICES
|
|
is absent then the default it to allow any device. Similarly if
|
|
.B DEVICES
|
|
contains the special word
|
|
.B partitions
|
|
then any device is allowed. Otherwise the device name given to
|
|
.IR mdadm ,
|
|
or one of the aliases given, or an alias found in the filesystem,
|
|
must match one of the names or patterns in a
|
|
.B DEVICES
|
|
line.
|
|
|
|
This is the only context where the aliases are used. They are
|
|
usually provided by a
|
|
.I udev
|
|
rules mentioning
|
|
.BR $env{DEVLINKS} .
|
|
|
|
.IP +
|
|
Does the device have a valid md superblock? If a specific metadata
|
|
version is requested with
|
|
.B \-\-metadata
|
|
or
|
|
.B \-e
|
|
then only that style of metadata is accepted, otherwise
|
|
.I mdadm
|
|
finds any known version of metadata. If no
|
|
.I md
|
|
metadata is found, the device may be still added to an array
|
|
as a spare if POLICY allows.
|
|
|
|
.ig
|
|
.IP +
|
|
Does the metadata match an expected array?
|
|
The metadata can match in two ways. Either there is an array listed
|
|
in
|
|
.B mdadm.conf
|
|
which identifies the array (either by UUID, by name, by device list,
|
|
or by minor-number), or the array was created with a
|
|
.B homehost
|
|
specified and that
|
|
.B homehost
|
|
matches the one in
|
|
.B mdadm.conf
|
|
or on the command line.
|
|
If
|
|
.I mdadm
|
|
is not able to positively identify the array as belonging to the
|
|
current host, the device will be rejected.
|
|
..
|
|
|
|
.PP
|
|
.I mdadm
|
|
keeps a list of arrays that it has partially assembled in
|
|
.BR {MAP_PATH} .
|
|
If no array exists which matches
|
|
the metadata on the new device,
|
|
.I mdadm
|
|
must choose a device name and unit number. It does this based on any
|
|
name given in
|
|
.B mdadm.conf
|
|
or any name information stored in the metadata. If this name
|
|
suggests a unit number, that number will be used, otherwise a free
|
|
unit number will be chosen. Normally
|
|
.I mdadm
|
|
will prefer to create a partitionable array, however if the
|
|
.B CREATE
|
|
line in
|
|
.B mdadm.conf
|
|
suggests that a non-partitionable array is preferred, that will be
|
|
honoured.
|
|
|
|
If the array is not found in the config file and its metadata does not
|
|
identify it as belonging to the "homehost", then
|
|
.I mdadm
|
|
will choose a name for the array which is certain not to conflict with
|
|
any array which does belong to this host. It does this be adding an
|
|
underscore and a small number to the name preferred by the metadata.
|
|
|
|
Once an appropriate array is found or created and the device is added,
|
|
.I mdadm
|
|
must decide if the array is ready to be started. It will
|
|
normally compare the number of available (non-spare) devices to the
|
|
number of devices that the metadata suggests need to be active. If
|
|
there are at least that many, the array will be started. This means
|
|
that if any devices are missing the array will not be restarted.
|
|
|
|
As an alternative,
|
|
.B \-\-run
|
|
may be passed to
|
|
.I mdadm
|
|
in which case the array will be run as soon as there are enough
|
|
devices present for the data to be accessible. For a RAID1, that
|
|
means one device will start the array. For a clean RAID5, the array
|
|
will be started as soon as all but one drive is present.
|
|
|
|
Note that neither of these approaches is really ideal. If it can
|
|
be known that all device discovery has completed, then
|
|
.br
|
|
.B " mdadm \-IRs"
|
|
.br
|
|
can be run which will try to start all arrays that are being
|
|
incrementally assembled. They are started in "read-auto" mode in
|
|
which they are read-only until the first write request. This means
|
|
that no metadata updates are made and no attempt at resync or recovery
|
|
happens. Further devices that are found before the first write can
|
|
still be added safely.
|
|
|
|
.SH ENVIRONMENT
|
|
This section describes environment variables that affect how mdadm
|
|
operates.
|
|
|
|
.TP
|
|
.B MDADM_NO_MDMON
|
|
Setting this value to 1 will prevent mdadm from automatically launching
|
|
mdmon. This variable is intended primarily for debugging mdadm/mdmon.
|
|
|
|
.TP
|
|
.B MDADM_NO_UDEV
|
|
Normally,
|
|
.I mdadm
|
|
does not create any device nodes in /dev, but leaves that task to
|
|
.IR udev .
|
|
If
|
|
.I udev
|
|
appears not to be configured, or if this environment variable is set
|
|
to '1', the
|
|
.I mdadm
|
|
will create and devices that are needed.
|
|
|
|
.TP
|
|
.B MDADM_NO_SYSTEMCTL
|
|
If
|
|
.I mdadm
|
|
detects that
|
|
.I systemd
|
|
is in use it will normally request
|
|
.I systemd
|
|
to start various background tasks (particularly
|
|
.IR mdmon )
|
|
rather than forking and running them in the background. This can be
|
|
suppressed by setting
|
|
.BR MDADM_NO_SYSTEMCTL=1 .
|
|
|
|
.TP
|
|
.B IMSM_NO_PLATFORM
|
|
A key value of IMSM metadata is that it allows interoperability with
|
|
boot ROMs on Intel platforms, and with other major operating systems.
|
|
Consequently,
|
|
.I mdadm
|
|
will only allow an IMSM array to be created or modified if detects
|
|
that it is running on an Intel platform which supports IMSM, and
|
|
supports the particular configuration of IMSM that is being requested
|
|
(some functionality requires newer OROM support).
|
|
|
|
These checks can be suppressed by setting IMSM_NO_PLATFORM=1 in the
|
|
environment. This can be useful for testing or for disaster
|
|
recovery. You should be aware that interoperability may be
|
|
compromised by setting this value.
|
|
|
|
These change can also be suppressed by adding
|
|
.B mdadm.imsm.test=1
|
|
to the kernel command line. This makes it easy to test IMSM
|
|
code in a virtual machine that doesn't have IMSM virtual hardware.
|
|
|
|
.TP
|
|
.B MDADM_GROW_ALLOW_OLD
|
|
If an array is stopped while it is performing a reshape and that
|
|
reshape was making use of a backup file, then when the array is
|
|
re-assembled
|
|
.I mdadm
|
|
will sometimes complain that the backup file is too old. If this
|
|
happens and you are certain it is the right backup file, you can
|
|
over-ride this check by setting
|
|
.B MDADM_GROW_ALLOW_OLD=1
|
|
in the environment.
|
|
|
|
.TP
|
|
.B MDADM_CONF_AUTO
|
|
Any string given in this variable is added to the start of the
|
|
.B AUTO
|
|
line in the config file, or treated as the whole
|
|
.B AUTO
|
|
line if none is given. It can be used to disable certain metadata
|
|
types when
|
|
.I mdadm
|
|
is called from a boot script. For example
|
|
.br
|
|
.B " export MDADM_CONF_AUTO='-ddf -imsm'
|
|
.br
|
|
will make sure that
|
|
.I mdadm
|
|
does not automatically assemble any DDF or
|
|
IMSM arrays that are found. This can be useful on systems configured
|
|
to manage such arrays with
|
|
.BR dmraid .
|
|
|
|
|
|
.SH EXAMPLES
|
|
|
|
.B " mdadm \-\-query /dev/name-of-device"
|
|
.br
|
|
This will find out if a given device is a RAID array, or is part of
|
|
one, and will provide brief information about the device.
|
|
|
|
.B " mdadm \-\-assemble \-\-scan"
|
|
.br
|
|
This will assemble and start all arrays listed in the standard config
|
|
file. This command will typically go in a system startup file.
|
|
|
|
.B " mdadm \-\-stop \-\-scan"
|
|
.br
|
|
This will shut down all arrays that can be shut down (i.e. are not
|
|
currently in use). This will typically go in a system shutdown script.
|
|
|
|
.B " mdadm \-\-follow \-\-scan \-\-delay=120"
|
|
.br
|
|
If (and only if) there is an Email address or program given in the
|
|
standard config file, then
|
|
monitor the status of all arrays listed in that file by
|
|
polling them ever 2 minutes.
|
|
|
|
.B " mdadm \-\-create /dev/md0 \-\-level=1 \-\-raid\-devices=2 /dev/hd[ac]1"
|
|
.br
|
|
Create /dev/md0 as a RAID1 array consisting of /dev/hda1 and /dev/hdc1.
|
|
|
|
.br
|
|
.B " echo 'DEVICE /dev/hd*[0\-9] /dev/sd*[0\-9]' > mdadm.conf"
|
|
.br
|
|
.B " mdadm \-\-detail \-\-scan >> mdadm.conf"
|
|
.br
|
|
This will create a prototype config file that describes currently
|
|
active arrays that are known to be made from partitions of IDE or SCSI drives.
|
|
This file should be reviewed before being used as it may
|
|
contain unwanted detail.
|
|
|
|
.B " echo 'DEVICE /dev/hd[a\-z] /dev/sd*[a\-z]' > mdadm.conf"
|
|
.br
|
|
.B " mdadm \-\-examine \-\-scan \-\-config=mdadm.conf >> mdadm.conf"
|
|
.br
|
|
This will find arrays which could be assembled from existing IDE and
|
|
SCSI whole drives (not partitions), and store the information in the
|
|
format of a config file.
|
|
This file is very likely to contain unwanted detail, particularly
|
|
the
|
|
.B devices=
|
|
entries. It should be reviewed and edited before being used as an
|
|
actual config file.
|
|
|
|
.B " mdadm \-\-examine \-\-brief \-\-scan \-\-config=partitions"
|
|
.br
|
|
.B " mdadm \-Ebsc partitions"
|
|
.br
|
|
Create a list of devices by reading
|
|
.BR /proc/partitions ,
|
|
scan these for RAID superblocks, and printout a brief listing of all
|
|
that were found.
|
|
|
|
.B " mdadm \-Ac partitions \-m 0 /dev/md0"
|
|
.br
|
|
Scan all partitions and devices listed in
|
|
.BR /proc/partitions
|
|
and assemble
|
|
.B /dev/md0
|
|
out of all such devices with a RAID superblock with a minor number of 0.
|
|
|
|
.B " mdadm \-\-monitor \-\-scan \-\-daemonise > /run/mdadm/mon.pid"
|
|
.br
|
|
If config file contains a mail address or alert program, run mdadm in
|
|
the background in monitor mode monitoring all md devices. Also write
|
|
pid of mdadm daemon to
|
|
.BR /run/mdadm/mon.pid .
|
|
|
|
.B " mdadm \-Iq /dev/somedevice"
|
|
.br
|
|
Try to incorporate newly discovered device into some array as
|
|
appropriate.
|
|
|
|
.B " mdadm \-\-incremental \-\-rebuild\-map \-\-run \-\-scan"
|
|
.br
|
|
Rebuild the array map from any current arrays, and then start any that
|
|
can be started.
|
|
|
|
.B " mdadm /dev/md4 --fail detached --remove detached"
|
|
.br
|
|
Any devices which are components of /dev/md4 will be marked as faulty
|
|
and then remove from the array.
|
|
|
|
.B " mdadm --grow /dev/md4 --level=6 --backup-file=/root/backup-md4"
|
|
.br
|
|
The array
|
|
.B /dev/md4
|
|
which is currently a RAID5 array will be converted to RAID6. There
|
|
should normally already be a spare drive attached to the array as a
|
|
RAID6 needs one more drive than a matching RAID5.
|
|
|
|
.B " mdadm --create /dev/md/ddf --metadata=ddf --raid-disks 6 /dev/sd[a-f]"
|
|
.br
|
|
Create a DDF array over 6 devices.
|
|
|
|
.B " mdadm --create /dev/md/home -n3 -l5 -z 30000000 /dev/md/ddf"
|
|
.br
|
|
Create a RAID5 array over any 3 devices in the given DDF set. Use
|
|
only 30 gigabytes of each device.
|
|
|
|
.B " mdadm -A /dev/md/ddf1 /dev/sd[a-f]"
|
|
.br
|
|
Assemble a pre-exist ddf array.
|
|
|
|
.B " mdadm -I /dev/md/ddf1"
|
|
.br
|
|
Assemble all arrays contained in the ddf array, assigning names as
|
|
appropriate.
|
|
|
|
.B " mdadm \-\-create \-\-help"
|
|
.br
|
|
Provide help about the Create mode.
|
|
|
|
.B " mdadm \-\-config \-\-help"
|
|
.br
|
|
Provide help about the format of the config file.
|
|
|
|
.B " mdadm \-\-help"
|
|
.br
|
|
Provide general help.
|
|
|
|
.SH FILES
|
|
|
|
.SS /proc/mdstat
|
|
|
|
If you're using the
|
|
.B /proc
|
|
filesystem,
|
|
.B /proc/mdstat
|
|
lists all active md devices with information about them.
|
|
.I mdadm
|
|
uses this to find arrays when
|
|
.B \-\-scan
|
|
is given in Misc mode, and to monitor array reconstruction
|
|
on Monitor mode.
|
|
|
|
.SS {CONFFILE} (or {CONFFILE2})
|
|
|
|
Default config file. See
|
|
.BR mdadm.conf (5)
|
|
for more details.
|
|
|
|
.SS {CONFFILE}.d (or {CONFFILE2}.d)
|
|
|
|
Default directory containing configuration files. See
|
|
.BR mdadm.conf (5)
|
|
for more details.
|
|
|
|
.SS {MAP_PATH}
|
|
When
|
|
.B \-\-incremental
|
|
mode is used, this file gets a list of arrays currently being created.
|
|
|
|
.SH POSIX PORTABLE NAME
|
|
A valid name can only consist of characters "A-Za-z0-9.-_".
|
|
The name cannot start with a leading "-" and cannot exceed 255 chars.
|
|
|
|
.SH DEVICE NAMES
|
|
|
|
.I mdadm
|
|
understand two sorts of names for array devices.
|
|
|
|
The first is the so-called 'standard' format name, which matches the
|
|
names used by the kernel and which appear in
|
|
.IR /proc/mdstat .
|
|
|
|
The second sort can be freely chosen, but must reside in
|
|
.IR /dev/md/ .
|
|
When giving a device name to
|
|
.I mdadm
|
|
to create or assemble an array, either full path name such as
|
|
.I /dev/md0
|
|
or
|
|
.I /dev/md/home
|
|
can be given, or just the suffix of the second sort of name, such as
|
|
.I home
|
|
can be given.
|
|
|
|
In every style, raw name must be compatible with
|
|
.BR "POSIX PORTABLE NAME"
|
|
and has to be no longer than 32 chars.
|
|
|
|
When
|
|
.I mdadm
|
|
chooses device names during auto-assembly or incremental assembly, it
|
|
will sometimes add a small sequence number to the end of the name to
|
|
avoid conflicted between multiple arrays that have the same name. If
|
|
.I mdadm
|
|
can reasonably determine that the array really is meant for this host,
|
|
either by a hostname in the metadata, or by the presence of the array
|
|
in
|
|
.BR mdadm.conf ,
|
|
then it will leave off the suffix if possible.
|
|
Also if the homehost is specified as
|
|
.B <ignore>
|
|
.I mdadm
|
|
will only use a suffix if a different array of the same name already
|
|
exists or is listed in the config file.
|
|
|
|
The names for arrays are of the form:
|
|
.IP
|
|
.RB /dev/md NN
|
|
.PP
|
|
where NN is a number.
|
|
|
|
.PP
|
|
Names can be non-numeric following
|
|
the form:
|
|
.IP
|
|
.RB /dev/md_ XXX
|
|
.PP
|
|
where
|
|
.B XXX
|
|
is any string. These names are supported by
|
|
.I mdadm
|
|
since version 3.3 provided they are enabled in
|
|
.IR mdadm.conf .
|
|
|
|
.SH UNDERSTANDING OUTPUT
|
|
|
|
.TP
|
|
EXAMINE
|
|
|
|
.TP
|
|
.B checkpoint
|
|
Checkpoint value is reported when array is performing some action including
|
|
resync, recovery or reshape. Checkpoints allow resuming action from certain
|
|
point if it was interrupted.
|
|
|
|
Checkpoint is reported as combination of two values: current migration unit
|
|
and number of blocks per unit. By multiplying those values and dividing by
|
|
array size checkpoint progress percentage can be obtained in relation to
|
|
current progress reported in /proc/mdstat. Checkpoint is also related to (and
|
|
sometimes based on) sysfs entry sync_completed but depending on action units
|
|
may differ. Even if units are the same, it should not be expected that
|
|
checkpoint and sync_completed will be exact match nor updated simultaneously.
|
|
|
|
.SH NOTE
|
|
.I mdadm
|
|
was previously known as
|
|
.IR mdctl .
|
|
|
|
.SH SEE ALSO
|
|
For further information on mdadm usage, MD and the various levels of
|
|
RAID, see:
|
|
.IP
|
|
.B https://raid.wiki.kernel.org/
|
|
.PP
|
|
(based upon Jakob \(/Ostergaard's Software\-RAID.HOWTO)
|
|
.PP
|
|
The latest version of
|
|
.I mdadm
|
|
should always be available from
|
|
.IP
|
|
.B https://www.kernel.org/pub/linux/utils/raid/mdadm/
|
|
.PP
|
|
Related man pages:
|
|
.PP
|
|
.IR mdmon (8),
|
|
.IR mdadm.conf (5),
|
|
.IR md (4).
|