|
Bog BOS: Пакет утилит для автоматического монтирования файловых систем am-utils (amd)
|
Последнее изменение файла: 2008.03.05
Скопировано с www.bog.pp.ru: 2024.11.23
Bog BOS: Пакет утилит для автоматического монтирования файловых систем am-utils (amd)
Пакет утилит для автоматического монтирования файловых систем по неявному запросу
am-utils (ранее amd) был разработан для 4.3BSD.
В дальнейшем, адаптирован под SunOS, Solaris, HP-UX, IRIX, Linux и т.д..
Файловые системы монтируются при первом обращении и автоматически размонтируются
при длительном неиспользовании.
Ориентирован на использование RPC и NFS.
Версии:
- amd-920824upl102 в RH4.1
- am-utils 6.0a16 в RHL5.2
- am-utils 6.0.9-2 в RH9 (описывается эта версия)
- в более новых системах используется autofs
Размонтировать "вручную" файловые системы, обслуживаемые amd нельзя!
Используйте "amq -u имя-тома".
amd может обслуживать несколько поддеревьев файлового пространства,
которые задаются своими корнями (несколько первых простых имён в полном имени файла).
Обращения ко всем файлам внутри этих поддеревьев обслуживаются amd.
При этом каждое поддерево делится на тома.
Каждый том имеет имя (виртуальный путь к корню тома, как он видится пользователям тома)
и располагается в определённой файловой системе определённого сервера.
В простейшем случае том занимает всю файловую систему, однако
удалённая файловая система может содержать и несколько томов.
При этом расположение тома определяется именем сервера, именем файловой системы
и расположением корня тома внутри файловой системы (sublink). Например, имя тома /net/n01/home/bog
(обслуживаемое поддерево файлового пространства - /net) для доступа к
NFS серверу n01, файловой системе /home на нём и поддереву bog внутри файловой системы.
Для каждого обслуживаемого поддерева (например, /net)
amd создаёт новую точку монтирования, которая выглядят как NFS том,
обслуживаемые amd (реализованы только процедуры lookup, readlink, readdir).
При необходимости соответствующие каталоги создаются и удаляются.
При первом обращении к файлу тома amd определяет
смонтирована ли указанная файловая система указанного сервера (возможно
для другого тома): определяется предполагаемая локальная точка монтирования
в специально отведённом месте (в нашем случае, /.automount/n01/root/home)
и проверяется наличие файловой системы, смонтированной в этой точке.
Локальная точка монтирования определяется только именем сервера и именем файловой системы.
После монтирования NFS amd возвращает символьную ссылку,
указывающую на подкаталог тома под локальной точкой монтирования,
и все дальнейшие обращения к файлам тома идут через неё (volume mapping).
Тома могут быть реплицированы (т.е. иметь несколько одинаковых копий в различных
местах сети) или дублированы (функционально одинаковые копии тома с одним и тем же именем).
Имеется также возможность определить резервные (replacement) тома (подключаются в случае
сбоя основного сервера), реализовано для NFS с помощью регулярной (keep-alive) проверки
работоспособности сервера.
Для определения параметров монтирования amd при первом обращении
к файлу внутри тома выбирает подходящую карту монтирования по имени
обслуживаемого поддерева файлового пространства исходя из настроек и ключей запуска.
Карта монтирования имеет имя и один из следующих типов
(допустимые типы можно определить командой "amd -v"):
- root
- file (текстовый файл, по одному ключу на строке,
комментарии начинаются с '#',
строка продолжения определяется по '\' в конце строки)
- passwd - если имя карты '/etc/passwd', то amd ищет имя пользователя
в файле /etc/passwd и получает локатор из поля домашнего каталога
(из /home/dom1/.../domN/login получается имя сервера - domN....dom1,
имя файловой системы - /home/domN, корень тома - login)
- ndbm (текстовый файл, преобразованный в формат ndbm)
- nis (карта хранится на сервере NIS/YP)
- nisplus (карта хранится на сервере NIS+)
- ldap (карта хранится на сервере LDAP)
- union
- hesiod (сервер имён Hesiod)
- error
Карта монтирования состоит из записей, которые
содержат ключ поиска и список локаторов (через пробел).
Поиск подходящей записи для тома в карте монтирования производится
сравнением имени тома и ключа: имя тома последовательно сравнивается
с ключами (текстовое сравнение или сравнение с регулярным выражением
в зависимости от настроек), при неудачном поиске
самое правое простое имя из имени тома заменяется на '/*' и поиск
повторяется. В самом крайнем случае ищется ключ '*'.
Локатор содержит список селекторов (через точку с запятой),
тип файловой системы, опции монтирования, локальную точку монтирования.
Селекторы определяют, может ли amd использовать данный локатор, и
задаются в виде 'имя==значение' или 'имя!=значение' через точку с запятой:
Селекторы:
- arch ('uname -i' на момент компиляции)
- autodir (ключ -a)
- byte (порядок байт: little или big)
- cluster (ключ -C)
- domain (ключ -d)
- dollar ('$')
- host (простое имя хоста)
- hostd (полное доменное имя хоста)
- karch ('uname -m' на момент компиляции)
- os ('uname -o' на момент компиляции)
- osver ('uname -s' на момент компиляции)
- full_os
- vendor
- key (ключ поиска в карте монтирования, т.е. имя локальной точки монтирования
без общего префикса)
- map (имя карты)
- netnumber (сетевая часть адреса интерфейса - '10.100')
- network (сетевая часть адреса интерфейса - '10.100.0.0')
- path (полное имя локальной точки монтирования)
- wire (сетевая часть адреса интерфейса - '10.100.0.0')
- uid
- gid
- [!]exists имя-файла
- false
- true
- in_network (можно сравнивать сетевой адрес с указанием маски сети)
Значения по умолчанию задаются с помощью ключа поиска '/default' (глобально
для всей карты) или с помощью символа '-' в начале локатора.
Возможна подстановка значений переменных amd и переменных окружения в виде '${имя-переменной}'.
Если перед именем переменной указать символ '/', то вместо полного пути файла
подставляется последнее простое имя.
Если после имени переменной указать символ '/', то вместо полного пути файла
подставляется всё, кроме первого простого имени.
Если перед именем переменной указать символ '.', то вместо полного доменного имени хоста
подставляется имя домена.
Если после имени переменной указать символ '.', то вместо полного доменного имени хоста
подставляется простое имя хоста.
В первую очередь, вычисляются значения переменных в селекторах,
затем производится установка переменных и проверка селекторов.
В случае удачи, подставляются переменные в опции (в указанном порядке!):
sublink, rfs, fs, opts, remopts, mount, unmount.
Задание значения опции делается в виде 'имя:=значение'.
amd по очереди пытается смонтировать разрешённые файловые системы.
Возможно монтирование файловых систем в фоновом режиме.
Монтирование может быть задержано (deffered), если для него требуется дополнительная информация.
Опции (опция type обязательна):
- type (тип файловой системы, значение AMFS в 'amd -v')
- nfs (обеспечивает доступ к файловой системе на NFS сервере; необходимо задать rhost и rfs;
получение указателя на корень удалённой файловой системы производится асинхронно)
- host (обеспечивает доступ ко всем файловым системам, экспортированным на NFS сервере;
необходимо задать rhost)
- nfsx (обеспечивает доступ к файловым системам на NFS сервере;
необходимо задать rhost, rfs (список удалённых файловых систем через запятую,
первый элемент списка определяет корень дерева и используется как префикс
к остальным элементам списка) и fs)
- ufs (обеспечивает доступ к локальной файловой системе (ufs, xfs, ext2);
необходимо задать dev (блочное устройство))
- cdfs (обеспечивает монтирование CD-ROM с файловой системой ISO9660;
необходимо задать dev (блочное устройство)
- lofs (обеспечивает монтирование файловой системы, заданной fs, поверх
уже существующего каталога, заданного rfs)
- tmpfs (позволяет использовать часть неиспользованной памяти и swap под файловую систему)
- program (позволяет указать программы для монтирования (mount) и
размонтирования (unmount) файловой системы в точке fs)
- link (только создание символьной ссылки от имени тома на место, указанное
опциями fs и sublink, без монтирования)
- linkx (только создание символьной ссылки от имени тома на место, указанное
опциями fs и sublink, без монтирования; проверяется существование)
- nfsl (если rhost и локальный хост является одним и тем же хостом
или целевая точка fs существует, то действовать как в случае link,
иначе как в случае nfs)
- auto (создаёт новую точку обслуживания внутри обслуживаемой подъиерархии
файлового пространства)
- direct (гибрид auto и link)
- union (позволяет представлять содержимое нескольких каталогов как один
виртуальный каталог)
- error (для внутреннего применения)
- toplvl (auto самого верхнего уровня)
- inherit (для внутреннего применения для "наследования"
после преждевременного завершения предыдущего процесса amd - см. ключ "-r")
- cachefs (обеспечивает кеширование удалённой файловой системы на локальной
файловой системе; необходимо задать cachedir (каталог, в котором
реально хранится кеш), rfs (удалённая файловая система), fs (видимая
пользователям точка доступа к файлам); только в Solaris 2.x
- addopts (добавление опций к '/defaults')
- delay (в секундах)
- fs (локальная точка монтирования; '${autodir}/${rhost}${rfs}')
- opts (опции, передаваемые команде mount, а также:
- nounmount (не размонтировать файловую систему по истечении интервала бездействия)
- ping=секунд (интервал между проверками доступности сервера; после 4 неудач точка
монтирования помечается как "зависшая")
- retry=число (попыток выдать команду mount)
- remopts (опции, применяемые для сервера вне локальной сети)
- sublink (подкаталог монтируемой файловой системы для данного тома)
- rhost (имя - не адрес - удалённого файлового сервера)
- rfs (имя файловой системы на удалённом сервере)
- dev (блочное устройство для ufs и cdfs)
Основной файл настройки (/etc/amd.conf) имеет строчную структуру.
Строки комментариев начинаются с символа '#'.
Файл делится на секции, секция начинается со строки, содержащей имя секции
в квадратных скобках.
Каждая строка секции определяет значение параметра в виде "имя=значение".
Прописные и строчные буквы в именах секций и параметров различаются.
Пробелы удаляются, кроме как в строках, обрамлённых кавычками.
Типы значений: строки, числа, логические значения (yes и no).
Секции бывают 2 видов:
- глобальная (имя "global") секция содержит параметры, применимые к
серверу целиком или ко всем картам; основные глобальные параметры:
- arch (значение соответствующей переменной)
- auto_dir ("/a"; имя каталога, содержащего точки монтирования)
- dismount_interval (120; размонтировать при неиспользовании
дольше указанного интервала)
- full_os (значение соответствующей переменной)
- fully_qualified_hosts ("no"; использовать полное доменное имя
для RPC аутентификации)
- karch (значение соответствующей переменной)
- ldap_base
- ldap_hostports
- local_domain (значение переменной domain)
- log_file ("/dev/stderr"; тип-журналирования
- syslog[:источник] (по умолчанию, LOG_DAEMON)
- /dev/stderr
- имя-файла (держится открытым)
- log_option (см. описания ключа "-x" amd)
- nfs_proto (протокол для доступа к реализации NFS в amd;
по умолчанию, сначала пробуется tcp, затем udp)
- nfs_vers (версия протокола для доступа к реализации NFS в amd;
по умолчанию, сначала пробуется NFSv3, затем NFSv2)
- nis_domain
- normalize_hostnames ("no"; преобразовывать ли алиасы
в ${rhosts} в "официальные" имена)
- os (значение соответствующей переменной)
- osver (значение соответствующей переменной)
- pid_file ("/dev/stdout"; в какой файл записывать идентификатор процесса;
например, "/var/run/amd.pid")
- plock ("yes"; позволить ОС вытеснять amd из памяти)
- portmap_program (300019; номер программы RPC)
- print_pid ("no"; записывать ли номер процесса в файл pid_file)
- restart_mounts ("no"; наследовать точки монтирования,
оставшиеся после аварийного завершения предыдущего процесса amd)
- selectors_in_defaults ("no"; обрабатывать ли селекторы
в "/defaults" записи карты)
- show_statfs_entries ("no"; показывать число ключей в "просматриваемых"
(browsable_dir) картах по команде "df")
- unmount_on_exit ("no"; размонтировать все смонтированные amd файловые системы
при выходе)
- vendor (значение соответствующей переменной)
- секция, описывающая карту, имеет имя, совпадающее с корнем обслуживаемого
поддерева файлового пространства; параметры:
- browsable_dir ("no"; позволяет узнать ключи соответствующей
карты монтирования при просмотре каталога обслуживаемого поддерева
файлового пространства; может быть "no", "yes" или "full";
не рекомендуется, т.к. "ls -l" вызовет монтирование всех
доступных файловых систем
- map_options (опции и селекторы карты)
- map_type ("all"; тип карты)
- mount_type ("nfs"; д.б. только так; amd представляется NFS сервером)
- search_map (список каталогов через ':' для поиска карт типа file
- map_name (имя карты; д.б. задано)
Формат запуска сервера amd:
amd ключи { каталог-точки-автомонтирования имя-карты [опции-карты] ... }
Ключи (основные, всё доступно из /etc/amd.conf):
- -F имя-конфигурационного-файла (/etc/amd.conf,
ключи из файла обрабатываются в последнюю очередь)
- -a имя-каталога-содержащего-точки-монтирования ('/a'; ${autodir})
- -d имя-домена
- -l тип-журналирования
- syslog[:источник] (по умолчанию, LOG_DAEMON)
- /dev/stderr
- имя-файла (держится открытым)
- -p (вывести номер процесса; например, 'amd -p > /var/run/amd.pid' )
- -r (наследовать точки монтирования, оставшиеся после аварийного завершения
предыдущего процесса amd)
- -v (вывести номер версии, набор скомпилированных возможностей и завершить работу)
- -x тип-сообщений-об-ошибках ('all,nomap,nostats'; список, через запятую):
- fatal (катастрофические ошибки, LOG_CRIT)
- error (просто ошибки, LOG_ERR)
- user (ошибки пользователя, LOG_WARNING)
- warn[ing] (LOG_WARNING)
- info (LOG_INFO)
- map (использование карты монтирования, LOG_DEBUG)
- stats (LOG_INFO)
- all
- -S (позволить ОС вытеснять amd из памяти)
Процесс amd обрабатывает сигналы SIGTERM (amd размонтирует точки монтирования
верхнего уровня, но оставляет остальные смонтированные файловые системы
и завершает работу) и SIGINT (amd размонтирует все смонтированные им файловые
системы и завершает работу). Процесс размонтирования может занять неопределённое время.
Проще всего завершить работы amd командой (она ждёт размонтирования до 30 секунд)
service amd stop
Запуск, останов и прочие функции работы с сервисами в RHL (chkconfig, service)
осуществляются с помощью скрипта /etc/rc.d/init.d/amd.
Основной файл настройки /etc/amd.conf.
Ключи для скрипта могут задаваться в файле /etc/sysconfig/amd, переменные:
AMDOPTS, OPTIONS, MOUNTPTS.
Утилиты:
- amq (управление работающим amd через RPC), ключи:
- имя-тома (вывести статистику использования процедур NFS и время монтирования)
- -H (список команд)
- -f (сбросить кеш карт монтирования)
- -l тип-журналирования (см. ключ "-l" команды amd;
имя файла должно совпадать с именем файла при запуске;
используется при ротации журнала)
- -m (имя, точка монтирования, тип, число использований и состояние смонтированных томов)
- -p (вывести номер процесса amd)
- -P номер-RPC-процедуры
- -s (общая статистика)
- -u имя-тома (имитировать истечение интервала неиспользования для данного тома
с последующим размонтированием; размонтировать "вручную" точки монтирования
обслуживаемые amd нельзя!)
- -x тип-сообщений-об-ошибках (см. ключ "-x" команды amd; можно только добавлять)
- am-eject (скрипт, который размонтирует смонтированный amd CD-ROM и выталкивает его)
- mk-amd-map (преобразование текстовой карты в ndbm)
- amd2ldif (преобразование карты из формата текстового файла
в ldif для LDAP)
- amd2sun (преобразование карты из формата текстового файла для automounter-а от Sun)
- automount2amd (преобразование карты из формата automounter-а от Sun в формат amd)
- fix-amd-map (утилита для автоматического исправления текстовых карт в старом формате)
- fixmount ("более правильная" реализация showmount - удаляет застаревший мусор)
- fixrmtab (удаляет записи об указанном хосте из /etc/rmtab
и перезапускает mountd)
- pawd (pwd, адаптированный под amd)
- wait4amd (ожидание пока amd смонтирует файловую систему с указанного хоста)
- wait4amd2die (ожидание завершения amd и размонтирования файловых систем)
- wire-test (тестирование совместимости реализации NFS на указанном хосте с amd)
- fsinfo (генерация описания файловых систем в различных форматах)
- hlfsd (сервер, обеспечивающий доступ к файлу по одинаковому имени внутрь домашнего каталога
пользователя в зависимости от uid; сделан для работы с локальной почтой;
во времена POP3/IMAP пользы не имеет)
- ctl-hlfsd (запуск, останов и прочие функции работы с сервисами для hlfsd)
- lostaltmail (для hlfsd; SMTP)
- expn (для lostaltmail; преобразование почтового адреса в полное имя через SMTP EXPN)
|
Bog BOS: Пакет утилит для автоматического монтирования файловых систем am-utils (amd)
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru