我有一个 Linux 软件 RAID 10 设置,包括 5 个 RAID 1(每个镜像设置两个驱动器)和一个跨所有 5 个 RAID 1 对的 RAID 0。为了测试没有一个驱动器在负载下会很快发生故障,我在 RAID 0 上使用了具有破坏性读/写模式的坏块。
坏块命令:坏块 -b 4096 -c 98304 -p 0 -w -s /dev/md13
其中一个设备出现故障,而 badblocks 程序并没有愉快地继续运行,而是挂起。如果我运行同步命令,这也会挂起。首先,我假设这不是 RAID 1 设备的标准行为。如果其中一个驱动器发生故障,它应该仍然能够毫无问题地写入两个驱动器组成的虚拟设备。
所以我继续强制驱动器失败并尝试将其移除。我可以毫无问题地将驱动器设置为故障(但是 IO 操作仍然挂起)。我无法从它说它很忙的 raid 中完全删除该设备。我的假设是,如果我可以将它完全踢出团队,IO 将继续进行,但这只是一个假设,我确实认为我正在处理某种错误。
这里到底发生了什么?由于错误,我是否处于无法恢复的状态?
该系统正在运行内核 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 RAID 级别:raid1 阵列大小:488383936 (465.76 GiB 500.11 GB) 设备大小:488383936 (465.76 GiB 500.11 GB) Raid 设备: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