我已经从 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 可以在内核命令行上多次指定。
现在好了。这就解释了!
因此,解决方案是(从更多谷歌查询中收集的):
- 修改
/etc/defaults/grub
以在参数中包含附加卷:crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap
rd.lvm.lv=vg_home/lv_home
rhgb quiet
- 重新配置 grub
grub2-mkconfig -o /boot/grub2/grub.cfg
- 使用 重新配置 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
. (坦率地说,我不知道为什么需要这一步,但显然是这样 - 我尝试不使用它,但它不起作用) - 最后,重新安装 grub:
grub2-install /dev/sda
- 自然重启。
达达!该卷在重新启动时处于活动状态。添加它fstab
并享受吧! :)
答案2
我也有这个问题。就我而言,它是 iscsi、多路径和 lvm 以及会话创建顺序等的组合。我通过添加/sbin/vgchange -a y
对/etc/rc.local
.
答案3
次要更新(适用于 EFI 上的 RHEL 7)(非 BIOS)机器):
我已经使用以下步骤取得了成功:
- 修改
/etc/defaults/grub
以在参数中包含附加体积:(rd.lvm.lv=rhel/home
除了rhel/root
和rhel/swap
) 重新配置 grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
(笔记:另一条路!)
重新配置 initramfs
mkinitrd -f -v /boot/initramfs-$(uname -r).img $(uname -r)
- 跳过重新安装 grub:(
grub2-install /dev/sda
因为我有一个空目录/usr/lib/grub/
) - 自然重启。
答案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