ServerAID
Найти гайд, команду, тег… ⌘ K
Файловые системы

/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

Самое содержательное поле. Через запятую перечисляются опции монтирования.

Базовые:

  • defaultsrw,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:

  1. Загрузитесь в recovery mode (в GRUB выбрать Advanced options for Ubunturecovery mode).
  2. В меню recovery выбрать root для root shell.
  3. Перемонтировать / в rw: mount -o remount,rw /.
  4. Поправить /etc/fstab через nano /etc/fstab.
  5. findmnt --verify.
  6. 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

  1. Размечаете и форматируете диск (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.

Похожие материалы

Файловые системы

btrfs снапшоты и subvolume на Ubuntu: откат системы за 5 секунд

btrfs делает снапшот тома за миллисекунды и без расхода места — это copy-on-write слепок, в который можно «вернуться» после неудачного `apt upgrade`. Разбираем разницу с ext4, как готовить разметку под subvolume, снимать снимки, откатываться и чистить старые на Ubuntu 24.04 LTS.

Редакция
Безопасность

Let's Encrypt и certbot на Ubuntu: бесплатный SSL для nginx

Let's Encrypt — бесплатные SSL/TLS-сертификаты для любого домена. На Ubuntu выпускаются через утилиту certbot одной командой; автообновление работает само через systemd-таймер. Разбираем установку, выпуск для nginx, DNS-challenge для wildcard-сертификатов и грабли с rate-limit.

Редакция
Shell и скрипты

sed на Linux: замена строк, правка in-place и регулярки

sed (stream editor) — стандартная команда Linux для построчной обработки текста: замена, удаление, печать строк по шаблону. Работает с потоком (pipe) или файлами, поддерживает in-place редактирование. Базовый инструмент шелл-скриптов после `grep` и `awk`.

Редакция
Shell и скрипты

wget на Linux: скачивание файлов, дозакачка и зеркало сайта

wget — стандартная утилита Linux для скачивания файлов по HTTP, HTTPS и FTP. Умеет дозакачивать прерванное, ходить рекурсивно по ссылкам, ограничивать скорость и работать без интерактива — поэтому это базовый инструмент скриптов установки, скачивания дистрибутивов и зеркалирования сайтов.

Редакция