Назад | Перейти на главную страницу

Вызов lvcreate изнутри контейнера зависает

Я запускаю контейнер. Имеет все возможности и монтирует все каталоги от 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.