Файл fstab - это текстовый файл, который содержит информацию о различных файловых системах и устройствах хранения информации в вашем компьютере. Это всего лишь один файл, определяющий, как диск и/или раздел будут использоваться и как будут встроены в остальную систему. Полный путь к файлу - /etc/fstab. Этот файл можно открыть в любом текстовом редакторе, но редактировать его возможно только от имени суперпользователя, т.к. файл является важной, неотъемлемой частью системы, без него система не загрузится.

  • Открыть файл fstab для редактирования, например в текстовом редакторе gedit, вы можете набрав команду в терминале:
sudo gedit /etc/fstab
  • Предварительно рекомендуется создать резервную копию:
sudo cp /etc/fstab /etc/fstab_backup

Пример файла fstab

  • Пример файла fstab c примонтированными Windows-дисками sda3 (С:) и sda4 (D:):
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=7211313d-8b5e-4b96-be63-5dbbeb97f590 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda2 during installation
UUID=8ef72438-830b-485f-8de5-b0f6242eff91 none            swap    sw              0       0
# Windows disc (FAT32) C:\
/dev/sda3 /media/D642D91542D8FAE7 vfat shortname=mixed,codepage=850,umask=002,uid=1000,gid=100,noauto,user 0 0
# Windows disc (NTFS) D:\
/dev/sda4 /media/BA1AF3B41AF36C2F ntfs-3g rw,nosuid,nodev,allow_other,default_permissions,blksize=4096 0 0
#/dev/sdb1
UUID=54AE4096AE407292           /mnt/backup     ntfs-3g         defaults,windows_names,locale=en_US.utf8 0 0

Строки файла содержат следующие поля:

  • Что монтируем — некоторое блочное устройство, которое должно быть примонтировано
  • Куда монтируем — точка монтирования - путь в корневой файловой системе к каталогу в который будет смонтировано устройство
  • Тип файловой системы монтируемого раздела
  • Опции монтирования файловой системы
  • Индикатор необходимости делать резервную копию (как правило не используется и равно 0)
  • Порядок проверки раздела (0- не проверять, 1 - устанавливается для корня, 2 - для остальных разделов).
Поля в файле fstab отделяются друг от друга пробелами или знаками табуляция (произвольным количеством - любой набор пробелов и табуляций считается просто разделителем между двумя полями). Значения в списке опций разделяются запятыми без пробелов. Если опций нет, то указывается специальная опция defaults (указывать defaults вместе с другими опциями не нужно). Строки, начинающиеся с символа #, являются комментариями. Пустые строки игнорируются. В конце файла требуется одна пустая строка.

Блочное устройство

То, что нужно смонтировать. Это может быть файл-образ, раздел диска или диск целиком. С файлами-образами всё вполне очевидно — нужно указать путь к файлу. С дисками и их разделами интереснее. Они числятся в системе как, например, /dev/sda (диск целиком) или /dev/hdc1 (раздел диска), но монтировать разделы встроенного диска стоит по UUID. Это позволит правильно монтировать разделы даже если они поменяют свой порядок, например, при добавлении новых разделов или подключении новых дисков. Например, добавление раздела перед /dev/sda6 может превратить его в /dev/sda7. А добавление нового диска может превратить /dev/sdb в /dev/sdc, соответственно раздел /dev/sdb1 станет /dev/sdc1. Но во всех приведенных примерах UUID раздела не изменится.

Узнать UUID раздела можно из вывода команды

blkid

Кроме UUID монтировать можно еще и по другим адресам устройств, вот они:

ls -Rhal /dev/disk/by-*

Эти адреса являются ссылками на те же /dev/sd*.

Для флешки (если вы хотите прописать ее монтирование в fstab, а не пользоваться автоматическим монтированием) удобнее использовать адрес из by-id (название), для iSCSI-тома — by-path (используется сетевой адрес и название «цели»).

Точка монтирования

Каталог, в который монтируется файловая система, к примеру /media/disc. Крайне желательно, чтобы он был пустым. Монтировать в непустой каталог тоже можно, но при этом вы заблокируете доступ ко всему содержимому каталога, ведь после монтирование содержимым каталога будет содержимое той файловой системы что была смонтирована.

Файловая система

Обычно что-то из следующего:

  • swap (раздел подкачки)
  • btrfs (B-tree file system),
  • jfs
  • ext3
  • ext2
  • hfsplus (Apple HFS)
  • ntfs-3g (Microsoft NTFS)
  • vfat (Microsoft FAT16, FAT32)
  • iso9660 (CD/DVD диски)
  • udf (съёмные носители).
Примеры монтирования разделов рассмотрены в соответствующей статье

Опции файловых систем

(указываются через запятую, без пробелов) :

ОпцииОписание
Общие Могут применяться к любой файловой системе (но не все файловые системы на самом деле поддерживают их) - например, опция sync сегодня имеет силу только для ext2, ext3, fat, vfat и ufs
sync / asyncВсе операции ввода / вывода файловой системы должны выполняться синхронно/асинхронно.
atimeПроизводить запись времени последнего доступа к файлу. Значение по умолчанию.
noatimeНе обновлять время доступа к файлу (например, для быстрого доступа к новостным потокам, для ускорения серверов новостей).
relatimeОбновлять время доступа только при изменении файла или изменении времени доступа. (В отличие от noatime, необходимая опция для нормальной работы, например, почтовых клиентов или других приложений, которым необходимо точное время последнего изменения файлов)
norelatimeНе включать функцию relatime (например, для систем, в которых эта функция включена по умолчанию, для более подробной информации см. параметры монтирования в /proc/mounts).
strictatimeОбновление времени доступа к структуре данных при изменении файлов. Отключает noatime и relatime.
nostrictatimeОбновлять время доступа к структуре данных, в соответствии с настройками ядра по умолчанию.
auto / noauto При auto устройство будет устанавливаться автоматически при загрузке, или по команде mount. auto является вариантом по умолчанию. Если вы не хотите, чтобы устройство устанавливалось автоматически, используйте параметр noauto.
context=
fscontext=
defcontext=
rootcontext=
Эти опции полезны при монтировании файловой систем, которые не поддерживают дополнительные атрибуты, такие как дискеты или жесткие диски отформатирован в VFAT, или файловые системы, которые обычно не работает под SELinux (например ext3 диск отформатированный на не-SELinux рабочей станции). Вы можете также использовать *context= для файловых систем которым вы не доверяете, например на дискетах или флешках. Более подробно о контексте можно узнать прочитав о SELinux.
defaultsИспользовать настройки по умолчанию. Эквивалентно: rw,suid,dev,exec,auto,nouser,async.
dev / nodevИнтерпретировать/не интерпретировать блок специальных устройств на файловой системе.
diratime / nodiratimeОбновлять/не обновлять время доступа к каталогу структуры данных. По умолчанию установлено diratime
dirsyncИзменения каталогов в файловой системе выполняются синхронно. Это относится к следующим системным командам: creat, link, unlink, symlink, mkdir, rmdir, mknod и rename.
exec / noexecexec позволяет выполнять двоичные файлы, которые находятся на этом раздел, в то время как noexec не позволяет этого делать. noexec может быть полезно для раздела, который не содержит бинарные файлы например /var, или содержит бинарные файлы которые вы не хотите выполнять на вашей системе, или которые не могут быть выполнены в вашей системе. Последнее может быть в случае Windows раздела.
groupРазрешает обычным (т.е. не root) пользователям монтировать файловую систему, если одна из его групп совпадает с группой устройства. Эта опция подразумевает наличие опций nosuid и nodev (за исключением случаев, когда пересекается с последующими опциями, такими как group,dev,suid).
encryptionОпределяет используемый алгоритм шифрования. Используется в сочетании с опцией loop.
keybitsОпределяет размер ключа для используемого алгоритма шифрования. Используется в сочетании с loop и encryption.
nofailВ случае отсутствия устройства не сообщать об ошибке.
iversionНомер версии структуры данных увеличивается каждый раз, когда структура данных изменяется.
noiversionНомер версии структуры данных не увеличивается при изменении структуры данных.
mandРазрешает принудительное блокирование файловой системы.
nomandНе разрешает принудительное блокирование файловой системы.
_netdevИспользуется для предотвращения попыток смонтировать файловые системы, подключённые к сети.
suid / nosuidРазрешает использование битовых идентификаторов пользователей или групп / Запрещает использование битовых идентификаторов пользователей или групп. (Это достаточно небезопасно, особенно, если установлен suidperl).
ownerРазрешает обычному (т.е. не root) пользователю монтировать файловую систему, если он является владельцем устройства. Эта опция подразумевает параметры nosuid и nodev (за исключением случаев, когда пересекается с последующими опциями, такими как owner, suid и dev).
roМонтировать только для чтения.
rwМонтирование файловой системы для чтения и записи.
user / nouseruser - разрешает монтирование от лица обычного пользователя, по умолчанию это имеет право сделать только root. nouser — соответсвенно запрещает (является параметром по умолчанию).
usersРазрешает монтирование от лица любого пользователя. Эта опция подразумевает параметры nosuid, noexec и nodev (за исключением случаев, когда пересекается с последующими опциями, такими как users, exec, owner, suid и dev).

NTFS

Опции для файловой системы Microsoft NTFS
nls=utf8Включение поддержки utf-8. Поддержка «нестандартных» символов (кирилицы) в файловой системе.
codepage=866Включаем поддержку кириллицы в названия файлов папок для MS-DOS/fat32 разделов. Подробнее.

FAT 32

Опции для файловой системы Microsoft FAT
utf8Включение поддержки utf-8. Поддержка «нестандартных» символов (кирилицы) в файловой системе.
codepage=866Включаем поддержку кириллицы в названия файлов папок для MS-DOS/fat32 разделов. Подробнее.

btrfs

Опции для файловой системы btrfs
subvol=subvolume_nameМонтирует корень указанного подраздела subvolume_name, где subvolume_name - путь к нему в корне btrfs.
subvolid=subvolume_IDМонтирует корень указанного подраздела subvolume_ID, где subvolume_ID - идентификатор подраздела.
autodefragДефрагментация на «лету», не применять для SSD
noacl Отключить контроль доступа к файлам (права)
compression
compress=zlibВключение прозрачного сжатия с алгоритмом gzip (медленнее lzo, но лучше сжимает)
compress=lzoВключает алгоритм прозрачного сжатия lzo (быстрее gzip, немного хуже сжимает) Btrfs LZO Compression Performance.
compress=zstd(>5,14)Включает алгоритм прозрачного сжатия zstd (настраиваемый уровень сжатия) wiki о zstd.
compress=noБез компрессии с версии ядра 3.6
compress-force=…Применяется аналогично compress, опция force позволяет выполнять компрессию файлов, которые обычно имеют низкий коэффициент сжатия (таких, как сжатые аудио или видео форматы).
cache
inode_cache (>3,0) Включить кэширование inode. Эта опция может замедлить работу системы при первом запуске.
space_cacheКэширование данных о свободных блоках, чтобы не искать их перед записью
clear_cache(>2.6.37) Очищает весь кеш свободного места, после монтирования. Это безопасная опция, но вызывает пересоздание кеша.
nospace_cache(>3.2) выключает space_cache
другие
skip_balance(>3.3)Пропускает автоматическую балансировку после монтирования или неправильного выключения.
nodatasumНе высчитывать хэш-сумму, для новых файлов. Некоторый мусор и ошибки могут быть не замечены, но позволяет ускорить работу с FS. На большинстве современных CPU не даст ощутимого прироста к производительности.
SSD
ssdВключает некоторые оптимизации для SSD в Btrfs. Минимизируется количество записей, отключается последовательная запись файлов. Эта опция включается автоматически, если вращение диска = 0. Не влечет за собой включения параметров TRIM/discard.
ssd_spreadМонтирование с -o ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области жёсткого диска, что специально вызывает сильную фрагментацию. Может значительно ускорить недорогие SSD.
recovery and debug
recovery(>3.2)Включает автовосстановление после монтирования, на данный момент сканирует старые списки корней и деревьев, которые можно прочесть. Информация о корнях деревьев сохраняется с версии ядра > 3.2, старые ядра не смогут использовать режим восстановления. Практика показала что оно работает, но нужно иметь снимки файловой системы и оно просто вытаскивает списки корней и деревьев из снимков если таковые имеются
degradedИспользуйте это, если у вас есть несколько устройств в объеме Btrfs (одна из RAID конфигураций или несколько дисков в Single или DUP режиме) и одно из них не монтируется. Это позволит вам по-прежнему монтировать файловую систему, даже если неисправное устройство выдаёт ошибки.
enospc_debugИспользуйте, если столкнулись с ошибкой «Не хватает места»

Актуально для выбора алгоритма сжатия (смотрите как соотносятся реализованные в BTRFS zlib/lzo/zstd)

| Метод   | сжатие| Скорость сжатия MB/s | Скорость разжатия   |
|---------|-------|----------------------|---------------------|
| None    |  0.99 |                  504 |                 686 |
| lzo     |  1.66 |                  398 |                 442 |
| zlib    |  2.58 |                   65 |                 241 |
| zstd:1  |  2.57 |                  260 |                 383 |
| zstd:3  |  2.71 |                  174 |                 408 |
| zstd:6  |  2.87 |                   70 |                 398 |
| zstd:9  |  2.92 |                   43 |                 406 |
| zstd:12 |  2.93 |                   21 |                 408 |
| zstd:15 |  3.01 |                   11 |                 354 |
Опции монтирования кеша действительно ускоряют работу файловой системы, но она просто создаёт по большому счёту отдельный чанк с метаданными вместо того, чтобы каждый раз перемещаться по дереву для поиска файла/папки и т.д. Это значит что будет иметь место точечная перезапись, что при использовании ssd зло (на ssd она не даёт хоть сколько то ощутимый прирост к скорости, т.к. время произвольного доступа очень маленькое)

nefelim4ag 2012/10/19 13:25 Больше параметров тут

Testing Out The Btrfs Mount Options On Linux 3.2

Ссылки