/etc/fstab на Linux: монтирование дисков, разделов и swap при загрузке
`/etc/fstab` — главный конфиг точек монтирования в Linux. Описывает, какие разделы и где монтируются при загрузке. Разбираем формат файла, выбор между UUID/LABEL/`/dev/sdaX`, опции `noatime`/`nofail`, swap-запись, NFS и проверку без перезагрузки. На Ubuntu 24.04 этот файл управляет всем — от корня системы до сетевых шар.
/etc/fstab: подключаем диски и разделы при загрузке Ubuntu
/etc/fstab — главный конфиг точек монтирования в Linux. Описывает, какие разделы и где монтируются при загрузке. Разбираем формат файла, выбор между UUID/LABEL//dev/sdaX, опции noatime/nofail, swap-запись, NFS и проверку без перезагрузки. На Ubuntu 24.04 этот файл управляет всем — от корня системы до сетевых шар.
Что делает /etc/fstab
При загрузке systemd читает /etc/fstab, парсит каждую строку и монтирует указанные устройства в указанные точки. Это «декларативная» альтернатива ручному mount — раз настроили, и при каждом ребуте всё поднимется само.
Строка fstab состоит из 6 полей через пробел или табуляцию:
<device> <mount-point> <fs-type> <options> <dump> <pass>
Пример типичного fstab на Ubuntu Server 24.04 с LVM:
# /etc/fstab
UUID=12345678-... / ext4 defaults,noatime 0 1
UUID=87654321-... /boot ext4 defaults 0 2
UUID=AAAA-BBBB /boot/efi vfat defaults 0 1
/swap.img none swap sw 0 0
UUID=99887766-... /var/log ext4 defaults,noatime 0 2
backup:/data /mnt/backup nfs defaults,_netdev,noauto,x-systemd.automount 0 0
Каждое поле подробно — ниже.
Поле 1: device
Что монтируем. Варианты:
UUID=...— рекомендованный способ. Уникальный идентификатор файловой системы; не меняется при перезагрузке, переименовании дисков, перестановке кабелей. Получить —sudo blkid /dev/sda1.LABEL=...— метка раздела, если её задали при создании. Удобно читать, но требует уникальности и поддержки от ФС./dev/sda1— прямой путь. Хрупко: при добавлении нового диска или замене SATA-портов может смениться имя.PARTUUID=...— UUID самого раздела (а не ФС). Стабильнее/dev/sda1, но менее популярен; полезен для btrfs и других ФС, охватывающих несколько разделов./dev/disk/by-label/<name>,/dev/disk/by-uuid/<uuid>— то же, что LABEL/UUID, но через путь в файловой системе. Иногда удобно для скриптов.
Стандарт для Ubuntu — UUID=. Не используйте /dev/sdaN в продовом fstab.
Поле 2: mount-point
Куда монтируем. Например, /, /home, /mnt/data. Каталог должен существовать (или будет создан, если опция x-systemd.makefs или системой).
Для swap пишут none или swap — это не «куда», а формальное место в синтаксисе.
Поле 3: fs-type
Тип файловой системы. Самые частые:
ext4— стандарт для Ubuntu, классика.xfs— для серверов с большими файлами и базами данных.btrfs— современная COW-ФС со снапшотами. См. btrfs снапшоты и subvolume.vfat— для EFI-раздела (/boot/efi).swap— swap-раздел или файл. См. swap.nfs— сетевая ФС.cifs— Samba (Windows-шары).tmpfs— RAM-диск.auto— пусть ядро определит само (используется для съёмных носителей).
Поле 4: options
Самое содержательное поле. Через запятую перечисляются опции монтирования.
Базовые:
defaults—rw,suid,dev,exec,auto,nouser,async. Стандартный набор для системных разделов.ro/rw— read-only / read-write.noatime— не обновлять время доступа при чтении. Снижает write-нагрузку на 5–20%, особенно полезно для SSD.relatime— компромисс: atime обновляется только если меньше mtime. По умолчанию на современной Ubuntu.exec/noexec— разрешено / запрещено выполнение бинарей.noexecставят на/tmpи/var/tmpдля безопасности.suid/nosuid— SUID-биты учитываются / игнорируются.nosuid— стандарт для съёмных носителей.
Для отказоустойчивости:
nofail— если устройство недоступно, пропустить и не блокировать загрузку. Обязательно для съёмных дисков и NFS.x-systemd.device-timeout=10— сколько ждать появления устройства (по умолчанию 90 сек).
Для NFS / сетевых ФС:
_netdev— устройство — сетевое; монтировать после поднятия сети.x-systemd.automount— лениво монтировать при первом обращении, не сразу при загрузке.soft— отдавать ошибку при недоступности сервера (вместо бесконечного ожиданияhard).
Для btrfs:
compress=zstd:3— прозрачное сжатие.subvol=@— конкретный subvolume.ssd— оптимизация под SSD.
Для swap:
sw— единственный валидный вариант для swap.pri=10— приоритет (если swap на нескольких устройствах).
Поле 5: dump
Бинарный флаг для устаревшей утилиты dump (бэкап ext-разделов). На современной Ubuntu всегда 0 — никто им не пользуется.
Поле 6: pass
Порядок проверки fsck при загрузке:
0— не проверять.1— проверить первой (только корень).2— проверить после корня (обычные ФС).
Для swap, NFS, tmpfs ставьте 0. Для корня — 1. Для остальных локальных — 2.
Получаем UUID
Перед добавлением записи в fstab узнаём UUID:
sudo blkid
# /dev/sda1: UUID="12345678-1234-1234-1234-123456789abc" TYPE="ext4"
# Или конкретного устройства:
sudo blkid /dev/sda1
Альтернативно — lsblk -f (показывает UUID и тип). Или findmnt --real для уже смонтированных.
Типовые сценарии
1. Подключаем второй диск с ext4.
Сначала размечаем и форматируем:
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%
sudo mkfs.ext4 -L data /dev/sdb1
Берём UUID:
sudo blkid /dev/sdb1
# UUID="aaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
Создаём точку монтирования и добавляем в fstab:
sudo mkdir /mnt/data
echo 'UUID=aaaa-bbbb-cccc-dddd-eeeeeeeeeeee /mnt/data ext4 defaults,noatime 0 2' | sudo tee -a /etc/fstab
sudo mount -a
mount -a смонтирует всё, что описано в fstab, но ещё не смонтировано. Перезагрузка не нужна.
2. Подключаем NFS-шару.
backup-server:/srv/backups /mnt/backup nfs defaults,_netdev,nofail,x-systemd.automount 0 0
Опции: _netdev — сеть; nofail — не падать при недоступности; x-systemd.automount — лениво монтировать при первом обращении.
Установка клиента: sudo apt install -y nfs-common.
3. Монтируем swap-файл.
Файл создаётся и инициализируется через fallocate + mkswap:
sudo fallocate -l 4G /swap.img
sudo chmod 600 /swap.img
sudo mkswap /swap.img
В fstab:
/swap.img none swap sw 0 0
Активация без перезагрузки:
sudo swapon -a
Подробно про swap — глоссарий swap.
4. Подключаем btrfs-том со сжатием.
UUID=12345678-... /mnt/data btrfs defaults,compress=zstd:3,noatime 0 0
pass=0 для btrfs — fsck не используется (btrfs делает scrub).
5. tmpfs для /tmp (опционально, ускоряет работу).
tmpfs /tmp tmpfs defaults,nosuid,noexec,nodev,size=2G 0 0
size=2G ограничит размер; без ограничения tmpfs может съесть всю RAM. Не делайте этого, если в /tmp обрабатываются большие файлы (некоторые сборки, archivers).
Тестируем без перезагрузки
После правки fstab всегда проверяйте до ребута. Если в fstab опечатка, система не загрузится и вылетит в emergency mode.
# 1. Синтаксис
sudo findmnt --verify
# 2. Применить новые записи (если устройство подключено)
sudo mount -a
# 3. Перезагрузить systemd-mount-юниты (свежий fstab требует daemon-reload)
sudo systemctl daemon-reload
# 4. Проверить что всё смонтировано
findmnt
df -h
findmnt --verify найдёт большинство проблем: неверные UUID, несуществующие каталоги, конфликтующие опции. Это обязательная команда после редактирования.
Если в строке ошибка и mount -a падает — поправьте, иначе при ребуте система может уйти в recovery. Для критических разделов (например, нового диска под /var) комбинируйте с nofail, чтобы при сбое система всё равно загрузилась.
Грабли fstab
- Опечатка → система не грузится. Всегда
findmnt --verifyпосле правки. - Хардкод
/dev/sdaN. При добавлении диска порядок имён может смениться — система не загрузится. Используйте UUID. - NFS без
_netdev. При загрузке system попытается смонтировать NFS до поднятия сети — таймаут на 90 сек. Всегда_netdev+nofailдля сетевых ФС. - Забыл
noatimeна SSD. Не критично, но дополнительная write-нагрузка на ровном месте. execна/tmp. Многие эксплойты пытаются выполнить бинарь из/tmp. Ставьтеnosuid,noexec,nodev— это hardening-стандарт.- systemd не подхватил изменения. После правки fstab делайте
sudo systemctl daemon-reload. Иначе systemd считает старую конфигурацию.
Восстановление при сломанном fstab
Если система не грузится из-за fstab:
- Загрузитесь в recovery mode (в GRUB выбрать
Advanced options for Ubuntu→recovery mode). - В меню recovery выбрать
rootдля root shell. - Перемонтировать
/в rw:mount -o remount,rw /. - Поправить
/etc/fstabчерезnano /etc/fstab. findmnt --verify.reboot.
Альтернатива — загрузиться с live-USB Ubuntu, смонтировать корневой раздел, поправить fstab.
Частые вопросы
Что такое /etc/fstab в Linux
Конфигурационный файл, описывающий какие устройства и где монтируются при загрузке системы. Каждая строка — одно устройство в формате «device mount-point fs-type options dump pass». systemd читает fstab при загрузке и поднимает все указанные точки монтирования.
Чем отличаются UUID, LABEL и /dev/sda1 в fstab
UUID — уникальный идентификатор файловой системы, не меняется при перестановке дисков. LABEL — человекочитаемая метка ФС, тоже устойчива. /dev/sda1 — путь к разделу, может смениться при добавлении новых дисков. Для прода используйте UUID.
Как добавить новый диск в fstab
- Размечаете и форматируете диск (
mkfs.ext4 /dev/sdb1). 2) Узнаёте UUID черезsudo blkid /dev/sdb1. 3) Создаёте точку монтирования (sudo mkdir /mnt/data). 4) Добавляете строку в/etc/fstabс UUID, точкой и нужными опциями. 5)sudo mount -aдля применения без перезагрузки.
Как проверить fstab без перезагрузки
sudo findmnt --verify — проверит синтаксис всех записей. Затем sudo mount -a — применит новые точки монтирования без перезагрузки. Если оба прошли — конфигурация корректна. Перезагрузка нужна только для разделов, которые были смонтированы старыми опциями.
Что значат поля dump и pass в fstab
dump — флаг для устаревшей утилиты резервного копирования, всегда 0 на современной Ubuntu. pass — порядок проверки fsck при загрузке: 1 для корня, 2 для остальных локальных разделов, 0 для swap, NFS, tmpfs.
Какие опции fstab нужны для NFS
_netdev (монтировать после сети), nofail (не блокировать загрузку при недоступности сервера), x-systemd.automount (лениво монтировать при первом обращении). Без _netdev система может подвиснуть на 90 сек при загрузке, ожидая NFS-сервер до поднятия сети.
Можно ли в fstab монтировать swap-файл
Да. Строка вида /swapfile none swap sw 0 0. Перед этим файл должен быть создан и инициализирован: sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile. После правки fstab — sudo swapon -a для активации.
Что запомнить
- 6 полей: device, mount-point, fs-type, options, dump (всегда 0), pass (1 для
/, 2 для остальных). - Используйте UUID, не
/dev/sdaN. Стабильность при добавлении дисков критична. - На SSD — добавляйте
noatimeк ext4/xfs/btrfs. Снижает write-нагрузку. - Для сетевых ФС —
_netdev,nofail,x-systemd.automount. Иначе ребут может зависнуть на минуту. sudo findmnt --verifyпосле каждой правки. Опечатка в fstab = система не загружается.- Если что-то сломалось — recovery-mode →
mount -o remount,rw /→ правка →findmnt --verify.
Обложка: фото Marc PEZIN с Unsplash, лицензия Unsplash.