Possible mdadm RAID states?
7,151
Based on the source code, ("clean" or "active") and ("degraded" or "") and ("" or "resyncing" or "recovering") and ("" or "Not Started").
if (array.raid_disks)
printf(" State : %s%s%s%s\n",
(array.state&(1<<MD_SB_CLEAN))?"clean":"active",
array.active_disks < array.raid_disks? ", degraded":"",
(!e || e->percent < 0) ? "" :
(e->resync) ? ", resyncing": ", recovering",
larray_size ? "": ", Not Started");
You didn't ask about disk.state
, but here is the relevant source code:
if (disk.state & (1<<MD_DISK_FAULTY)) {
printf(" faulty");
if (disk.raid_disk < array.raid_disks &&
disk.raid_disk >= 0)
failed++;
}
if (disk.state & (1<<MD_DISK_ACTIVE)) printf(" active");
if (disk.state & (1<<MD_DISK_SYNC)) printf(" sync");
if (disk.state & (1<<MD_DISK_REMOVED)) printf(" removed");
if (disk.state & (1<<MD_DISK_WRITEMOSTLY)) printf(" writemostly");
if ((disk.state &
((1<<MD_DISK_ACTIVE)|(1<<MD_DISK_SYNC)|(1<<MD_DISK_REMOVED)))
== 0) {
printf(" spare");
if (is_26) {
if (disk.raid_disk < array.raid_disks && disk.raid_disk >= 0)
printf(" rebuilding");
} else if (is_rebuilding && failed) {
/* Taking a bit of a risk here, we remove the
* device from the array, and then put it back.
* If this fails, we are rebuilding
*/
int err = ioctl(fd, HOT_REMOVE_DISK, makedev(disk.major, disk.minor));
if (err == 0) ioctl(fd, HOT_ADD_DISK, makedev(disk.major, disk.minor));
if (err && errno == EBUSY)
printf(" rebuilding");
Related videos on Youtube
Author by
j-g-faustus
Updated on September 17, 2022Comments
-
j-g-faustus over 1 year
I'm writing a monitoring plugin for a home server RAID, mdadm on Ubuntu 10.4.
Using
sudo mdadm --detail /dev/md0
I get output like this:/dev/md0: Version : 00.90 Creation Time : Thu Dec 17 14:31:49 2009 Raid Level : raid5 Array Size : 4395407808 (4191.79 GiB 4500.90 GB) Used Dev Size : 1465135936 (1397.26 GiB 1500.30 GB) Raid Devices : 4 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Sun Jul 11 06:57:28 2010 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 ...
I'm looking for the possible values of "state" but can't seem to find it anywhere, neither
man
nor the online documentation I have found seem to have a list.Does anyone know where to find a list of possible states?
-
HiFi almost 14 yearsNice find. I would of never thought looking there
-
picrap over 11 yearsOddly enough, my currently installed version of mdadm showed me a status as "clean, FAILED", where the array was actually dead. This is odd, because I couldn't find it in the source code.
-
Eric over 9 yearsI came here based on search of same thing. My state is "Dirty" but not seeing it in the accepted answer. It's an older Linux kernel though too. Kernel v2.6.10 and mdadm - v1.8.0 - 01 November 2004.