Автоматическое монтирование разделов с помощью fstab

В процессе работы с операционной системой (ОС) пользователю нередко приходится подключать различные устройства хранения. Это могут быть жёсткие диски (переносные или с другого компьютера), Flash/M2-накопители, приводы оптических дисков и т. д. Некоторые такие устройства подключаются (в Linux монтируются) вручную, а некоторые — автоматически. Чаще всего те устройства, которые необходимо подключать автоматически, определяются ещё на этапе установки системы. Однако, нередко нужно настроить возможность автоматического монтирования в Linux вновь добавленного устройства, например диска для хранения регулярно создаваемых резервных копий. В этом случае необходимо сделать некоторые изменения в конфигурационных файлах. Это позволит системе инициализации начальной загрузки системы «узнать» об автоматически монтируемых устройствах.

Немного о том, как происходит монтирование

Монтирование файловой системы — это один из обязательных этапов начальной загрузки Linux. Монтирование необходимо для того, чтобы собрать файловую систему (ФС) из отдельных её компонентов в единое дерево каталогов, имеющее один корень. В Linux нет понятия «диск» как такового. Это физический уровень, отображаемый в общее дерево файловой системы через другие файловые системы, связанные, например, с разделами дисков и подключаемые через точки монтирования.

Например, один из разделов устройства хранения (диска) может быть смонтирован как «/home». Эта запись обозначает точку монтирования ФС с домашними каталогами пользователей системы. Здесь символ «/» указывает, что к общему корню (к корневой ФС) подключена другая ФС с именем «home». А она в свою очередь привязана к какому-либо из разделов на устройстве хранения.

Монтирование в Linux выполняет команда mount. Она вызывается системой инициализации (такой например, как Systemd), но также широко используется для ручного подключения устройств.

Конфигурационным файлом, хранящим настройки подключения устройств является /etc/fstab. Система инициализации при запуске системы обращается к этому файлу, чтобы смонтировать ФС согласно указанным в нём настройкам. Содержимое файла /etc/fstab – это список текстовых строк, каждой из которых соответствует раздел на устройстве, который необходимо примонтировать с определёнными параметрами, указанными в этой строке. Правила записи этих строк соответствуют определённому (и несложному) синтаксису.

Синтаксис записей в файле fstab

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

устройство точка_монтирования тип_фс опции резерв очередь_проверки

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

UUID=7dac48f7-9891-4e5d-abe9-1332d860183e /opt ext4 defaults 0 2

Самым сложным для восприятия компонентом в такой записи является «устройство», поскольку представляет собой целое выражение. В данном случае это «UUID=7dac48f7-9891-4e5d-abe9-1332d860183e», что означает ничто иное как идентификатор устройства (UUID) в системе, который понятен ядру. Далее следуют:

  • /opt – точка монтирования, которая задаётся «ветвью» — т. е. дополнительной ФС, включаемой в корневую ФС и кроме /opt, конечно же могут быть и другие — /home, /var, /etc и т. д.;
  • ext4 – тип файловой системы, в качестве которой могут быть любые другие — ext2, ext4, btrfs и т. д.;
  • defaults – опции монтирования ФС устройства по умолчанию;
  • 0 — создание резервной копии раздела отключено, для включения необходимо указывать 1;
  • 2 — проверка устройства на наличие ошибок во вторую очередь (0 — отключено), для первой и третьей необходимо указывать 1 и 3 соответственно и т. д.

Важно заметить, что в Linux в качестве идентификатора устройства может выступать как UUID (универсальный идентификатор устройства), так и имя устройства, например /dev/sda, /dev/sdb1 и т. д. Рекомендуется использовать именно UUID, поскольку этот идентификатор является по-настоящему уникальным и жестко привязан к конкретному устройству. А вот одно имя устройства может соответствовать разным устройствам, хотя и не одновременно, но всё же необходимо иметь это ввиду во избежание конфликтов и путаницы при обновлении/изменении конфигурации системы и/или подключении/отключении новых устройств. Узнать UUID для зарегистрированных в системе устройств (соответственно их наименованиям) позволяет команда blkid, выполненная от имени суперпользователя:

$ sudo blkid

Стоит уделить особое внимание опциям монтирования устройств, поскольку их набор довольно разнообразен и позволяет довольно гибко задавать различные режимы подключения и работы устройств. В следующей таблице приведены наиболее часто используемые из них:

Опции fstab

Опция Значение
exec Разрешает запускать исполняемые файлы.
noexec Запрещает запускать исполняемые файлы.
auto Автоматическое монтирование раздела устройства при старте системы.
noauto Запретить автоматическое монтирование раздела устройства при старте системы.
rw Разрешить чтение/запись.
ro Разрешить только чтение.
nouser Не разрешать обычным пользователям выполнять монтирование/демонтирование устройств.
user Разрешить обычным пользователям выполнять монтирование/демонтирование устройств.
sw (swap) Разрешить подкачку для раздела.
async Включить асинхронный ввод/вывод. При этом действия с разделом (копирование, удаление и т. д.) будут происходить не сразу по команде, а в определённое время, чуть позже, по усмотрению системы. Данная опция используется для оптимизации/распределения нагрузки.
sync Включить синхронный ввод/вывод.
suid Разрешить работу SUID и SGID битов.
nosuid Запретить  работу SUID и SGID битов.
iocharset=koi8-r

codepage=866

Включить поддержку кодировки KOI8-R для названий файлов и каталогов.
errors=remount-ro При возникновении ошибок выполнять перемонтирование с опцией ro.
notail Запретить хранить небольшие по объёму файлы в конце больших. Используется для повышения производительности.
atime Выполнять запись времени последнего доступа к файлу.
noatime Отключить запись времени последнего доступа к файлу. Не рекомендуется использовать, поскольку многим приложениям для корректной работы эти данные необходимы. Следует использовать эту опцию только для разделов, для которых не предусматривается проверка времени последнего доступа к файлам и необходимо существенно увеличить производительность работы с диском.
relatime Включить «лояльный» режим записи времени последнего доступа к файлу. Запись будет производиться только если предыдущее время доступа является более ранним, чем текущее время изменения файла.
defaults Включить все оптимальные параметры по-умолчанию: exec, auto, rw, nouser, async, nosuid, atime.

Также следует подробнее рассмотреть типы ФС, используемых при монтировании. Нужно представлять, для каких типов устройств можно использовать тот или тип ФС. Например:
Жесткие диски:

  • NTFS;
  • XFS;
  • FAT32;
  • VFAT;
  • EXT2/EXT3/EXT4.

Приводы CD/DVD:

  • UDF;
  • ISO9669
  • auto – может распознаваться автоматически.

Накопитель USB-Flash:

  • VFAT;
  • FAT32;
  • NTFS;
  • auto.

Следует отметить, что не смотря на то, что все вышеперечисленные параметры приводятся в стандартном написании, т. е. заглавными символами, однако записывать их непосредственно в строке монтирования необходимо строчными символами.

Примеры

Пусть требуется сконфигурировать автоматическое монтирование какого-либо раздела. Для начала необходимо определить нужный раздел, а также его UUID:

$ sudo blkid
[sudo] пароль для john:
/dev/sda1: UUID="134E-F80E" TYPE="vfat" PARTUUID="b0989448-c545"
/dev/sda2: UUID="28902d2c-2394" TYPE="ext4" PARTUUID="e304a808-1396"
. . .
/dev/sda5: UUID="7dac48f7-9891" TYPE="ext4" PARTUUID="b51a40c0-0bd5"
/dev/sdb1: UUID="af882c18-2cd4" TYPE="ext4" PARTUUID="81a8460d-1ce7"
/dev/sdb2: UUID="f300901f-1ce7" TYPE="ext4" PARTUUID="a0cf995f-b63c"

Если нужен, к примеру раздел /dev/sdb1, то соответствующим UUID является «af882c18-2cd4». Далее следует открыть файл /etc/fstab в текстовом редакторе (например nano) от имени суперпользователя

$ sudo nano /etc/fstab

и добавить в него строку конфигурации для требуемого раздела, внеся в неё параметры и опции в соответствии с синтаксисом из предыдущей главы, например такие:

UUID= af882c18-2cd4 /home/backups ext4 rw,notail,relatime 0 0

Теперь при старте системы раздел /dev/sdb1 будет монтироваться автоматически и, соответственно, сразу готов к использованию.
Если нужно автоматически монтировать другой тип устройства, например CD/DVD, то строка конфигурации для него будет примерно следующей:

/dev/cdrom /media/cdrom iso9660,udf ro,noauto,user,exec 0 0

Здесь вместо /dev/cdrom можно указывать также и /dev/sr0, если это первый и/или единственный оптический привод в системе.

Заключение

Итак, были рассмотрены основные принципы монтирования устройств в Linux, а также синтаксис и часто встречающиеся параметры и опции для их автоматического подключения. Как можно видеть, для работы с устройствами в UNIX/Linux используется специальная файловая система /dev. А для организации и настройки их автоматического монтирования.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Comments: 3
  1. zm412

    Спасибо большое за статью

  2. Banamat

    в тексте указан какой-то JOHN
    а я с ним не знаком.

  3. Jora

    Хорошая статья, сделал все по инструкции — комп не загрузился.
    Сделал запись в формате /dev/disk/by-uuid/*************** /home/user/mydisk + параметры — запустился и диск смонтировался.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: