Поиск по сайту:

Как написать файл fstab в Linux


Добавляете новый жесткий диск или твердотельный накопитель на свой компьютер с Linux? Вам нужно будет отредактировать файл fstab. Многие люди находят саму идею пугающей. Да, очень важно, чтобы вы поняли это правильно, но, вооружившись нужными знаниями, это действительно несложно. Мы проведем вас через процесс редактирования файла fstab, чтобы интегрировать новый диск в вашу файловую систему.

fstab, таблица файловых систем

Хотя добавить новый жесткий диск на компьютер с Linux не так уж сложно, при первой попытке это может немного сбить с толку. Вы подключаете оборудование, включаете компьютер и входите в операционную систему. Но вы нигде не можете увидеть свой новый диск. Почему не появляется? Как заставить Linux «увидеть» диск, чтобы вы могли начать его настройку?

На самом деле Linux увидел ваше оборудование, но не сообщает об этом сразу. Или даже дать вам намек, что он нашел ваше новое оборудование. Вы должны опросить Linux, чтобы получить информацию, которую вам нужно будет поместить в файл fstab.

Вот как настроить новый жесткий диск, чтобы Linux — и вы — могли его видеть и использовать. Процесс состоит из двух частей. Первая часть — это разведка для идентификации жесткого диска и сбора информации о нем. Вторая часть — это редактирование файла fstab с использованием информации, которую мы собрали на этапе разведки.

Поиск нового диска

Мы добавляем два новых диска в эту систему. Один представляет собой механический жесткий диск (HD) емкостью 32 ГБ, а другой — твердотельный накопитель (SSD) емкостью 16 ГБ.

Нам нужно знать, что Linux может их видеть, и какие блочные устройства Linux использует для них. В Linux и Unix-подобных операционных системах блочное устройство — это специальный файл, действующий как интерфейс к устройству, с которого можно считывать и записывать данные (если оно не доступно только для чтения). Блочные устройства часто представляют собой запоминающее устройство (например, раздел на жестком диске или компакт-диске). Они создаются в каталоге /dev .

Мы можем использовать команду lsblk, чтобы получить список блочных устройств, подключенных к вашему компьютеру с Linux.

lsblk

Вывод из lsblk находится в столбцах.

Столбцы:

  • Имя: это имя устройства. Имена устройств, которые начинаются с «sd» и за которыми следует буква, обозначают жесткие диски SCSI. Буква идентифицирует отдельные жесткие диски, где «a» — первый, «b». быть вторым и так далее. Если к нему добавлен номер, это указывает на раздел. Например, «sdb2» будет разделом 2 на втором жестком диске SCSI.
  • Maj:Min. В этом столбце содержатся старший и младший номера устройства. Старший номер указывает тип устройства (или, точнее, тип драйвера, используемого для связи с этим устройством). Второстепенное число – это количество устройств этого типа.
  • Rm: в этом столбце указано, является ли устройство съемным или нет. Обратите внимание, что устройство sr0 имеет значение 1, что означает, что оно съемное. Это дисковод для компакт-дисков.
  • Размер. Это объем данных, который может храниться на устройстве.
  • Ro: в этом столбце будет отображаться 1 для устройств только для чтения и 0 для устройств для чтения и записи. Все устройства loop доступны только для чтения.
  • Тип: определяет тип устройства. Запись «диск» означает дисковод, запись «часть» означает раздел, а «ром» означает постоянное запоминающее устройство (CD-ROM).
  • Точка монтирования: показывает точку в файловой системе, к которой подключено это устройство. Если это поле пустое, устройство не подключено.

На приведенном выше снимке экрана вы можете видеть, что всем устройствам loop присваивается старший номер 7 (что означает устройство loopback или loop), а младшие номера просто увеличиваются на 1 каждый раз. петлевые устройства используются с файловой системой squashfs. Файловая система squashfs создается каждый раз, когда приложение устанавливается с помощью системы управления пакетами snappy.

Жестким дискам SCSI даются такие имена, как sda, sdb и sdc, и все они имеют старший номер 8 (жесткий диск SCSI). Младшие числа сгруппированы по 16. Младшие номера для первого диска, sda, варьируются от 0 до 15. 0 представляет физический диск, а младший номер 1 представляет первый раздел на этом диске. Для второго диска, sdb, младшие номера варьируются от 16 до 31. 16 представляет физический диск, а 17 представляет первый раздел на этом диске. Следующие 16 номеров, от 32 до 47, используются для младших номеров sdc и т. д.

Другими распространенными старшими номерами являются 3 (для жесткого диска IDE) и 11 для компакт-дисков.

На самом деле, стиль /dev/sr0 для приводов компакт-дисков SDCSI устарел. Утвержденный формат: /dev/scd0. Несмотря на это, формат /dev/sr0 по-прежнему использовался на всех компьютерах, на которых была написана эта статья.

Документация ядра содержит длинный список всех значений, которые могут принимать старшие и младшие числа. Это удивительно длинный список.

Чтобы не загромождать вывод lsblk, мы можем использовать grep для выбора только интересующих нас элементов. Мы знаем, что не добавили кольцевое устройство, поэтому давайте выберем все жесткие диски SCSI. мы знаем, что в их именах будет «sd».

lsblk | grep sd

Эта команда заставит grep печатать только те строки, в которых есть «sd». На нашей тестовой машине мы видим:

Итак, у нас есть три SCSI-диска. Первый, /dev/sda, монтируется в корень файловой системы, /. Два других вообще не монтируются, чего и следовало ожидать от новых дисков. Мы видим, что размер диска /dev/sdb составляет 32 ГБ, что означает, что это наш традиционный механический диск. Размер диска /dev/sdc 16 ГБ, и это наш SSD-накопитель.

Собственно, поскольку это виртуальный компьютер, то это и виртуальные диски. Таким образом, SSD отображается точно так же, как механический привод SCSI. На моем обычном рабочем столе мой твердотельный накопитель NVMe отображается как /dev/nvme0n1, а первый раздел на нем — /dev/nvme0n1p1. Его старший номер — 259. Эти различия не меняют того, что мы должны делать в файле fstab , но имейте в виду, что если у вас есть SSD, он не будет отображаться как физический диск.

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

Определение вращающихся и невращающихся дисков

Если мы используем параметр -o (вывод) с lsblk и добавляем столбец ROTA (вращающийся) на дисплей, lsblk будет использовать 1 для обозначения вращающегося устройства хранения (механический диск) и 0 для обозначения невращающегося устройства хранения (твердотельный накопитель).

lsblk -o +ROTA | grep sd

Мы получаем дополнительный столбец справа от дисплея, который представляет собой столбец ROTA (вращающийся). Как видите, «SSD» имеет 0 для устройства и раздела. Это имеет смысл, поскольку SSD — это невращающееся запоминающее устройство.

Монтирование файловых систем

Прежде чем мы начнем думать о файле fstab, давайте проверим, можем ли мы смонтировать диски вручную. Таким образом, если что-то не работает, когда мы используем файл fstab, мы будем знать, что проблема должна быть в нашем синтаксисе, а не в самом диске.

Мы создадим несколько временных точек монтирования в каталоге /mnt. Вам нужно будет использовать sudo , и вам будет предложено ввести пароль.

sudo mkdir /mnt/scsi
sudo mkdir /mnt/ssd

Теперь давайте смонтируем диск SCSI в новую точку монтирования. Мы будем использовать команду mount в ее простейшей форме. Мы сообщим ему имя раздела, который мы хотим смонтировать, и точку монтирования, на которую мы хотим его смонтировать. mount смонтирует файловую систему на этом разделе в указанной нами точке монтирования.

Мы указываем раздел, содержащий файловую систему, а не диск, поэтому обязательно укажите цифру раздела, в данном случае «1».

sudo mount /dev/sdb1 /mnt/scsi

Если все пойдет хорошо, mount не получит ответа. Вы молча возвращаетесь в командную строку.

Установка SSD так же проста. Мы сообщаем mount, какой раздел на какое устройство монтировать, и точку монтирования.

sudo mount /dev/sdc1 /mnt/ssd

Опять же, молчание — золото.

Проверка креплений

Чтобы убедиться, что монтирование произошло, мы снова воспользуемся lsblk. Мы направим его вывод через grep и выберем записи «sda1», «sdb2» и «sdc1».

lsblk -o +ROTA | grep sd[a-c]1

mount показывает нам три смонтированных раздела. Это два, которые мы только что смонтировали, и исходный раздел, смонтированный в /.

Раздел /dev/sdb1 монтируется в /mnt/scsi и находится на вращающемся устройстве хранения. Раздел /dev/sdc1 монтируется в /mnt/ssd и находится на неперемещающемся устройстве хранения. Все вроде хорошо.

Теперь нам нужно настроить файл fstab, чтобы эти устройства монтировались при каждом запуске компьютера.

Файл fstab

Файл fstab содержит запись для каждой файловой системы, которая монтируется при перезагрузке компьютера. Каждая запись состоит из шести полей. Поля:

  • Файловая система: не тип файловой системы в разделе, как следует из названия (для этого предназначено поле type). Это идентификатор раздела, который необходимо смонтировать.
  • Точка монтирования: место в файловой системе, в которое вы хотите смонтировать раздел.
  • Тип: тип файловой системы в разделе.
  • Параметры. В каждой файловой системе могут быть указаны параметры для включения или отключения функций.
  • Дамп: ссылка на практически устаревший способ резервного копирования файловых систем, при котором вся файловая система «сбрасывалась» на ленту.
  • Проходит: это флаг проходит. Он сообщает Linux, какие разделы следует проверять на наличие ошибок с помощью fsck и в каком порядке. Ваш основной загрузочный и операционный раздел должен быть 1, а остальные могут быть установлены на 2. Если флаг установлен на ноль, это означает «не проверять вообще». Если ваша файловая система не является журналируемой файловой системой (например, ext2 или FAT16/32), лучше отключить ее, установив для нее значение 0.

Эти поля должны быть указаны в указанном порядке, и между ними должен быть пробел или табуляция. Поиск значений для этих полей может быть пугающим, особенно значения для поля «параметры». Поле «параметры» options должно быть в списке, разделенном запятыми, без пробелов между ними.

На странице man для каждой файловой системы будут перечислены параметры, которые можно использовать. ext4 имеет около 40 опций. Вот некоторые из наиболее распространенных вариантов:

  • Автоматически. Файловая система будет монтироваться во время загрузки автоматически.
  • Без авто: файловая система монтируется только при вводе команды mount -a.
  • Exec: в этой файловой системе разрешено выполнение двоичных файлов.
  • Noexec: выполнение двоичных файлов в этой файловой системе запрещено.
  • Обратите внимание: файловая система должна быть смонтирована только для чтения.
  • Rw: файловая система должна быть смонтирована для чтения и записи.
  • Синхронизация. Запись файлов должна выполняться немедленно, а не буферизоваться. Лучше зарезервировать для гибких дисков, если кто-то все еще ими пользуется. Приводит к снижению производительности.
  • Асинхронный: записи файлов должны быть буферизованы и оптимизированы.
  • Пользователь: любому пользователю разрешено монтировать файловую систему.
  • Nouser: пользователь root — единственный пользователь, который может монтировать эту файловую систему.
  • По умолчанию. Это сокращенный способ указания набора общих параметров: rw, suid, dev, exec, auto, nouser и async).
  • Suid: разрешает работу с битами suid и sgid. Бит suid используется, чтобы разрешить выполнение файла от имени пользователя root обычным пользователем без предоставления ему полных привилегий root. Когда бит sgid установлен для каталога, файлы и каталоги, созданные в этом каталоге, имеют групповую принадлежность каталога, а не группу пользователя, создавшего их.
  • Nosuid: не разрешать использование битов suid и sgid.
  • Noatime: — не обновлять время доступа к файлам в файловой системе. Это может повысить производительность на старом оборудовании.
  • Nodiratime: не обновлять время доступа к каталогу в файловой системе.
  • Relatime: время доступа к файлу обновляется относительно времени изменения файла.

Вариант «по умолчанию» — хороший стартовый гамбит. Вы можете добавить или удалить дополнительные параметры, если требуется тонкая настройка. Если бы только был аккуратный способ получить нужные вам настройки, в том порядке, в котором вам нужно ввести их в файл fstab.

Введите файл mtab.

Файл mtab

Файл mtab представляет собой список смонтированных в данный момент файловых систем. Это отличается от файла fstab, в котором перечислены файловые системы, которые должны быть смонтированы во время загрузки. Файл mtab включает смонтированные вручную файловые системы. Мы уже смонтировали наши новые диски, поэтому они должны отображаться в файле mtab.

Мы можем увидеть содержимое файла mtab, используя cat. Мы ограничим вывод, направив его через grep и просматривая только /dev/sdb1 и /dev/sdc1.

cat /etc/mtab | grep sd[b-c]1

Вывод показывает записи mtab для этих двух разделов.

Мы могли бы поднять эти значения и поместить их прямо в файл fstab, убедившись, что между каждым полем есть пробел или табуляция. И это было бы так. Диски будут смонтированы при перезагрузке.

Есть две оговорки. Одна точка монтирования. Мы создали временные точки монтирования только для того, чтобы доказать, что мы можем монтировать новые разделы на новых дисках. Нам пришлось бы вводить настоящие точки монтирования вместо временных — если бы они были другими.

Второе предостережение: если мы используем настройки из файла mtab, мы будем использовать файл блочного устройства в качестве идентификатора для каждого раздела. Это сработает, но значения /dev/sda и /dev/sdb и т. д. могут измениться, если к компьютеру будет добавлено новое запоминающее устройство. Это означает, что настройки в файле fstab неверные.

Каждый раздел имеет универсальный уникальный идентификатор (UUID), который мы можем использовать для идентификации раздела. Это никогда не изменится. Если мы используем UUID для идентификации разделов в файле fstab, настройки всегда будут оставаться точными и верными.

Если вы используете новые разделы как часть системы избыточного массива недорогих дисков (RAID), сверьтесь с документацией по этой системе. В нем может быть указано, что вы должны использовать идентификатор блочного устройства вместо UUID.

Поиск UUID раздела

Чтобы найти UUID раздела, мы можем использовать blkid для вывода атрибутов блочных устройств. Мы ограничим вывод двумя новыми разделами на наших новых дисках:

blkid | grep sd[b-c]1

Выходные данные включают UUID для каждого раздела.

PARTUUID — это форма UUID, которую можно использовать с методом разбиения на разделы с помощью таблиц разделов GUID (GPT) (если вы не используете метод разбиения на разделы с основной загрузочной записью (MBR)).

Редактирование файла fstab

Откройте файл fstab в редакторе. Мы используем gedit, простой в использовании редактор, который есть в большинстве дистрибутивов Linux.

sudo gedit /etc/fstab

Появится редактор с загруженным в него файлом fstab.

В этом файле fstab уже есть две записи. Это раздел существующего жесткого диска /dev/sda1 и файловая система подкачки. Будьте осторожны, чтобы не изменить эти записи.

Нам нужно добавить две новые записи в файл fstab. Один для раздела на диске SCSI и один для раздела на диске SSD. Сначала мы добавим раздел SCSI. Обратите внимание, что строки, начинающиеся с решётки #, являются комментариями.

  • В поле «файловая система» мы будем использовать UUID, который blkid получил для нас ранее. Начните строку с «UUID=», а затем вставьте UUID. Нажмите пробел или табуляцию.
  • Для поля «точка подключения» мы будем использовать созданную ранее точку подключения, /mnt/scsi. Вы бы использовали соответствующую точку монтирования из вашей системы. Нажмите пробел или табуляцию.
  • В качестве «типа» мы собираемся ввести ext4 , который является типом файловой системы на нашем разделе. Нажмите пробел или табуляцию.
  • В поле «Параметры» мы будем использовать параметры, полученные с помощью команды cat /etc/mtab. Это «rw, relatime». Нажмите пробел или табуляцию.
  • Поле «дампа» установлено на ноль. Нажмите пробел или табуляцию.
  • Поле «проход» установлено равным нулю.

Теперь мы добавим раздел записи fstab на SSD диске в отдельной строке.

  • В поле «файловая система» мы введем UUID, полученный blkid для раздела на SSD-накопителе. Начните строку с «UUID=», а затем вставьте UUID. Нажмите пробел или табуляцию.
  • Для поля «точка подключения» мы будем использовать созданную ранее точку подключения, /mnt/ssd. Нажмите пробел или табуляцию.
  • В качестве «типа» мы собираемся ввести ext4 , который является типом файловой системы на нашем разделе. Нажмите пробел или табуляцию.
  • В поле «Параметры» — просто для того, чтобы две новые записи в нашем примере отличались друг от друга, — мы будем использовать параметр «По умолчанию». Нажмите пробел или табуляцию.
  • Поле «дампа» установлено на ноль. Нажмите пробел или табуляцию.
  • Поле «проход» установлено равным нулю.

Сохраните файл и закройте редактор.

Тестирование fstab без перезагрузки

Мы можем размонтировать наши новые диски, а затем принудительно обновить файл fstab. Успешное монтирование наших новых разделов подтвердит, что введенные нами настройки и параметры синтаксически правильны. Это означает, что наш файл fstab должен правильно обрабатываться во время перезагрузки или включения питания.

Чтобы размонтировать диск SCSI, используйте эту команду. Обратите внимание, что в «umount» есть только одно «n»:

sudo umount /dev/sdb1

Чтобы размонтировать SSD-накопитель, используйте эту команду:

sudo umount /dev/sdc1

Теперь мы будем использовать lsblk, чтобы проверить, смонтированы ли эти блочные устройства.

lsblk | grep sd

И мы видим, что блочные устройства в компьютере присутствуют, но никуда не смонтированы.

Мы можем использовать команду mount с опцией -a (all), чтобы перемонтировать все файловые системы в  fstab.

sudo mount -a

И мы можем еще раз проверить с помощью lsblk, смонтированы ли теперь наши новые разделы:

lsblk | grep sd

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

Мы можем сделать это легко, используя chown. Это команда для точки монтирования SCSI:

sudo chown dave:users /mnt/scsi

А это команда для точки монтирования SSD:

sudo chown dave:users /mnt/ssd

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

Не так уж и страшно

Вся тяжелая работа приходится на этап разведки, и это тоже было несложно. Редактировать файл fstab после того, как вы собрали необходимую информацию, очень просто. Подготовка решает все.

RELATED: Best Linux Laptops for Developers and Enthusiasts