Программа automount: самый первый автомонтировщик
Категория: Сетевая файловая система | Автор: admin | 9-05-2010, 15:27 | Просмотров: 3893

В настоящее время программа automount входит в состав Solaris и HP-UX. В Red Hat одноименная программа имеет незначительные отличия в синтаксисе конфигурационного файла. Подробнее о ней рассказывается в конце параграфа.

Программа automount поддерживает три вида конфигурационных файлов (называемых таблицами назначений): таблицы прямых назначений, таблицы косвенных назначений и главные таблицы. Таблицы первых двух типов содержат информацию о файловых системах, подлежащих автоматическому монтированию. Главная таблица — это список таблиц прямых и косвенных назначений, на которые программа automount должна обращать внимание. В определенный момент времени активной может быть только одна главная таблица. Стандартная ее версия хранится в файле /etc/auto_master.

При запуске программа automount читает конфигурационные файлы, создает необходимые точки монтирования в файловой системе autofs, после чего завершает свою работу. Ссылки на смонтированные файловые системы в действительности обрабатываются (через драйвер autofs) отдельным демоном automountd. Он выполняет свою работу, не требуя дополнительной настройки.

После редактирования главной таблицы или одной из таблиц прямых назначений, на которую она ссылается, нужно повторно запустить программу automount. При наличии флага -v эта программа сообщит об изменениях, вносимых в конфигурацию.

Получив флаг -t, программа automount сообщает, как долго (в секундах) файловая система может оставаться неиспользуемой, прежде чем будет демонтирована. Стандартная установка — 5 минут. Желательно удалять неиспользуемые точки монтирования, поскольку в случае краха сервера программы, обращающиеся к NFS, зависнут. Из-за этого не рекомендуется устанавливать период тайм-аута слишком большим.

 

Таблицы косвенных назначений

 

Таблицы косвенных назначений используются для автоматического монтирования нескольких файловых систем в общем каталоге. Путевое имя каталога задается в главной таблице. Например, таблица косвенных назначений для файловых систем, монтируемых в каталоге /chimchim, будет иметь следующий вид:

 

users    chimchim:/chimchim/users

devel    -soft,proto=udp chimchim:/chimchim/devel

info     -ro chimchim:/chimchim/info

 

 

В первой колонке дается имя подкаталога, в котором будет инсталлирована файловая система. В следующих колонках перечислены опции монтирования и исходное путевое имя файловой системы. В этом примере (он, вероятно, хранится в файле /etc/auto.chim) программе automount сообщается о том, что она может монтировать каталоги /chimchim/users, /chimchim/devel и /chimchim/info с компьютера chimchim, причем каталог info разрешается монтировать только для чтения, а каталог devel — только по протоколу UDP (пример взят из Solaris, где по умолчанию выбран протокол TCP).

В рассматриваемой конфигурации подкаталоги на компьютере chimchim и на локальном компьютере будут идентичными, но это вовсе не обязательно.

 

Таблицы прямых назначений

 

В таблице прямых назначений перечисляются файловые системы, у которых нет общего префикса, например /usr/src и /cs/tools. Таблица (скажем, /etc/auto.direct), которая описывает эти файловые системы для программы automount, может выглядеть так:

 

/usr/src     chimchim:/usr/src

/cs/tools    -ro anchor:/cs/tools

 

 

Не имея общего родительского каталога, обе файловые системы должны подключаться через отдельные точки монтирования к файловой системе autofs. Накладные расходы при этом возрастают, но появляется дополнительное преимущество: точка монтирования и реальная структура каталога всегда доступны для таких команд, как, например, ls. Использование команды ls в каталоге с косвенно смонтированными файловыми системами часто затруднительно для пользователей, потому что программа automount не отображает подкаталоги до обращения к их содержимому (команда ls не заглядывает внутрь каталогов, поэтому и не вызывает их монтирования).

 

Главные таблицы

 

Главная таблица содержит список таблиц прямых и косвенных назначений. Для каждой таблицы косвенных назначений указывается корневой каталог, применяемый для монтирования перечисленных в таблице файловых систем.

Главная таблица, использующая вышеупомянутые таблицы прямых и косвенных назначений, имеет такой вид:

 

# Directory      Map

/chimchim        /etc/auto.chim -proto=tcp

/-               /etc/auto.direct

 

 

Первая колонка — имя локального каталога (для таблицы косвенных назначений) или специальная лексема /- (для таблицы прямых назначений). Вторая колонка — имя файла, в котором хранится соответствующая таблица. При необходимости может быть создано по нескольку таблиц каждого типа. Параметры монтирования, указываемые в конце строки, задаются для всех точек монтирования в данной таблице.

В большинстве систем параметры, указываемые в главной таблице, не смешиваются с параметрами, задаваемыми в соответствующей таблице прямых или косвенных назначений. Если запись подчиненной таблицы имеет свой список опций, стандартные параметры полностью игнорируются. В Red Hat все происходит по-другому. Оба набора объединяются в один, а в случае пересечения предпочтение отдается локальному параметру.

 

Исполняемые таблицы

 

Если файл, содержащий таблицу косвенных назначений, является исполняемым, он считается сценарием, динамически генерирующим информацию об автоматическом монтировании. Программа-автомонтировщик не читает таблицу в текстовом виде, а исполняет сценарий, передавая ему аргумент (называемый "ключом"), в котором указывается, к какому подкаталогу пользователь пытается получить доступ. Сценарий отвечает за вывод соответствующей записи таблицы. Если полученный ключ неверен, сценарий просто завершается, ничего не отображая.

Данная методика очень удобна и позволяет компенсировать многочисленные недостатки довольно странной системы конфигурирования программы automount. По сути, она дает возможность создать единый для всей организации конфигурационный файл произвольного формата. Можно написать несложный сценарий на Perl, декодирующий глобальные конфигурационные параметры на каждом компьютере.

Сценарии автоматического монтирования запускаются динамически поэтому нет необходимости после каждого изменения распространять главный конфигурационный файл или преобразовывать его в формат программы automount. Этот файл может постоянно находиться на сервере NFS.

 

Программа automount и дублирующиеся файловые системы

 

В некоторых случаях доступные только для чтения файловые системы (например, /usr/man) могут быть идентичными на нескольких серверах.

В этой ситуации можно сообщить программе automount о нескольких потенциальных источниках данных. Она выберет сервер, основываясь на собственном представлении о том, какой из них отвечает быстрее других. При этом учитываются сетевые адреса, версии протокола NFS, а также время ответа на первоначальный запрос.

Дублирующиеся файловые системы должны быть доступными только для чтения, хотя программа automount этого не требует. Просто она не способна синхронизировать операции записи в группе серверов, поэтому редактируемые файловые системы полностью дублировать невозможно.

Дублирующиеся файловые системы должны быть абсолютно идентичными. В противном случае при замене файловой системы пользователи начнут волноваться и вести себя непредсказуемо.

В Solaris программа automount в случае возникновения проблемы может свободно переключаться от одного сервера дублирующейся файловой системы к другому. Это подразумевает монтирование файловой системы только для чтения, но, по слухам, файловые системы с возможностью записи обрабатываются правильнее, чем об этом говорит документация. Правда, при переключении серверов все равно происходит зависание программ, которые ссылаются на файлы, открытые для записи. Это еще одна из причин, по которой дублирующиеся файловые системы, доступные в режиме чтения-записи, практически бесполезны.

Как уже было сказано, программа automount выбирает серверы на основании собственных критериев эффективности и доступности, но можно назначить им явные приоритеты. Чем выше номер, тем ниже приоритет. По умолчанию установлен приоритет 0, обозначающий легкодоступный сервер.

Файл auto.direct, который определяет каталоги /usr/man и /cs/tools как дублирующиеся файловые системы, будет выглядеть так:

 

/usr/man     -ro chimchim:/usr/share/man band(l):/usr/man

/cs/tools    -ro anchor,band:/cs/tools

 

 

Обратите внимание на то, что имена серверов можно указывать вместе, если путь к искомой файловой системе в них одинаковый. Выражение (1) после имени сервера band в первой строке задает приоритет этого сервера по отношению к файловой системе /usr/man.

 

Автоматическое выполнение программы automount

 

Вместо того чтобы указывать все возможные точки монтирования в таблицах прямых и косвенных назначений, можно рассказать программе automount немного о принципах именования файловых систем и дать ей возможность действовать самостоятельно. Ключевым моментом данного подхода является возможность обратиться к демону mountd, выполняющемуся на удаленном сервере, и узнать у него, какие файловые системы экспортируются этим сервером.

Есть несколько способов соответствующим образом сконфигурировать программу automount. Самый простой из них — воспользоваться опцией монтирования -hosts. Если указать эту опцию в качестве имени таблицы в файле главной таблицы назначений, программа automount закрепит экспортируемые файловые системы удаленного компьютера за указанным каталогом:

/net      -hosts –nosuid,soft

 

Например, если машина chimchim экспортирует каталог /usr/share/mar, он будет доступен через ссылку /net/chimchim/ur/share/man.

Заранее определить все возможные узлы, с которых монтируются файловые системы, невозможно. Вместо этого программа automount ожидает, пока не будет сделана ссылка на отдельный подкаталог, после чего монтирует соответствующую файловую систему с запрашиваемого узла.

Аналогичный эффект достигается, если указать метасимволы * и & в таблице косвенных назначений. Кроме того, существует ряд макроконстант, заменяющих имя текущего узла, тип архитектуры и т.д. Подробности можно узнать на man-странице automount(lM).

 

Особенности Red Hat Linux

 

В системе Red Hat имеется собственная независимая реализация программы automount, которая несколько отличается от версии компании Sun. В основном изменения затрагивают имена команд и файлов.

В Red Hat программа automount — это демон, действительно монтирующий и демонтирующий удаленные файловые системы. Он занимает ту же нишу, что и демон automountd в других системах, и обычно не требует запуска вручную.

Программа, выполняемая для закрепления изменений в главной таблице назначений, в Red Hat называется /etc/rc.d/init.d/autofs (в других системах это сама automount). Она принимает аргументы stop, start, reload и status; нужный нам аргумент — естественно, reload.

Стандартная главная таблица назначений хранится в файле /etc/auto.master. Ее формат, а также формат таблицы косвенных назначений, были описаны выше. В документации этим таблицам посвящены man-страницы auto.master(5) и autofs(5). Во втором случае будьте внимательны: на man-странице autofs(8) описан формат команды autofs.

Таблицы прямых назначений в Red Hat не поддерживаются.



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page