LinuxRuLinux без лишней теории
Диски и разделы

Монтирование дисков в Linux: от mount до автомонтирования в fstab

Редакция LinuxRu7 мин чтенияИнструкции

Монтирование диска в Linux подключает раздел к каталогу: разово это делает команда mount, а при каждой загрузке - строка в /etc/fstab с UUID раздела. Для NTFS, внешних и сетевых дисков в fstab добавляют nofail, чтобы отсутствие устройства не останавливало загрузку.

Монтирование дисков в Linux: от mount до автомонтирования в fstab
Фото: Editor182 ( talk ), Public domain, Wikimedia Commons
Содержание
  1. Как это устроено
  2. mount вручную
  3. Формат fstab
  4. Второй диск
  5. NTFS и exFAT
  6. Сетевые диски
  7. Аварийный режим
  8. Юниты systemd
  9. Частые вопросы

Что значит смонтировать диск

В Linux нет букв дисков. Есть одно дерево каталогов от корня /, и любой раздел, флешка или сетевая папка подключается к нему в какой-то каталог, точку монтирования. Пока раздел не смонтирован, его файлов в системе просто не видно, даже если диск исправен и определился.

Рабочие окружения GNOME и KDE монтируют флешки и внешние диски сами, через udisks2, в каталог вида /run/media/имя/МЕТКА или /media/имя/МЕТКА. Это удобно, но работает только после входа в сессию и только для съёмных устройств. Второй внутренний диск, раздел с играми или сетевое хранилище, которые нужны сразу после загрузки, прописывают в /etc/fstab.

Сначала посмотрите, что вообще есть в системе. Команда lsblk -f покажет диски, разделы, файловые системы, UUID и текущие точки монтирования. Разбор вывода этой и соседних утилит есть в статье как посмотреть диски и разделы.

lsblk -f
sudo blkid /dev/sdb1
findmnt

Ручное монтирование командой mount

Точка монтирования это обычный пустой каталог. Для постоянных дисков принято использовать /mnt или отдельный каталог вроде /data, для разового подключения подойдёт любой.

sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
# с явным типом и опциями
sudo mount -t ext4 -o noatime /dev/sdb1 /mnt/data
# только для чтения, если диск под подозрением
sudo mount -o ro /dev/sdb1 /mnt/data

Тип файловой системы mount обычно определяет сам. Отключается раздел командой umount (именно так, без буквы n). Если в ответ приходит target is busy, значит, какой-то процесс держит файл или стоит в этом каталоге терминалом.

sudo umount /mnt/data
# кто держит раздел
sudo fuser -vm /mnt/data
sudo lsof +f -- /mnt/data

Закройте найденную программу или выйдите из каталога командой cd. Ключ umount -l отключает раздел отложенно, когда освободится, но для внешнего диска лучше дождаться честного размонтирования: так все данные точно запишутся.

Файл /etc/fstab: шесть полей одной строки

Каждая строка fstab описывает один раздел. Поля разделяются пробелами или табуляцией:

# устройство                               точка       тип   опции            dump pass
UUID=3f1c9a52-7e0b-4d8e-9c21-5a6b7c8d9e0f  /mnt/data   ext4  defaults,noatime  0    2
  1. Устройство. Указывайте UUID= или LABEL=, а не /dev/sdb1. Имена sdX раздаются в порядке обнаружения и могут поменяться, когда вы подключите ещё один диск.
  2. Точка монтирования. Каталог должен существовать.
  3. Тип. ext4, btrfs, xfs, vfat, exfat, ntfs3, cifs, nfs4 и так далее.
  4. Опции. Через запятую, без пробелов.
  5. dump. Устаревшее поле, ставьте 0.
  6. pass. Порядок проверки fsck при загрузке: 1 для корня, 2 для остальных Linux-разделов, 0 для NTFS, FAT и сетевых ресурсов.

Опции, которые нужны чаще всего

ОпцияЧто делаетКогда ставить
defaultsНабор по умолчанию: rw, suid, dev, exec, auto, nouser, asyncОснова для внутренних дисков
nofailНе останавливать загрузку, если устройства нетВсегда для внешних и второстепенных дисков
noatimeНе записывать время последнего чтенияSSD и диски с большим числом мелких файлов
noautoНе монтировать при загрузке, только по командеРезервный диск, который включаете вручную
user / usersРазрешить монтирование обычному пользователюСъёмные носители в fstab
x-systemd.automountМонтировать при первом обращении к каталогуСетевые ресурсы и медленные диски
x-systemd.device-timeout=10sСколько ждать появления устройстваВместе с nofail, чтобы загрузка не висела 90 секунд
_netdevРесурс сетевой, монтировать после поднятия сетиCIFS, NFS, iSCSI
uid=, gid=, umask=Владелец и права для ФС без прав UnixNTFS, FAT32, exFAT, CIFS

Полное описание полей есть в статье fstab на ArchWiki и в man 5 fstab.

Автомонтирование второго диска: порядок действий

Ошибка в fstab может отправить систему в аварийный режим при следующей загрузке, поэтому действуйте по шагам и проверяйте до перезагрузки.

# 1. копия текущего файла
sudo cp /etc/fstab /etc/fstab.bak
# 2. UUID нужного раздела
lsblk -f
# 3. точка монтирования
sudo mkdir -p /mnt/data
# 4. правка
sudo nano /etc/fstab

Добавьте строку в конец файла, подставив свой UUID:

UUID=3f1c9a52-7e0b-4d8e-9c21-5a6b7c8d9e0f  /mnt/data  ext4  defaults,noatime,nofail  0  2

Теперь проверка. findmnt --verify разбирает fstab и сообщает о неизвестных типах, несуществующих каталогах и опечатках в UUID. Затем перечитайте конфигурацию systemd и смонтируйте всё, что ещё не смонтировано:

sudo findmnt --verify
sudo systemctl daemon-reload
sudo mount -a
findmnt /mnt/data

Если mount -a отработал молча и findmnt показывает раздел, можно перезагружаться. Свежий раздел ext4 принадлежит root, поэтому для своих файлов выдайте себе права командой sudo chown $USER: /mnt/data. Подробнее о владельцах и режимах в статье про chmod и chown.

Как смонтировать NTFS и exFAT от Windows

С NTFS в Linux работают два драйвера. ntfs3 встроен в ядро начиная с версии 5.15 и обычно быстрее. ntfs-3g работает через FUSE, существует давно и терпимее к повреждённым томам. В fstab тип указывается явно, так что выбор за вами.

# драйвер ядра
UUID=1A2B3C4D5E6F7788  /mnt/win  ntfs3     uid=1000,gid=1000,umask=022,windows_names,nofail  0  0
# драйвер FUSE (пакет ntfs-3g)
UUID=1A2B3C4D5E6F7788  /mnt/win  ntfs-3g   uid=1000,gid=1000,umask=022,windows_names,nofail  0  0

Свои uid и gid покажет команда id, у первого пользователя это обычно 1000. Опция windows_names запрещает создавать файлы с символами, недопустимыми в Windows, чтобы потом не ловить ошибки на стороне Windows.

Диск не монтируется или только для чтения

Почти всегда причина в Windows: быстрый запуск и гибернация оставляют том в "грязном" состоянии. Драйвер ntfs3 такой том не смонтирует на запись. Правильное решение: загрузиться в Windows, отключить быстрый запуск в настройках электропитания и выключить компьютер полностью. В крайнем случае помогает sudo ntfsfix -d /dev/sdb2 из пакета ntfs-3g, но это сбрасывает флаг, а не чинит файловую систему: при реальных ошибках запустите chkdsk из Windows.

exFAT, типичный для флешек и SD-карт, поддерживается ядром. Строка в fstab выглядит так же, тип exfat, опции uid, gid и umask. Если нужно переформатировать носитель под другую ФС, загляните в инструкцию по форматированию дисков и флешек.

Сетевые папки SMB и NFS в fstab

Сетевой ресурс монтируется как обычный, но с двумя особенностями: сеть поднимается позже дисков, а пароль нельзя оставлять в открытом fstab.

SMB (Windows, NAS, Samba)

Нужен пакет cifs-utils: sudo apt install cifs-utils, sudo dnf install cifs-utils или sudo pacman -S cifs-utils. Учётные данные держите в отдельном файле, доступном только root:

sudo nano /etc/samba/cred-nas
# содержимое файла:
# username=ivan
# password=секрет
sudo chmod 600 /etc/samba/cred-nas
//192.168.1.10/share  /mnt/nas  cifs  credentials=/etc/samba/cred-nas,uid=1000,gid=1000,iocharset=utf8,_netdev,nofail,x-systemd.automount  0  0

С x-systemd.automount ресурс подключится при первом обращении к /mnt/nas, и загрузка не будет ждать сеть. Как поднять такую папку на своём Linux-компьютере, описано в статье про общую папку Samba.

NFS

Клиент ставится пакетом nfs-common в Debian и Ubuntu, nfs-utils в Fedora и Arch.

192.168.1.10:/srv/export  /mnt/nfs  nfs4  _netdev,nofail,x-systemd.automount  0  0

Система не загружается после правки fstab

Если при загрузке появилось сообщение You are in emergency mode, systemd не смог смонтировать что-то из fstab и без nofail остановился. Это лечится за пару минут.

  1. Введите пароль root. В Ubuntu root по умолчанию заблокирован, и консоль может не открыться, тогда сразу переходите к пункту 4.
  2. Посмотрите, что именно не смонтировалось: journalctl -xb | grep -i mount.
  3. Корень в аварийном режиме может быть только для чтения. Перемонтируйте его и верните копию файла:
    mount -o remount,rw /
    cp /etc/fstab.bak /etc/fstab
    systemctl daemon-reload
    reboot
  4. Если до консоли не добраться, загрузитесь с Live USB, смонтируйте корневой раздел и исправьте etc/fstab на нём любым редактором.

Привычка, которая экономит нервы: любой диск, без которого система может жить, получает в fstab nofail и x-systemd.device-timeout=10s. Тогда отключённый внешний диск или упавший NAS стоят вам десяти секунд при загрузке, а не аварийной консоли.

Альтернатива fstab: юниты .mount и .automount

Под капотом systemd всё равно превращает каждую строку fstab в юнит .mount. Можно писать такие юниты сами, это удобно, когда монтирование зависит от других служб. Имя файла должно повторять путь: для /mnt/data это mnt-data.mount.

# /etc/systemd/system/mnt-data.mount
[Unit]
Description=Data disk

[Mount]
What=/dev/disk/by-uuid/3f1c9a52-7e0b-4d8e-9c21-5a6b7c8d9e0f
Where=/mnt/data
Type=ext4
Options=defaults,noatime

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mnt-data.mount
systemctl status mnt-data.mount

Для большинства домашних задач fstab проще и понятнее. Юниты берите, если монтирование нужно запускать и останавливать вместе со службой или отслеживать его статус. Общие приёмы работы с юнитами есть в статье про systemctl.

Частые вопросы

Почему в fstab лучше UUID, а не /dev/sdb1?

Имена sdX назначаются в порядке обнаружения дисков и меняются при подключении нового накопителя или смене порта. UUID записан в самой файловой системе и остаётся тем же.

Как проверить fstab без перезагрузки?

Выполните sudo findmnt --verify, затем sudo systemctl daemon-reload и sudo mount -a. Если ошибок нет и findmnt показывает раздел, перезагрузка пройдёт нормально.

NTFS монтируется только для чтения, что делать?

Отключите в Windows быстрый запуск и гибернацию, полностью выключите компьютер из Windows. Если том повреждён, проверьте его chkdsk в Windows, ntfsfix только сбрасывает флаг.

Что выбрать для NTFS: ntfs3 или ntfs-3g?

Начните с ntfs3, он в ядре и быстрее. Если на вашем диске возникают ошибки записи или проблемы с правами, попробуйте ntfs-3g с теми же опциями uid, gid и umask.

Как монтировать сетевую папку без пароля в fstab?

Вынесите логин и пароль в файл, например /etc/samba/cred-nas, поставьте ему права 600 и укажите в опциях credentials=путь.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.