Любой раздел, флешка или сетевая шара становятся видимы системе только после того, как вы их примонтируете в какую-то точку дерева каталогов. Этот урок про то, как смонтировать вручную и как сделать так, чтобы оно поднималось при загрузке само, как правильно адресовать устройства (чтобы не сломалось при перетыкании дисков), какие опции монтирования реально влияют на безопасность и производительность, как устроен swap с приоритетами и где systemd заменил классический /etc/fstab своими unit-ами .mount и .automount. Под конец коротко разберем bind-mount, overlay и mount namespaces - то, на чем стоят контейнеры.

Как это работает
Ядро Linux держит в памяти единое дерево каталогов начиная с корня /. Монтирование - это операция, которая берет файловую систему с блочного устройства (или из памяти, или по сети) и подвешивает ее в выбранный каталог - точку монтирования. После этого содержимое старого каталога скрывается, а сквозь него видно содержимое новой ФС. Все смонтированное живет в так называемой таблице монтирования ядра, и ее текущее состояние всегда можно прочитать из /proc/mounts (или /proc/self/mountinfo, где деталей больше).
Команда mount исторически читала /etc/fstab и /etc/mtab. В 2026 mtab - это симлинк на /proc/self/mounts, то есть источник истины один - ядро. А вот /etc/fstab остается декларативным файлом: вы описываете, что и куда монтировать, а система применяет это при загрузке.
Ключевой момент инженерного уровня - как адресовать устройство. Имена вида /dev/sda2 нестабильны: добавили диск, поменяли порядок контроллеров - и sda стал sdb, система не загрузилась. Поэтому в проде устройства адресуют по UUID (уникальный идентификатор, который пишется внутрь самой ФС при ее создании) или по LABEL (человекочитаемая метка). UUID не зависит от того, в какой слот воткнут диск.
Под капотом systemd давно не читает fstab напрямую. На загрузке генератор systemd-fstab-generator превращает каждую строку fstab в полноценный .mount unit на лету. Поэтому fstab и systemd .mount - это два лица одного механизма, и опции вроде x-systemd.* пишутся прямо в поле опций fstab.
Команды и примеры
Разовое монтирование и просмотр:
Код: Выделить всё
mount /dev/sdb1 /mnt/data # примонтировать вручную
mount -o ro,noexec /dev/sdb1 /mnt # с опциями
umount /mnt/data # отмонтировать
findmnt # дерево монтирований, удобнее /proc/mounts
findmnt -T /home # какая ФС обслуживает путь
mount | column -t # все смонтированноеКод: Выделить всё
lsblk -f # дерево + FS, UUID, метки
blkid /dev/sdb1 # UUID, TYPE, PARTUUID
findmnt --real # без псевдо-ФСКод: Выделить всё
UUID=4f8a-... /data ext4 defaults,noatime,nodev,nosuid 0 2
LABEL=backup /backup xfs defaults,nofail 0 0
/swap.img none swap sw,pri=10 0 0Код: Выделить всё
mount -a # смонтировать все из fstab
systemctl daemon-reload # перечитать сгенерированные .mount
findmnt --verify # проверить fstab на ошибки- noatime - не писать время доступа при каждом чтении, ощутимо снижает износ и нагрузку (relatime - компромисс, чаще включен по умолчанию).
- nodev, nosuid, noexec - запрет устройств, suid-битов и запуска бинарников. Обязательны для разделов с данными и /tmp.
- nofail - не валить загрузку, если устройство недоступно (внешние диски, NAS).
- x-systemd.automount - смонтировать лениво, при первом обращении.
Код: Выделить всё
mkswap /swap.img && swapon --priority 10 /swap.img
swapon --show # активные области и приоритеты
swapoff -a # отключить весь свопКод: Выделить всё
systemd-mount /dev/sdb1 /mnt/usb # создает transient .mount
systemctl list-units --type=mount # все mount-юниты
systemctl status data.mount # имя юнита = экранированный путьbind-mount подвешивает существующий каталог в другое место (один и тот же набор inode виден дважды), а overlay объединяет нижний слой только для чтения и верхний для записи - это база контейнеров и live-систем:
Код: Выделить всё
mount --bind /srv/www /var/www # тот же каталог в двух точках
mount --rbind /srv /mnt # рекурсивно, с вложенными ФС
mount -t overlay overlay -o lowerdir=/base,upperdir=/up,workdir=/wk /merged- Прописали /dev/sdX в fstab, добавили диск - порядок имен поехал, система ушла в emergency mode. Лечится переходом на UUID и опцией nofail для некритичных томов.
- Отредактировали fstab, но забыли systemctl daemon-reload. systemd работает по старой сгенерированной версии, а ваши правки как будто игнорируются.
- umount пишет target is busy. Кто-то сидит в каталоге. Ищите процесс через lsof +D /mnt или fuser -vm /mnt, и только в крайнем случае umount -l (ленивый umount, отвязывает позже).
- Забыли nofail на внешнем NAS - при его недоступности загрузка зависает на минуту-полторы (таймаут юнита), а то и падает в аварийный режим.
- Своп в файле на Btrfs или на CoW-ФС без специальной подготовки ведет себя непредсказуемо - файл должен быть без сжатия и без CoW.
- noatime молча ломает софт, которому реально нужен atime (редкие почтовые агенты mbox). Это исключение, но знать о нем стоит.
- Путаница с экранированием имен .mount: пытаются systemctl start /data вместо data.mount.
- Создайте файл-образ под ФС: fallocate -l 1G /lab.img, затем mkfs.ext4 -L labvol /lab.img.
- Узнайте UUID образа через blkid и смонтируйте его вручную в /mnt/lab с опциями noatime,nosuid,nodev. Проверьте через findmnt.
- Пропишите его в /etc/fstab по UUID с опцией nofail, выполните mount -a и findmnt --verify.
- Сделайте автомонтирование: замените строку на x-systemd.automount, выполните daemon-reload, отмонтируйте и обратитесь к каталогу - убедитесь, что он смонтировался лениво.
- Создайте swap-файл на 256M, активируйте с приоритетом 5 и проверьте swapon --show.
- Сделайте bind-mount любого каталога в /mnt/bind и убедитесь, что изменения видны в обоих местах.
- Соберите overlay из двух каталогов (lower + upper) и проверьте, что запись уходит только в upperdir.
- Чем UUID отличается от PARTUUID и в каких случаях стоит использовать LABEL вместо UUID?
- Что произойдет при загрузке, если устройство из fstab без опции nofail окажется недоступным, и как это изменит systemd?
- Как из пути /var/log/audit получить имя соответствующего .mount unit и почему так?
- Зачем нужен daemon-reload после правки fstab и какой компонент systemd за это отвечает?
- Какие три опции монтирования усиливают безопасность раздела с пользовательскими данными и что именно каждая запрещает?
- Чем bind-mount отличается от overlay по числу слоев и по тому, куда уходит запись?