Автоматическое монтирование разделов с помощью fstab
В процессе работы с операционной системой (ОС) пользователю нередко приходится подключать различные устройства хранения. Это могут быть жёсткие диски (переносные или с другого компьютера), Flash/M2-накопители, приводы оптических дисков и т. д. Некоторые такие устройства подключаются (в Linux монтируются) вручную, а некоторые — автоматически. Чаще всего те устройства, которые необходимо подключать автоматически, определяются ещё на этапе установки системы. Однако, нередко нужно настроить возможность автоматического монтирования в Linux вновь добавленного устройства, например диска для хранения регулярно создаваемых резервных копий. В этом случае необходимо сделать некоторые изменения в конфигурационных файлах. Это позволит системе инициализации начальной загрузки системы «узнать» об автоматически монтируемых устройствах.
Немного о том, как происходит монтирование
Монтирование файловой системы — это один из обязательных этапов начальной загрузки Linux. Монтирование необходимо для того, чтобы собрать файловую систему (ФС) из отдельных её компонентов в единое дерево каталогов, имеющее один корень. В Linux нет понятия «диск» как такового. Это физический уровень, отображаемый в общее дерево файловой системы через другие файловые системы, связанные, например, с разделами дисков и подключаемые через точки монтирования.
Например, один из разделов устройства хранения (диска) может быть смонтирован как «/home». Эта запись обозначает точку монтирования ФС с домашними каталогами пользователей системы. Здесь символ «/» указывает, что к общему корню (к корневой ФС) подключена другая ФС с именем «home». А она в свою очередь привязана к какому-либо из разделов на устройстве хранения.
Монтирование в Linux выполняет команда mount. Она вызывается системой инициализации (такой например, как Systemd), но также широко используется для ручного подключения устройств.
Конфигурационным файлом, хранящим настройки подключения устройств является /etc/fstab . Система инициализации при запуске системы обращается к этому файлу, чтобы смонтировать ФС согласно указанным в нём настройкам. Содержимое файла /etc/fsta b – это список текстовых строк, каждой из которых соответствует раздел на устройстве, который необходимо примонтировать с определёнными параметрами, указанными в этой строке. Правила записи этих строк соответствуют определённому (и несложному) синтаксису.
Синтаксис записей в файле fstab
Сначала может показаться, что запись для строки монтирования довольно сложна. Однако, при более пристальном разборе такой строки становится очевидным назначение её компонентов. Записи подчиняются следующему синтаксису:
Согласно этому синтаксису рабочая строка монтирования устройства может выглядеть, например, следующим образом:
Самым сложным для восприятия компонентом в такой записи является «устройство», поскольку представляет собой целое выражение. В данном случае это «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, выполненная от имени суперпользователя:
Стоит уделить особое внимание опциям монтирования устройств, поскольку их набор довольно разнообразен и позволяет довольно гибко задавать различные режимы подключения и работы устройств. В следующей таблице приведены наиболее часто используемые из них:
Опции fstab
Опция | Значение |
exec | Разрешает запускать исполняемые файлы. |
noexec | Запрещает запускать исполняемые файлы. |
auto | Автоматическое монтирование раздела устройства при старте системы. |
noauto | Запретить автоматическое монтирование раздела устройства при старте системы. |
rw | Разрешить чтение/запись. |
ro | Разрешить только чтение. |
nouser | Не разрешать обычным пользователям выполнять монтирование/демонтирование устройств. |
user | Разрешить обычным пользователям выполнять монтирование/демонтирование устройств. |
sw (swap) | Разрешить подкачку для раздела. |
async | Включить асинхронный ввод/вывод. При этом действия с разделом (копирование, удаление и т. д.) будут происходить не сразу по команде, а в определённое время, чуть позже, по усмотрению системы. Данная опция используется для оптимизации/распределения нагрузки. |
sync | Включить синхронный ввод/вывод. |
suid | Разрешить работу SUID и SGID битов. |
nosuid | Запретить работу SUID и SGID битов. |
iocharset=koi8-r |
codepage=866
Также следует подробнее рассмотреть типы ФС, используемых при монтировании. Нужно представлять, для каких типов устройств можно использовать тот или тип ФС. Например:
Жесткие диски:
- UDF;
- ISO9669
- auto – может распознаваться автоматически.
Следует отметить, что не смотря на то, что все вышеперечисленные параметры приводятся в стандартном написании, т. е. заглавными символами, однако записывать их непосредственно в строке монтирования необходимо строчными символами.
Примеры
Пусть требуется сконфигурировать автоматическое монтирование какого-либо раздела. Для начала необходимо определить нужный раздел, а также его UUID:
Если нужен, к примеру раздел /dev/sdb1 , то соответствующим UUID является «af882c18-2cd4». Далее следует открыть файл /etc/fstab в текстовом редакторе (например nano) от имени суперпользователя
и добавить в него строку конфигурации для требуемого раздела, внеся в неё параметры и опции в соответствии с синтаксисом из предыдущей главы, например такие:
Теперь при старте системы раздел /dev/sdb1 будет монтироваться автоматически и, соответственно, сразу готов к использованию.
Если нужно автоматически монтировать другой тип устройства, например CD/DVD, то строка конфигурации для него будет примерно следующей:
Здесь вместо /dev/cdrom можно указывать также и /dev/sr0 , если это первый и/или единственный оптический привод в системе.
Заключение
Итак, были рассмотрены основные принципы монтирования устройств в Linux, а также синтаксис и часто встречающиеся параметры и опции для их автоматического подключения. Как можно видеть, для работы с устройствами в UNIX/Linux используется специальная файловая система /dev. А для организации и настройки их автоматического монтирования.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Руководство по Ubuntu для новичков
Содержание
Монтирование и fstab
В самом начале, при описании установки, я рассказывал про механизм монтирования дисков в Linux и объяснял его основы. Если вы забыли, что такое монтирование и для чего оно нужно, прочитайте снова статью про организацию файловой системы в Ubuntu. Ниже я попробую заполнить некоторые оставшиеся белые пятна.
Если вы с нетерпением ждали шаманств с терминалом и правки конфигурационных файлов, поздравляю, вы дождались! Вообще мне кажется, что скоро терминалом и конфигами впору будет пугать маленьких детей — столь отталкивающее мнение об этих инструментах присутствует у некоторых в принципе далёких от понимания упомянутых терминов людей. На самом деле обычно всё, конечно, очень просто, элегантно и логично. И у вас сейчас будет возможность в этом убедиться.
Монтирование и пункты меню «Переход»
Сначала немного общей теории. Она не очень лёгкая, но надеюсь вы уловите основную суть. Итак, я рассказывал, что все подключаемые устройства автоматически монтируются в подкаталоги папки /media . Возможно, вы даже не преминули проверить это и убедиться в том, что и на самом деле всё обстоит именно так.
А вот с разделами винчестера ситуация несколько иная. Я говорил вам указать точки монтирования для всех разделов при установке, но не объяснил, зачем это нужно и что будет, если вы так не сделаете. Теперь постараюсь ликвидировать это упущение, попутно разложив по полочкам весь механизм монтирования.
В Ubuntu существует специальный файл, /etc/fstab , в котором хранятся настройки монтирования различных разделов, включая корень и swap. Существенная информация из этого файла заключается в первую очередь в соответствии точек монтирования разделам. При каждой загрузке Ubuntu читает этот файл и монтирует все перечисленные в нём диски в указанные для них места. Больше нигде никакой информации и точках монтирования в системе не хранится. Соответственно при установке в /etc/fstab записывается вся указанная вами информация о монтировании ваших разделов.
Различные флешки, внешние диски, плееры и прочие устройства монтируются автоматически при подключении к вашему компьютеру. Точкой монтирования в этом случае служит один из подкаталогов /media , обычно — с именем, соответствующим метке устройства 1) . За выдлением точек монтирования, определением файловой системы и решением других проблем следит Ubuntu — вам ничего делать не надо. Кроме того, все внешние устройства автоматически попадают в меню «Переход» и на рабочий стол, так что вы всегда можете легко получить к ним доступ 2) .
Проблемы начинаются только тогда, когда какое-то устройство было присоединено к компьютеру до загрузки Ubuntu, но для него нету записи в /etc/fstab . В этом случае оно будет смонтировано только при вашем первом к нему обращении. Естественно, по всё тем же правилам подключения внешних источников, то есть в автоматически созданный подкаталог директории /media . В случае с флешками это некритично — в конце концов при первом вашем обращении к флешке вы всё равно сразу же получите доступ к её содержимому и вам вообще не нужно задумываться не то, что о всяких /etc/fstab , а даже просто о значении термина «монтирование». Но дело в том, что Ubuntu ровно так же будет обрабатывать и неуказанные в /etc/fstab разделы винчестера. И в чём же проблема, спросите вы?
Проблема в том, что зачастую получить доступ к содержимому винчестера нужно сразу после загрузки и до того, как вы вручную зайдёте на нужный диск. Это связано с тем, что многие программы работают с файлами без вашего непосредственного участия. Например, различные торрент-клиенты, плееры и прочие приложения, которые постоянно обращаются к файлам на винчестере, просто не смогут работать, пока вы не перейдёте на нужный диск. Кроме того, при автоматическом назначении точки монтирования в момент первого обращения есть ещё одна небольшая проблема: вообще говоря никто не может гарантировать, что каждый раз будет использоваться одна и та же точка монтирования. А это значит, что могут меняться полные пути до всех файлов, что вообще приведёт к невозможности работы с ними большого количества приложений, вроде тех же торрент-клиентов.
В общем, вы наверно уже поняли, что все нужные вам разделы должны присутствовать в /etc/fstab , чтобы Ubuntu их автоматически монтировала при запуске и у вас не было проблем при работе с ними.
Вопрос остаётся только один: а какие указывать точки монтирования для разделов? Если вы помните, при описании установки я говорил вам монтировать все дополнительные разделы в подкаталоги /media . Это и есть самый распространённый способ указания точек монтирования, однако далеко не единственный. Дело в том, что всё, смонтированное в подкаталоги /media , автоматически попадает в меню «Переход» и на рабочий стол. Но иногда хочется скрыть некоторые разделы и убрать их из всех списков и меню. Логичным решением было бы просто удалить запись о ненужном разделе из /etc/fstab . Однако это не приведёт к желаемому результату, поскольку точка монтирования для раздела, не указанного в /etc/fstab , автоматически всё равно будет назначаться в подкаталог /media , соответственно, диск всё равно будет доступен через меню «Переход». А скрыть диск на самом деле очень просто: нужно указать точку монтирования для раздела не в подкаталог /media , а в другую часть файлового дерева.
Например, в подкаталог /hidden/data 3) . При этом диск исчезнет из всех графических программ, но к его содержимому всё же будет доступ по полному пути относительно корня 4) .
На всякий случай хочу обратить внимание на две вещи: во-первых, указанный в качестве точки монтирования для любого диска каталог должен существовать в файловой системе. То есть если вы хотите смонтировать какое-то устройство в /hidden/data , то у вас должен существовать каталог /hidden/data . И при этом он должен быть пустой, т.к. его содержимым после монтирования будет являться содержимое подключаемого устройства. А во-вторых права на запись файлов на подключаемые устройства определяются правами на запись в точку монтирования. То есть если вы что-то монтируете в /media/data , то у вас должны быть нужным образом установлены владелец, группа и права доступа к каталогу /media/data .
Осталось только немного рассказать про системные директории, вроде /home , и про их отношение к процессу монтирования. Конкретно в /home хранятся домашние каталоги для всех пользователей компьютера. Помните, при рассказе про установку я говорил, что /home рекомендуется выделять отдельным разделом для того, чтобы хранить пользовательские настройки отдельно от системы? Это нужно для того, чтобы можно было, например, отформатировать системный раздел и поставить систему заново, при этом сохранив все пользовательские данные в целостности и сохранности. Так вот, если вы ещё этого не поняли, тут стоит обратить внимание на то, что не только дополнительные разделы с помощью механизма монтирования можно вставлять в текущее дерево каталогов, но и выносить на отдельные разделы любые системные каталоги 5) .
Вот так всё запутанно и с первого взгляда сложно. Если вы не уловили суть вопроса, то ничего страшного, просто запомните, что для всех разделов винчестера обязательно должны быть записи в /etc/fstab , а обо всём остальном за вас позаботится система, вот и вся соль.
Конфигурационный файл /etc/fstab
А теперь собственно к практике. Осталось только рассказать, как же устроен файл /etc/fstab и что в него надо писать. Начну с того, что этот файл является системным, поэтому для его редактирования нужны права root . Если вы забыли, как редактировать конфигурационные файлы системы, прочитайте снова статью про права доступа.
Итак, открыв /etc/fstab вы увидите достаточно небольшое содержимое, у меня этот файл выглядит так:
Каждому разделу винчестера отводится одна строка. Строчки, начинающиеся с символа решётки ( # ), являются комментариями и системой игнорируются. Формат каждой записи очень простой:
Помните, в статье про разметку диска я рассказывал, что разделы винчестера в Linux именуются как sdaX (или sdbX , sdcX и т.д. если у вас несколько винчестеров). Так вот, в fstab используется несколько другой механизм идентификации винчестеров 6) . Для этой цели используются так называемые uuid , достаточно длинные строчки из произвольных букв латинского алфавита и цифр 7) . Для того, чтобы узнать uuid для нужного вам раздела выполните в терминале команду 8)
Вот как выглядит результат выполнения у меня:
Я думаю, понятно, что к чему, uuid для каждого раздела выделен голубым цветом.
Итак, первое поле записи в fstab для разделов винчестера выглядит так:
Второе поле — это точка монтирования, тут всё просто, собственно вам всего лишь надо указать желаемую директорию. Однако учтите, что во-первых, указываемый каталог должен существовать, а во-вторых, в записи его имени не должно быть спецсимволов и пробелов.
А вот дальше начинаются хитрости и сложности, описывать которые я не буду. С файловой системой всё просто, а вот опции монтирования — это целая эпопея, требующая не одной отдельной статьи. А уж назначение двух цифирей в конце вообще покрыто мраком и мало кого интересует.
Но как-то указать все эти параметры всё-таки надо. К счастью, тут можно схитрить 9) . Дело в том, что записи о всех смонтированных дисках попадают в специальный файл /etc/mtab , а формат записей этого файла ровно такой же, как и у /etc/fstab . Поэтому если вам надо добавить запись для какого-то раздела винчестера в fstab просто зайдите на него через меню «Переход», при этом он автоматически смонтируется в подкаталог /media и следовательно запись о нём появится в mtab . Теперь откройте mtab , найдите нужную строчку (тут уже диски именуются обычным способом) и скопируйте её в fstab , заменив имя диска на его uuid и точку монтирования на желаемую. Кроме того, если в качестве ФС в mtab записано fuseblk , то при копировании необходимо подставить вместо этого значения имя своей файловой системы. Если вы не знаете, как правильно должна называться ваша ФС в fstab , то поищите информацию на эту тему в интернете. И если вы не наделаете ошибок при замене, то при следующей загрузке диск смонтируется туда, куда вы указали.
На этом я заканчиваю краткое, хоть и достаточно запутанное, знакомство с файлом /etc/fstab и системой монтирования дисков в Ubuntu. Более того, на этом так же заканчивается вся информация, которую я хотел вам рассказать про Ubuntu. Ну и дабы не завершать руководство столь неочевидным рассказом про специфическую настройку системы, я завершу его статьей с красивым названием «Эпилог»:
Источник