恢复 LVM Raid-5 阵列

恢复 LVM Raid-5 阵列

我有一个故障的 raid-5 阵列,似乎无法恢复。基本上,故事是这样的,我将这些数据放在 raid 5 中,而我使用的是现在具有内置 raid 的 LVM。我注意到其中一个磁盘坏了,所以我换了一个新的磁盘,并发出命令将pvmove范围从故障磁盘移动到新磁盘。在迁移期间的某个时间,旧磁盘发生故障并完全停止响应(不确定为什么会导致这种情况)。所以我重新启动了它,现在阵列根本无法启动。一切看起来都很好,例如 3/4 个磁盘正在工作,我很确定即使发生故障的磁盘也暂时恢复了(尽管不相信它)。但是当我发出命令时,lvchange -a y vg-array/array-data我在 dmesg 中收到以下故障信息

not clean -- starting background reconstruction
device dm-12 operational as raid disk 1
device dm-14 operational as raid disk 2
device dm-16 operational as raid disk 3
cannot start dirty degraded array.

我很确定有方法可以使用 mdadm 强制启动,但我没有看到任何关于 lvm 的方法。但由于我有三个磁盘,所以我的所有数据都是那里所以它一定是可以恢复的。有人知道怎么做吗?

答案1

解决方法是添加内核启动参数

md-mod.start_dirty_degraded=1

然后重新启动。我仍然必须手动激活卷,但添加该参数后,脏降级阵列现在是一个警告,而不是错误/etc/default/grubupdate-grub

这记录在https://www.kernel.org/doc/html/latest/admin-guide/md.html#boot-time-assembly-of-degraded-dirty-arrays

答案2

添加新设备后,在其上创建 PV,使用 将 PV 添加到卷组vgextend,并使用 删除丢失的 PV vgreduce --remove --force,我可以使用以下命令在 LVM 上修复我的 raid6 阵列

lvconvert --repair <vgname>/<lvname>

我们可以通过 查看修复的进度lvs,它会显示在Cpy%Sync中。

相关内容