Аннотация |
В этом документе дается описание пакета autofs, предназначенного для автоматического подключения файловых систем, его настройка, некоторые возможные проблемы и способы их решения. |
Автоподключение - это процесс автоматического подключения (и отключения) файловых систем. Файловая система автоматически (от)подключается при обращении к ней. Особенно полезным это может оказаться в больших сетях, а также при наличии файловых систем, ссылающихся на другие машины (особенно при отсутствии постоянного сетевого соединения). Кроме того, очень полезным может быть автоподключение съемных устройств.
В Linux имеется два типа автоподключения: AMD и autofs. AMD - это автоподключающий демон, работающий подобно SunOS AMD. Он не является частью ядра, для которого не обязательно знать, как работает автоподключение. Если вы производите подключение NFS тома в систему, то демон AMD перенаправляет траффик автоматически подключенной файловой системы через систему NFS. Autofs - новая система, работающая с помощью ядра; это означает, что код ядра, отвечающий за работу с файловыми системами, знает, где расположены точки подключения в файловой системе, и система автоподключения узнает их с помощью этого кода. В этом документе описывается только autofs.
Ядро должно быть собрано с поддержкой autofs. В версии 2.0.хх поддержка autofs является экспериментальной, но работает стабильно. Начиная с версии 2.2.хх, поддержка autofs переведена в разряд стандартных возможностей.
Программа автоподключения и ее конфигурационные файлы необходимы для работы; самый простой способ - установить пакет из дистрибутива RedHat. Программа автоподключения должна запускаться rc скриптом из каталога /etc/rc.d/init.d. rpm устанавливает этот скрипт, но необходимо удостовериться в том, что он запускается либо создав ссылку на него из каталога rc?.d, либо воспользовавшись панелью управления RedHat. Не-rpm дистрибутивы также должны сделать это. И не старайтесь разобраться, что этот скрипт делает - если вы читаете этот документ, то, скорее всего, вам это ни к чему.
Установка RPM не представляет проблем, однако настройка, если вы не сталкивались с ней ранее, может вызвать вопросы.
В каталоге /etc есть два файла: auto.master и auto.misc. Мой auto.master выглядит так: /auto /etc/auto.misc --timeout 60
Первая опция это не точка подключения, а каталог, в котором будут находиться точки подключения, перечисленные в файле, указанном во второй опции. Третья опция указывает, что через 60 секунд после обращения будет произведена попытка отключения файловой системы. Само собой, что если файловая система используется, то она не будет отключена.
auto.misc - это файл, описывающий точки подключения. Он может иметь любое имя; этот назван auto.misc потому, что изначально он описывал каталог /misc. В файле auto.master могут быть указаны несколько файлов, описывающих точки подключения. Мой auto.misc выглядит так: kernel -ro,soft,intr ftp.kernel.org:/pub/linux cd -fstype=iso9660,ro :/dev/cdrom zip -fstype=auto :/dev/hdd4 floppy -fstype=vfat :/dev/fd0
Первая колонка ("ключ") - это точка подключения. В данном случае это будет /auto/floppy, /auto/zip и т.п. Вторая колонка - опции подключения; подробности смотрите в руководстве по подключению (man mount). Третья колонка указывает на устройство, где находится подключаемая файловая система. Строка "kernel" описывает подключение NFS. ":" в остальных строках сообщает, что это локальное устройство.
Многим пользователям, которым приходилось ждать отключения файловой системы флоппи-диска, могло показаться, что 60-секундная задержка - это просто вечность. Может лучше синхронизировать (sync) диски, извлечь дискету несмотря на то, что файловая система не отключена, и никто ничего не заметит? Позвольте мне предложить более безопасные способы. Прежде всего вы можете уменьшить задержку. Но отключать фаловые системы, к примеру, каждые 15 секунд, очень неэффективно. Если у вас есть на то права, можно просто дать команду umount. Кроме того, можно дать команду программе автоподключения на отключение файловой системы. Если вы дадите (командой kill) сигнал SIGUSR1 процессу autofs, он отключит все, что только сможет. Но подождите рисовать кнопки отключения в ваших менеджерах окон - тут есть маленькая проблема.
Процесс autofs выполняется root-ом, и будет воспринимать сигналы только от него. Один из самых больших плюсов использования автоподключения - это то, что вы можете подключать и отключать файловые системы, *не имея* прав root. Можно написать C программу, выполняющую всю грязную работу, и поставить ей флаг suid. Другой вариант - использовать sudo, чтобы разрешить пользователям посылать нужный сигнал с помощью kill. Единственная проблема в этом случае - невозможность использования ` для обработки команд (что вам придется делать для определения PID). Вам необходимо будет поставить программу killall, что позволит вам следующее: (благодарю за совет)
ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automount |
Если автоподключение настроено правильно, точка подключения будет там, где должна быть, хотя ее не будет видно, если она не используется. Если вы используете для просмотра каталогов графическую утилиту, то, возможно, придется указать имя вручную; большинство программ пробуют то, что вы им указываете, и устройство подключается. К сожалению, невозможность выбрать что-либо из доступных, но невидимых точек подключения является, наверное, самым большим недостатком autofs.
Один из способов справиться с этим - создать символьные ссылки (symbolic links) на каталоги, появляющиеся при автоподключении. Это решит проблему с сообщениями программ об отсутствии каталога (при отключенной файловой системе), но бездумный просмотр содержимого каталогов будет вызывать подключение файловых систем.
Команда df.Команда mount без ключей сделает то же, и, к тому же, покажет опции подключения.
Это проблема не связана с автоподключением. При использовании типа файловой системы "auto" проверка на тип msdos производится раньше проверки на тип vfat. VFAT - это длинные имена Win95 и WinNT, врезанные в файловую систему FAT/MSDOS.
По словам одного из авторов утилиты mount, она является лишь промежуточным звеном между пользователем и системным вызовом, требующим явного указания типа файлового системы. Поэтому определение типа файловой системы - задача пользователя. Рассматривается вопрос о написании версии утилиты mount, которая проверяла бы тип подключаемой файловой системы в определенном порядке, взятом из списка, а не использовала "эвристический" алгоритм. Некоторые пользователи не включают поддержку файловой системы msdos в ядро, что предотвращает проверку на тип msdos до проверки на тип vfat. Это решение подходит для большинства пользователей. Мало кому действительно нужна файловая система msdos, но случалось, когда она была просто необходима, а под рукой ее не было, что весьма расстраивало меня.
Я уверен, что если кто-либо захочет связаться с автором(ами) mount, то его отзывы будут только приветствоваться. Ну а пока что, кроме случаев с исключением поддержки msdos, вы не можете подключать vfat, сохраняя возможность автоопределения остальных типов файловых систем. Надеюсь, когда-нибудь появится такая возможность настройки, и можно будет создавать точки подключения с различными типами файловых систем.
Она чем-то используется. Даже Root не сможет отключить ее. Если вы тот, кто вызвал ее подключение (например, рядом нет никого, кто мог бы сделать это), поищите shell, который, возможно, находится в этом каталоге. Если таких нет, то поищите что-нибудь еще, что могло, так сказать, подставить невидимую ногу между дверью и косяком. Если ваши поиски не дали никакого результата, то попробуйте утилиту fuser.
Ой-ой-ой-ой. У вас практически нет шансов, что все будет работать нормально. Я вас предупредил. Если вам нужен /grumblesmurf, то я советую использовать символьную ссылку. Так намного безопаснее.
Насколько я знаю, нет. Попробуйте использовать один файл с различными опциями для различных точек подключения.
Э-э. Ладно, я буду иметь это ввиду. Другое решение проблемы "таймаут не работает" ("timeout no working") - добавить ключ -t в скрипт autofs.
Посмотрите документацию (man page) на mount на предмет ключей, устанавливающих uid и umask. К сожалению, для файловой системы FAT отсутствует ключ, устанавливающий mode. Посоветуйтесь с людьми, отвечающими за подключение.
Не меня. Мне не приходилось что-либо делать. Я просто хотел привлечь всеобщее внимание к той работе, что была проделана над autofs, и к тому, как легко его использовать. В сравнении с AMD, autofs очень хорошо документирован, за что я очень благодарен его разработчикам. Везде стоит copyright Transmeta, так что, к сожалению, я не могу привести список разработчиков. Однако, предполагаю, что Peter Anvin приложил свою руку к большой части этой работы. Кроме того, Peter прочитал лекцию на тему autofs на linuxworldexpo 3 марта 1999.
Учебник по autofs есть на http://www.linuxhq.com/lg/issue24/nielsen.html. Смотрите также am-utils на http://www.cs.columbia.edu/~ezk/am-utils
(Спасибо за эти URL)
Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: <linux-howto@metalab.unc.edu> или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу <linux-howto@asplinux.ru>