Монтирование файловых систем [104.3]

Рейтинг: 62.3% · 11 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Монтирование файловых систем [104.3]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3] (вы здесь)
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3]
  34. Печать и CUPS [108.4]
  35. Основы интернет-протоколов [109.1]
  36. Постоянная конфигурация сети [109.2]
  37. Диагностика сети [109.3]
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 20. Монтирование файловых систем [104.3]

Диск с файловой системой сам по себе администратору бесполезен - чтобы прочитать или записать данные, его содержимое надо подключить в дерево каталогов. Этот процесс называется монтированием. В уроке разберём, как примонтировать и отключить раздел вручную, как настроить постоянное монтирование через /etc/fstab по стабильным идентификаторам, чем опасны опции noexec и nosuid, и как то же самое делает systemd через .mount и .automount юниты. Заодно научимся смотреть, что и куда смонтировано, через lsblk, findmnt и /proc/mounts.

Изображение

Как это работает

В Linux нет букв дисков. Есть одно общее дерево от корня /, и любое блочное устройство (раздел, LVM-том, образ) подключается в какую-то точку этого дерева - точку монтирования. Точка монтирования - это обычный существующий каталог; после монтирования его прежнее содержимое скрывается, и вы видите корень файловой системы устройства.

Ядро не работает с разделами напрямую как с папками. Оно через слой VFS (виртуальная файловая система) подключает драйвер нужного типа ФС (ext4, xfs, btrfs, vfat) и связывает его с каталогом. Таблица того, что куда смонтировано, живёт в ядре и видна через /proc/mounts (а точнее /proc/self/mountinfo с расширенными полями). Файл /etc/mtab в современных системах - это просто символическая ссылка на /proc/self/mounts, отдельной записи никто не ведёт.

Опции монтирования меняют поведение примонтированной ФС. ro делает её только для чтения. noexec запрещает запускать с неё бинарники, nosuid игнорирует биты SUID/SGID, nodev отключает обработку файлов устройств. Эти три опции - база защиты для разделов вроде /tmp и /home, куда пользователь может что-то записать. defaults - это сокращение для набора rw,suid,dev,exec,auto,nouser,async.

Главная проблема постоянного монтирования - имена устройств вроде /dev/sda2 не стабильны. Подключили второй диск, поменяли порядок инициализации контроллеров - и sda стал sdb, система не загрузилась. Поэтому в fstab монтируют не по имени, а по UUID (уникальный идентификатор, зашитый в саму ФС) или по метке LABEL. Эти идентификаторы привязаны к файловой системе, а не к порту, и не меняются при перестановке дисков.

systemd добавляет свой слой. Каждая строка в /etc/fstab при загрузке автоматически превращается в .mount юнит (генератором systemd-fstab-generator). Можно писать .mount юниты и руками, но удобнее остаётся fstab. Отдельная фишка - .automount: точка монтируется не сразу, а лениво, при первом обращении к каталогу. Это ускоряет загрузку и удобно для редко используемых сетевых или съёмных ресурсов.

Команды и примеры

Ручное монтирование и просмотр. Команды util-linux одинаковы в Debian/Ubuntu и RHEL/Fedora:

Код: Выделить всё

lsblk -f                       # дерево устройств с UUID, типом ФС, точками монтирования
mount /dev/sdb1 /mnt           # смонтировать с опциями по умолчанию
mount -o ro,noexec /dev/sdb1 /mnt
umount /mnt                    # отмонтировать (или umount /dev/sdb1)
findmnt /mnt                   # показать одну точку из ядра
findmnt --real                 # только реальные ФС, без псевдо (proc, sysfs)
cat /proc/mounts               # сырой список монтирований из ядра
Узнать UUID и метку перед записью в fstab:

Код: Выделить всё

lsblk -o NAME,FSTYPE,UUID,LABEL,MOUNTPOINT
blkid /dev/sdb1                # UUID="..." TYPE="ext4" ...
Запись в /etc/fstab. Шесть полей: устройство, точка, тип ФС, опции, dump, fsck-порядок (0 - не проверять, 1 - корень, 2 - остальные):

Код: Выделить всё

UUID=2f8b1c4a-...  /data   ext4  defaults,nosuid,nodev   0 2
LABEL=backup       /backup xfs   defaults,noexec         0 2
После правки fstab проверьте его, не перезагружаясь. Тут различие версий systemd: в современных дистрибутивах (Debian 13, Ubuntu 24.04, RHEL 10, Fedora 41+) надёжнее всего так:

Код: Выделить всё

systemctl daemon-reload        # перечитать fstab, сгенерить .mount юниты
mount -a                       # смонтировать всё с auto, что ещё не смонтировано
findmnt --verify               # синтаксическая проверка fstab без монтирования
Ленивое размонтирование, когда обычный umount ругается target is busy:

Код: Выделить всё

umount -l /mnt                 # lazy: отвязать от дерева сейчас, освободить позже
lsof +D /mnt                   # кто держит каталог открытым
fuser -vm /mnt                 # процессы, использующие ФС
systemd-маршрут. Имя юнита кодирует путь: /data -> data.mount. Файл /etc/systemd/system/data.mount:

Код: Выделить всё

[Unit]
Description=Data volume

[Mount]
What=/dev/disk/by-uuid/2f8b1c4a-...
Where=/data
Type=ext4
Options=nosuid,nodev

[Install]
WantedBy=multi-user.target
Автомонтирование тем же systemd - создаём data.automount и включаем его вместо .mount:

Код: Выделить всё

systemctl enable --now data.automount
systemd-mount --automount=yes /dev/sdb1 /mnt   # разовое ленивое монтирование
Частые грабли
  • Точка монтирования была непустой - старые файлы в каталоге никуда не делись, они просто скрыты под смонтированной ФС и снова появятся после umount. Перед монтированием убедитесь, что каталог пуст.
  • В fstab указали /dev/sda2, добавили диск, имя сдвинулось - система не грузится. Всегда UUID или LABEL.
  • Опечатка в fstab valит загрузку в emergency mode. Перед reboot обязательно findmnt --verify и mount -a.
  • Поставили noexec на /tmp и сломали установщики (многие распаковывают и запускают скрипты из /tmp), или DNF/APT-хуки. Проверяйте, что именно запускается из раздела.
  • umount -l кажется волшебством, но ФС не размонтируется по-настоящему, пока процессы держат файлы. На блочном устройстве это мешает безопасно его извлечь - сначала закройте процессы.
  • Правили fstab, а .mount юнит не обновился - забыли systemctl daemon-reload.
  • nofail забыли для съёмного или сетевого диска - его отсутствие при загрузке роняет систему в аварийный режим.
Мини-лаба
  • Создайте файл-образ: dd if=/dev/zero of=/root/disk.img bs=1M count=200, затем mkfs.ext4 -L LAB /root/disk.img.
  • Узнайте его UUID через blkid (для loop-файла используйте losetup или сразу монтируйте файл).
  • Создайте каталог /mnt/lab и смонтируйте образ с опциями ro,noexec, проверьте через findmnt и попробуйте записать файл - получите отказ.
  • Перемонтируйте в rw: mount -o remount,rw,noexec /mnt/lab. Скопируйте туда скрипт, сделайте chmod +x, попробуйте запустить - убедитесь, что noexec блокирует.
  • Добавьте строку в /etc/fstab по LABEL=LAB с опцией nofail, выполните systemctl daemon-reload и findmnt --verify.
  • Отмонтируйте, затем mount -a и проверьте, что строка из fstab сработала.
  • Откройте файл на ФС (less), в другом терминале сделайте umount - получите busy, затем umount -l и посмотрите поведение.
Контрольные вопросы
  • Чем UUID в fstab надёжнее имени /dev/sdb1 и где взять этот UUID?
  • Что произойдёт со старым содержимым каталога, если смонтировать в него файловую систему?
  • Какие три опции монтирования усиливают безопасность раздела с пользовательскими данными и что делает каждая?
  • Назовите шесть полей строки /etc/fstab по порядку и смысл последнего поля.
  • Чем отличается обычный umount от umount -l и когда ленивое размонтирование опасно?
  • Как .automount юнит systemd экономит время загрузки и чем он отличается от .mount?
👍2 ❤️6 🔥2 😄 🤔2
Аватара пользователя
KotlinAdmin
Сообщения: 1
Зарегистрирован: 15 май 2026, 06:01

Re: Монтирование файловых систем [104.3]

Сообщение KotlinAdmin »

А если у меня LVM-том, UUID берётся с самой ФС внутри тома или с устройства lvm? Путаюсь где blkid его показывает
👍 ❤️ 🔥 😄 🤔2
Аватара пользователя
kydelka
Сообщения: 1
Зарегистрирован: 24 май 2026, 14:45

Re: Монтирование файловых систем [104.3]

Сообщение kydelka »

Поставил noexec на /tmp и dnf-обновление отвалилось на хуках, полдня ловил. Теперь сначала смотрю что из раздела реально стартует
👍 ❤️2 🔥1 😄 🤔
Ответить
← Предыдущая глава
Целостность и обслуживание ФС [104.2]
Следующая глава →
Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость