mdadm is a Linux utility used to manage and monitor software RAID devices.
The name is derived from the md device nodes it administers or manages, and it
replaced a previous utility mdctl. The original name was "Mirror Disk", but was
changed as the functionality increased. mdadm is free software licensed under
version 2 or later of the GNU General Public License - maintained and
copyrighted to Neil Brown of SUSE. Overview
Linux software RAID configurations can include anything presented to the Linux
kernel as a block device. This includes whole hard drives, and their partitions.
= RAID configurations = RAID 0 – Block level striping. MD can
handle devices of different lengths, the extra space on the larger device is then
not striped. RAID 1 – Mirror.
RAID 4 – Like RAID 0, but with an extra device for the parity.
RAID 5 – Like RAID 4, but with the parity distributed across all devices.
RAID 6 – Like RAID 5, but with two parity segments per stripe.
RAID 10 – Take a number of RAID 1 mirrorsets and stripe across them RAID 0
style. Note that RAID 10 is distinct from RAID
0+1, which consists of a top-level RAID 1 mirror composed of high-performance
RAID 0 stripes directly across the physical hard disks. A single-drive
failure in a RAID 10 configuration results in one of the lower-level
mirrors entering degraded mode, but the top-level stripe performing normally. A
single-drive failure in a RAID 0+1 configuration results in one of the
lower-level stripes completely failing, and the top-level mirror entering
degraded mode. Which of the two setups is preferable depends on the details of
the application in question, such as whether or not spare disks are
available, and how they should be spun up.
= Non-RAID configurations = Linear – concatenates a number of
devices into a single large MD device. Multipath – provides multiple paths with
failover to a single device. Faulty – a single device which emulates
a number of disk-fault scenarios for testing and development.
Container – a group of devices managed as a single device, in which one can
build RAID systems. Features
The original form of names for md devices is md, where is a number
between 0 and 99. More recent kernels have support for names such as md/Home.
Under 2.4.x kernels and earlier these two were the only options. Both of them
are non-partitionable. Since 2.6.x kernels, a new type of MD
device was introduced, a partitionable array. The device names were modified by
changing md to md_d. The partitions were identified by adding p; thus md/md_d2p3
for example. Since version 2.6.28 of the Linux kernel mainline, non-partitionable
arrays can be partitioned, the partitions being referred to in the same
way as for partitionable arrays – for example, md/md1p2.
Since version 3.7 of the Linux kernel mainline, md supports TRIM operations
for the underlying solid-state drives, for linear, RAID 0, RAID 1, RAID 5 and
RAID 10 layouts. = Booting =
Since support for MD is found in the kernel, there is an issue with using it
before the kernel is running. Specifically it will not be present if
the boot loader is eitherLiLo or GRUB legacy. It may not be present for GRUB
2. In order to circumvent this problem a /boot filesystem must be used either
without md support, or else with RAID1. In the latter case the system will boot
by treating the RAID1 device as a normal filesystem, and once the system is
running it can be remounted as md and the second disk added to it. This will
result in a catch-up, but /boot filesystems are usually small.
With more recent bootloaders it is possible to load the MD support as a
kernel module through the initramfs mechanism, this approach allows you to
let the /boot filesystem be inside any RAID system without the need of a
complex manual configuration. = External metadata =
Besides its own formats for RAID volumes metadata, Linux software RAID also
supports external metadata formats, since version 2.6.27 of the Linux kernel
and version 3.0 of the mdadm userspace utility. This allows Linux to use
various firmware- or driver-based RAID volumes, also known as "fake RAID".
As of October 2013, there are two supported formats of the external
metadata: DDF, an industry standard defined by the
Storage Networking Industry Association for increased interoperability.
Volume metadata format used by the Intel Matrix RAID, implemented on many
consumer-level motherboards. = mdmpd =
mdmpd is a daemon used for monitoring MD multipath devices, developed by Red Hat
as part of the mdadm package. The program is used to monitor multipath
devices, and is usually started at boot time as a service, and afterwards
running as a daemon. Enterprise storage requirements often
include the desire to have more than one way to talk to a single disk drive so
that in the event of some failure to talk to a disk drive via one controller,
the system can automatically switch to another controller and keep going. This
is called multipath disk access. The linux kernel implements multipath disk
access via the software RAID stack known as the md driver. The kernel portion of
the md multipath driver only handles routing I/O requests to the proper
device and handling failures on the active path. It does not try to find out
if a path that has previously failed might be working again. That's what this
daemon does. Upon startup, the daemon will fork and place itself in the
background. Then it reads the current state of the md raid arrays, saves that
state, and then waits for the kernel to tell it something interesting has
happened. It then wakes up, checks to see if any paths on a multipath device
have failed, and if they have then it starts to poll the failed path once
every 15 seconds until it starts working again. Once it starts working again, the
daemon will then add the path back into the multipath md device it was
originally part of as a new spare path. If one is using the /proc filesystem,
mdstat lists all active md devices with information about them. Mdmpd requires
this to find arrays to monitor paths on and to get notification of interesting
events. See also
Software RAID References
External links Official website
Linux RAID Wiki Krafft, Martin F. "mdadm recipes".
Debian. "Quick HOWTO: Ch26: Linux Software
RAID". linuxhomenetworking.com. "Installation/SoftwareRAID". Ubuntu
Community Documentation. 2012-03-01. Lonezor. "Setting up a RAID volume in
Linux with >2TB disks".