Служба монтирования облачного хранилища умирает, точка остаётся
Монтирование облачного хранилища держится процессом. При его падении точка монтирования остаётся, но все операции отказывают, а перезапуск службы не проходит: точка занята. Правильное лечение — снятие точки перед запуском и перезапуск при сбое.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Точка монтирования не снимается при падении
Процесс умер, ядро оставило точку. Новый запуск не может смонтировать поверх.
-
Служба не перезапускается после сбоя
Без указания перезапуска падение процесса означает неработающую точку до ручного вмешательства.
-
Точка монтирования не видна другим службам
Монтирование через пользовательское пространство по умолчанию видно только создавшему его. Другие службы не видят содержимого.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Смонтировано ли и с какими параметрами.
findmnt /mnt/cloud -o TARGET,SOURCE,OPTIONSПерезапуск и видимость точки монтирования.
systemctl show rclone-mount.service -p Restart -p PrivateMountsПочему процесс завершился.
journalctl -u rclone-mount.service -n 30 --no-pagerРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Процесс умер, ядро оставило точку. Новый запуск не может смонтировать поверх.
- Как проверить
-
Посмотрите точку монтирования и процессы.
findmnt /mnt/cloud 2>/dev/null; pgrep -a rclone
- Как исправить
-
Добавьте снятие точки перед запуском и после остановки, с дефисом, чтобы отказ не ломал запуск службы.
[Service] ExecStartPre=-/bin/fusermount -uz /mnt/cloud ExecStopPost=-/bin/fusermount -uz /mnt/cloud
- Почему происходит
- Без указания перезапуска падение процесса означает неработающую точку до ручного вмешательства.
- Как проверить
-
Посмотрите настройку перезапуска.
systemctl show rclone-mount.service -p Restart -p RestartSec
- Как исправить
-
Задайте перезапуск при сбое с задержкой. Для монтирования это уместно: сетевые перебои — штатная ситуация.
[Service] Restart=on-failure RestartSec=15
- Почему происходит
- Монтирование через пользовательское пространство по умолчанию видно только создавшему его. Другие службы не видят содержимого.
- Как проверить
-
Посмотрите параметры монтирования.
findmnt /mnt/cloud -o TARGET,SOURCE,OPTIONS 2>/dev/null systemctl show rclone-mount.service -p PrivateMounts -p User
- Как исправить
- Разрешите общий доступ к точке параметрами монтирования и убедитесь, что у службы не включено приватное пространство монтирования.
Пример вывода
Процесс упал, точка осталась нерабочей. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd[1]: rclone-mount.service: Main process exited, code=exited, status=1/FAILURE
$ ls /mnt/cloud
ls: cannot access '/mnt/cloud': Transport endpoint is not connected
$ sudo systemctl start rclone-mount.service
rclone[5500]: Fatal error: failed to mount FUSE fs: mountpoint path already in use
Связанные ошибки
- Transport endpoint is not connected Ошибка 107: точка монтирования отвалилась или сокет закрыт. Разбор для сетевых файловых систем и монтирования через fuse.
- Target is busy: точка монтирования занята Не удаётся отмонтировать: target is busy. Как найти процессы, которые держат точку монтирования, и корректно освободить её.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Dependency failed for … и результат 'dependency' Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Device or resource busy при операции с файлом Ошибка 16: файл или устройство заняты. Разбор для точек монтирования, устройств и файлов конфигурации.
- Mount process exited, code=exited, status=32: не найдено устройство Монтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- NFS: Stale file handle Обращение к файлу на сетевом каталоге отказывает: устаревший идентификатор файла после переэкспорта.
Источники
- Документация rclone: монтирование
-
systemd.service(5)
Команды до запуска и после остановки, перезапуск при сбое. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено убийством процесса монтирования.