What= и Where= в mount-unit systemd
What= задаёт источник монтирования: устройство, UUID, метку или сетевой ресурс. Where= — точку монтирования, то есть каталог, куда он подключается.
Что делает
Имя unit-файла не произвольное: оно получается из точки монтирования заменой косых черт на дефисы. Для /mnt/backup файл обязан называться mnt-backup.mount. При расхождении systemd откажется загружать unit. Правильное имя печатает systemd-escape -p --suffix=mount /путь.
В источнике лучше указывать UUID, а не имя устройства: имена вида /dev/sdb1 меняются при переподключении дисков, а UUID остаётся.
Где ставится. В секции [Mount]. Оба параметра обязательны.
Значения
| Значение | Что происходит |
|---|---|
What=UUID=8f1c0a11-... | надёжный способ указать раздел. |
What=/dev/disk/by-label/data | по метке файловой системы. |
What=nfs.example.internal:/export/data | сетевой ресурс NFS. |
Where=/srv/data | точка монтирования; имя unit — srv-data.mount. |
Пример
Монтирование раздела с зависимостью со стороны службы.
# /etc/systemd/system/srv-data.mount
[Unit]
Description=Раздел с данными
[Mount]
What=UUID=8f1c0a11-1d1e-4a1f-9c22-6b0f0a2d33aa
Where=/srv/data
Type=ext4
Options=defaults,noatime
[Install]
WantedBy=multi-user.target
Службе достаточно указать RequiresMountsFor=/srv/data — имя этого unit она знать не обязана.
Типичные ошибки
Имя файла обязано соответствовать точке монтирования, иначе unit не загрузится.
Дефис в пути требует экранирования: пользуйтесь systemd-escape.
Имена устройств вида /dev/sdb1 непостоянны: указывайте UUID.
Для сетевых ресурсов нужен параметр _netdev, иначе порядок относительно сети будет неверным.
Связанные ошибки
- Имя mount-unit не соответствует точке монтированияsystemd отказывается загружать .mount: имя файла должно быть получено из пути через systemd-escape. Как назвать unit правильно.
- Mount process exited, code=exited, status=32: не найдено устройствоМонтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- You are in emergency mode: система не загрузиласьЗагрузка остановилась в аварийном режиме. Что проверять: fstab, файловые системы, цель по умолчанию. Как войти и починить.
Рядом стоящие параметры
Источники
- systemd.mount(5)
- systemd-escape(1)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)