Сценарий systemd для монтирования удаленного FUSE для s3ql

1728
JKnight

Я нахожу systemd очень интересным, но как мне использовать его для написания скрипта для монтирования файловой системы s3ql ? Например, разработчик s3ql предоставляет конфигурацию upstart, которая выполняет эту работу.

В частности, при запуске необходимо запустить mount.s3ql (как требуемый пользователь, так как это файловая система FUSE), а при завершении работы umount.s3ql должен быть запущен. Кроме того, что если мы захотим выполнить fsck.s3ql файловую систему перед монтированием или выполнить шаг синхронизации Unison после запуска и перед выключением (все изменения, которые я внес в свой личный выскок).

На первый взгляд, я бы подумал, что мне нужно настроить модуль монтирования на systemd, но, похоже, что сервисный модуль на самом деле лучше подходит для команд запуска pre и post exec. (Все справочные страницы доступны здесь .)

И от какой цели .target зависит кодирование зависимости от сетевого подключения?

1

1 ответ на вопрос

1
grawity

Сначала кажется, что для mount.s3qlи umount.s3ql, общая .mountединица может быть подходящей. Как mountкоманда, так и systemd поддерживают помощников при монтировании. Тем не менее, помощник должен поддерживать стандартный метод передачи параметров, который не поддерживает s3ql . Кроме того, применяются те же ограничения, что и в / etc / fstab .mount.fstype-o options

Таким образом, вам может быть лучше с .serviceмодулем, который вызывает нужные команды:

[Единица измерения] Wants=unison@s3ql.service After=unison@s3ql.service  [Обслуживание] Тип = разветвление Environment = AUTHFILE = / путь / к / authinfo2 ExecStart = / usr / sbin / mount.s3ql --authfile $ $ $  ExecStop = / usr / sbin / umount.s3ql $  TimeoutSec = 5мин 

Поскольку не существует стандартного способа настройки сетей, а тем более того, что он фактически проверяет, работает ли соединение, нет стандартной цели systemd для того, что вы хотите. Существует network.target, правда, но он может считать себя начинается, когда соединение не существует.

Если вы используете NetworkManager, в ваш дистрибутив может быть включен работающий модуль nm-online- например, его вызывает Arch NetworkManager-wait-online.service.

[Единица измерения] Требовать = NetworkManager-WAIT-online.service После = NetworkManager-WAIT-online.service 
`mount.s3ql` поддерживает` -o опции` (и всегда имеет). Последние версии также поставляются с поддержкой уведомлений systemd, поэтому `Type = forking` больше не верен. Nikratio 8 лет назад 1