我的 RAID1 阵列工作正常,/dev/md128
但在重新启动后似乎完全消失了,mdadm
报告两个磁盘都缺少超级块。我的问题是如何解决这个问题?
背景:运行 CentOS 7 的系统。有 2xSSD ( sda
, sdb
) 和 2xHDD ( sdc
, sdd
)。应该有一个 RAID1 阵列,/dev/md128
但没有显示。在重新启动以进行内核更新之前,它一直运行良好。sdc
sdd
未列出的数组/etc/mdadm.conf
:
# cat /etc/mdadm.conf
# mdadm.conf written out by anaconda
MAILADDR root
AUTO +imsm +1.x -all
ARRAY /dev/md/boot level=raid1 num-devices=2 UUID=a2f6b6fe:31c80062:67e7a858:a21502a9
ARRAY /dev/md/boot_efi level=raid1 num-devices=2 UUID=ffbc39c9:ff982933:b77aece5:b44bec5f
ARRAY /dev/md/root level=raid1 num-devices=2 UUID=b31f6af6:78305117:7ca807e7:7691d745
ARRAY /dev/md/swap level=raid0 num-devices=2 UUID=f31db9e8:e136e642:1ae8f2d0:7178c956
尝试手动组装阵列:
# mdadm --verbose --assemble /dev/md128 /dev/sdc1 /dev/sdd1
mdadm: looking for devices for /dev/md128
mdadm: no recogniseable superblock on /dev/sdc1
mdadm: /dev/sdc1 has no superblock - assembly aborted
# mdadm -E /dev/sdc1
mdadm: No md superblock detected on /dev/sdc1.
# mdadm -E /dev/sdd1
mdadm: No md superblock detected on /dev/sdd1.
检查的其他事项:smartctl
没有显示错误(两个驱动器都使用了大约 3 个月大并且很少使用),mdadm -E /dev/sdc
没有在设备级别显示任何超级块。恢复到旧内核,没有任何变化。我很高兴添加其他输出,只是尽量不要让问题变得不必要地冗长。
任何想法表示赞赏!与此同时,我计划将dd
两个驱动器都放在手头上。
我解决了这个问题,为了其他人的利益,这对我有用。我通过在阵列外部安装一个 RAID1 磁盘来做到这一点。小心,在开始之前复制磁盘。在我的例子中,RAID1 包含一个 LVM 物理卷。
/etc/mdadm.conf
所以我无法轻易获得这些信息。所以我只是寻找文件系统签名:签名在LVM 规范中进行了描述,该文档告诉我们它存储在第二个扇区中。我的扇区是 512 字节,所以我从上面返回的数字中减去 512,并创建一个只读循环设备:
lsblk
和之类的命令现在应该在和lvdisplay
中显示卷。检查设备是否存在,如果不存在则激活卷,.vg00
vg00new
/dev/vg00
lvchange -a y vg00/<volname>
cp
,或者,根据您的数据,您可能希望
dd
对每个逻辑卷使用,请注意,这
conv=sparse
对于精简配置的 LV 很重要,因为它避免了完全分配空间。vg00new
,/dev/md128
检查lsblk
。将 VG 重命名回原来的名称:最后,在您 100% 确定所有内容都已复制并正常工作并完成
fsck
您需要做的任何事情后,重新添加/dev/sdd1
到 RAID1 阵列中。归功于@frostschutz 解决方案的精髓,可在https://unix.stackexchange.com/a/98803/384096找到
我仍然不知道问题是如何发生的,这有点令人担忧,但至少这让它再次运行。