Я запускаю контейнер. Имеет все возможности и монтирует все каталоги от root (кроме /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 Я установил, что логический том был создан. Я также могу прервать команду, введя dmsetup udevcomplete_all
изнутри того же контейнера. Если я позвоню lvcreate
на хосте нормально работает и чисто выходит.
Я считаю, что эта проблема связана с тем, что файлы cookie udev не используются совместно контейнером и хостом. Однако я понятия не имею, что именно lvm пытается здесь сделать и как решить проблему.
Мне это нужно, чтобы контейнерный кубелет мог вызывать плагин flexvolume, который мог бы выделять логические тома.
Я скажу, что вам следует избегать использования udev
в таком случае. Это достаточно просто сделать с LVM, и LVM полностью способен обрабатывать тома и настраивать устройства самостоятельно.
Внутри вашего /etc/lvm/lvm.conf
файл, вы найдете эти строки:
udev_sync = 0
udev_rules = 0
Поскольку я распечатал их там, установите эти значения на ноль и посмотрите, проясняет ли это это. Это как минимум исключит udev
. Чтобы внести это изменение, вам придется отключить свои тома, так как вы будете переключаться с udev
управление к управлению LVM.