Автомонтирование разделов в Linux держится на одном небольшом файле — /etc/fstab. Пока он в порядке, вы о нём не вспоминаете. Но стоит опечататься в UUID или забыть создать точку монтирования, и после перезагрузки система может остановиться в emergency mode. Ниже — формат fstab, разница между UUID и именами устройств, рабочие опции и порядок действий, если монтирование всё-таки сломалось.

Как fstab связан с systemd

Файл читается на раннем этапе загрузки. Генератор systemd-fstab-generator превращает каждую строку в unit вида .mount, поэтому управлять монтированием можно обычными командами systemctl. Строка состоит из шести полей:

  • устройство — UUID, LABEL, PARTUUID или путь вроде /dev/nvme0n1p2;
  • точка монтирования — существующий каталог;
  • тип файловой системы (ext4, btrfs, xfs, vfat, exfat, ntfs3, nfs, swap);
  • опции монтирования через запятую;
  • поле dump — почти всегда 0;
  • поле pass — порядок проверки fsck: 1 для корня, 2 для остальных, 0 для сетевых и псевдофайловых систем.

Перед правкой сделайте копию файла и проверьте текущую картину:

lsblk -f
sudo blkid
findmnt --verify --verbose
sudo cp /etc/fstab /etc/fstab.bak

Команда findmnt --verify разбирает fstab и сообщает о неизвестных опциях, отсутствующих каталогах и дублях, не пытаясь ничего смонтировать. Это самый безопасный способ проверить правку до перезагрузки.

UUID, LABEL и имена устройств

Имена вида /dev/sda1 зависят от порядка подключения дисков и могут измениться после установки нового накопителя. UUID привязан к файловой системе и остаётся стабильным, поэтому в fstab почти всегда используют его. Посмотреть идентификаторы можно так:

sudo blkid /dev/nvme0n1p2
ls -l /dev/disk/by-uuid/
lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINTS

Для шифрованных разделов и LVM сначала появляется устройство /dev/mapper/..., а UUID относится уже к файловой системе внутри. Если вы пересоздали раздел, UUID изменился — старую строку в fstab нужно обновить, иначе загрузка завершится ошибкой.

Пример типичного файла:

# корень
UUID=6f1a2c3d-4b5e-4f60-8a71-9b2c3d4e5f60 / ext4 errors=remount-ro 0 1
# домашний раздел
UUID=1b2c3d4e-5f60-4a71-8b92-0c1d2e3f4a5b /home ext4 defaults,noatime 0 2
# флешка, монтируется только вручную
UUID=1A2B-3C4D /mnt/usb exfat defaults,nofail,uid=1000,gid=1000,umask=022 0 0
# swap
UUID=9c8d7e6f-5a4b-3c2d-1e0f-a1b2c3d4e5f6 none swap sw 0 0

UUID в примере условный: подставьте значение из blkid. Для NTFS в ядре есть драйвер ntfs3; старый ntfs-3g из пространства пользователя остаётся вариантом для сложных случаев. Для FAT и exFAT права задаются не через chmod, а опциями uid, gid и umask.

Опции, которые действительно нужны

defaults — это набор rw,suid,dev,exec,auto,nouser,async. Дальше добавляют только то, что решает конкретную задачу:

  • noatime — не обновлять время доступа при чтении; меньше записи на SSD и меньше износ.
  • nofail — не блокировать загрузку, если диск недоступен. Обязательно для внешних и резервных накопителей.
  • x-systemd.device-timeout=10s — ограничить ожидание медленного устройства.
  • x-systemd.automount и x-systemd.idle-timeout=10min — монтировать по первому обращению и размонтировать после простоя. Удобно для сетевых каталогов и редко используемых дисков.
  • ro — защитить архив или резервную копию от случайной записи.
  • _netdev — пометить сетевую файловую систему, чтобы systemd не ждал её до поднятия сети.
  • discard — передавать TRIM сразу; на большинстве домашних систем разумнее включить таймер fstrim.timer и не добавлять опцию в fstab.

Пример отложенного монтирования:

UUID=6f1a2c3d-4b5e-4f60-8a71-9b2c3d4e5f60 /mnt/backup ext4 noauto,x-systemd.automount,x-systemd.idle-timeout=10min,nofail 0 0

После любой правки выполните sudo systemctl daemon-reload, затем sudo mount -a. Если команда прошла без вывода — синтаксис и доступность устройств в порядке. Для отдельной точки можно запустить sudo systemctl start mnt-backup.mount и проверить findmnt /mnt/backup.

Автомонтирование по требованию

Опция noauto запрещает монтировать раздел при загрузке, а x-systemd.automount создаёт рядом unit .automount. Первое обращение к каталогу запускает монтирование, после чего оно работает как обычно. Это особенно полезно для USB-дисков с резервными копиями: если диск не подключён, загрузка не ломается, а nofail убирает ошибку.

Проверить, какой unit соответствует пути, помогает systemd-escape:

systemd-escape -p /mnt/backup
systemctl list-units --type=mount --all
systemctl status mnt-backup.mount
journalctl -b -u mnt-backup.mount --no-pager

Для bind-монтирования в fstab указывают исходный каталог, точку назначения, тип none и опцию bind. Если исходный каталог сам является отдельной точкой монтирования, добавьте x-systemd.requires-mounts-for=/исходный/путь, иначе порядок запуска может оказаться неверным.

Типичные ошибки и восстановление

Симптом «emergency mode» почти всегда означает, что systemd не смог смонтировать раздел, помеченный как обязательный. Действуйте по шагам:

  1. Войдите под root или введите пароль root, если система его просит.
  2. Перемонтируйте корень в режим записи: mount -o remount,rw /.
  3. Откройте /etc/fstab, закомментируйте проблемную строку символом #.
  4. Выполните systemctl daemon-reload, затем systemctl reboot.

После загрузки выясните причину по журналу:

journalctl -b -p err --no-pager
dmesg | grep -i -E 'ext4|ntfs|mount|I/O error'
systemctl status mnt-data.mount
findmnt --verify --verbose

Частые сообщения: can't find UUID=... — опечатка или изменённый UUID; wrong fs type, bad option — неверный тип или неподдерживаемая опция; mount point does not exist — забыли создать каталог; Structure needs cleaning — повреждение файловой системы, нужен fsck с незамонтированным разделом. Не запускайте fsck на смонтированном корне: используйте загрузку с live-носителя.

Отдельная ловушка — дубликат точки монтирования. systemd создаст два unit с одинаковым именем, и поведение станет непредсказуемым. findmnt --verify такие строки показывает. Ещё одна ошибка — лишняя запятая или пробел внутри списка опций: fstab не терпит «почти правильного» синтаксиса.

Чек-лист перед перезагрузкой

  • UUID скопирован из blkid, а не набран вручную.
  • Точка монтирования существует и пуста.
  • Тип файловой системы совпадает с реальным.
  • Для внешнего диска есть nofail и разумный таймаут.
  • findmnt --verify не выдаёт ошибок.
  • mount -a проходит без вывода.
  • Резервная копия fstab лежит рядом.

Итог

fstab остаётся простым, но требовательным инструментом: UUID даёт стабильность, осмысленные опции — производительность и безопасность, а nofail и x-systemd.automount избавляют от хрупкой загрузки. Главное правило — проверять изменения через findmnt --verify и mount -a до перезагрузки, а не после. Тогда автомонтирование будет работать незаметно, как и должно.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте