Имя mount-unit не соответствует точке монтирования
Имя mount-unit не произвольное: оно получается из точки монтирования заменой косых черт на дефисы. Для /mnt/backup файл обязан называться mnt-backup.mount. При другом имени systemd откажется загружать unit — это защита от двух unit на одну точку.
Что это значит
Преобразование делает systemd-escape -p --suffix=mount /путь. Она же правильно обработает пробелы и дефисы в пути, которые вручную легко испортить.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Файл назван по смыслу, а не по пути
Имя вида
backup.mountдля точки/mnt/backupневерно. systemd сопоставляет имя иWhere=и при расхождении отказывает. -
В пути есть дефис, и он не экранирован
Дефис в имени каталога превращается в
\x2d. Вручную это почти всегда забывают. -
Where=не совпадает с именем файлаФайл переименовали, а параметр внутри оставили прежним — или наоборот. Оба должны описывать одну точку.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Печатает правильное имя unit для любой точки монтирования.
systemd-escape -p --suffix=mount /ваш/путьВсе точки монтирования как unit: видно принятые имена.
systemctl list-units --type=mount --no-pager | head -20Сообщения systemd об отказе загрузить mount-unit.
journalctl -b --no-pager | grep -iE "\.mount.*(refus|invalid|mismatch)" | headРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Имя вида
backup.mountдля точки/mnt/backupневерно. systemd сопоставляет имя иWhere=и при расхождении отказывает.
- Как проверить
-
Получите правильное имя из пути.
systemd-escape -p --suffix=mount /mnt/backup
- Как исправить
-
Переименуйте файл в то, что напечатала команда, и перечитайте конфигурацию.
sudo mv /etc/systemd/system/backup.mount /etc/systemd/system/mnt-backup.mount && sudo systemctl daemon-reload
- Почему происходит
- Дефис в имени каталога превращается в
\x2d. Вручную это почти всегда забывают.
- Как проверить
-
Преобразуйте путь командой, а не руками.
systemd-escape -p --suffix=mount /mnt/data-2024
- Как исправить
- Используйте имя из вывода команды целиком, вместе с экранированием.
Where= не совпадает с именем файла- Почему происходит
- Файл переименовали, а параметр внутри оставили прежним — или наоборот. Оба должны описывать одну точку.
- Как проверить
-
Сравните имя файла и значение параметра.
systemctl cat mnt-backup.mount | grep -i where
- Как исправить
-
Приведите их в соответствие: имя файла получается из
Where=, других вариантов нет.
Пример вывода
Имя файла не соответствует точке монтирования. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd[1]: backup.mount: Where= setting doesn't match unit name. Refusing.
systemd[1]: backup.mount: Unit configuration has fatal error, unit will not be started.
Связанные ошибки
- Mount process exited, code=exited, status=32: не найдено устройство Монтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- Unit file is bad и ошибки разбора unit-файла systemd не может разобрать unit-файл: неизвестные параметры, ошибки в секциях, недопустимые значения. Как найти проблемную строку.
- Dependency failed for … и результат 'dependency' Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Правка fstab не применяется: генераторы unit Точки монтирования из fstab превращаются в unit генератором. Почему после правки нужен daemon-reload.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
Источники
-
systemd.mount(5)
Правило соответствия имени unit и точки монтирования. -
systemd-escape(1)
Преобразование путей в имена unit. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено файлом backup.mount с Where=/mnt/backup.