От какого командного / системного модуля zfs зависит доступность точки монтирования?

Я хотел бы убедиться, что точка монтирования ZFS доступна до запуска службы, управляемой systemd. Поэтому я бы использовал раздел After= в блоке systemd. Но что писать в качестве аргумента?

Я использую локальную установку ZFS из-за постоянных проблем с производительностью поставляемой версии и импортирую единственный пул с

[Unit]
Description=ZFS pool import for source installations of ZFS
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/zpool import -d /dev data

[Install]
WantedBy=multi-user.target

, потому что я никогда нашел какую-либо полезную документацию поддержки systemd в Ubuntu, и она , похоже, предназначена для разработчиков только сейчас .

Однако в другой системе у меня также возникают проблемы со встроенными ресурсами, например, zfs-mount.service загружается и работает, даже если пулы не импортированы, и, следовательно, монтирование не могло быть успешным.

Есть ли цель, от которой я могу сделать так, чтобы мои службы зависели для запуска только после того, как точка монтирования доступна, и отказывается запускаться, если не удалось инициализировать весь ZFS или только точку монтирования (и что я могу скопировать для локальной установки )?

Я использую Ubuntu 17.10.

3
задан 23 December 2017 в 18:56

1 ответ

Системные настройки по умолчанию

Здесь много магии, но в Ubuntu 18.04 ответ обычно выглядит как zfs.target, который указан как WantedBy для всех различных zfs-*.service s (mount, modprobe и т. Д.). Вы увидите это, если просмотрите

more /lib/systemd/system/zfs* | less

. Вы можете заметить, что есть также zfs-import.target, который удовлетворяется после выполнения zpool import, но до монтирования файловых систем.

В моем случае, однако, есть другие шаги, которые должны произойти в первую очередь (например, зашифрованное сопоставление блочных устройств), поэтому они не будут работать из коробки для меня.

Конкретные точки монтирования

Для конкретных точек монтирования я бы рекомендовал не полагаться на общее zfs.target, а вместо этого добавить свой собственный сервис (возможно, с Wants=zfs.target), который проверяет состояние конкретных монтирований вашего Система опирается на. Например, если вы полагаетесь на монтируемое /blah/my/zfs/mount, просто создайте сервис для того, который может проверять состояние монтирования zfs перед возвратом, возможно, с помощью

zfs get mounted blah/my/zfs/mount | grep yes

Пример

/etc/systemd/system/my-zfs-mount.service

[Unit]
Description=ZFS mount blah/my/zfs/mount
Wants=zfs.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/sbin/zfs get mounted blah/my/zfs/mount | grep yes

[Install]
WantedBy=multi-user.target

И тогда другие ваши услуги могут зависеть от этого.

0
ответ дан 23 December 2017 в 18:56

Другие вопросы по тегам:

Похожие вопросы: