这与此有关问题。我的笔记本电脑中有 3 个硬盘,Fedora 32 安装在/dev/sdb
./dev/sda
它们/dev/sdc
只是 ext4 格式的额外存储。现在每次启动都需要一分多钟,但在 Fedora 31 中不到 20 秒。启动时间较长的罪魁祸首似乎是lvm2-monitor.service
。journalctl
显示:
-- Reboot --
Jun 09 01:36:48 localhost.localdomain lvm[696]: WARNING: Device /dev/sda not initialized in udev database even after waiting 10000000 microseconds.
Jun 09 01:36:58 localhost.localdomain lvm[696]: WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.
Jun 09 01:37:18 localhost.localdomain lvm[696]: 3 logical volume(s) in volume group "fedora_localhost-live" monitored
Jun 09 01:37:18 localhost.localdomain systemd[1]: Finished Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling.
那么,如何手动向 udev 数据库添加一个在重启后起作用的块呢?
答案1
这是 LVM 中的一个已知错误。根图提出以下解决方法:
- 如上所示使用 vgscan (最简单的解决方案)
- 通过 UUID 或标签安装,而不是使用 /dev/VG/root。它之所以有效,是因为 findfs 对 /dev/dm-42 感到满意
- 使用 -udev USE 标志构建 LVM 二进制文件(专门用于 initramfs!)
- 通过在 initramfs 中包含最小的 /etc/lvm/lvm.conf 来禁用 udev 依赖:
` /usr/src/initramfs/etc/lvm/lvm.conf在 lvm.conf 中禁用 udev
devices {
# Disable scanning udev for md/multipath components.
# This is required with recent versions of lvm2, even if you use another solution for
# your LV device nodes; without it lvm commands will stall for minutes waiting for udev.
multipath_component_detection = 0
md_component_detection = 0
}
activation {
# Set to 0 to disable udev synchronisation (if compiled into the binaries).
udev_sync = 0
# Set to 0 to disable the udev rules installed by LVM2
udev_rules = 0
}