Файл /etc/fstab является одним из наиболее важных файлов в системе на основе Linux, поскольку он хранит статическую информацию о файловых системах, их точках и опциях монтирования.
В этом мануале мы научимся детально знать его структуру и синтаксис, который мы можем использовать для указания каждой записи в файле.
В руководстве уроке вы узнаете:
- Как использовать файл fstab для предоставления статической информации о файловой системе
- Как структурирован файл fstab
- Какова цель каждого поля ввода в файле
Роль Fstab
Первое, что мы должны знать о файле fstab, это то, что он предназначен для чтения только программами и никогда не записывается, кроме как системным администратором.
Каждая строка в файле описывает файловую систему и содержит поля, используемые для предоставления информации о ее точке монтирования, опциях, которые следует использовать при монтировании и т. д.
Каждое поле может быть разделено другим либо пробелами, либо символами табуляции.
Давайте проанализируем каждое поле и его роль в записи.
Fstab поля
Каждая строка ввода в файле fstab содержит шесть полей, каждое из которых описывает конкретную информацию о файловой системе.
Первое поле – блочное устройство
Первое поле в каждой записи fstab содержит информацию о локальном или удаленном блочном устройстве, которое должно быть смонтировано.
Наиболее типичным способом ссылки на блочное устройство является использование его узла в каталоге /dev, поэтому, например, для ссылки на первый раздел блочного устройства sda мы используем /dev/sda1 в качестве значения.
Альтернативные способы ссылки на блочное устройство – это использование его LABEL или UUID (универсальный уникальный идентификатор).
Последний является абсолютно предпочтительным методом, поскольку он гарантирует однозначную ссылку на файловую систему, как указано в ее названии.
На GPT-разделенных дисках также можно ссылаться на файловую систему с помощью PARTUUID или PARTLABEL.
Чтобы получить информацию о файловых системах, мы можем запустить команду lsblk, в конечном итоге с опцией -o, чтобы указать поля, которые мы хотим получить, или с помощью -fs, что эквивалентно использованию -o, и предоставить NAME, FSTYPE, LABEL , UUID, MOUNTPOINT в качестве аргументов.
По умолчанию программа отображает информацию обо всех существующих файловых системах.
Чтобы избежать этого, в качестве аргумента должна быть передана ссылка на файловую систему:
$ lsblk -d -fs /dev/sdb1 NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sdb1 ext4 80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 13.3G 1% /mnt/example
В приведенном выше примере мы также использовали опцию -d для lsblk, сокращение от –nodeps, чтобы скрыть деревья структуры файловых систем из выходных данных.
Теперь, когда мы собрали информацию о файловой системе, мы можем создать для нее запись в fstab.
В первом поле записи для ссылки на /dev/sdb1 мы будем использовать его UUID:
UUID = 80b496fa-ce2d-4dcf-9afc-bcaa731a67f1
Второе поле – точка монтирования
В каждой записи fstab второе поле указывает точку монтирования для файловой системы: какой каталог в системе следует использовать для доступа к ее содержимому.
Это должно предоставляться всегда, кроме случаев, когда блочное устройство, на которое мы ссылаемся, используется как своп.
В этом случае следует использовать «none».
Предположим, мы хотим смонтировать нашу файловую систему в “/mnt/example”; мы бы написали:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example
Третье поле – тип файловой системы
Третье поле записи fstab указывает тип файловой системы, используемой на необработанном блочном устройстве или разделе.
Файловая система должна быть в числе поддерживаемых операционной системой, например, ext4, xfs и т. д.
В случае удаленной файловой системы мы можем использовать, например, cifs в качестве значения этого поля, если файловая система используется совместно через samba или nfs, если он передается через сетевую файловую систему.
В нашем примере мы знаем, что устройство sdb1 отформатировано с файловой системой ext4, поэтому наша запись в fstab становится такой:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4
Четвертое поле – опции монтирования
Четвертое поле каждой записи в файле fstab используется для предоставления списка опций, которые будут использоваться при монтировании файловой системы.
Чтобы использовать набор параметров монтирования по умолчанию, мы указываем default как значение.
Варианты по умолчанию:
- rw (чтение-запись);
- suid (соблюдать биты setuid и setgid);
- dev (интерпретировать символы и блокировать устройства в файловой системе);
- exec (разрешить выполнение двоичных файлов и скриптов);
- auto (монтировать файловую систему, когда используется опция -a команды mount);
- nouser (сделать файловую систему не монтируемой обычным пользователем);
- async (выполнять операции ввода-вывода в файловой системе асинхронно).
Чтобы увидеть список доступных опций, мы можем обратиться к руководству по монтированию:
$ man mount
На данный момент наша запись становится:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4 defaults
Пятое поле – Должна ли файловая система быть выгружена?
Пятое поле в каждой записи может быть 0 или 1.
Это значение используется программой резервного копирования дампов (если она установлена), чтобы узнать, какую файловую систему следует выгрузить.
Как правило, наша запись становится:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4 defaults 0
Шестое поле – порядок Fsck
Шестое поле используется для определения порядка, в котором другая утилита, fsck, должна проверять файловые системы при загрузке.
Значение 1 всегда должно использоваться для корневой файловой системы; для всех остальных мы можем использовать 2.
Если это значение не указано, по умолчанию оно равно 0, и файловая система не будет проверена.
С этим последним полем наша запись в качестве примера наконец завершена:
UUID=80b496fa-ce2d-4dcf-9afc-bcaa731a67f1 /mnt/example ext4 defaults 0 2
Выводы
В этом уроке мы узнали, как структурирован /etc/fstab, один из самых важных файлов в операционной системе на основе Linux.
Мы узнали, что он содержит статическую информацию о файловых системах, и мы увидели, что каждая запись в файле состоит из шести полей, каждое с определенной целью, которую мы исследовали.
Очень понятно рассписали!