Служба systemd, которая запускается только после монтирования cifs

Вопрос или проблема

У меня есть небольшой домашний сервер (на самом деле, это старый ПК), на котором работают несколько служб под гипервизором Proxmox, одной из которых является сервер qBitTorrent. Он установлен в отдельном LXC-контейнере на базе системы Ubuntu 24.04. Все загрузки сохраняются на отдельной локальной домашней NAS-расшаренной системе на базе Raspberry Pi, которая монтируется внутри контейнера qBitTorrent с использованием cifs в fstab на /mnt/Vault.
Моя проблема в том, что каждый раз, когда мне нужно перезапустить контейнер qBT, торренты выдают ошибку “отсутствуют файлы”, поскольку, я думаю, служба “qBittorrent-nox” запускается быстрее, чем NAS-расшаренная система монтируется внутри контейнера. Похоже, это просто вопрос того, что служба qBT быстрее монтирования, и поэтому она не смогла найти необходимые файлы вовремя. После этого, когда я проверяю монтирование, оно присутствует, так что я могу исключить любые проблемы с монтированием, кроме недостаточной скорости.
Так возможно ли как-то определить условие в файле службы qBT, чтобы дождаться и запустить только после того, как монтирование присутствует?
Вот файл службы:

[Unit] Description=qBittorrent Command Line Client
After=network.target

[Service] Type=forking User=root Group=qbittorrent-nox UMask=007
ExecStart=/usr/bin/qbittorrent-nox -d –webui-port=8080
Restart=on-failure

[Install] WantedBy=multi-user.target

Я думаю о директиве “After” в секции Unit, но я не уверен. Возможно, мне стоит как-то включить ответ из fstab, чтобы подтвердить, что все монтирования прошли успешно?
Есть идеи, как это осуществить? Мои навыки в Linux также ограничены, так что я постараюсь изо всех сил следовать любым предложениям.
Спасибо!

Ответ или решение

Для решения проблемы с запуском сервиса qBittorrent перед тем, как CIFS-монтирование завершится, можно внести изменения в конфигурационный файл сервиса systemd. Ниже приведены подробные шаги, которые помогут вам добиться желаемого результата.

Шаг 1: Определите точку монтирования

Убедитесь, что вы знаете название точки монтирования вашего CIFS-ресурса. В вашем случае это /mnt/Vault, что будет критически важно для следующих шагов.

Шаг 2: Изменение конфигурационного файла qBittorrent

Вы правильно заметили, что необходимо внести изменения в секцию [Unit] конфигурационного файла сервиса qBittorrent. Вам нужно добавить зависимости от системы монтирования.

Откройте файл сервиса qBittorrent, который, вероятно, расположен по пути /etc/systemd/system/qbittorrent.service (если он был создан вами) или в другом системном каталоге, например, /lib/systemd/system/qbittorrent.service для системных служб.

Шаг 3: Редактирование секции [Unit]

Добавьте следующие строки в секцию [Unit] вашего файла:

[Unit]
Description=qBittorrent Command Line Client
After=network.target
Wants=mnt-Vault.mount

Шаг 4: Создание файла монтирования для CIFS

Systemd может управлять монтированием файловых систем, включая CIFS. Вам нужно создать файл монтирования для вашего CIFS-ресурса, если он еще не создан. Создайте файл с именем /etc/systemd/system/mnt-Vault.mount и добавьте в него следующее:

[Unit]
Description=Mount CIFS Share
After=network.target

[Mount]
What=//<NAS_IP_ADDRESS>/share  # Замените на IP адрес вашего NAS и имя общей папки
Where=/mnt/Vault
Type=cifs
Options=uid=1000,gid=1000,username=<username>,password=<password> # Укажите имя пользователя и пароль

[Install]
WantedBy=multi-user.target

Замените <NAS_IP_ADDRESS>, <username> и <password> на соответствующие значения для вашего NAS. Убедитесь также, что вы используете правильные uid и gid, которые соответствуют вашему LXC контейнеру.

Шаг 5: Перезагрузка systemd и активация сервисов

После внесения всех изменений выполните следующие команды, чтобы система увидела новые настройки:

sudo systemctl daemon-reload

Затем активируйте монтирование:

sudo systemctl enable mnt-Vault.mount

Шаг 6: Перезагрузка контейнера и тестирование

Теперь вы можете перезагрузить ваш LXC контейнер:

sudo pct restart <container_id>  # Замените <container_id> на ID вашего контейнера

Теперь, когда вы перезапустите контейнер, сервис qBittorrent будет ждать, пока CIFS-ресурс будет успешно смонтирован, прежде чем выполняться.

Заключение

С помощью данных изменений вы сможете настроить службу qBittorrent так, чтобы она запускалась только после успешного монтирования CIFS-ресурса. Это поможет избежать ошибок о "пропавших файлах" и обеспечит стабильную работу вашего торрент-клиента. Если у вас появятся дополнительные вопросы, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...