Что такое fstab в linux
fstab (Русский)
Файл fstab(5) используется для настройки параметров монтирования различных блочных устройств, разделов на диске и удаленных файловых систем.
При монтировании с помощью mount fstab используется для определения точки монтирования, если указано только устройство, и наоборот. При этом параметры монтирования также берутся из fstab.
Contents
Использование
Определение файловой системы
Конкретное место расположения файловой системы может быть определено различными способами. В файле /etc/fstab можно указать имя файла устройства, его метку или UUID (в том числе GPT-метку и GPT-UUID для дисков GPT). Определение по UUID или PARTUUID является наиболее предпочтительным способом. Подробнее об этом вы можете узнать на странице Persistent block device naming — рекомендуется прочесть её перед продолжением чтения данной статьи.
По именам устройств
По меткам
По UUID
По меткам GPT
Запустите blkid чтобы отобразить список разделов. Укажите значения PARTLABEL без кавычек:
По UUID GPT
Запустите blkid чтобы отобразить список разделов. Укажите значения PARTUUID без кавычек:
Советы и рекомендации
Автоматическое монтирование с systemd
Локальный раздел
Если есть большой раздел, вы можете разрешить службам, которые не обращаются к нему, запускаться в то время, как он проверяется программой fsck. Для этого добавьте следующие параметры монтирования в запись /etc/fstab для соответствующего раздела:
Удалённая файловая система
Автоматическое монтирование может аналогичным образом использоваться и для монтирования удаленных файловых систем. В дополнение, вы можете использовать параметр x-systemd.device-timeout=# для указания времени ожидания удаленной файловой системы при перебоях в соединении. Также опция _netdev даёт systemd понять, что файловая система зависит от сети.
Зашифрованная файловая система
Автоматическое размонтирование
С помощью флага x-systemd.idle-timeout можно указать таймаут бездействия. Например:
В таком случае systemd размонтирует раздел спустя одну минуту неактивности.
Пробелы в значениях полей
Внешние устройства
Параметры atime
В ядре 4.0 появилась ещё одна опция:
Перемонтирование корневого раздела
Если по какой-то причине корневой раздел был неправильно смонтирован только на чтение, вы можете перемонтировать его с доступом на чтение-запись без перезагрузки, набрав
Автомонтирование GPT-раздела
Файл fstab
Содержание
Пример файла fstab
Строки файла содержат следующие поля:
Блочное устройство
То, что нужно смонтировать. Это может быть файл-образ, раздел диска или диск целиком. С файлами-образами всё вполне очевидно — нужно указать путь к файлу. С дисками и их разделами интереснее. Они числятся в системе как, например, /dev/sda (диск целиком) или /dev/hdc1 (раздел диска), но монтировать разделы встроенного диска стоит по UUID. Это позволит правильно монтировать разделы даже если они поменяют свой порядок, например, при добавлении новых разделов или подключении новых дисков. Например, добавление раздела перед /dev/sda6 может превратить его в /dev/sda7. А добавление нового диска может превратить /dev/sdb в /dev/sdc, соответственно раздел /dev/sdb1 станет /dev/sdc1. Но во всех приведенных примерах UUID раздела не изменится.
Узнать UUID раздела можно из вывода команды
Кроме UUID монтировать можно еще и по другим адресам устройств, вот они:
Эти адреса являются ссылками на те же /dev/sd*.
Для флешки (если вы хотите прописать ее монтирование в fstab, а не пользоваться автоматическим монтированием) удобнее использовать адрес из by-id (название), для iSCSI-тома — by-path (используется сетевой адрес и название «цели»).
Точка монтирования
Каталог, в который монтируется файловая система, к примеру /media/disc. Крайне желательно, чтобы он был пустым. Монтировать в непустой каталог тоже можно, но при этом вы заблокируете доступ ко всему содержимому каталога, ведь после монтирование содержимым каталога будет содержимое той файловой системы что была смонтирована.
Файловая система
Обычно что-то из следующего:
Опции файловых систем
(указываются через запятую, без пробелов) :
FAT 32
btrfs
Актуально для выбора алгоритма сжатия (смотрите как соотносятся реализованные в BTRFS zlib/lzo/zstd)
🦔 Как работает fstab – введение в файл /etc/fstab в Linux
Файл /etc/fstab является одним из наиболее важных файлов в системе на основе Linux, поскольку он хранит статическую информацию о файловых системах, их точках и опциях монтирования.
В этом мануале мы научимся детально знать его структуру и синтаксис, который мы можем использовать для указания каждой записи в файле.
В руководстве уроке вы узнаете:
Роль Fstab
Первое, что мы должны знать о файле fstab, это то, что он предназначен для чтения только программами и никогда не записывается, кроме как системным администратором.
Каждая строка в файле описывает файловую систему и содержит поля, используемые для предоставления информации о ее точке монтирования, опциях, которые следует использовать при монтировании и т. д.
Каждое поле может быть разделено другим либо пробелами, либо символами табуляции.
Давайте проанализируем каждое поле и его роль в записи.
Fstab поля
Каждая строка ввода в файле fstab содержит шесть полей, каждое из которых описывает конкретную информацию о файловой системе.
Первое поле – блочное устройство
Первое поле в каждой записи fstab содержит информацию о локальном или удаленном блочном устройстве, которое должно быть смонтировано.
Наиболее типичным способом ссылки на блочное устройство является использование его узла в каталоге /dev, поэтому, например, для ссылки на первый раздел блочного устройства sda мы используем /dev/sda1 в качестве значения.
Альтернативные способы ссылки на блочное устройство – это использование его LABEL или UUID (универсальный уникальный идентификатор).
Последний является абсолютно предпочтительным методом, поскольку он гарантирует однозначную ссылку на файловую систему, как указано в ее названии.
На GPT-разделенных дисках также можно ссылаться на файловую систему с помощью PARTUUID или PARTLABEL.
По умолчанию программа отображает информацию обо всех существующих файловых системах.
Чтобы избежать этого, в качестве аргумента должна быть передана ссылка на файловую систему:
Теперь, когда мы собрали информацию о файловой системе, мы можем создать для нее запись в fstab.
В первом поле записи для ссылки на /dev/sdb1 мы будем использовать его UUID:
Второе поле – точка монтирования
В каждой записи fstab второе поле указывает точку монтирования для файловой системы: какой каталог в системе следует использовать для доступа к ее содержимому.
Это должно предоставляться всегда, кроме случаев, когда блочное устройство, на которое мы ссылаемся, используется как своп.
В этом случае следует использовать «none».
Предположим, мы хотим смонтировать нашу файловую систему в “/mnt/example”; мы бы написали:
Третье поле – тип файловой системы
Третье поле записи fstab указывает тип файловой системы, используемой на необработанном блочном устройстве или разделе.
Файловая система должна быть в числе поддерживаемых операционной системой, например, ext4, xfs и т. д.
В случае удаленной файловой системы мы можем использовать, например, cifs в качестве значения этого поля, если файловая система используется совместно через samba или nfs, если он передается через сетевую файловую систему.
В нашем примере мы знаем, что устройство sdb1 отформатировано с файловой системой ext4, поэтому наша запись в fstab становится такой:
Четвертое поле – опции монтирования
Четвертое поле каждой записи в файле fstab используется для предоставления списка опций, которые будут использоваться при монтировании файловой системы.
Чтобы использовать набор параметров монтирования по умолчанию, мы указываем default как значение.
Варианты по умолчанию:
Чтобы увидеть список доступных опций, мы можем обратиться к руководству по монтированию:
На данный момент наша запись становится:
Пятое поле – Должна ли файловая система быть выгружена?
Пятое поле в каждой записи может быть 0 или 1.
Это значение используется программой резервного копирования дампов (если она установлена), чтобы узнать, какую файловую систему следует выгрузить.
Как правило, наша запись становится:
Шестое поле – порядок Fsck
Шестое поле используется для определения порядка, в котором другая утилита, fsck, должна проверять файловые системы при загрузке.
Значение 1 всегда должно использоваться для корневой файловой системы; для всех остальных мы можем использовать 2.
Если это значение не указано, по умолчанию оно равно 0, и файловая система не будет проверена.
С этим последним полем наша запись в качестве примера наконец завершена:
Выводы
В этом уроке мы узнали, как структурирован /etc/fstab, один из самых важных файлов в операционной системе на основе Linux.
Мы узнали, что он содержит статическую информацию о файловых системах, и мы увидели, что каждая запись в файле состоит из шести полей, каждое с определенной целью, которую мы исследовали.
Fstab
Открыть файл fstab для редактирования вы можете набрав эту команду в терминале:
Советую предварительно создать резервную копию:
Пример файла fstab [ ]
ОПИСАНИЕ [ ]
Файл /etc/fstab содержит информацию о файловых системах для команд mount (1M) и mountall (1M). Строки файла /etc/fstab содержат следующие поля:
Чтобы узнать UUID диска выполняем команду:
Для CD-ROM и floppy дисков указывается /dev/cdrom (/dev/cdrw) и /dev/fd0 соответственно
3. Тип файловой системы:
Обозначение в /etc/fstab | Тип файловой системы |
---|---|
vfat | Microsoft FAT16, FAT32 |
ntfs или ntfs-3g | Microsoft NTFS |
ext3 | ext3 |
? | ReiserFS |
swap | Для swap раздела |
udf,iso9660 | Для CD/DVD-ромов |
auto | Актуально для floppy дисководов |
hfsplus | Apple HFS |
4. Опции, показывающие как эта файловая система будет обрабатываться (опции указываются через запятую, без пробелов):
umask=value
Устанавливает биты полномочий. По умолчанию берутся биты
полномочий текущего процесса в восьмеричной форме (0..7).
все имеют право на чтение, запись и выполнение, а
все НЕ имеют право на чтение, запись и выполнение. Ещё
5. Первая цифра: 0 или 1, показывает, включить/выключить резервное копирование файловой системы (при помощи команды dump ). Эта опция является устаревшей.
6. Вторая цифра: может быть 0, 1 или 2, она показывает порядок, в котором файловая система должна быть проверена при загрузке:
Поля отделяются друг от друга пробелами. Строки, начинающиеся с символа #, являются комментариями. Пустые строки игнорируются.
Автоматическое монтирование fstab и systemd
Как вы знаете, во время загрузки операционной системы Linux все используемые разделы собираются в единую корневую файловую систему. Все это выполняется системой инициализации и пользователь даже не замечает переходов между разделами. Например, домашний раздел монтируется в /home, загрузочный в /boot.
Но откуда система инициализации узнает о том, что и куда нужно монтировать? Все просто, она берет эти данные из файла /etc/fstab. В этой небольшой статье мы рассмотрим как выполняется автоматическое монтирование fstab, поговорим как это работает, а также рассмотрим основные опции монтирования файловых систем.
Как происходит монтирование?
Файловая система Linux очень сильно отличается от Windows, здесь нет дисков. Есть только корневая файловая система, которая строиться путем монтирования всех нужных разделов в подкаталоги корня.
Монтирование может быть выполнено вручную с помощью команды mount и мы об этом уже говорили. Но для инициализации системы нужно во время загрузки подключить все важные разделы с системными файлами, проверить их файловые системы на ошибки и сделать их готовыми к работе.
Все эти задачи выполняет система инициализации, независимо от того используете ли вы OpenRC или Systemd. Но сама система инициализации не знает куда монтировать тот или иной раздел. Для получения этой информации она использует конфигурационные файлы.
Системы инициализации, совместимые с SysVinit используют файл /etc/fstab. Новая система инициализации Systemd сохранила поддержку /etc/fstab для совместимости, но на самом деле работает с файлами юнитов *.mount. Во время загрузки файлы юнитов автоматически генерируются для всех записей /etc/fstab.
В этой статье мы рассмотрим как настроить автомонтирование разделов fstab, так и новый способ, с помощью systemd.
Автоматическое монтирование fstab
Каждая строчка в fstab описывает раздел, который нужно примонтировать к определенной точке монтирования. Мы можем указать файловую систему, опции монтирования, а также нужно ли проверять файловую систему на ошибки.
Сначала давайте рассмотрим синтаксис одной строчки fstab:
устройство точка_монтирования файловая_система опции резерв <0,1>проверка
Теперь подробнее рассмотрим что означает каждый пункт:
В основном с этими пунктам все должно быть понятно, интерес вызывают только опции монтирования fstab. Для разных файловых систем они могут немного отличаться, но есть стандартные. И поскольку чаще всего используются файловые системы семейства ext, то мы будем ориентироваться на них.
Начнем с общих для всех файловых систем опций:
Когда мы рассмотрели всю теорию, настройка fstab не вызовет у вас проблем. Теперь давайте рассмотрим стандартное содержимое файла fstab, а также как выполняется монтирование. Вот так выглядит монтирование корня:
/dev/sda2 / ext4 defaults 0 1
Здесь в качестве корневой файловой системы будет монтироваться раздел /dev/sda2 с файловой системой ext4 и опциями по умолчанию defaults. Резервная копия не используется, и вообще, этот параметр не читается системой инициализации и сейчас нас не интересует. Для домашнего раздела все будет выглядеть очень похоже:
/dev/sda3 /home ext4 defaults,noexec 0 2
Только тут мы указали, что его нужно проверить вторым, а в опциях еще добавили, что программы оттуда выполнять нельзя. Более интересен пункт для дополнительного диска, на котором хранятся файлы:
/dev/sda4 /media/files/ ext4 noauto,users,rw 0 0
Тут мы указываем, что раздел не нужно монтировать во время загрузки, но его могут подключить любые пользователи в режиме для чтения и записи. Ни проверка ни резервная копия не выполняются. Для раздела подкачки файловая система указывается swap, а точка монтирования none:
/dev/sda5 none swap defaults 0 0
Также вы можете примонтировать немножко оперативной памяти:
Таким образом, мы примонтировали оперативную память в /tmp и теперь система будет работать немного быстрее. Вот что получилось:
/dev/sda2 / ext4 defaults 0 1
/dev/sda3 /home ext4 defaults,noexec 0 2
/dev/sda4 /media/files/ ext4 noauto,users,rw 0 0
/dev/sda5 none swap defaults 0 0
tmpfs /tmp tmpfs nodev,nosuid,noexec,size=100M 0 0
А теперь, как я и обещал рассмотрим как выполняется монтирование с помощью systemd.
Автоматическое монтирование в Systemd
Система инициализации Systemd анализирует /etc/fstab при загрузке и автоматически генерирует все нужные файлы юнитов на основе описанных там точек монтирования, а уже потом их загружает.
Вы можете посмотреть все созданные в systemd точки монтирования такой командой:
Но нам ничего не мешает самим создать такой файл точки монтирования. Это очень просто, давайте рассмотрим синтаксис:
[Mount]
What=адрес_раздела
Where=точка монтирования
Type=файловая система
Options=опции монтирования
Например, для той же домашней папки автоматическое монтирование fstab будет выглядеть вот так, имя обязательно должно состоять из точки монтирования, в которой слеши заменены на дефис:
sudo vi /etc/systemd/system/home.mount
[Unit]
Description=Mount System Home Directory
[Mount]
What=/dev/sda3
Where=/home
Type=ext4
Options=defaults,noexec
Точно такой же файл может быть создан для любого устройства. Теперь для монтирования достаточно набрать:
sudo systemctl start home.mount
А чтобы добавить эту точку монтирования в автозагрузку выполните:
sudo systemctl enable home.mount
Вот и все теперь вы знаете не только как выполняется монтирование fstab, но и автоматическое монтирование в systemd.
Выводы
Как видите, редактирование fstab не так уж сложно, как может показаться на первый взгляд. С этим справиться даже новичок в Linux если изучить параметры fstab и синтаксис самого файла. Если у вас остались вопросы, спрашивайте в комментариях!