Параметры x-systemd в описании точек монтирования
Описание точек монтирования превращается в unit-файлы генератором, и особые параметры позволяют управлять этим без написания unit-файлов вручную. Их незнание приводит к самодельным решениям вроде команд монтирования в службах — а они работают хуже и ломаются при загрузке.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Устройство не успевает появиться, а таймаут задан общий
Ожидание устройства по умолчанию ограничено, и медленный контроллер или сетевой диск в него не укладываются.
-
Ресурс нужно монтировать по обращению, а не при загрузке
Монтирование сетевого ресурса при загрузке задерживает старт и уводит в аварийный режим при недоступности.
-
Точке монтирования нужна другая служба
Сетевому ресурсу может требоваться работающая служба проверки подлинности или туннель. Порядок задаётся параметром зависимости.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Во что превратились параметры описания после работы генератора.
systemctl show srv-data.mount -p TimeoutUSec -p After -p Requires 2>/dev/nullВсе точки монтирования и точки монтирования по обращению.
systemctl list-units --type=mount --type=automount --no-legend | headПроверка получившегося описания монтирования.
systemd-analyze verify srv-data.mount 2>&1 | headРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Ожидание устройства по умолчанию ограничено, и медленный контроллер или сетевой диск в него не укладываются.
- Как проверить
-
Посмотрите параметры монтирования и таймаут получившегося unit.
grep -vE "^#|^$" /etc/fstab | head systemctl show srv-data.mount -p TimeoutUSec 2>/dev/null
- Как исправить
- Задайте таймаут ожидания устройства особым параметром в описании точки монтирования. Это точнее, чем менять общие настройки.
- Почему происходит
- Монтирование сетевого ресурса при загрузке задерживает старт и уводит в аварийный режим при недоступности.
- Как проверить
-
Посмотрите, есть ли параметр монтирования по обращению.
grep -E "x-systemd" /etc/fstab 2>/dev/null systemctl list-units --type=automount --no-legend
- Как исправить
- Добавьте параметр монтирования по обращению: ресурс смонтируется при первом доступе и отмонтируется при простое. Загрузка перестанет от него зависеть.
- Почему происходит
- Сетевому ресурсу может требоваться работающая служба проверки подлинности или туннель. Порядок задаётся параметром зависимости.
- Как проверить
-
Посмотрите зависимости получившегося unit.
systemctl show srv-data.mount -p After -p Requires 2>/dev/null
- Как исправить
- Укажите нужный unit особым параметром зависимости в описании точки монтирования. Генератор перенесёт его в описание монтирования сам.
Пример вывода
Сетевой ресурс монтируется по обращению с таймаутом устройства. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
# /etc/fstab
10.0.0.5:/export/data /srv/data nfs4 noauto,x-systemd.automount,x-systemd.idle-timeout=600,x-systemd.device-timeout=30,_netdev 0 0
$ systemctl list-units --type=automount --no-legend
srv-data.automount loaded active waiting Automount /srv/data
Связанные ошибки
- Машина уходит в аварийный режим из-за одной точки монтирования Недоступный диск при загрузке останавливает всю загрузку: разбор параметра, позволяющего продолжить.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Служба запускается раньше монтирования своих данных Служба стартует и не находит файлов: зависимость от точки монтирования не объявлена.
- Dependency failed for … и результат 'dependency' Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Mount process exited, code=exited, status=32: не найдено устройство Монтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- You are in emergency mode: система не загрузилась Загрузка остановилась в аварийном режиме. Что проверять: fstab, файловые системы, цель по умолчанию. Как войти и починить.
- A start job is running: загрузка висит на одной службе Загрузка останавливается с обратным отсчётом: служба не укладывается в таймаут. Как найти виновника и не ждать.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
Источники
-
systemd.mount(5)
Особые параметры x-systemd в описании точек монтирования. -
systemd-fstab-generator(8)
Как описание превращается в unit монтирования. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Проверено на systemd 255: параметры описания переносятся в свойства unit монтирования.