我运行一个容器。它具有所有功能并从根目录挂载所有目录(除了/proc
)。当我lvcreate
从里面打电话时,我得到:
# lvcreate -v -L104857600B -n vol1 default
Finding volume group "default"
Archiving volume group "default" metadata (seqno 17).
Creating logical volume vol1
Creating volume group backup "/etc/lvm/backup/default" (seqno 18).
Activating logical volume "vol1".
activation/volume_list configuration setting not defined: Checking only host tags for default/vol1
Creating default-vol1
Loading default-vol1 table (252:4)
Resuming default-vol1 (252:4)
命令挂起。我也在日志中得到这个:
Sep 12 12:03:31 node3 systemd-udevd[12529]: Process '/sbin/dmsetup udevcomplete 23072978' failed with exit code 1
如果我用ctrl- CI set 中断它,则创建了逻辑卷。dmsetup udevcomplete_all
我也可以通过从同一个容器内发出来中断命令。如果我调用lvcreate
主机,它会正常工作并干净地退出。
我相信,这个问题与未在容器和主机之间共享的 udev cookie 有关。但是,我不知道 lvm 究竟想在这里做什么以及如何解决这个问题。
我需要这个,以便容器化 kubelet 可以调用能够分配逻辑卷的 flexvolume 插件。
我会说你应该避免
udev
在这种情况下使用。使用 LVM 很容易做到这一点,并且 LVM 完全能够自行处理卷和设备设置。在您的
/etc/lvm/lvm.conf
文件中,您会发现以下几行:当我在那里打印它们时,将这些值设置为零,看看是否可以清除它。至少会排除
udev
。您必须使卷脱机才能进行此更改,因为您将从udev
管理切换到 LVM 管理。