В процессе работы с операционной системой (ОС) пользователю нередко приходится подключать различные устройства хранения. Это могут быть жёсткие диски (переносные или с другого компьютера), Flash/M2-накопители, приводы оптических дисков и т. д. Некоторые такие устройства подключаются (в Linux монтируются) вручную, а некоторые — автоматически. Чаще всего те устройства, которые необходимо подключать автоматически, определяются ещё на этапе установки системы. Однако, нередко нужно настроить возможность автоматического монтирования в Linux вновь добавленного устройства, например диска для хранения регулярно создаваемых резервных копий. В этом случае необходимо сделать некоторые изменения в конфигурационных файлах. Это позволит системе инициализации начальной загрузки системы «узнать» об автоматически монтируемых устройствах.
Немного о том, как происходит монтирование
Монтирование файловой системы — это один из обязательных этапов начальной загрузки Linux. Монтирование необходимо для того, чтобы собрать файловую систему (ФС) из отдельных её компонентов в единое дерево каталогов, имеющее один корень. В Linux нет понятия «диск» как такового. Это физический уровень, отображаемый в общее дерево файловой системы через другие файловые системы, связанные, например, с разделами дисков и подключаемые через точки монтирования.
Например, один из разделов устройства хранения (диска) может быть смонтирован как «/home». Эта запись обозначает точку монтирования ФС с домашними каталогами пользователей системы. Здесь символ «/» указывает, что к общему корню (к корневой ФС) подключена другая ФС с именем «home». А она в свою очередь привязана к какому-либо из разделов на устройстве хранения.
Монтирование в Linux выполняет команда mount. Она вызывается системой инициализации (такой например, как Systemd), но также широко используется для ручного подключения устройств.
Конфигурационным файлом, хранящим настройки подключения устройств является /etc/fstab
. Система инициализации при запуске системы обращается к этому файлу, чтобы смонтировать ФС согласно указанным в нём настройкам. Содержимое файла /etc/fsta
b – это список текстовых строк, каждой из которых соответствует раздел на устройстве, который необходимо примонтировать с определёнными параметрами, указанными в этой строке. Правила записи этих строк соответствуют определённому (и несложному) синтаксису.
Синтаксис записей в файле fstab
Сначала может показаться, что запись для строки монтирования довольно сложна. Однако, при более пристальном разборе такой строки становится очевидным назначение её компонентов. Записи подчиняются следующему синтаксису:
устройство точка_монтирования тип_фс опции резерв очередь_проверки
Согласно этому синтаксису рабочая строка монтирования устройства может выглядеть, например, следующим образом:
UUID=7dac48f7-9891-4e5d-abe9-1332d860183e /opt ext4 defaults 0 2
Самым сложным для восприятия компонентом в такой записи является «устройство», поскольку представляет собой целое выражение. В данном случае это «UUID=7dac48f7-9891-4e5d-abe9-1332d860183e», что означает ничто иное как идентификатор устройства (UUID) в системе, который понятен ядру. Далее следуют:
- /opt – точка монтирования, которая задаётся «ветвью» — т. е. дополнительной ФС, включаемой в корневую ФС и кроме /opt, конечно же могут быть и другие — /home, /var, /etc и т. д.;
- ext4 – тип файловой системы, в качестве которой могут быть любые другие — ext2, ext4, btrfs и т. д.;
- defaults – опции монтирования ФС устройства по умолчанию;
- 0 — создание резервной копии раздела отключено, для включения необходимо указывать 1;
- 2 — проверка устройства на наличие ошибок во вторую очередь (0 — отключено), для первой и третьей необходимо указывать 1 и 3 соответственно и т. д.
Важно заметить, что в Linux в качестве идентификатора устройства может выступать как UUID (универсальный идентификатор устройства), так и имя устройства, например /dev/sda
, /dev/sdb1
и т. д. Рекомендуется использовать именно UUID, поскольку этот идентификатор является по-настоящему уникальным и жестко привязан к конкретному устройству. А вот одно имя устройства может соответствовать разным устройствам, хотя и не одновременно, но всё же необходимо иметь это ввиду во избежание конфликтов и путаницы при обновлении/изменении конфигурации системы и/или подключении/отключении новых устройств. Узнать UUID для зарегистрированных в системе устройств (соответственно их наименованиям) позволяет команда blkid, выполненная от имени суперпользователя:
$ sudo blkid
Стоит уделить особое внимание опциям монтирования устройств, поскольку их набор довольно разнообразен и позволяет довольно гибко задавать различные режимы подключения и работы устройств. В следующей таблице приведены наиболее часто используемые из них:
Опции fstab
Опция | Значение |
exec | Разрешает запускать исполняемые файлы. |
noexec | Запрещает запускать исполняемые файлы. |
auto | Автоматическое монтирование раздела устройства при старте системы. |
noauto | Запретить автоматическое монтирование раздела устройства при старте системы. |
rw | Разрешить чтение/запись. |
ro | Разрешить только чтение. |
nouser | Не разрешать обычным пользователям выполнять монтирование/демонтирование устройств. |
user | Разрешить обычным пользователям выполнять монтирование/демонтирование устройств. |
sw (swap) | Разрешить подкачку для раздела. |
async | Включить асинхронный ввод/вывод. При этом действия с разделом (копирование, удаление и т. д.) будут происходить не сразу по команде, а в определённое время, чуть позже, по усмотрению системы. Данная опция используется для оптимизации/распределения нагрузки. |
sync | Включить синхронный ввод/вывод. |
suid | Разрешить работу SUID и SGID битов. |
nosuid | Запретить работу SUID и SGID битов. |
iocharset=koi8-r
codepage=866 |
Включить поддержку кодировки KOI8-R для названий файлов и каталогов. |
errors=remount-ro | При возникновении ошибок выполнять перемонтирование с опцией ro. |
notail | Запретить хранить небольшие по объёму файлы в конце больших. Используется для повышения производительности. |
atime | Выполнять запись времени последнего доступа к файлу. |
noatime | Отключить запись времени последнего доступа к файлу. Не рекомендуется использовать, поскольку многим приложениям для корректной работы эти данные необходимы. Следует использовать эту опцию только для разделов, для которых не предусматривается проверка времени последнего доступа к файлам и необходимо существенно увеличить производительность работы с диском. |
relatime | Включить «лояльный» режим записи времени последнего доступа к файлу. Запись будет производиться только если предыдущее время доступа является более ранним, чем текущее время изменения файла. |
defaults | Включить все оптимальные параметры по-умолчанию: exec, auto, rw, nouser, async, nosuid, atime. |
Также следует подробнее рассмотреть типы ФС, используемых при монтировании. Нужно представлять, для каких типов устройств можно использовать тот или тип ФС. Например:
Жесткие диски:
- NTFS;
- XFS;
- FAT32;
- VFAT;
- EXT2/EXT3/EXT4.
Приводы CD/DVD:
- UDF;
- ISO9669
- auto – может распознаваться автоматически.
Накопитель USB-Flash:
- VFAT;
- FAT32;
- NTFS;
- auto.
Следует отметить, что не смотря на то, что все вышеперечисленные параметры приводятся в стандартном написании, т. е. заглавными символами, однако записывать их непосредственно в строке монтирования необходимо строчными символами.
Примеры
Пусть требуется сконфигурировать автоматическое монтирование какого-либо раздела. Для начала необходимо определить нужный раздел, а также его UUID:
$ sudo blkid [sudo] пароль для john: /dev/sda1: UUID="134E-F80E" TYPE="vfat" PARTUUID="b0989448-c545" /dev/sda2: UUID="28902d2c-2394" TYPE="ext4" PARTUUID="e304a808-1396" . . . /dev/sda5: UUID="7dac48f7-9891" TYPE="ext4" PARTUUID="b51a40c0-0bd5" /dev/sdb1: UUID="af882c18-2cd4" TYPE="ext4" PARTUUID="81a8460d-1ce7" /dev/sdb2: UUID="f300901f-1ce7" TYPE="ext4" PARTUUID="a0cf995f-b63c"
Если нужен, к примеру раздел /dev/sdb1
, то соответствующим UUID является «af882c18-2cd4». Далее следует открыть файл /etc/fstab
в текстовом редакторе (например nano) от имени суперпользователя
$ sudo nano /etc/fstab
и добавить в него строку конфигурации для требуемого раздела, внеся в неё параметры и опции в соответствии с синтаксисом из предыдущей главы, например такие:
UUID= af882c18-2cd4 /home/backups ext4 rw,notail,relatime 0 0
Теперь при старте системы раздел /dev/sdb1
будет монтироваться автоматически и, соответственно, сразу готов к использованию.
Если нужно автоматически монтировать другой тип устройства, например CD/DVD, то строка конфигурации для него будет примерно следующей:
/dev/cdrom /media/cdrom iso9660,udf ro,noauto,user,exec 0 0
Здесь вместо /dev/cdrom
можно указывать также и /dev/sr0
, если это первый и/или единственный оптический привод в системе.
Заключение
Итак, были рассмотрены основные принципы монтирования устройств в Linux, а также синтаксис и часто встречающиеся параметры и опции для их автоматического подключения. Как можно видеть, для работы с устройствами в UNIX/Linux используется специальная файловая система /dev. А для организации и настройки их автоматического монтирования.
Спасибо большое за статью
в тексте указан какой-то JOHN
а я с ним не знаком.
Хорошая статья, сделал все по инструкции — комп не загрузился.
Сделал запись в формате /dev/disk/by-uuid/*************** /home/user/mydisk + параметры — запустился и диск смонтировался.