fstab (Русский)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Состояние перевода: На этой странице представлен перевод статьи Fstab. Дата последней синхронизации: 16 декабря 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Файл fstab(5) используется для настройки параметров монтирования различных блочных устройств, разделов на диске и удаленных файловых систем.

Он состоит из набора определений файловых систем. Каждая файловая система занимает свою строку. Эти определения динамически преобразуются в юниты монтирования systemd во время загрузки системы. При этом производится автоматическое разрешение зависимостей: службы, которые зависят от конкретной файловой системы, запускаются только после ее монтирования, а удаленные файловые системы вроде NFS или Samba, в свою очередь, монтируются только после того, как будет установлено сетевое подключение. Таким образом, и локальные, и удаленные файловые системы, указанные в /etc/fstab, будут правильно смонтированы без дополнительной настройки. По умолчанию, при монтировании также производится запуск проверки файловой системы программой fsck. За подробной информацией обратитесь к man-странице systemd.mount(5).

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

Использование

Простой пример /etc/fstab, в котором файловые системы идентифицируются по их UUID:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   noatime   0      1
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   noatime   0      2
device
Физическое место размещения файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования. Смотрите подробнее в разделе #Определение файловой системы.
dir
Каталог, в который будет примонтирована файловая система.
type
Тип файловой системы.
options
Параметры монтирования файловой системы. Подробнее смотрите на mount(8) § FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS и ext4(5) § MOUNT_OPTIONS. Обратите внимание, что некоторые параметры относятся к конкретным типам файловых систем.
dump
Используется утилитой dump(8) для определения того, нужно ли создать резервную копию данных в файловой системе. У большинства пользователей утилита dump не установлена, поэтому им следует указывать 0 в этом поле.
fsck
Используется программой fsck для определения того, нужно ли проверять целостность файловой системы. Значение 1 следует указывать только для корневой файловой системы; для остальных ФС, которые вы хотите проверять, используйте значение 2, которое имеет менее высокий приоритет. Файловые системы, для которых в поле указано значение 0, не будут проверяться fsck.
Совет:
  • При выборе типа файловой системы auto команда mount попытается определить реальный тип файловой системы самостоятельно. Это полезно для компакт-дисков (CD/DVD/Blu-ray).
  • Если корневая файловая система btrfs или XFS, порядок fsck следует всегда указывать 0 вместо 1. Смотрите fsck.btrfs(8) и fsck.xfs(8).

Все прописанные в /etc/fstab устройства автоматически монтируются при загрузке системы или при запуске команды mount(8) с параметром -a, если не указана опция noauto. Если есть устройства, прописанные в файле, но не подключенные, это приведёт к ошибке, если не указана опция nofail.

Для более подробной информации смотрите fstab(5) § DESCRIPTION.

Определение файловой системы

Конкретное место расположения файловой системы может быть определено различными способами. В файле /etc/fstab можно указать имя файла устройства, его метку или UUID (в том числе GPT-метку и GPT-UUID для дисков GPT). Определение по UUID или PARTUUID является наиболее предпочтительным способом. Подробнее об этом вы можете узнать на странице Persistent block device naming — рекомендуется прочесть её перед продолжением чтения данной статьи.

Далее приведены примеры определений файловых систем с использованием каждого из способов. Вывод lsblk -f and blkid для этих примеров вы можете найти на странице Persistent block device naming.

По именам устройств

Запустите lsblk -f, чтобы отобразить список разделов. Укажите имена устройств с префиксом /dev/.

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
/dev/sda1         /boot        vfat          defaults         0      2
/dev/sda2         /            ext4          defaults         0      1
/dev/sda3         /home        ext4          defaults         0      2
/dev/sda4         none         swap          defaults         0      0
Важно: Эти имена не являются постоянными и могут меняться при перезагрузках, поэтому в файлах конфигурации лучше их не использовать.

По меткам

Запустите lsblk -f, чтобы отобразить список разделов. Укажите метки из столбца LABEL с префиксом LABEL=:

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
LABEL=ESP         /boot        vfat          defaults         0      2
LABEL=System      /            ext4          defaults         0      1
LABEL=Data        /home        ext4          defaults         0      2
LABEL=Swap        none         swap          defaults         0      0
Примечание: Если какое-нибудь из полей содержит пробелы, прочитайте в разделе #Пробелы в значениях полей о том, как правильно их указывать.

По UUID

Запустите lsblk -f, чтобы отобразить список разделов. Укажите идентификаторы из столбца UUID с префиксом UUID=:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=CBB6-24F2                            /boot vfat   defaults  0      2
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   defaults  0      1
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   defaults  0      2
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0
Совет: Если вы хотите отобразить только UUID конкретного раздела, используйте команду lsblk -no UUID /dev/sda2.

По меткам GPT

Запустите blkid чтобы отобразить список разделов. Укажите значения PARTLABEL без кавычек:

/etc/fstab
# <device>                           <dir> <type> <options> <dump> <fsck>
PARTLABEL=EFI\040system\040partition /boot vfat   defaults  0      2
PARTLABEL=GNU/Linux                  /     ext4   defaults  0      1
PARTLABEL=Home                       /home ext4   defaults  0      2
PARTLABEL=Swap                       none  swap   defaults  0      0
Примечание: Если какое-нибудь из полей содержит пробелы, прочитайте в разделе #Пробелы в значениях полей о том, как их правильно указать.

По UUID GPT

Запустите blkid чтобы отобразить список разделов. Укажите значения PARTUUID без кавычек:

/etc/fstab
# <device>                                    <dir> <type> <options> <dump> <fsck>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat   defaults  0      2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /     ext4   defaults  0      1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4   defaults  0      2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap   defaults  0      0

Советы и рекомендации

Автоматическое монтирование с systemd

Список всех опций монтирования systemd можно посмотреть в systemd.mount(5).

Локальный раздел

Если есть большой раздел, вы можете разрешить службам, которые не обращаются к нему, запускаться в то время, как он проверяется программой fsck. Для этого добавьте следующие параметры монтирования в запись /etc/fstab для соответствующего раздела:

noauto,x-systemd.automount

При этом процедура проверки и монтирования раздела будет запущена только при первой попытке доступа, и ядро будет держать в ожидании все потоки ввода-вывода, связанные с этим разделом, пока он не будет смонтирован. Это полезно в случае, например, очень большого раздела /home.

Примечание: Разделу будет присвоен тип файловой системы autofs, который по умолчанию игнорируется mlocate. Используйте эту возможность с осторожностью.

Удалённая файловая система

Автоматическое монтирование может аналогичным образом использоваться и для монтирования удаленных файловых систем. В дополнение, вы можете использовать параметр x-systemd.device-timeout=# для указания времени ожидания удаленной файловой системы при перебоях в соединении. Также опция _netdev даёт systemd понять, что файловая система зависит от сети.

noauto,x-systemd.automount,x-systemd.mount-timeout=30,_netdev

Зашифрованная файловая система

Если у вас имеются зашифрованные файловые системы, вы можете также добавить параметр noauto в соответствующие записи в /etc/crypttab. Тогда systemd не будет пытаться открыть зашифрованное устройство во время загрузки системы, а сделает это при первой попытке доступа к файловой системе на этом устройстве, применив указанный файл ключа и затем автоматически смонтировав ФС. Это может дать выигрыш в несколько секунд при загрузке системы, например, если у вас зашифрованный RAID массив: systemd не придется ожидать готовности устройства. Пример записи:

/etc/crypttab
data /dev/md0 /root/key noauto

Автоматическое размонтирование

С помощью флага x-systemd.idle-timeout можно указать таймаут бездействия. Например:

noauto,x-systemd.automount,x-systemd.idle-timeout=1min

В таком случае systemd размонтирует раздел спустя одну минуту неактивности.

Пробелы в значениях полей

Так как пробельные символы используются в fstab для разделения полей, их нельзя напрямую использовать в значениях полей. Любые пробелы в полях (например, значения PARTLABEL, LABEL или точки монтирования) должны быть заменены специальными управляющими последовательностями, которые состоят из обратной косой черты (\) и трех восьмеричных цифр (например, для пробела это \040):

/etc/fstab
UUID=47FA-4071     /home/username/Camera\040Pictures   vfat  noatime       0  0
/dev/sda7          /media/100\040GB\040(Storage)       ext4  noatime,user  0  2

Внешние устройства

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

/etc/fstab
/dev/sdg1        /media/backup    jfs    nofail,x-systemd.device-timeout=1ms    0  2

Параметр nofail хорошо комбинируется с x-systemd.device-timeout. Таймаут по умолчанию 90 секунд, из-за чего отсутствие устройства приведёт к увеличению времени загрузки на 90 секунд. Не ставьте таймаут 0, так как это означает бесконечный таймаут.

Параметры atime

  • Если файловая система смонтирована с параметром strictatime, то, когда происходит обращение к файлу, в его поле atime записывается текущее время (иными словами, время доступа). Это может быть полезно, когда Linux используется на сервере; на персональном компьютере эта функция обычно не нужна. Недостаток этой функции в том, что даже при чтении файла из кэша (в оперативной памяти) все равно производится медленная операция записи на диск. Использование параметров монтирования noatime, nodiratime или relatime может улучшить производительность доступа к данным, а также уменьшить износ твердотельных (SSD) накопителей.
  • Параметр noatime полностью отключает запись времени доступа к файлу. Большинство программ не используют это поле. Но бывают и редкие исключения — например, Mutt полагается на его значение. Для mutt вы можете использовать параметр relatime.
  • Параметр nodiratime отключает обновление времени доступа только для каталогов; для остальных файлов время atime будет обновляться всегда.
Примечание: Действие noatime перекрывает собой nodiratime. Нет необходимости указывать оба параметра.
  • Параметр relatime включает обновление поля только если atime меньше времени последнего изменения файла или если с предыдущего обновления прошло больше 24 часов. Этот параметр автоматически используется при использовании параметра defaults или параметра atime (который означает значение по умолчанию в ядре, которым является relatime; смотрите mount(8) и wikipedia:Stat (system call)#Criticism of atime) и если не указаны никакие опции.

В ядре 4.0 появилась ещё одна опция:

  • lazytime уменьшает количество операций записи на диск, сохраняя изменения временных меток inode (время доступа, изменения и создания) только в памяти. Временные метки на диске обновляются только тогда, когда (1) inode файла необходимо обновить для некоторых изменений, не связанных с временными метками файла, (2) происходит синхронизация с диском, (3) восстановленный inode вытесняется из памяти или (4 ), если с момента последней записи на диск хранящейся в памяти копии прошло более 24 часов.
Важно: В случае падения системы даты доступа и изменения файлов могут оказаться устаревшими в пределах 24 часов.

Перемонтирование корневого раздела

Если по какой-то причине корневой раздел был неправильно смонтирован только на чтение, вы можете перемонтировать его с доступом на чтение-запись без перезагрузки, набрав

# mount -o remount,rw /

Автомонтирование GPT-раздела

При использовании UEFI/GPT вы можете избавиться от необходимости указывать некоторые разделы в /etc/fstab, разметив их в соответствии с Discoverable Partitions Specification, и примонтировать эти разделы с помощьюsystemd-gpt-auto-generator(8). Смотрите systemd (Русский)#Автомонтирование GPT-раздела.

Смотрите также