В этом руководстве мы узнаем, что такое fstab в Linux, как использовать fstab
файл, структуру /etc/fstab
файла и, наконец, как устранять проблемы с fstab. В конце мы также обсудим краткое введение в файл mtab, его использование и чем mtab отличается от fstab.
Что такое fstab?
Для администратора сервера, пользователя рабочего стола Linux или любого, кто плохо знаком с Linux, /etc/fstab
очень важно понимать, что такое файл в Linux и как отлаживать проблемы с fstab.
Fstab — это таблица файловой системы, используемая ядром во время загрузки для монтирования файловой системы. Проще говоря, вы создадите один или несколько разделов на своем жестком диске и сделаете запись для каждого раздела в fstab, которая будет прочитана ядром во время загрузки, и файловая система будет автоматически смонтирована.
По умолчанию все разделы, созданные вами во время установки ОС, будут автоматически добавлены в файл fstab. Давайте углубимся и посмотрим, как устроен fstab и как использовать fstab.
ПРИМЕЧАНИЕ. Перед редактированием файла fstab рекомендуется сделать его резервную копию. Если в случае, если что-то испорчено, вы можете восстановить резервную копию.
Структура файла /etc/fstab
Fstab находится в /etc/
каталоге и принадлежит пользователю root. Таким образом, вы должны редактировать файл, используя sudo
привилегии или как root
пользователь.
Отобразите файл fstab, выполнив следующую команду, чтобы понять его структуру.
$ cat /etc/fstab $ cat /etc/fstab | grep -i -v "^#" | column -t # Пропустить комментарии и формат
Файл Fstab состоит из шести столбцов (разделов).
- Файловая система — блочное устройство, которое разбито на разделы и на нем создана файловая система.
- Точка монтирования — место, где файловая система монтируется в вашей системе.
- Тип — Тип файловой системы (Ext4, Ext3, swap, Xfs и т. д.)
- Параметры — это решает, какие параметры монтирования следует учитывать при монтировании файловой системы.
- Дамп — это для целей резервного копирования, используемых
dump
утилитой. Установка его на ноль означает отключение резервного копирования, а единица означает включение резервного копирования на данное устройство/носитель. - Pass — Проверка файловой системы при загрузке
fsck
утилитой. Ноль отключит проверку файловой системы, и для корневой файловой системы следует установить значение 1, а для других разделов — значение 2.
Каждая файловая система описывается в отдельной строке. Поля в каждой строке разделены символами табуляции или пробелами.
Давайте подробно рассмотрим эти шесть параметров.
1. Файловая система
В первой колонке fstab нужно указать, какой раздел вы собираетесь монтировать. Либо вы можете использовать имя блочного устройства, например, /dev/sda*
либо использовать UUID.
Когда вы создаете файловую систему поверх любого разбитого на разделы диска с помощью команды mkfs
, для этого конкретного раздела будет создан UUID.
Допустим, вы создали новый раздел, и это sdb1
. В этом случае ваш fstab будет следующим.
/dev/sdb1/home ext4 default 0 0
Чтобы получить идентификатор блока для любой файловой системы, выполните следующую команду.
$ blkid # Вывести информацию обо всех fs. $ blkid /dev/sdb1 # Вывести информацию только о заданной файловой системе.
Теперь, используя этот идентификатор блока, вы можете смонтировать файловую систему, как показано на изображении ниже.
2. Точка монтирования
Во втором столбце вы должны указать каталог точки монтирования. Точка монтирования относится к каталогу в файловой системе, куда будет смонтирован ваш диск с разделами.
Как вы видите на изображении ниже, каждый раздел монтируется в разные каталоги. Например, раздел /dev/sdb1
предназначен для домашнего каталога и смонтирован под /home
.
Допустим, вы создали новый раздел размером 100 ГБ и с типом раздела EXT4. Запись fstab будет следующей. Вот точка крепления /mnt/data1
.
UUID=xxxx-xxx-xxx /mnt/data1/ ext4 default 0 0
Или
/dev/sdb2 /mnt/data1/ ext4 default 0 0
3. Тип файловой системы
Здесь вы укажете тип файловой системы (EXT2, EXT3, EXT4, XFS, VFAT, SWAP и т. д.). Если вы хотите узнать тип файловой системы для блочного устройства, используйте blkid
или команду lsblk
.
$ lsblk -f /dev/sdb1 NAME FSTYPE LABEL UUID MOUNTPOINT sdb1 ext4 365c64d7-4d65-4cdf-8ce1-0def8bb41997 /home
$ blkid /dev/sdb1 /dev/sdb1: UUID="365c64d7-4d65-4cdf-8ce1-0def8bb41997" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8f174339-01"
4. Варианты монтирования
Это важный столбец, в который вы будете передавать параметры монтирования файловой системы. Есть много вариантов крепления, которые можно использовать. Для обычного использования достаточно использовать параметр по умолчанию. Опция по умолчанию указывает на комбинацию семи опций (rw
, suid
, dev
, exec
, auto
, nouser
и async
).
Давайте посмотрим, что делает опция по умолчанию.
rw
— Это говорит о том, что файловая система должна быть смонтирована в режиме чтения-записи. При возникновении ошибки вы можете смонтировать файловую систему в режиме только для чтения, используя опциюerrors=remount-ro
.suid
— Любая операция, связанная с этой опциейsuid
,sgid
будет разрешена.dev
— Он будет интерпретировать символьные и блочные устройства в файловой системе. Если вы не хотите интерпретировать символы и блокировать устройства, вы можете явно использовать опцию nodev.exec
— Из файловой системы вы можете запускать двоичные файлы, установив опцию exec. В отличие от этого, вы можете использоватьnoexec
опцию, чтобы не запускать двоичные файлы из файловой системы.auto
— Эта опция отвечает за автоматическое монтирование файловой системы во время загрузки или всякий раз, когда вы запускаете команду mount -a из терминала. В отличие от этого, естьnoauto
вариант, который позволит монтировать файловую систему только по отдельности.nouser
— Только суперпользователь может монтировать файловую систему. Вы также можете использовать параметры «пользователь» и «пользователи», которые могут настроить обычного пользователя для монтирования и размонтирования файловой системы.async
— Все операции ввода-вывода должны выполняться асинхронно. Если вы используете опцию «синхронизировать», операция ввода-вывода будет выполняться синхронно.
В зависимости от требований вам может понадобиться использовать различные опции. Если в вашей среде уже есть рабочий сервер, я предлагаю вам взглянуть на файл fstab, который даст вам хорошее представление об используемых параметрах монтирования.
5. Дамп
Этот столбец предназначен для целей резервного копирования. Если установлено значение 1, утилита дампа будет создавать резервные копии. Сейчас это устаревшая функция, поскольку изначально она была разработана для создания резервных копий на лентах для старых файловых систем.
Рекомендуется установить его равным нулю.
6. fsck
Во время загрузки утилита fsck
проверит файловую систему на основе значения, которое мы указываем в шестом столбце. Если вы установите значение равным нулю или оставите его пустым, проверка файловой системы будет отключена.
Корневая файловая система всегда должна быть указана равной 1. Для других файловых систем вы можете установить значение 2. Поскольку для демонстрации я использую виртуальную машину, я установил все значения равными нулю.
Исправить проблемы с загрузкой, связанные с файлом Fstab
Если вы допустили какую-либо ошибку в файле fstab, то при перезагрузке машина перейдет в аварийный режим. В аварийном режиме сетевого интерфейса не будет, поэтому отлаживать придется прямо в консоли.
Вы должны ввести root
пароль для входа в аварийный режим. Запустите следующую команду и медленно прокрутите, чтобы просмотреть сообщения об ошибках. В моем случае я намеренно удалил разделитель (/) в /dev/sdb1
.
В аварийном режиме, если файловая система смонтирована в режиме только для чтения, вам необходимо смонтировать в rw
режиме и отредактировать fstab
файл, чтобы устранить проблему. Чтобы перемонтировать файловую систему в rw
режиме, выполните следующую команду.
$ mount -o rw,remount /
Теперь отредактируйте fstab, чтобы исправить ошибку, и перезагрузите машину. Теперь ваша машина должна нормально загружаться.
$ reboot
Чтобы избежать проблем во время загрузки, вы можете запустить команду mount
после добавления fstab
записей.
Взгляните на изображение ниже, где я добавил новую запись для /dev/sdb2
. Я не указал тип файловой системы, поэтому при запуске mount
команды выдает ошибку.
$ mount -a mount: /mnt: unknown filesystem type 'defaults'.
Что такое Mtab-файл?
Когда вы запускаете команду mount без передачи каких-либо аргументов, она печатает список смонтированных файловых систем.
$ mount
В каталоге также есть файл с именем mtab /etc/
. Когда вы посмотрите на /etc/mtab
, это будет точно так же, как вывод mount
команды.
Давайте посмотрим, что справочная страница говорит о файле mtab.
Файл /etc/mtab
имеет символическую ссылку на монтирование в proc
файловой системе. Если вы запустите команду mount
или umount
, результат будет обновлен в mounts.
$ ls -ln /etc/mtab lrwxrwxrwx 1 0 0 19 Jan 9 17:45 /etc/mtab -> ../proc/self/mounts
Чтобы суммировать разницу между fstab и mtab, fstab используется для монтирования файловой системы во время загрузки, а mtab используется для отображения списка смонтированных файловых систем.
Если /etc/mtab
файл поврежден или удален случайно, вы можете восстановить его с помощью следующей команды.
$ sudo sh -c 'grep -v rootfs /proc/mounts > /etc/mtab'
Заключение
В этой статье мы обсудили, что такое fstab и mtab и насколько важно для системы сохранять и считывать информацию о разделах во время загрузки. Мы также обсудили, что происходит, когда в файле fstab допущена ошибка.