我一直在尝试在我的新 LVM2 卷上启用完整性功能。我使用这样的命令来创建 lv:
sudo lvcreate --type raid1 --mirrors 1 --size 20g --raidintegrity y --name RAID MY_VG
lv 似乎已成功创建,我可以看到它在Cpy%Sync
的输出中自行构建lvs
。一切似乎都很顺利,最终达到了 100%。
我可以创建一个文件系统(一直在使用 xfs 和 btrfs),我可以安装它,写入它,并且该卷似乎工作完美。我更新了 fstab,它可以通过一个简单的sudo mount -a
示例顺利安装和卸载。
然后我重新启动,逻辑卷永远不会自动激活
因此 fstab 无法找到要挂载的文件系统。我可以用一个简单的sudo vgchange -ay MY_VG
然后一个手动修复这个问题sudo mount -a
,但似乎出了问题,因为......
这只是启用了完整性的逻辑卷的问题。
我创建了第二个没有完整性的逻辑卷(这是唯一的区别):
sudo lvcreate --type raid1 --mirrors 1 --size 20g --raidintegrity n --name RAID_TEST MY_VG
重新启动后,RAID_TEST 被激活并可以立即安装,但我原来具有完整性的逻辑卷(仅命名为 RAID)在启动时仍然处于停用状态。因为这个测试 LV 已激活,所以我知道 PV 和 VG 都没有问题。问题必须出在 LV 配置的完整性上,但我找不到任何文档表明我做错了什么。
我已经在两台不同的服务器上用各种不同的组合重现了这个,结果总是相同的,并且只有启用了完整性的卷才会以这种方式运行并且从不自动激活。任何 lvm 单元的系统日志、journalctl 或 systemctl 状态中均出现零明显错误。
到底是怎么回事?
当我检查journalctl时,我可以看到设备或lvm的零错误。唯一的输出看起来一切正常(并且对于我的系统中的每个逻辑卷和卷组,其日志消息完全相同,无论其是否启用了完整性卷)。
此时我想知道完整性是否实际上是 LVM2 的即用型功能。我的经历非常糟糕,文档非常糟糕。的手册页lvchange 关于完整性特征与冲突lvchange 的原始源代码(我最终不得不去阅读翻转源)。源代码也矛盾有关 lvm 完整性的 RedHat 文档。但这些都不能解释为什么会发生这种情况。
有人可以帮忙吗?我们将非常感激。在这一点上,如果我想要完整性保护,我就需要放弃 LVM。
答案1
自动 LVM 激活发生在引导过程的早期,通常是当系统仍在 initramfs 上运行时。如果 initramfs 中不包含完整性功能所需的模块,则可以解释为什么自动激活失败,但稍后手动激活(当使用正常根文件系统时)会成功。
当系统刚刚启动并且无法激活 VG 时,运行lsmod
并记下列表中最顶层模块的名称。然后手动激活VG,lsmod
再次运行,模块列表顶部应该会添加一些模块。这些是系统需要加载的用于激活启用完整性的 VG 的模块,但在 initramfs 中找不到。然后尽一切必要告诉您的 initramfs 生成器始终包含这些模块,并重建您的 initramfs。