简短的版本:我有一个失败的RAID 5阵列,其中有一堆进程挂起等待I / O操作;我该如何从中恢复?
长版本:昨天我注意到Samba访问非常零星;从Windows访问服务器的共享将在单击一个或两个目录后完全随机锁定资源管理器.我以为是Windows很痛苦而且离开了.今天问题是一样的,所以我做了一点挖掘;我注意到的第一件事是运行ps aux | grep smbd给出了很多像这样的行:
ben 969 0.0 0.2 96088 4128 ? D 18:21 0:00 smbd -F root 1708 0.0 0.2 93468 4748 ? Ss 18:44 0:00 smbd -F root 1711 0.0 0.0 93468 1364 ? S 18:44 0:00 smbd -F ben 3148 0.0 0.2 96052 4160 ? D Mar07 0:00 smbd -F ...
“D”状态中存在很多进程.运行ps aux | grep“D”显示了一些其他进程,包括我的夜间备份脚本,所有这些都需要在某些时候访问我的RAID阵列上安装的卷.经过一些谷歌搜索,我发现可能是由于RAID阵列失败,所以我检查了/ proc / mdstat,它显示了这个:
ben@jack:~$cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdb1[3](F) sdc1[1] sdd1[2] 2930271872 blocks level 5,64k chunk,algorithm 2 [3/2] [_UU] unused devices: <none>
并运行mdadm –detail / dev / md0给出:
ben@jack:~$sudo mdadm --detail /dev/md0 /dev/md0: Version : 00.90 Creation Time : Sat Oct 31 20:53:10 2009 Raid Level : raid5 Array Size : 2930271872 (2794.53 GiB 3000.60 GB) Used Dev Size : 1465135936 (1397.26 GiB 1500.30 GB) Raid Devices : 3 Total Devices : 3 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Mon Mar 7 03:06:35 2011 State : active,degraded Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : f114711a:c770de54:c8276759:b34deaa0 Events : 0.208245 Number Major Minor RaidDevice State 3 8 17 0 faulty spare rebuilding /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1
我相信这说sdb1失败了,所以阵列运行时有三个’up’中的两个驱动器.我发现有些建议要检查/ var / log / messages是否有失败通知,而且确实有足够的建议:
ben@jack:~$grep sdb /var/log/messages ... Mar 7 03:06:35 jack kernel: [4525155.384937] md/raid:md0: read error NOT corrected!! (sector 400644912 on sdb1). Mar 7 03:06:35 jack kernel: [4525155.389686] md/raid:md0: read error not correctable (sector 400644920 on sdb1). Mar 7 03:06:35 jack kernel: [4525155.389686] md/raid:md0: read error not correctable (sector 400644928 on sdb1). Mar 7 03:06:35 jack kernel: [4525155.389688] md/raid:md0: read error not correctable (sector 400644936 on sdb1). Mar 7 03:06:56 jack kernel: [4525176.231603] sd 0:0:1:0: [sdb] Unhandled sense code Mar 7 03:06:56 jack kernel: [4525176.231605] sd 0:0:1:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Mar 7 03:06:56 jack kernel: [4525176.231608] sd 0:0:1:0: [sdb] Sense Key : Medium Error [current] [descriptor] Mar 7 03:06:56 jack kernel: [4525176.231623] sd 0:0:1:0: [sdb] Add. Sense: Unrecovered read error - auto reallocate Failed Mar 7 03:06:56 jack kernel: [4525176.231627] sd 0:0:1:0: [sdb] CDB: Read(10): 28 00 17 e1 5f bf 00 01 00 00
对我来说很明显设备sdb已经失败了,我需要停止阵列,关闭,替换它,重新启动,然后修复阵列,重新启动它并挂载文件系统.我无法热插拔替换驱动器,也不希望让阵列在降级状态下运行.我相信我应该在停止数组之前卸载文件系统,但这是失败的,这就是我现在被困住的地方:
ben@jack:~$sudo umount /storage umount: /storage: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
它真的很忙; I / O上有大约30或40个进程在等待.
我该怎么办?我应该杀死所有这些进程并再试一次吗?当它们“不间断”时,这是明智之举吗?如果我尝试重启会怎么样?
请让我知道你认为我应该做些什么.请询问您是否需要任何额外信息来诊断问题或提供帮助!
解决方法
我认为你不需要停止阵列.简单地失败/ dev / sdb,删除它(我想它是一个可插拔的硬盘驱动器),并插入一个你将声明为热备份的新驱动器.