Файл fstab
Файл fstab — это текстовый файл, который содержит информацию о различных файловых системах и устройствах хранения информации в вашем компьютере. Это всего лишь один файл, определяющий, как диск и/или раздел будут использоваться и как будут встроены в остальную систему. Полный путь к файлу — /etc/fstab. Этот файл можно открыть в любом текстовом редакторе, но редактировать его возможно только от имени суперпользователя, т.к. файл является важной, неотъемлемой частью системы, без него система не загрузится.
Открыть файл fstab для редактирования, например в текстовом редакторе gedit, вы можете набрав команду в терминале:
sudo cp /etc/fstab /etc/fstab_backup
Пример файла fstab
# 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- не проверять, 1 — устанавливается для корня, 2 — для остальных разделов).
Поля в файле fstab отделяются друг от друга пробелами или знаками табуляция (произвольным количеством — любой набор пробелов и табуляций считается просто разделителем между двумя полями). Значения в списке опций разделяются запятыми без пробелов. Если опций нет, то указывается специальная опция defaults (указывать defaults вместе с другими опциями не нужно). Строки, начинающиеся с символа #, являются комментариями. Пустые строки игнорируются. В конце файла требуется одна пустая строка.
Блочное устройство
То, что нужно смонтировать. Это может быть файл-образ, раздел диска или диск целиком. С файлами-образами всё вполне очевидно — нужно указать путь к файлу. С дисками и их разделами интереснее. Они числятся в системе как, например, /dev/sda (диск целиком) или /dev/hdc1 (раздел диска), но монтировать разделы встроенного диска стоит по UUID. Это позволит правильно монтировать разделы даже если они поменяют свой порядок, например, при добавлении новых разделов или подключении новых дисков. Например, добавление раздела перед /dev/sda6 может превратить его в /dev/sda7. А добавление нового диска может превратить /dev/sdb в /dev/sdc, соответственно раздел /dev/sdb1 станет /dev/sdc1. Но во всех приведенных примерах UUID раздела не изменится.
Узнать UUID раздела можно из вывода команды
Кроме UUID монтировать можно еще и по другим адресам устройств, вот они:
Эти адреса являются ссылками на те же /dev/sd*.
Для флешки (если вы хотите прописать ее монтирование в fstab, а не пользоваться автоматическим монтированием) удобнее использовать адрес из by-id (название), для iSCSI-тома — by-path (используется сетевой адрес и название «цели»).
Точка монтирования
Каталог, в который монтируется файловая система, к примеру /media/disc. Крайне желательно, чтобы он был пустым. Монтировать в непустой каталог тоже можно, но при этом вы заблокируете доступ ко всему содержимому каталога, ведь после монтирование содержимым каталога будет содержимое той файловой системы что была смонтирована.
Файловая система
Обычно что-то из следующего:
Опции файловых систем
(указываются через запятую, без пробелов) :
Опции | Описание |
---|---|
Общие | Могут применяться к любой файловой системе (но не все файловые системы на самом деле поддерживают их) — например, опция 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 / noexec | exec позволяет выполнять двоичные файлы, которые находятся на этом раздел, в то время как 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 / nouser | user — разрешает монтирование от лица обычного пользователя, по умолчанию это имеет право сделать только 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 она не даёт хоть сколько то ощутимый прирост к скорости, т.к. время произвольного доступа очень маленькое)