- Как добавлять записи в /etc/fstab. Как использовать /etc/fstab для хранения опций монтирования
- Для чего нужен файл /etc/fstab
- Из чего состоят записи в /etc/fstab
- Пример файла /etc/fstab с объяснением значений записей
- Как управлять опциями монтирования с помощью /etc/fstab
- fstab
- Contents
- Usage
- Identifying filesystems
- Kernel name descriptors
- File system labels
- File system UUIDs
- GPT partition labels
- GPT partition UUIDs
- Tips and tricks
- Automount with systemd
- Local partition
- Remote filesystem
- Encrypted filesystem
- Automatic unmount
- External devices
- Filepath spaces
- atime options
- Remounting the root partition
- GPT partition automounting
Как добавлять записи в /etc/fstab. Как использовать /etc/fstab для хранения опций монтирования
Для чего нужен файл /etc/fstab
При включении компьютера с Linux диски уже смонтированы в системе: главный диск смонтирован в / (корень), загрузочный диск смонтирован в /boot, дополнительные диски смонтированы в /mnt/*. Информация для этих монтирвоаний содержится в файле /etc/fstab. Система автоматически монтирует диски на основании записей, содержащихся в файле /etc/fstab.
Файл fstab содержит описательную информацию о файловых системах, которые может монтировать система. fstab только читается программами, но не записывается; системный администратор обязан правильно создать и поддерживать этот файл. Порядок записей в fstab важен, потому что утилиты fsck, mount и umount последовательно выполняют итерацию через fstab, делая своё дело.
Каждая файловая система описывается в отдельной строке. Поля в каждой строке разделены табуляцией или пробелами. Строки, начинающиеся с символа «#«, являются комментариями. Пустые строки игнорируются.
Ниже приведён типичный пример записи в fstab:
Из чего состоят записи в /etc/fstab
Первое поле (fs_spec).
Это поле описывает специальное блочное устройство, удалённую файловую систему или образ файловой системы для loop устройства, которое нужно смонтировать, или файл подкачки, или раздел подкачки, который нужно включить.
Для обычных монтирований он будет содержать (ссылку на) узел специального блочного устройства (созданный утилитой mknod) для монтируемого устройства, например, «/dev/cdrom» или «/dev/sdb7». Для монтирования NFS это поле — : , например, «knuth.aeb.nl:/». Для файловых систем без хранилища можно использовать любую строку, которая будет отображаться, например, в выводе df. Обычно для procfs используется «proc»; а для tmpfs используются «mem», «none» или «tmpfs». Другие специальные файловые системы, такие как udev и sysfs, обычно не указываются в fstab.
Вместо имени устройства можно указать LABEL= или UUID= . Это рекомендуемый метод, поскольку имена устройств часто совпадают с порядком обнаружения оборудования и могут измениться при добавлении или удалении других дисков. Например, «LABEL=Boot» или «UUID=3e6be9de-8139-11d1-9106-a43f08d823a6». (Используйте инструмент, специфичный для файловой системы, например e2label, xfs_admin или fatlabel, чтобы установить LABEL в файловых системах).
Также можно использовать ARTUUID= и PARTLABEL=. Эти идентификаторы разделов поддерживаются, например, для таблицы разделов GUID (GPT).
Чтобы узнать UUID всех дисков используйте любую из следующих команд:
Чтобы узнать UUID определённого диска, используйте любую из следующих команд:
Второе поле (fs_file).
Это поле описывает точку монтирования (цель) для файловой системы. Для разделов подкачки это поле должно быть указано как «none». Если имя точки монтирования содержит пробелы или табуляции, их можно использовать как «\040» и «\011» соответственно.
Третье поле (fs_vfstype).
Это поле описывает тип файловой системы. Linux поддерживает множество типов файловых систем: ext4, xfs, btrfs, f2fs, vfat, ntfs, hfsplus, tmpfs, sysfs, proc, iso9660, udf, squashfs, nfs, cifs и многие другие.
Запись подкачки в этом поле должна содержать «swap».
Запись «none» полезна для привязки или перемещения монтирований.
Можно указать несколько типов в списке, разделённом запятыми.
mount и umount поддерживают подтипы файловых систем. Подтип определяется суффиксом «.subtype». Например, «fuse.sshfs». Рекомендуется использовать нотацию подтипа, а не добавлять префикс в первое поле fstab (например, «sshfs#example.com» является устаревшим).
Четвёртое поле (fs_mntops).
В этом поле описаны параметры монтирования, связанные с файловой системой.
Поле отформатировано как список параметров, разделённых запятыми. Оно содержит как минимум тип монтирования (ro или rw), а также любые дополнительные параметры, соответствующие типу файловой системы (включая параметры настройки производительности).
Основные параметры, не зависящие от файловой системы:
defaults
использовать параметры по умолчанию: rw, suid, dev, exec, auto, nouser и async.
noauto
не монтировать при использовании команды «mount -a» (например, во время загрузки)
позволяет монтировать указанному пользователю
позволяет монтировать указанному владельцу устройства
или x- для использования программами поддержки fstab
nofail
не сообщает об ошибках для этого устройства, если оно не существует.
Пятое поле (fs_freq).
Это поле используется dump, чтобы определить, какие файловые системы нужно выгрузить. По умолчанию, если не присутствует, — ноль (не выгружать).
Шестое поле (fs_passno).
Это поле используется fsck для определения порядка, в котором выполняется проверка файловых систем во время загрузки. Корневая файловая система должна быть указана с fs_passno равным 1.
Для других файловых систем значение fs_passno должно быть равно 2. Файловые системы на диске будут проверяться последовательно, но файловые системы на разных дисках будут проверяться одновременно, чтобы использовать параллелизм, доступный на оборудовании. По умолчанию нулевое значение (не использовать fsck), если оно отсутствует.
Пример файла /etc/fstab с объяснением значений записей
Рассмотрим пример реального файла /etc/fstab на моей системе:
Этот файл отчасти создан автоматически, отчасти дописан вручную.
Автоматическая часть была создана командой в соответствии с «Инструкцией по установке Arch Linux»:
Самая первая строка является комментарием и просто напоминает значение полей.
Затем строка «# /dev/nvme0n1p2» также является комментарием, она содержит удобное для восприятия имя диска, чтобы было проще ориентироваться, к какому диску относится последующая запись.
Следующая строка начинается с «UUID=01e4d4f5-698f-4dc2-987b-270499457f48» — это уникальный идентификатор диска. Вторым полем идёт «/», это означает, что диск смонтирован в корень файловой системы. Затем «ext4» указывает на тип файловой системы. Затем идут опции монтирования «rw,relatime». Затем идёт «0», означающий, что не нужно выгружать файловые системы. Последней идёт «1», означающая, что в случае возникновения проблем этот диск должен быть проверен первым.
Следующая строка вновь является комментарием, показывающим нам, к какому диску она относится «# /dev/nvme0n1p1».
Затем идёт идентификатор диска «UUID=7327-B4E4», обратите внимание, что он намного короче предыдущего — видимо, зависит от файловой системы. Затем идёт точка монтирования «/boot», то есть это загрузочный раздел, который монтируется в указанную папку. Далее тип файловой системы «vfat». Затем опции монтирования «rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro» — все опции монтирования будут рассмотрены в конце данной статьи, поэтому не будем на них останавливаться. Затем идёт «0», означающий, что не нужно выгружать файловые системы, затем идёт «2», означающая, что диск должен быть проверен вторым.
На этом заканчивается автоматически сгенерированная часть и начинается часть дописанная мною вручную.
После установки системы, второй внутренний диск мной был отформатирован в файловую систему ext4, у этого диска название /dev/sda и он смонтирован в директорию /mnt/disk_d с опциями «rw,relatime». Вместо имени диска /dev/sda можно указать его UUID — но это не критично.
Далее идёт закомментированная строка, подключающая файл подкачки «#/swapfile none swap defaults 0 0». Поскольку строка закомментированна, это означает, что файл подкачки не используется.
Про создание и удаление файлов подкачки смотрите статьи:
Как управлять опциями монтирования с помощью /etc/fstab
Помните, что при любом монтировании, даже если оно происходит не в начале запуска компьютера, а в любое другое время, программа mount сверяется с опциями из файла /etc/fstab. По этой причине можно прописать необходимые опции и точки монтирования в этом файл.
К примеру, у меня есть внешний USB диск, который при подключении к компьютеру по умолчанию монтируется в «/run/media/mial/Новый том».
Мне такое название точки монтирования не нравится, я хочу, чтобы именно этот диск монтировался в /mnt/disk_e (как на моём старом компьютере это был диск E:\).
В этом случае мне нужно отмонтировать диск и заново его монтировать примерно следующей командой:
Это ненужные действия, которые можно избежать, прописав опции монтирования и точку монтирования в файле fstab. Открываем этот файл для редактирования:
Мне необходимо узнать UUID данного диска (поскольку при подключении он иногда получает имя /dev/sdc1, иногда /dev/sdd1 или другие, например, если к компьютеру уже подключены другие диски или флешки). UUID диска можно узнать например так:
Теперь в файл /etc/fstab я добавляю следующие строки:
Первая из них — комментарий, который напомнит мне, к чему относится эта запись.
Затем идёт строка, с описанными выше полями. В первом поле я идентифицирую диск — я использую не его имя, а UUID, поскольку имя устройства может меняться. Затем указываю точку монтирвоания (/mnt/disk_e). Затем тип файловой системы (ntfs). Затем идут опции, обратите внимание, что ОБЯЗАТЕЛЬНО нужно добавить опцию nofail, иначе если этот диск не подключён к компьютеру во время загрузки, компьютер может вовсе не загрузиться из-за ошибки в файле /etc/fstab. Затем идут ещё две цифры необязательных полей (отмена выгрузки файловых систем и отмена проверки).
Теперь в любое время при подключении этого диска он будет автоматически смонтирован в /mnt/disk_e. Это можно проверить с помощью команды:
Примечание: вы можете обратить внимание, что опции монтирования из файла /etc/fstab и опции монтирования на скриншоте не совпадают. Дело в том, что программа mount может использовать программы-помогатели, которые фактически и выполняют монтирования. При вызове программ-помогателей некоторые опции могут теряться или игнорироваться программой, которая в конечном счёте выполняет монтирование. По этой же причине, кстати, вместо файловой системы ntfs указана fuseblk — это означает, что работу по монтированию диска выполнила FUSE.
Ещё одним следствием описания монтирования в файле /etc/fstab является то, что для указанных там дисков можно использовать сокращённую команду монтирования — указывая только точку монтирования или только имя устройства, например:
Эта команда сработает как надо, смонтировав диск /dev/sdc1 в /mnt/disk_e — недостающие сведения и опции монтирования будут взяты из /etc/fstab.
Источник
fstab
The fstab(5) file can be used to define how disk partitions, various other block devices, or remote filesystems should be mounted into the filesystem.
Each filesystem is described in a separate line. These definitions will be converted into systemd mount units dynamically at boot, and when the configuration of the system manager is reloaded. The default setup will automatically fsck and mount filesystems before starting services that need them to be mounted. For example, systemd automatically makes sure that remote filesystem mounts like NFS or Samba are only started after the network has been set up. Therefore, local and remote filesystem mounts specified in /etc/fstab should work out-of-the-box. See systemd.mount(5) for details.
The mount command will use fstab, if just one of either directory or device is given, to fill in the value for the other parameter. When doing so, mount options which are listed in fstab will also be used.
Contents
Usage
A simple /etc/fstab , using file system UUIDs:
- describes the block special device or remote filesystem to be mounted; see #Identifying filesystems.
- describes the mount directory.
- the file system type.
- the associated mount options; see mount(8) § FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS and ext4(5) § MOUNT_OPTIONS .
- is checked by the dump(8) utility. This field is usually set to 0 , which disables the check.
- sets the order for filesystem checks at boot time; see fsck(8) . For the root device it should be 1 . For other partitions it should be 2 , or 0 to disable checking.
All specified devices within /etc/fstab will be automatically mounted on startup and when the -a flag is used with mount(8) unless the noauto option is specified. Devices that are listed and not present will result in an error unless the nofail option is used.
Identifying filesystems
There are different ways to identify filesystems that will be mounted in /etc/fstab : kernel name descriptor, file system label and UUID, and GPT partition label and UUID for GPT disks. UUID or PARTUUID must be privileged over kernel name descriptors and labels. See Persistent block device naming for more explanations. It is recommended to read that article first before continuing with this article.
In this section, we will describe how to mount filesystems using all the mount methods available via examples. The output of the commands lsblk -f and blkid used in the following examples are available in the article Persistent block device naming.
To use kernel name descriptors, use /dev/sdxy in the first column.
Kernel name descriptors
Run lsblk -f to list the partitions and prefix the values in the NAME column with /dev/ .
File system labels
Run lsblk -f to list the partitions, and prefix the values in the LABEL column with LABEL= or alternatively run blkid and use the LABEL values without the quotes:
File system UUIDs
Run lsblk -f to list the partitions, and prefix the values in the UUID column with UUID= or alternatively run blkid and use the UUID values without the quotes::
GPT partition labels
Run blkid to list the partitions, and use the PARTLABEL values without the quotes:
GPT partition UUIDs
Run blkid to list the partitions, and use the PARTUUID values without the quotes:
Tips and tricks
Automount with systemd
See systemd.mount(5) for all systemd mount options.
Local partition
In case of a large partition, it may be more efficient to allow services that do not depend on it to start while it is checked by fsck. This can be achieved by adding the following options to the /etc/fstab entry of the partition:
This will fsck and mount the partition only when it is first accessed, and the kernel will buffer all file access to it until it is ready. This method can be relevant if one has, for example, a significantly large /home partition.
Remote filesystem
The same applies to remote filesystem mounts. If you want them to be mounted only upon access, you will need to use the noauto,x-systemd.automount parameters. In addition, you can use the x-systemd.mount-timeout= option to specify how long systemd should wait for the mount command to finish. Also, the _netdev option ensures systemd understands that the mount is network dependent and order it after the network is online.
Encrypted filesystem
If you have encrypted filesystems with keyfiles, you can also add the noauto parameter to the corresponding entries in /etc/crypttab . systemd will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd does not have to wait for the device to become available. For example:
Automatic unmount
You may also specify an idle timeout for a mount with the x-systemd.idle-timeout flag. For example:
This will make systemd unmount the mount after it has been idle for 1 minute.
External devices
External devices that are to be mounted when present but ignored if absent may require the nofail option. This prevents errors being reported at boot. For example:
The nofail option is best combined with the x-systemd.device-timeout option. This is because the default device timeout is 90 seconds, so a disconnected external device with only nofail will make your boot take 90 seconds longer, unless you reconfigure the timeout as shown. Make sure not to set the timeout to 0, as this translates to infinite timeout.
Filepath spaces
Since spaces are used in fstab to delimit fields, if any field (PARTLABEL, LABEL or the mount point) contains spaces, these spaces must be replaced by escape characters \ followed by the 3 digit octal code 040 :
atime options
Below atime options can impact drive performance.
- The strictatime option updates the access time of the files every time they are accessed. This is more purposeful when Linux is used for servers; it does not have much value for desktop use. The drawback about the strictatime option is that even reading a file from the page cache (reading from memory instead of the drive) will still result in a write.
- The noatime option fully disables writing file access times to the drive every time you read a file. This works well for almost all applications, except for those that need to know if a file has been read since the last time it was modified. The write time information to a file will continue to be updated anytime the file is written to with this option enabled.
- The nodiratime option disables the writing of file access times only for directories while other files still get access times written.
When using Mutt or other applications that need to know if a file has been read since the last time it was modified, the noatime option should not be used; using the relatime option is acceptable and still provides a performance improvement.
Since kernel 4.0 there is another related option:
- lazytime reduces writes to disk by maintaining changes to inode timestamps (access, modification and creation times) only in memory. The on-disk timestamps are updated only when either (1) the file inode needs to be updated for some change unrelated to file timestamps, (2) a sync to disk occurs, (3) an undeleted inode is evicted from memory or (4) if more than 24 hours passed since the the last time the in-memory copy was written to disk.
Note that the lazytime option works in combination with the aforementioned *atime options, not as an alternative. That is relatime by default, but can be even strictatime with the same or less cost of disk writes as the plain relatime option.
Remounting the root partition
If for some reason the root partition has been improperly mounted read only, remount the root partition with read-write access with the following command:
GPT partition automounting
When using UEFI/GPT, it is possible to omit certain partitions from /etc/fstab by partitioning according to the Discoverable Partitions Specification and have systemd-gpt-auto-generator(8) mount the partitions. See systemd#GPT partition automounting.
Источник