Linux 软件 Raid 10 在 1 个驱动器发生故障后挂起,mdadm 不允许我强制移除故障设备

Linux 软件 Raid 10 在 1 个驱动器发生故障后挂起,mdadm 不允许我强制移除故障设备

我有一个 Linux 软件 raid 10 设置,由 5 个 RAID 1(每个镜像设置两个驱动器)和所有 5 个 RAID 1 对中的一个 RAID 0 组成。为了测试所有驱动器在负载下都不会快速发生故障,我在 RAID 0 中使用了破坏性读/写模式的坏块。

Badblocks 命令:badblocks -b 4096 -c 98304 -p 0 -w -s /dev/md13

其中一个设备发生故障,坏块程序不但没有顺利运行,反而挂起了。如果我运行同步命令,它也会挂起。首先,我假设这不是 RAID 1 设备的标准行为。如果其中一个驱动器发生故障,它仍然应该能够毫无问题地写入由两个驱动器组成的虚拟设备。

所以我继续强制使驱动器失效并尝试将其移除。我可以毫无问题地将驱动器设置为故障(但是 IO 操作仍然挂起)。我无法将设备从 raid 中完全移除,它说它很忙。我的假设是,如果我可以将其完全踢出 raid,IO 将继续,但这只是一种假设,我确实认为我正在处理某种错误。

这到底是怎么回事?我是不是因为 bug 而陷入了无法恢复的境地?

该系统运行的是内核 2.6.18,所以它并不是很新,但我认为鉴于软件 raid 已经存在很长时间了,这样的问题不会发生。

任何见解都将不胜感激。

mdadm --detail /dev/md13

/dev/md13:

    Version : 00.90.03   Creation Time : Thu Jan 21 14:21:57 2010
 Raid Level : raid0
 Array Size : 2441919360 (2328.80 GiB 2500.53 GB)    Raid Devices : 5  

设备总数:5 首选次要设备:13 持久性:超级块是持久的

Update Time : Thu Jan 21 14:21:57 2010
      State : clean  Active Devices : 5 Working Devices : 5 

故障设备 : 0 备用设备 : 0

 Chunk Size : 64K

       UUID : cfabfaee:06cf0cb2:22929c7b:7b037984
     Events : 0.3

Number   Major   Minor   RaidDevice State
   0       9        7        0      active sync   /dev/md7
   1       9        8        1      active sync   /dev/md8
   2       9        9        2      active sync   /dev/md9
   3       9       10        3      active sync   /dev/md10
   4       9       11        4      active sync   /dev/md11

失败的突袭输出:

/dev/md8:版本:00.90.03 创建时间:2010 年 1 月 21 日星期四 14:20:47 突袭级别:raid1 阵列大小:488383936(465.76 GiB 500.11 GB)设备大小:488383936(465.76 GiB 500.11 GB)突袭设备:2
总设备数:2 首选次要:8 持久性:超级块是持久的

Update Time : Mon Jan 25 04:52:25 2010
      State : active, degraded  Active Devices : 1 Working Devices : 1

故障设备:1 备用设备:0

       UUID : 2865aefa:ab6358d8:8f82caf4:1663e806
     Events : 0.11

Number   Major   Minor   RaidDevice State
   0      65       17        0      active sync   /dev/sdr1
   1       8      209        1      faulty   /dev/sdn1

答案1

抱歉,也许我理解得不太清楚,cat /proc/mdstat 可能会有所帮助,但据我所知,您毁掉了 RAID0 上的数据,以及底层 RAID1 阵列上的数据,这是自找麻烦。是的,如果您必须测试 RAID 可靠性,您必须将驱动器、磁盘标记为故障,而不是破坏引用所有底层 RAID1 磁盘的逻辑块,如果我理解得很清楚的话(请告诉我)。

答案2

也许您需要请求内核移除有故障的驱动器。它将释放挂起的 RAID。

您可以使用类似脚本删除它http://bash.cyberciti.biz/diskadmin/rescan-linux-scsi-bus/

相关内容