LINUX.ORG.RU
решено ФорумAdmin

systemd unit ждать появления lvm тома

 , ,


0

2

Raspberry pi при загрузке подключает iscsi диск.

На iscsi диске lvm тома с ФС lxc контейнеров.

Явно указал в lxc.service After= ... open-iscsi.service

Проблема - на момент запуска lvm.service iscsi диск уже подключен, но pvscan ещё не отработал и lvm томов для контейнеров нет. Как итог контейнеры не стартуют.

Сейчас в виде костыля добавил в lxc.service ExecStart=/bin/sleep 5

Есть более правильные варианты решения?

К примеру. Было бы хорошо в lxc@my_container.service добавить ожидание появления файла /dev/vg0/my_container

PS Пробовал дописать в lvm.service After= ... lvm2-pvscan@8:1 Эффекта не дало.

Linux raspberrypi 5.4.51-v8+ #1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020 aarch64 GNU/Linux
systemd 241 (241)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid
★★

подозреваю что в зависимости надо прописать нужный device-юнит. Если среди сгенерированных такого нет, то надо создать

anonymous
()
Ответ на: комментарий от anonymous

Что-то из этого?

sys-devices-virtual-block-dm\x2d0.device                                                            loaded active plugged   /sys/devices/virtual/block/dm-0
...

Этот device соответствует lvm тому на iscsi.

Добавил это в lvm.service After=

Не принесло эффекта.

Возможно я делаю это неправильно.

Flotsky ★★
() автор топика
Ответ на: комментарий от Flotsky

сейчас нет возможности проверить, но файл должен быть типа dev-mapper-vg\x2dhome.device

в твоем случае там будет имя с my_container

anonymous
()
Ответ на: комментарий от Flotsky

Возможно я делаю это неправильно.

Да. .device-юниты создаются в момент подключения устройства, а зависимости порядка на несуществующих юнитах (или юнитах, не являющихся частью той же транзакции) ничего не значат.

Сделай нужному юниту одновременно Requires= и After=. Кстати, тебе необязательно ссылаться на них по полным sysfs-именам; ты можешь написать что-то вроде Requires=dev-mapper-foobar.device.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Спасибо, пришёл к такой конструкции

lxc@.service
After=lxc.service dev-mapper-iscsivg0\x2d%i.device
Requires=dev-mapper-iscsivg0\x2d%i.device

При условии, что имя контейнера равно имени lv тома отрабатывает успешно.

PS dev-mapper устройства увидел, только с systemctl -a. Без ключа -a они почему-то не видны.

Flotsky ★★
() автор топика
Последнее исправление: Flotsky (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.