当任何底层 PV 缺失时,系统无法从根 LVM RAID1 分区启动

当任何底层 PV 缺失时,系统无法从根 LVM RAID1 分区启动

我的根分区有 LVM RAID 1(不是 mdadm RAID 1,而是 LVM2 RAID 1)。我想让我的系统在不使用根 LVM 分区的底层 PV 所在的任何 HDD 的情况下启动。

grub.cfg 中的内核启动行(由 GRUB2 自动生成)如下所示:

linux   /kernel-genkernel-x86-3.11.7-hardened-r1-3 root=/dev/mapper/vg-root ro dolvm

当两个磁盘都启用时,它看起来很完美,并且系统是 HDD 容错运行时,也就是说,如果其中一个 HDD 在运行时发生故障,它仍可以正常工作。

但是,如果我尝试在不使用任何 HDD 的情况下启动,则会

Refusing activation of partial LV root. Use --partial to override.

在启动和内核崩溃期间。从一方面来看,这似乎是合理的,因为当其中一个 PV 缺失时,lvm 启动不是正常行为。但是,这对于启动服务器来说是绝对必要的。我能想到的潜在解决方法是在内核启动行中添加一些额外的选项。

您知道当硬盘无法工作时,如何让 LVM RAID 1 适用于根分区吗?

答案1

问题已得到解决LVM v.2.02.1082014年6月。

A退化LV 激活模式已添加到 LVM,这已成为默认激活模式。基本上,如果可能且不会丢失数据,它会激活 LV,即使 LV 不完整(例如没有一条腿的 RAID1 LVM 的情况)。

更详细的描述可以在这里找到:LVM:激活:添加“降级”激活模式

答案2

我之前没有尝试过这个,而且我不确定这是否是最好的解决方案,但它应该可以让你开始行动...我强烈建议你至少浏览底部的来源以检查我在这里得到的内容... :)

基本上,您需要从救援媒体启动,重新扫描 PV、VG 和 LV。

lvm pvscan
lvm vgscan    
lvm lvscan

然后,您应该能够强制激活 VG:

lvm vgchange -ay --partial VolGroup00

完成后,您可以从 VG 中删除丢失的镜像副本:

lvm vgreduce --removemissing --force VolGroup00

一旦完成后,您就可以重新启动进入非镜像配置。

一旦您恢复正常并且修复/更换了坏的驱动器,您将需要将它们重新添加到系统中,然后执行以下操作(假设 /dev/sdb 是发生故障的驱动器,并且您已经使用 fdisk 在其上创建了一个 LVM 分区作为 /dev/sdb1,并且 /dev/sda1 是好的镜像所在的位置):

pvcreate /dev/sdb1
lvm vgextend VolGroup00 /dev/sdb1

然后你需要使用以下命令重新创建每个 LV 镜像:

lvm lvconvert -m 1 /dev/VolGroup00/usr /dev/sda1 /dev/sdb1
lvm lvconvert -m 1 /dev/VolGroup00/var /dev/sda1 /dev/sdb1
lvm lvconvert -m 1 /dev/VolGroup00/root /dev/sda1 /dev/sdb1
...

资料来源:

相关内容