从容器内部调用lvcreate会挂起

我运行一个容器。 它具有所有function,并从根目录(除/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中断它 – C我设置,逻辑卷被创build。 我也可以通过在同一个容器内发出dmsetup udevcomplete_all来中断命令。 如果我在主机上调用lvcreate ,它会正常工作并完全退出。

我相信,这个问题与udev cookie不能在容器和主机之间共享有关。 但是我不知道lvm究竟在做什么以及如何解决这个问题。

我需要这样的容器化kubelet可以调用flexvolume插件,可以分配逻辑卷。

我会说,你应该避免在这种情况下使用udev 。 这对于LVM来说很容易,而LVM完全能够独立处理卷和设备。

在你的/etc/lvm/lvm.conf文件中,你会发现这些行:

 udev_sync = 0 udev_rules = 0 

正如我在那里打印它们,将这些值设置为零,看看是否清除它。 它将至less排除udev 。 您将不得不使卷脱机以进行此更改,因为您将从udevpipe理切换到LVMpipe理。