UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

241 lines (153 loc) 27.7 kB
Ссылки по теме * [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")