Mdadm 似乎完全忘记了某个设备,并缩小了我的阵列

Mdadm 似乎完全忘记了某个设备,并缩小了我的阵列

经过一番调查,我发现 mdadm 似乎完全忘记了我添加到阵列中的新设备。我最近向阵列中添加了一个新设备,一切正常,但现在我重新启动了(我认为自从进行此更改后我还没有重新启动过),并且出现了各种错误,我相当确定这是由这个原因造成的。

所以我的问题是:将该设备重新添加到阵列中是否安全?我真的我不想在这里丢失任何数据!这就是我思考我应该这样做,但我希望首先得到更有经验的人的确认:)请记住,我已经做过一次了,并且对文件系统进行了 fsck 和扩展,然后向其中写入了更多数据。

sudo umount /dev/md0
sudo mdadm --stop /dev/md0
sudo mdadm --add /dev/md0 /dev/sdd1
sudo mdadm --grow /dev/md0 --raid-devices=4

我已经采取了一些额外的信息和步骤:我重新启动后,收到一条消息,内容是“无法读取超级块”,即 /dev/md0(我的 RAID 阵列)。我立即怀疑是 mdadm 的问题,因为我最近一直在摆弄它,并cat /proc/mdstat报告了以下情况:

...
md0 : inactive sdb1[0](S) sdc1[1](S)[/code]

这是错误的;我刚刚也将 /dev/sdd1 添加到阵列中。sudo mount -a报告bad superblock on /dev/md0。我现在不记得我使用的下一个命令,但其他一些报告说我试图写入文件系统的末尾,这是有道理的,因为它上面的数据比前两个设备所能容纳的要多。

sudo fdisk -l报告新设备和分区正常运作。cat /etc/mdadm/mdadm.conf显示以下内容:

DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid5 num-devices=2 UUID=*snip*
spares=1

这清楚地表明它完全忘记了我添加的新设备。执行上述命令后,我应该“保存”配置吗?我假设它们是持久的更改;我看不出它们在重新启动时丢失有什么用处。

编辑说明:我意识到“num-devices=2”包含“spares=1”,这意味着 mdadm 并未将磁盘从“使用中”更改为“备用”,它只是完全忘记了这一点。我将更新标题以说明这一点。

答案1

以下行:

DEVICE /dev/sdb1 /dev/sdc1

意味着 mdadm 将仅检查这 2 个设备是否用作 RAID 阵列的一部分。

您需要添加/dev/sdd1该行,或将其替换为:

DEVICE partitions

这是默认设置,将使其扫描全部mdadm 超级块的分区。

相关内容