我有 4 个设备上的 raid 5:sda10 sdh10 sdi10 sdf10。所有这些设备都可用,并且 smart 未显示错误(sdf 有,但我用新磁盘替换了它,重新同步,但随后显示当前情况)。
在 /proc/mdstat 中,该数组如下所示:
md19 : inactive sdh10[2](S) sdi10[4](S) sdf10[5](S)
1171482624 blocks super 1.2
如您所见,sda10 丢失了。但是,根据 --query,应该没问题:
=# mdadm --query --examine /dev/sda10
/dev/sda10:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 9216999b:8dab944b:564530eb:4a61e078
Name : blob:19 (local to host blob)
Creation Time : Sat Jan 21 21:05:44 2017
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 780988416 (372.40 GiB 399.87 GB)
Array Size : 1171482624 (1117.21 GiB 1199.60 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : clean
Device UUID : 8fdf8a46:4a84989c:e20fb280:c38053ea
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Mar 15 01:09:45 2019
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : b72fe223 - correct
Events : 1848
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
在另一台设备上,阵列状态看起来有所不同:
=# mdadm --query --examine /dev/sdh10
/dev/sdh10:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 9216999b:8dab944b:564530eb:4a61e078
Name : blob:19 (local to host blob)
Creation Time : Sat Jan 21 21:05:44 2017
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 780988416 (372.40 GiB 399.87 GB)
Array Size : 1171482624 (1117.21 GiB 1199.60 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : clean
Device UUID : a6b44214:e50eb531:dc76d0f6:867db6ec
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Mar 15 01:14:45 2019
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 9284b6cb - correct
Events : 5956
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : ..AA ('A' == active, '.' == missing, 'R' == replacing)
我尝试停止阵列,并使用--scan进行安放,或者手动提供设备名称,但无济于事。
我 100% 确定 sda10、sdh10 和 sdi10 上的数据没有问题。sdf10 是新磁盘,因此可以重新同步。
有什么方法可以修复这次袭击吗?
答案1
奇怪的是,您的 --examine 输出显示该阵列由 4 个设备组成,但 /proc/mdstat 显示成员设备 2、4 和 5,因此现在至少有 6 个设备(索引从 0 开始)。所以出了点问题。最好停止当前阵列并重新创建它。
您应该能够使用以下命令停止并重新组装 MD 设备:
mdadm --stop /dev/md19
mdadm --create --metadata=1.2 --level=4 -n 4 --chunk=512K --layout=left-symmetric /dev/md19 /dev/sda10 missing /dev/sdh10 /dev/sdi10
在其他设备上使用 --examine 检查“活动设备”编号。系统之前的错误组装可能覆盖了此编号,如果您能确保设备的正确顺序,这将很有帮助。
以上假设 /dev/sdh10 为“活动设备 2”,/dev/sdi10 为“活动设备 3”,并且旧设备 1 已发生故障。不要指定 /dev/sdf10 而不是 ,missing
这样一开始就不会发生重新同步。
尝试在生成的 md 设备上运行 fsck。如果出现大量错误,则中止 fsck,停止 md 设备,然后尝试其他命令。
一旦您拥有正常工作的阵列,您就可以添加替换驱动器:
mdadm --add /dev/md19 /dev/sdf10
以上所有内容均来自个人经验,来自移除错误驱动器的情况(不是故障驱动器,而是剩余的工作驱动器之一)。使用上述显式汇编,我恢复了阵列和文件系统。它完全可能不适合您,可能是因为阵列已损坏。总而言之,请自行承担风险。