====== fstab. Параметры монтирования блочных устройств ====== Файл **/etc/fstab** используется для настройки параметров монтирования различных блочных устройств, разделов на диске и удаленных файловых систем. ---- ===== Пример файла ===== Простой пример **/etc/fstab** , в котором файловые системы заданы **по именам файлов устройств**: # /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 ==== Физическое место размещения файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования. ==== dir ==== Точка монтирования, куда монтируется корень файловой системы. ==== type ==== Тип файловой системы. Поддерживается множество типов: **ext2**, **ext3**, **ext4**, **btrfs**, **reiserfs**, **xfs**, **jfs**, **smbfs**, **iso9660**, **vfat**, **ntfs**, **swap** и **auto**. При выборе **auto** команда **mount** //попытается определить реальный тип файловой системы// самостоятельно. Это полезно для компакт-дисков (CD/DVD). ==== options ==== Параметры монтирования файловой системы. Подробнее смотрите на **man** странице **mount**. Обратите внимание, что некоторые параметры относятся к конкретным типам файловых систем. ^ Опция ^ Значение ^ | **auto** | Файловая система монтируется при загрузке автоматически или после выполнения команды '**mount -a**'. | | **noauto** | Файловая система может быть смонтирована только вручную. | | **exec** | Позволяет исполнять бинарные файлы на разделе диска. Установлено по умолчанию. | | **noexec** | Бинарные файлы не выполняются. Использование опции на корневой системе приведёт к её неработоспособности. | | **ro **| Монтирует файловую систему только для чтения. | | **rw** | Монтирует файловую систему для чтения/записи. | | **sync** | Все операции ввода-вывода должны выполняться синхронно. | | **async** | Все операции ввода-вывода должны выполняться асинхронно. | | **user** | Разрешает любому пользователю монтировать файловую систему. Применяет опции **noexec**, **nosuid**, **nodev**, //если они не переопределены//. | | **nouser** | Только суперпользователь может монтировать файловую систему. Используется по умолчанию. | | **defaults** | Использовать значения по умолчанию. Соответствует набору **rw**, **suid**, **dev**, **exec**, **auto**, **nouser**, **async**. | | **suid** | Разрешить операции с **suid** и **sgid** битами. В основном используются, чтобы позволить пользователям выполнять бинарные файлы со временно приобретёнными привилегиями для выполнения определённой задачи. | | **nosuid** | Запрещает операции с **suid** и **sgid** битами. | | **nodev** | Данная опция предполагает, что на монтируемой файловой системе не будут созданы файлы устройств (**/dev**). Корневой каталог и целевая директория команды **chroot** всегда должны монтироваться с опцией **dev** или **defaults**. | | **atime** | Включает запись информации о последнем времени доступа (**atime**) при каждом чтении файла. Включено по умолчанию на Linux до v.2.6.29 включительно. | | **noatime** | Отключает запись информации о последнем времени доступа (**atime**) при каждом чтении файла. | | **relatime** | Включает запись информации о последнем времени доступа при чтении файла, если предыдущее время доступа (**atime**) меньше времени изменения файла (ctime). Включено по умолчанию на Linux начиная с v.2.6.30. | | **acl** | Включить обработку **ACL** для раздела | ==== dump ==== Используется утилитой dump для определения того, нужно ли создать резервную копию данных в файловой системе. Возможные значения: **0** или **1**. Если указано число **1**, //dump создаст резервную копию//. У большинства пользователей утилита dump не установлена, поэтому им следует указывать 0 в этом поле. ==== pass ==== Используется программой **fsck** для определения того, //нужно ли проверять целостность файловой системы//. //Возможные значения:// **0**, **1** или **2**. Значение **1** с//ледует указывать только для корневой файловой системы// (с точкой монтирования **/**); //для остальных ФС, которые вы хотите проверять//, используйте значение **2**, которое имеет менее высокий приоритет.Обратите внимание, что в случае **btrfs** //следует всегда указывать **0**, даже если эта файловая система используется в качестве корневой//. Файловые системы, для которых в поле указано значение **0**, //не будут проверяться// **fsck**. ---- ===== Определение файловой системы ===== Конкретное место расположения файловой системы может быть определено различными способами. В файле **/etc/fstab** можно указать **имя файла устройства**, **его метку** или **UUID** (в том числе **GPT-метку** и **GPT-UUID** для дисков GPT). Определение по UUID является наиболее предпочтительным способом. Далее приведены примеры определений файловых систем с использованием каждого из способов. Вывод lsblk -f and blkid для этих примеров вы можете найти на странице Persistent block device naming. ---- ==== По именам устройств ==== Запустите **lsblk -f** , чтобы отобразить список разделов. Укажите имена устройств с префиксом **/dev/** : # /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=** : # 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 ---- ==== По UUID ==== Запустите **lsblk -f**, чтобы отобразить список разделов. Укажите идентификаторы из столбца **UUID** с префиксом **UUID=** : # 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** //без кавычек//: # 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 ---- ==== По UUID GPT ==== Запустите **blkid** чтобы отобразить список разделов. Укажите значения **PARTUUID** //без кавычек//: # 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 ---- ===== Дополнительная информация ===== ==== Автоматическое монтирование с systemd ==== Если у вас большой раздел **/home**, вы можете разрешить службам, которые не обращаются к **/home**, запускаться в то время, как **/home** проверяется программой **fsck**. Для этого добавьте следующие параметры монтирования в запись **/etc/fstab** для точки монтирования **/home**: noauto,x-systemd.automount //При этом процедура проверки и монтирования **/home** будет запущена только при первой попытке доступа, и ядро будет держать в ожидании все создаваемые потоки ввода-вывода в **/home**, пока раздел не будет смонтирован//. Обратите внимание: Ускорение при автоматическом монтировании /home может составлять не более секунды-двух, в зависимости от конфигурации вашей системы. При этом разделу **/home** будет присвоен тип файловой системы **autofs**, который по умолчанию игнорируется **mlocate**. Используйте эту возможность с осторожностью. Автоматическое монтирование может аналогичным образом использоваться и для монтирования удаленных файловых систем. В дополнение, вы можете использовать параметр **x-systemd.device-timeout=#** для указания времени ожидания удаленной файловой системы при перебоях в соединении. Обратите внимание: Если вы намереваетесь использовать флаг **exec** при автоматическом монтировании, вам следует //удалить флаг// **user**, чтобы монтирование производилось корректно. Если у вас имеются //зашифрованные файловые системы//, вы можете также добавить параметр **noauto** в соответствующие записи в **/etc/crypttab** . Тогда //systemd не будет пытаться открыть зашифрованное устройство во время загрузки системы//, а сделает это при первой попытке доступа к файловой системе на этом устройстве, применив указанный файл ключа и затем автоматически смонтировав ФС. Это может дать выигрыш в несколько секунд при загрузке системы, например, если у вас зашифрованный RAID массив: systemd не придется ожидать готовности устройства. * Пример записи: cat /etc/crypttab data /dev/md0 /root/key noauto ---- ==== Пробелы в значениях полей ==== Так как пробельные символы используются в **fstab** для разделения полей, их **нельзя напрямую использовать в значениях полей**. Любые пробелы в полях (например, значения **PARTLABEL**, **LABEL** или точки монтирования) //должны быть заменены специальными управляющими последовательностями//, которые состоят из обратной косой черты (**\**) и **трех восьмеричных цифр** (например, //для пробела это// **\040**): UUID=47FA-4071 /home/username/Camera\040Pictures vfat defaults,noatime 0 0 /dev/sda7 /media/100\040GB\040(Storage) ext4 defaults,noatime,user 0 2 ---- ==== Внешние устройства ==== Если устройство не подключено постоянно, и может отсутствовать во время загрузки системы, монтируйте его с параметром **nofail**. Это предотвратит появление ошибок при загрузке. /dev/sdg1 /media/backup jfs defaults,nofail 0 2 ---- ==== Параметры atime ==== * Если файловая система смонтирована с параметром **atime**, то, когда происходит обращение к файлу, в его поле atime записывается текущее время (иными словами, время доступа). Это может быть полезно, когда Linux используется на сервере; на персональном компьютере эта функция обычно не нужна. Недостаток этой функции в том, что даже при чтении файла из кэша (в оперативной памяти) все равно производится медленная операция записи на диск. Использование параметров монтирования **noatime**, **nodiratime** или **relatime** может улучшить производительность доступа к данным, а также уменьшить износ твердотельных (SSD) накопителей. * Параметр **noatime** полностью отключает запись времени доступа к файлу. Большинство программ не используют это поле. Но бывают и редкие исключения — например, **Mutt** полагается на его значение. Для mutt вы можете использовать параметр **relatime**. * Параметр **nodiratime** отключает обновление времени доступа только для каталогов; для остальных файлов время atime будет обновляться всегда. Обратите внимание: Действие noatime перекрывает собой nodiratime. **Нет необходимости указывать оба параметра**. * Параметр **relatime** включает обновление поля только когда содержимое файла перезаписывается (в отличие от **noatime**, при котором поле **atime** вообще не обновляется, и может становиться раньше времени изменения mtime). Использование этого параметра наиболее предпочтительно, так как программы вроде Mutt будут работать корректно, и при этом вы все равно получите достаточное улучшение производительности: при операциях чтения (как правило, гораздо более частых, чем записи) не будет производиться запись времени на диск. //По умолчанию файловые системы монтируются с этим параметром// ---- ==== Запись в FAT32 с правами обычного пользователя ==== Чтобы иметь возможность записи в разделе FAT32, вам следует указать правильные параметры монтирования в вашем файле /etc/fstab. /dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0 Флаг **user** означает, что любой пользователь сможет монтировать и размонтировать раздел **/dev/sdX** . Параметр **rw** дает доступ на чтение-запись; **umask** убирает указанные права — например, **umask=111** удаляет права на выполнение. Проблема в том, что права на "выполнение" также удаляются у каталогов, поэтому мы должны исправить это при помощи параметра **dmask=000** . \\ Без этих параметров все файлы будут восприниматься исполняемыми. Вы можете использовать параметр **showexec** вместо **umask** и **dmask**, при которой исполняемыми будут файлы, имеющие расширения исполняемых файлов Windows (.com, .exe, .bat). \\ Например, если ваш раздел **FAT32** на **/dev/sda9**, и вы хотите смонтировать его в каталог **/mnt/fat32**, то вам следует использовать запись следующего вида: /dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0 ---- ==== Перемонтирование корневого раздела ==== Если по какой-то причине корневой раздел был неправильно смонтирован только на чтение, вы можете перемонтировать его с доступом на чтение-запись без перезагрузки, набрав # mount -o remount,rw / ---- ===== Источники ===== * [[https://wiki.archlinux.org/index.php/Fstab_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.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|wiki.archlinux.org]] * [[https://ru.wikipedia.org/wiki/Fstab|ru.wikipedia.org]] * [[acl._vkljuchenie|ACL. Включение]]