arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
241 lines (153 loc) • 27.7 kB
Markdown
Ссылки по теме
* [Persistent block device naming](/index.php/Persistent_block_device_naming "Persistent block device naming")
* [File systems](/index.php/File_systems "File systems")
* [Mount (Русский)](/index.php/Mount_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Mount (Русский)")
* [tmpfs](/index.php/Tmpfs "Tmpfs")
Файл [/etc/fstab](https://en.wikipedia.org/wiki/Fstab "wikipedia:Fstab") используется для настройки параметров монтирования различных блочных устройств, разделов на диске и удаленных файловых систем.
Он состоит из набора определений файловых систем. Каждая файловая система занимает свою строку. Эти определения динамически преобразуются в юниты монтирования [systemd](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Systemd (Русский)") во время загрузки системы. При этом производится автоматическое разрешение зависимостей: службы, которые зависят от конкретной файловой системы, запускаются только после ее монтирования, а удаленные файловые системы вроде [NFS](/index.php/NFS "NFS") или [Samba](/index.php/Samba "Samba"), в свою очередь, монтируются только после того, как будет установлено сетевое подключение. Таким образом, и локальные, и удаленные файловые системы, указанные в `/etc/fstab`, будут правильно смонтированы без дополнительной настройки. По умолчанию, при монтировании также производится запуск проверки файловой системы программой [fsck](/index.php/Fsck "Fsck"). За подробной информацией обратитесь к [man-странице](/index.php/Man_page_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Man page (Русский)") `systemd.mount(5)`.
При монтировании с помощью *mount* fstab используется для определения точки монтирования, если указано только устройство, и наоборот. При этом параметры монтирования также берутся из fstab.
## Contents
* [1 Пример файла](#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D1.84.D0.B0.D0.B9.D0.BB.D0.B0)
* [2 Формат строки](#.D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B8)
* [3 Определение файловой системы](#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2.D0.BE.D0.B9_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B)
* [3.1 По именам устройств](#.D0.9F.D0.BE_.D0.B8.D0.BC.D0.B5.D0.BD.D0.B0.D0.BC_.D1.83.D1.81.D1.82.D1.80.D0.BE.D0.B9.D1.81.D1.82.D0.B2)
* [3.2 По меткам](#.D0.9F.D0.BE_.D0.BC.D0.B5.D1.82.D0.BA.D0.B0.D0.BC)
* [3.3 По UUID](#.D0.9F.D0.BE_UUID)
* [3.4 По меткам GPT](#.D0.9F.D0.BE_.D0.BC.D0.B5.D1.82.D0.BA.D0.B0.D0.BC_GPT)
* [3.5 По UUID GPT](#.D0.9F.D0.BE_UUID_GPT)
* [4 Советы и рекомендации](#.D0.A1.D0.BE.D0.B2.D0.B5.D1.82.D1.8B_.D0.B8_.D1.80.D0.B5.D0.BA.D0.BE.D0.BC.D0.B5.D0.BD.D0.B4.D0.B0.D1.86.D0.B8.D0.B8)
* [4.1 Автоматическое монтирование с systemd](#.D0.90.D0.B2.D1.82.D0.BE.D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B5_.D0.BC.D0.BE.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81_systemd)
* [4.2 Пробелы в значениях полей](#.D0.9F.D1.80.D0.BE.D0.B1.D0.B5.D0.BB.D1.8B_.D0.B2_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D1.8F.D1.85_.D0.BF.D0.BE.D0.BB.D0.B5.D0.B9)
* [4.3 Внешние устройства](#.D0.92.D0.BD.D0.B5.D1.88.D0.BD.D0.B8.D0.B5_.D1.83.D1.81.D1.82.D1.80.D0.BE.D0.B9.D1.81.D1.82.D0.B2.D0.B0)
* [4.4 Параметры atime](#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D1.8B_atime)
* [4.5 Запись в FAT32 с правами обычного пользователя](#.D0.97.D0.B0.D0.BF.D0.B8.D1.81.D1.8C_.D0.B2_FAT32_.D1.81_.D0.BF.D1.80.D0.B0.D0.B2.D0.B0.D0.BC.D0.B8_.D0.BE.D0.B1.D1.8B.D1.87.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F)
* [4.6 Перемонтирование корневого раздела](#.D0.9F.D0.B5.D1.80.D0.B5.D0.BC.D0.BE.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D1.80.D0.BD.D0.B5.D0.B2.D0.BE.D0.B3.D0.BE_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D0.B0)
* [5 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5)
## Пример файла
Простой пример `/etc/fstab`, в котором файловые системы заданы по именам файлов устройств:
`/etc/fstab`
```
# <file system> <dir> <type> <options> <dump> <pass>
/dev/sda1 / ext4 defaults,noatime 0 1
/dev/sda2 none swap defaults 0 0
/dev/sda3 /home ext4 defaults,noatime 0 2
```
## Формат строки
Каждая строка в файле `/etc/fstab` содержит следующие поля, разделенные пробелами или символами табуляции:
```
*filesystem* *dir* *type* *options* *dump* *pass*
```
*filesystem*
Физическое место размещения файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования. Смотрите подробнее в разделе [#Определение файловой системы](#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2.D0.BE.D0.B9_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B).
*dir*
Точка монтирования, куда монтируется корень файловой системы.
*type*
Тип файловой системы. Поддерживается множество типов: `ext2`, `ext3`, `ext4`, `btrfs`, `reiserfs`, `xfs`, `jfs`, `smbfs`, `iso9660`, `vfat`, `ntfs`, `swap` и `auto`. При выборе `auto` команда mount попытается определить реальный тип файловой системы самостоятельно. Это полезно для компакт-дисков (CD/DVD).
*options*
Параметры монтирования файловой системы. Подробнее смотрите на [mount(8)](http://jlk.fjfi.cvut.cz/arch/manpages/man/mount.8#FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS). Обратите внимание, что некоторые параметры относятся к конкретным типам файловых систем.
*dump*
Используется утилитой *dump* для определения того, нужно ли создать резервную копию данных в файловой системе. Возможные значения: 0 или 1\. Если указано число 1, dump создаст резервную копию. У большинства пользователей утилита dump не установлена, поэтому им следует указывать 0 в этом поле.
*pass*
Используется программой [fsck](/index.php/Fsck "Fsck") для определения того, нужно ли проверять целостность файловой системы. Возможные значения: 0, 1 или 2\. Значение 1 следует указывать только для корневой файловой системы (с точкой монтирования `/`); для остальных ФС, которые вы хотите проверять, используйте значение 2, которое имеет менее высокий приоритет.Обратите внимание, что в случае [btrfs](/index.php/Btrfs "Btrfs") следует всегда указывать 0, даже если эта файловая система используется в качестве корневой. Файловые системы, для которых в поле указано значение 0, не будут проверяться fsck.
## Определение файловой системы
Конкретное место расположения файловой системы может быть определено различными способами. В файле `/etc/fstab` можно указать имя файла устройства, его метку или UUID (в том числе GPT-метку и GPT-UUID для дисков GPT). Определение по UUID является наиболее предпочтительным способом. Подробнее об этом вы можете узнать на странице [Persistent block device naming](/index.php/Persistent_block_device_naming "Persistent block device naming").
Далее приведены примеры определений файловых систем с использованием каждого из способов. Вывод `lsblk -f` and `blkid` для этих примеров вы можете найти на странице [Persistent block device naming](/index.php/Persistent_block_device_naming "Persistent block device naming").
**Примечание:** Рекомендуем вам прочесть статью [Persistent block device naming](/index.php/Persistent_block_device_naming "Persistent block device naming") перед тем, как продолжить.
### По именам устройств
Запустите `lsblk -f`, чтобы отобразить список разделов. Укажите имена устройств с префиксом `/dev/`.
`/etc/fstab`
```
# <file system> <dir> <type> <options> <dump> <pass>
/dev/sda1 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
/dev/sda2 / ext4 rw,relatime,discard,data=ordered 0 1
/dev/sda3 /home ext4 rw,relatime,discard,data=ordered 0 2
/dev/sda4 none swap defaults 0 0
```
### По меткам
Запустите `lsblk -f`, чтобы отобразить список разделов. Укажите метки из столбца `LABEL` с префиксом `LABEL=`:
`/etc/fstab`
```
# <file system> <dir> <type> <options> <dump> <pass>
LABEL=EFI /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
LABEL=SYSTEM / ext4 rw,relatime,discard,data=ordered 0 1
LABEL=DATA /home ext4 rw,relatime,discard,data=ordered 0 2
LABEL=SWAP none swap defaults 0 0
```
**Примечание:** Если какое-нибудь из полей содержит пробелы, прочитайте в разделе [#Пробелы в значениях полей](#.D0.9F.D1.80.D0.BE.D0.B1.D0.B5.D0.BB.D1.8B_.D0.B2_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D1.8F.D1.85_.D0.BF.D0.BE.D0.BB.D0.B5.D0.B9) о том, как правильно их указывать.
### По UUID
Запустите `lsblk -f`, чтобы отобразить список разделов. Укажите идентификаторы из столбца `UUID` с префиксом `UUID=`:
`/etc/fstab`
```
# <file system> <dir> <type> <options> <dump> <pass>
UUID=CBB6-24F2 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 rw,relatime,discard,data=ordered 0 1
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 rw,relatime,discard,data=ordered 0 2
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0
```
**Совет:** Если вы хотите отобразить только UUID конкретного раздела, используйте команду `lsblk -no UUID */dev/sda2*`.
### По меткам GPT
Запустите `blkid` чтобы отобразить список разделов. Укажите значения `PARTLABEL` без кавычек:
`/etc/fstab`
```
# <file system> <dir> <type> <options> <dump> <pass>
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
PARTLABEL=GNU/LINUX / ext4 rw,relatime,discard,data=ordered 0 1
PARTLABEL=HOME /home ext4 rw,relatime,discard,data=ordered 0 2
PARTLABEL=SWAP none swap defaults 0 0
```
**Примечание:** Если какое-нибудь из полей содержит пробелы, прочитайте в разделе [#Пробелы в значениях полей](#.D0.9F.D1.80.D0.BE.D0.B1.D0.B5.D0.BB.D1.8B_.D0.B2_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D1.8F.D1.85_.D0.BF.D0.BE.D0.BB.D0.B5.D0.B9) о том, как их правильно указать.
### По UUID GPT
Запустите `blkid` чтобы отобразить список разделов. Укажите значения `PARTUUID` без кавычек:
`/etc/fstab`
```
# <file system> <dir> <type> <options> <dump> <pass>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 / ext4 rw,relatime,discard,data=ordered 0 1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4 rw,relatime,discard,data=ordered 0 2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none swap defaults 0 0
```
## Советы и рекомендации
### Автоматическое монтирование с systemd
Если у вас большой раздел `/home`, вы можете разрешить службам, которые не обращаются к `/home`, запускаться в то время, как `/home` проверяется программой *fsck*. Для этого добавьте следующие параметры монтирования в запись `/etc/fstab` для точки монтирования `/home`:
```
noauto,x-systemd.automount
```
При этом процедура проверки и монтирования `/home` будет запущена только при первой попытке доступа, и ядро будет держать в ожидании все создаваемые потоки ввода-вывода в `/home`, пока раздел не будет смонтирован.
**Примечание:** Ускорение при автоматическом монтировании `/home` может составлять не более секунды-двух, в зависимости от конфигурации вашей системы. При этом разделу `/home` будет присвоен тип файловой системы `autofs`, который по умолчанию игнорируется [mlocate](/index.php/Mlocate "Mlocate"). Используйте эту возможность с осторожностью.
Автоматическое монтирование может аналогичным образом использоваться и для монтирования удаленных файловых систем. В дополнение, вы можете использовать параметр `x-systemd.device-timeout=#` для указания времени ожидания удаленной файловой системы при перебоях в соединении.
**Примечание:** Если вы намереваетесь использовать флаг `exec` при автоматическом монтировании, вам следует удалить флаг `user`, чтобы монтирование производилось корректно. Подробнее смотрите в [отчете об ошибке](https://bugzilla.redhat.com/show_bug.cgi?id=769636).
Если у вас имеются зашифрованные файловые системы, вы можете также добавить параметр `noauto` в соответствующие записи в `/etc/crypttab`. Тогда systemd не будет пытаться открыть зашифрованное устройство во время загрузки системы, а сделает это при первой попытке доступа к файловой системе на этом устройстве, применив указанный файл ключа и затем автоматически смонтировав ФС. Это может дать выигрыш в несколько секунд при загрузке системы, например, если у вас зашифрованный RAID массив: systemd не придется ожидать готовности устройства. Пример записи:
`/etc/crypttab` `data /dev/md0 /root/key noauto`
### Пробелы в значениях полей
Так как пробельные символы используются в `fstab` для разделения полей, их нельзя напрямую использовать в значениях полей. Любые пробелы в полях (например, значения `PARTLABEL`, `LABEL` или точки монтирования) должны быть заменены специальными управляющими последовательностями, которые состоят из обратной косой черты (`\`) и трех восьмеричных цифр (например, для пробела это `\040`):
`/etc/fstab`
```
UUID=47FA-4071 /home/username/Camera<font color="grey">**\040**</font>Pictures vfat defaults,noatime 0 0
/dev/sda7 /media/100<font color="grey">**\040**</font>GB<font color="grey">**\040**</font>(Storage) ext4 defaults,noatime,user 0 2
```
### Внешние устройства
Если устройство не подключено постоянно, и может отсутствовать во время загрузки системы, монтируйте его с параметром `nofail`. Это предотвратит появление ошибок при загрузке.
`/etc/fstab` `/dev/sdg1 /media/backup jfs defaults,nofail 0 2`
### Параметры atime
* Если файловая система смонтирована с параметром `atime`, то, когда происходит обращение к файлу, в его поле atime записывается текущее время (иными словами, время доступа). Это может быть полезно, когда Linux используется на сервере; на персональном компьютере эта функция обычно не нужна. Недостаток этой функции в том, что даже при чтении файла из кэша (в оперативной памяти) все равно производится медленная операция записи на диск. Использование параметров монтирования `noatime`, `nodiratime` или `relatime` может улучшить производительность доступа к данным, а также уменьшить износ твердотельных (SSD) накопителей.
* Параметр `noatime` полностью отключает запись времени доступа к файлу. Большинство программ не используют это поле. Но бывают и редкие исключения — например, [Mutt](/index.php/Mutt "Mutt") полагается на его значение. Для *mutt* вы можете использовать параметр `relatime`.
* Параметр `nodiratime` отключает обновление времени доступа только для каталогов; для остальных файлов время atime будет обновляться всегда.
**Примечание:** Действие `noatime` перекрывает собой `nodiratime`. [Нет необходимости указывать оба параметра](http://lwn.net/Articles/244941/).
* Параметр `relatime` включает обновление поля только когда содержимое файла перезаписывается (в отличие от `noatime`, при котором поле atime вообще не обновляется, и может становиться раньше времени изменения mtime). Использование этого параметра наиболее предпочтительно, так как программы вроде [Mutt](/index.php/Mutt "Mutt") будут работать корректно, и при этом вы все равно получите достаточное улучшение производительности: при операциях чтения (как правило, гораздо более частых, чем записи) не будет производиться запись времени на диск. По умолчанию файловые системы монтируются с этим параметром.
### Запись в FAT32 с правами обычного пользователя
Чтобы иметь возможность записи в разделе FAT32, вам следует указать правильные параметры монтирования в вашем файле `/etc/fstab`.
`/etc/fstab` `/dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0`
Флаг `user` означает, что любой пользователь сможет монтировать и размонтировать раздел `/dev/sdX`. Параметр `rw` дает доступ на чтение-запись; `umask` убирает указанные права — например, `umask=111` удаляет права на выполнение. Проблема в том, что права на "выполнение" также удаляются у каталогов, поэтому мы должны исправить это при помощи параметра `dmask=000` (подробности смотрите на странице [Umask](/index.php/Umask "Umask")).
Без этих параметров все файлы будут восприниматься исполняемыми. Вы можете использовать параметр `showexec` вместо umask и dmask, при которой исполняемыми будут файлы, имеющие расширения исполняемых файлов Windows (*.com*, *.exe*, *.bat*).
Например, если ваш раздел FAT32 на `/dev/sda9`, и вы хотите смонтировать его в каталог `/mnt/fat32`, то вам следует использовать запись следующего вида:
`/etc/fstab` `/dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0`
### Перемонтирование корневого раздела
Если по какой-то причине корневой раздел был неправильно смонтирован только на чтение, вы можете перемонтировать его с доступом на чтение-запись без перезагрузки, набрав
```
# mount -o remount,rw /
```
## Смотрите также
* [Полный список устройств, включающий также блочные устройства](http://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt)
* [Стандарт иерархии файловой системы (FHS)](http://www.pathname.com/fhs/2.2/index.html)
* [Ускорение веб-сайта в 30 раз](http://www.askapache.com/web-hosting/super-speed-secrets.html) (подробнее о tmpfs)
* [Samba#Добавление сетевых ресурсов Sabma в /etc/fstab](/index.php/Samba#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.B5.D1.82.D0.B5.D0.B2.D1.8B.D1.85_.D1.80.D0.B5.D1.81.D1.83.D1.80.D1.81.D0.BE.D0.B2_Sabma_.D0.B2_.2Fetc.2Ffstab "Samba")