Linux RAID控制器(LVM / MDADM)

今天我在一个非常糟糕的地方。 生产RAIDarrays下降。 控制器失败。 卸载文件系统并终止所有进程后,我更改了硬件控制器。 重新启动arrays的磁盘已经回来,我想尝试重新组装数组。

但是,我无法停止现有的数组。

我有 :

cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdi1[5](F) sdh1[6](F) sdg1[7](F) sdf1[8](F) sde1[9](F) sdd1[10](F) 976751616 blocks level 5, 64k chunk, algorithm 2 [5/0] [_____] md2 : active raid5 sdo1[5](F) sdm1[6](F) sdl1[7](F) sdk1[8](F) sdj1[9](F) 3907039744 blocks level 5, 64k chunk, algorithm 2 [5/0] [_____] unused devices: <none> 

磁盘现在是/ dev / sdn sds sdt sdu sdv和sdw sdx sdy sdz sdaa和sdab

试图阻止数组给出:

 [root@tango ~]# mdadm --stop /dev/md1 mdadm: fail to stop array /dev/md1: Device or resource busy Perhaps a running process, mounted filesystem or active volume group? 

这是因为它认为卷组仍处于活动状态。

lvs给出:

  /dev/md1: read failed after 0 of 4096 at 0: Input/output error /dev/md2: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 0: Input/output error LV VG Attr LSize Origin Snap% Move Log Copy% Convert LogVol00 VolGroup00 -wi-ao 111.00G LogVol01 VolGroup00 -wi-ao 17.50G u01 raid1_vol1 -wi-ao 128.00G u04 raid1_vol2 -wi-ao 128.00G u05 raid5_vol3 -wi-ao 521.00G u02 raid5_vol4 -wi-ao 521.00G u07 raid5_vol5 -wi-ao 248.00G 

试图将lv设置为不活动将失败:

 [root@tango ~]# lvchange -an /dev/raid5_vol1 /dev/md1: read failed after 0 of 4096 at 0: Input/output error /dev/md2: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 0: Input/output error /dev/md1: read failed after 0 of 4096 at 0: Input/output error /dev/md1: read failed after 0 of 4096 at 1000193589248: Input/output error /dev/md1: read failed after 0 of 4096 at 1000193646592: Input/output error /dev/md1: read failed after 0 of 4096 at 0: Input/output error /dev/md1: read failed after 0 of 4096 at 4096: Input/output error /dev/md1: read failed after 0 of 4096 at 0: Input/output error /dev/md2: read failed after 0 of 4096 at 0: Input/output error /dev/md2: read failed after 0 of 4096 at 4000808632320: Input/output error /dev/md2: read failed after 0 of 4096 at 4000808689664: Input/output error /dev/md2: read failed after 0 of 4096 at 0: Input/output error /dev/md2: read failed after 0 of 4096 at 4096: Input/output error /dev/md2: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 3974992166912: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 3974992224256: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 4096: Input/output error /dev/raid5_vol2/u03: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 991063638016: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 991063695360: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 0: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 4096: Input/output error /dev/raid5_vol1/u06: read failed after 0 of 4096 at 0: Input/output error Volume group "raid5_vol1" not found Skipping volume group raid5_vol1 

我也试过:

 [root@tango ~]# mdadm --assemble --force /dev/md1 /dev/sdn /dev/sds /dev/sdt /dev/sdu /dev/sdv /dev/sdw mdadm: device /dev/md1 already active - cannot assemble it 

所以我没有想法! 谁能帮忙?

凯蒂


 [root@tango ~]# cat /etc/mdadm.conf DEVICE partitions ARRAY /dev/md2 level=raid5 num-devices=5 metadata=0.90 spares=1 UUID=dce41d37:804dea59:e5727503:733c194b ARRAY /dev/md1 level=raid5 num-devices=5 metadata=0.90 spares=2 UUID=9e8a7463:ea5942af:abf7ab25:de5bb614 

我终于解决了这个,24小时的痛苦,所以我想我会分享:

这里的信息,如果你松动磁盘控制器,然后所有的磁盘进入失败的状态。 closuresarrays并在重新启动时更换控制器时,所有磁盘都有不同的标签。 注意我没有说重启。 我重新启动RAIDarrays,因为系统无法重新启动。

第1步 – 告诉mdadm忘记这样的分离磁盘:

$> mdadm / dev / md1 – 删除分离

如果您尝试使用mdadm / dev / md1 –remove / dev / sdX,则会失败,因此您必须使用“分离”。 如果这不会分离RAID组中的所有磁盘,则可能需要多次运行它。 我做了。 在第三个debugging猫/ proc / mdstat显示他们都被删除。

步骤2 – 如果尝试closuresarrays,并且在控制器出现故障时您有任何活动的逻辑卷或用户,则您将无法:

$> mdadm –stop / dev / md1

但是,如果这个工作忽略第3步。

第3步 – 使用dmsetup删除释放arrays

所以..你需要运行dmsetup remove -f -j 1234 -m 1命令。 这些数字来自运行dmsetup信息,并寻找失败的卷。 在我的情况下,他们很容易识别,因为破碎的人有这样的零开放标志。 在现场系统上运行这个是scarery,所以确保你得到这些数字right.This命令将有助于:

$> dmsetup info .. .. ..名称:raid5_vol2-u03状态:ACTIVE预读:1024表存在:LIVE开放计数:0事件编号:0主要,次要:253,6目标数量:1 UUID:LVM- fPJWYWhBhTO7tzHMBbc01qR20Nazc8N93S0bMPqstrg0sFFVtipaWYi7NYzas12d

打开计数的盒子上的音量有1。 破碎的开放计数为0。

如果你确定你有正确的音量,那么你可以发出命令。 就我而言,这两个数字分别是253和6。

$> dmsetup remove -f -j 253 -m 6等待30秒$> mdadm –stop / dev / md1

第4步 – 假设你已经能够停止arrays,你需要尝试和重新组装。

要做到这一点,你需要知道新的磁盘标签是什么,如果你知道你的磁盘在崩溃之前的序列号,这是很好的做法,你可以运行

$> smartctl -i / dev / sdN来找出哪个标签与哪个磁盘相匹配。 或者,您可以再次closuresarrays并进行物理检查。

一旦你知道了:

$> mdadm –assemble / dev / md1 / dev / sdn1 / dev / sds1 / dev / sdt1 …等

如果这个工程,你会得到一个raid开始消息,如果不是那么嗯…林不知道!

稍等一会 …

$> cat / proc / mdstat

该arrays应该是同步/重build。 我的小个子花了几分钟,大个子花了几个小时。 如果这样的话。

第5步 – 在这一点上的卷组,逻辑卷等都将在一个状态来解决他们我跑了:

$> pvscan $> vgscan $> lvscan

幸运的是,这确定了我的arrays和有线的东西,但离开了音量组为非活动。

所以lvs显示:

不活跃的raid5_vol1 …

第6步 – 使卷组重新激活:

vgchange -ay raid5_vol1

第7步 – 如果一切顺利,这将不能再次mountable,你可以感谢我在这个职位的帮助。

祝你好运!

凯蒂