CentOS 重启后 LVM 卷处于非活动状态

Vil*_*lx- 10 rhel centos lvm

我已经将 Linux 服务器从 CentOS 6 重新安装到 7。该服务器有 3 个驱动器 - 一个系统 SSD 驱动器(它承载除所有内容/home)和两个 4TB HDD 驱动器承载/home. 一切都使用 LVM。两个 4TB 驱动器被镜像(使用 LVM 本身中的 raid 选项),并且它们完全被 /home 分区填满。

问题是,虽然 4TB 磁盘识别正常,并且 LVM 看到该卷没有问题,但它不会自动激活它。其他一切都是自动激活的。我可以手动激活它,它可以工作。

我在 /home 中有一个旧系统驱动器的图像。这也包含 LVM 卷。如果我使用kpartx,安装它,LVM 会选择并激活它们。但是我看不出这些卷和非活动卷之间有什么区别。

根文件系统也是 LVM,它可以很好地激活。

但是我看到了一个奇怪的事情:执行lvchange -aay告诉我我需要指定要激活的驱动器。它也不会自动执行。如果我指定lvchange -ay lv_home- 那行得通。

我找不到任何可能导致这种行为的原因。

补充:我注意到旧系统(使用 init)vgchange -aay --sysinit在其启动脚本中有。新的使用 systemd,我vgchange在它的脚本中没有看到调用。但我也不知道把它放在哪里。

补充2:开始弄清楚systemd。我找到了脚本所在的位置并开始了解它们的调用方式。还发现我可以用systemctl -al. 这表明在启动后lvmetad它会调用pvscan每个已知的 udev 块设备。然而,此时只有一个注册的 udev 块设备,它是可识别的 lvm 卷之一。硬盘驱动器也在那里,但在不同的路径和更长的名称下。可识别的块设备类似于8:3,而硬盘驱动器则类似于/device/something/. 我不再在服务器上,所以我不能准确地写它(稍后会解决这个问题)。

我认为这与 udev 和设备检测/映射有关。晚上我会继续,然后会学习udev。

如果一切都失败了,我找到了调用pvscan并检查我可以修改它以始终扫描所有设备的脚本。这解决了问题,但它看起来像一个相当丑陋的黑客,所以我会尝试找出真正的根本原因。

添加 3:好的,我仍然不知道为什么会发生这种情况,但至少我已经做出了一个相当不错的解决方法。我制作了另一个 systemd 服务,它pvscan在启动lvmetad. 对特定设备的另一个调用仍然存在,我认为它实际上udev是调用它的(这是我发现引用它的唯一地方)。为什么它不为其他硬盘调用它 - 我不知道。

Vil*_*lx- 8

我做到了!我做到了!我正确地修复了它(我认为)。

这是故事:

一段时间后,服务器出现故障,不得不报废。我保留了磁盘并获得了新的一切。然后我再次在 SSD 上重新安装了 CentOS,然后我连接了 HDD。LVM 运行良好,磁盘被识别,配置被保留。但同样的问题再次出现 - 重新启动后,该卷处于非活动状态。

然而这一次我偶然注意到了一些东西——引导加载程序将以下参数传递给内核:

crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet

嗯,等一下,那些看起来很熟悉

快速谷歌查询,我们在那里

rd.lvm.lv=

仅激活具有给定名称的逻辑卷。rd.lvm.lv 可以在内核命令行上多次指定。

现在好了。这说明了!

所以,决议是(从几个谷歌查询中收集的):

  1. 修改/etc/defaults/grub以在参数中包含附加体积:crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rd.lvm.lv=vg_home/lv_home rhgb quiet
  2. 重新配置 grub grub2-mkconfig -o /boot/grub2/grub.cfg
  3. 重新配置 initramfs mkinitrd -f -v /boot/initramfs-3.10.0-327.18.2.el7.x86_64.img 3.10.0-327.18.2.el7.x86_64注意:您的值可能会有所不同。使用uname -r来获取内核版本。或者只是继续阅读mkinitrd。(坦率地说,我不知道为什么需要这一步,但显然是 - 我试过没有它,但没有用)
  4. 最后,重新安装 grub: grub2-install /dev/sda
  5. 自然而然地重新启动。

达达!卷在重新启动时处于活动状态。添加它fstab并享受!:)