问题
CentOS/RHEL系统无法继续启动过程,并出现错误消息:
systemd-udevd[369]: fork of '/bin/sh -c '>/tmp/.lvm_scan-sdc;'' failed: Cannot allocate memory A start job is running for dev-mapper-\x2droot.device
on it road.com
解决方案
如果名为 lvmetad 的 systemd 单元已启用并正在运行,则元数据将被缓存,从而减少磁盘扫描,并为 LVM 命令提供 VG 元数据和 PV 状态。
然后 LVM 命令将避免从磁盘读取信息。
如果底层卷组和物理卷发生任何更改,LVM 元数据缓存可能没有有关磁盘更改的信息,这可能导致此问题停留在 LVM 命令(例如 lvm_scan-sd*)上。
另一个因素是,在此扫描期间,由于内核参数 vm.nr_hugepages 的设置不正确或者不合适,内存分配可能会失败。
可以配置巨大的页面来分配和专用一部分操作系统无法使用的内存。
使用 Rescue 盘将系统引导至 Rescue 模式。
确保 /etc/sysctl.conf 中的大页面设置为推荐值,以避免出现“无法分配内存”错误。
我们可以在 /etc/systcl.conf 中禁用大页面设置,看看这是否是导致问题的原因。
编辑 /etc/sysctl.conf 并确保 vm.nr_hugepages 不存在或者将其替换为 #vm.nr_hugepages = 。禁用lvmetad:
# systemctl disable lvm2-lvmetad # systemctl disable lvm2-lvmetad.socket
- 编辑 /etc/lvm/lvm.conf 并替换以下行:
从:
use_lvmetad = 1 to use_lvmetad = 0
- 重新构建 initramfs 以适应特定内核的更改:
# cp /boot/initramfs-[kernel version].img /root # cd /boot # dracut -f -v initramfs-[kernel].img [kernel]
例如:
# dracut -f -v initramfs-3.10.0-514.el7.x86_64.img 3.10.0-514.el7.x86_64
- 重新启动系统以使更改生效:
# shutdown -r now
日期:2020-09-17 00:12:22 来源:oir作者:oir