linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?

前端之家收集整理的这篇文章主要介绍了linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
简短的版本:我有一个失败的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,删除它(我想它是一个可插拔的硬盘驱动器),并插入一个你将声明为热备份的新驱动器.

猜你在找的Linux相关文章