如何向 udev 数据库添加一个在重启后工作的块?

如何向 udev 数据库添加一个在重启后工作的块?

这与此有关问题。我的笔记本电脑中有 3 个硬盘,Fedora 32 安装在/dev/sdb./dev/sda它们/dev/sdc只是 ext4 格式的额外存储。现在每次启动都需要一分多钟,但在 Fedora 31 中不到 20 秒。启动时间较长的罪魁祸首似乎是lvm2-monitor.servicejournalctl显示:

-- 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
}

相关内容