Linear RAID failure. How to recreate?
Hey all,
I'm just wondering if there is any way to recreate a linear array. For
example in a simple two disk linear RAID array if one disk fail if I replace the old drive with a working drive can I stop the linear RAID array, format the simple device nodes and recreate the array? I tried to do something like this but failed:
bash# mdadm --manage /dev/md1 -f /dev/sda2
mdadm: set /dev/sda2 faulty in /dev/md1
bash# mdadm --manage /dev/md1 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md1
bash# cat /proc/mdstat
Personalities : [linear] [raid1]
md1 : active linear sdb2[1] sda2[0]
957216768 blocks 64k rounding
md0 : active raid1 sdb1[1]
9775424 blocks [2/1] [_U]
unused devices: <none>
bash# mdadm --manage /dev/md1 -r /dev/sdb2
mdadm: hot remove failed for /dev/sdb2: Device or resource busy bash# mdadm --manage /dev/md1 -r /dev/sda2
mdadm: hot remove failed for /dev/sda2: Device or resource busy bash# mdadm --manage /dev/md1 -fr /dev/sda2
mdadm: hot remove failed for /dev/sda2: Device or resource busy bash# mdadm --manage --stop /dev/md1
mdadm: fail to stop array /dev/md1: Device or resource busy bash# fuser -m /dev/md1
bash# fuser -m /dev/sda2
bash# fuser -m /dev/sdb2
bash# mdadm --manage --stop /dev/md1
mdadm: fail to stop array /dev/md1: Device or resource busy bash-2.05b# lsof | grep md1
bash-2.05b#
Would appreciate some input.
Thanks!
-JD
PS My system is RHEL-4 running on the 2.6.22 kernel.
Signature · 2 lines
View this message in context: http://old.nabble.com/Linear-RAID-failure.--How-to-recreate--tp27301741p27301741.html Sent from the linux-raid mailing list archive at Nabble.com.
Quoted 8 lines · On Sun, 24 Jan 2010 19:25:23 -0800 (PST) anoneironaut84…
Hey all,
I'm just wondering if there is any way to recreate a linear array. For
example in a simple two disk linear RAID array if one disk fail if I replace the old drive with a working drive can I stop the linear RAID array, format the simple device nodes and recreate the array? I tried to do something like this but failed:
Yes, you could do that. But mode of the data would be missing, so I don't really see much point.
Quoted 5 lines
bash# mdadm --manage
/dev/md1-f/dev/sda2
mdadm: set/dev/sda2faulty in/dev/md1
bash# mdadm --manage/dev/md1-f/dev/sdb2
mdadm: set/dev/sdb2faulty in/dev/md1
It doesn't really make sense to set a device in a linear array to faulty as there is no alternative strategy that can be used to read or write. So as you notice, the 'faulty' status is not recorded:
Quoted 8 lines
bash# cat
/proc/mdstat
Personalities : [linear] [raid1]
md1 : active linear sdb2[1] sda2[0]957216768 blocks 64k roundingmd0 : active raid1 sdb1[1]
9775424 blocks [2/1] [_U]
Quoted 7 lines
unused devices: <none>
bash# mdadm --manage/dev/md1-r/dev/sdb2
mdadm: hot remove failed for/dev/sdb2: Device or resource busy bash# mdadm --manage/dev/md1-r/dev/sda2
mdadm: hot remove failed for/dev/sda2: Device or resource busy bash# mdadm --manage/dev/md1-fr/dev/sda2
mdadm: hot remove failed for/dev/sda2: Device or resource busy
Similarly you cannot remove individual devices from a linear array. You can only sort the whole array, then maybe restart it.
Quoted 2 lines
bash# mdadm --manage --stop
/dev/md1
mdadm: fail to stop array/dev/md1: Device or resource busy
Presumably the device is mounted?
Quoted 3 lines
bash# fuser -m
/dev/md1
bash# fuser -m/dev/sda2
bash# fuser -m/dev/sdb2
I guess no process is using the mounted filesystem?
What does
cat /proc/mounts
show?
Quoted 5 lines
bash# mdadm --manage --stop
/dev/md1
mdadm: fail to stop array/dev/md1: Device or resource busy bash-2.05b# lsof | grep md1
bash-2.05b#
Quoted 7 lines
Would appreciate some input.
Thanks!
-JD
PS My system is RHEL-4 running on the 2.6.22 kernel.
NeilBrown