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

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

我已经从 CentOS 6 重新安装到了 7 的 Linux 服务器。该服务器有 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在调用它(这是我找到引用它的唯一地方)。为什么它不调用其他硬盘驱动器 - 我不知道。

答案1

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

故事是这样的:

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

然而这次我偶然注意到了一些其他的事情 - 引导加载程序将以下参数传递给内核:

崩溃内核=自动rd.lvm.lv=centos/root rd.lvm.lv=centos/交换rhgb 安静

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

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

rd.lvm.lv=

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

现在好了。这就解释了!

因此,解决方案是(从更多谷歌查询中收集的):

  1. 修改/etc/defaults/grub以在参数中包含附加卷:crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swaprd.lvm.lv=vg_home/lv_homerhgb quiet
  2. 重新配置 grubgrub2-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并享受吧! :)

答案2

我也有这个问题。就我而言,它是 iscsi、多路径和 lvm 以及会话创建顺序等的组合。我通过添加/sbin/vgchange -a y/etc/rc.local.

答案3

次要更新(适用于 EFI 上的 RHEL 7)(非 BIOS)机器):

我已经使用以下步骤取得了成功:

  1. 修改/etc/defaults/grub以在参数中包含附加体积:(rd.lvm.lv=rhel/home除了rhel/rootrhel/swap
  2. 重新配置 grub

    grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    

    (笔记:另一条路!)

  3. 重新配置 initramfs

    mkinitrd -f -v /boot/initramfs-$(uname -r).img $(uname -r)
    
  4. 跳过重新安装 grub:(grub2-install /dev/sda因为我有一个空目录/usr/lib/grub/
  5. 自然重启。

答案4

所以我尝试了 /etc/default/grub 中的 rd.lvm.lv= 设置,但这不起作用

我需要 ssd_vg 卷组上的两个逻辑卷在启动时处于活动状态。以及 kubuntu-vg 上的逻辑卷 home_lv 处于活动状态

所做的工作是编辑 /etc/lvm/lvm.conf 在卷列表部分中将其放入 volume_list = [ "ssd_vg", "kubuntu-vg/home_lv" ]

重启后的结果

$ sudo lvscan inactive 原始 '/dev/kubuntu-vg/root' [50.00 GiB] 继承

inactive          '/dev/kubuntu-vg/swap_1' [7.88 GiB] inherit

ACTIVE            '/dev/kubuntu-vg/home_lv' [1000.00 GiB] inherit

inactive Snapshot '/dev/kubuntu-vg/root_snap11' [50.00 GiB] inherit

inactive Snapshot '/dev/kubuntu-vg/root_snap12' [50.00 GiB] inherit

ACTIVE            '/dev/ssd_vg/root' [224.02 GiB] inherit

ACTIVE            '/dev/ssd_vg/swap_1' [7.88 GiB] inherit

相关内容