Lvm
從容器內部呼叫 lvcreate 掛起
我執行一個容器。它具有所有功能並從根目錄掛載所有目錄(除了
/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
I set 中斷它,則創建了邏輯卷。dmsetup udevcomplete_all
我也可以通過從同一個容器內發出來中斷命令。如果我呼叫lvcreate
主機,它會正常工作並乾淨地退出。我相信,這個問題與未在容器和主機之間共享的 udev cookie 有關。但是,我不知道 lvm 究竟想在這裡做什麼以及如何解決這個問題。
我需要這個,以便容器化 kubelet 可以呼叫能夠分配邏輯卷的 flexvolume 外掛。
我會說你應該避免
udev
在這種情況下使用。使用 LVM 很容易做到這一點,並且 LVM 完全能夠自行處理捲和設備設置。在您的
/etc/lvm/lvm.conf
文件中,您會發現以下幾行:udev_sync = 0 udev_rules = 0
當我在那裡列印它們時,將這些值設置為零,看看是否可以清除它。至少會排除
udev
。您必須使卷離線才能進行此更改,因為您將從udev
管理切換到 LVM 管理。