fstab (Русский)

Ссылки по теме
Постоянные имена для блочных устройств
Файловые системы
Mount (Русский)
tmpfs (Русский)
Состояние перевода:
На этой странице представлен перевод статьи
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   defaults  0      1
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   defaults  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 является наиболее предпочтительным способом. Подробнее об этом вы можете узнать на странице
Постоянные имена для блочных устройств
— рекомендуется прочесть её перед продолжением чтения данной статьи.
Далее приведены примеры определений файловых систем с использованием каждого из способов. Вывод
lsblk -f
and
blkid
для этих примеров вы можете найти на странице
Постоянные имена для блочных устройств
.
По именам устройств
Запустите
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
, который по умолчанию игнорируется
locate
. Используйте эту возможность с осторожностью.
Удалённая файловая система
Автоматическое монтирование может аналогичным образом использоваться и для монтирования удаленных файловых систем. В дополнение, вы можете использовать параметр
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
\040
Pictures   vfat  defaults       0  0
/dev/sda7          /media/100
\040
GB
\040
(Storage)       ext4  defaults,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-раздела
.
Смотрите также
Полный список устройств, включающий также блочные устройства
Стандарт иерархии файловой системы (FHS)
Ускорение веб-сайта в 30 раз
(подробнее о tmpfs)