16 Службы httpd2 и nfs в ОС Linux
httpd2
nfs
Сетевая файловая система (Network File System - NFS) служит для обеспечения доступа компьютерам сети к общим каталогам на сервере. Централизованное хранение файлов на сервере облегчает организацию работы в большой сети, особенно там, где один и тот же пользователь может работать в разное время на разных компьютерах. С помощью файлового сервера решается сразу несколько задач:
Служба NFS позволяет серверу обеспечить разделяемый доступ к указанным каталогам его локальной файловой системы, а клиенту - монтировать эти каталоги так же, как если бы они были локальными каталогами клиента.
NFS, разработанная компанией Sun Microsystems, оказалась настолько удачной, что ее реализации были воплощены разными компаниями почти во всех операционных системах. Существует несколько принципиально разных реализаций NFS. Достаточно распространена версия NFS 2.0, хотя уже в Solaris 2.5 была введена NFS 3.0. В последующих версиях Solaris, включая Solaris 9, в NFS были внесены существенные дополнения, но сам протокол остался совместимым с реализациями NFS 3.0 в других системах. Начиная с NFS 3.0, поддерживается передача пакетов посредством TCP и UDP, ранее поддерживался только UDP.
Будьте внимательны! В сети следует использовать клиенты и серверы NFS одной и той же версии. NFS 2.0 можно встретить в старых системах, например, в HP-UX 10.0. Совместная работа систем, использующих разные версии NFS , нежелательна.
Прежде чем мы перейдем к описанию настроек сервера и клиентов NFS, следует понять, как осуществляется монтирование удаленных файловых систем в принципе.
Клиент NFS посылает запрос на монтирование удаленному компьютеру, который предоставляет свою файловую систему (обычно - некоторую ее часть) для общего пользования. При этом говорят, что сервер NFS "экспортирует" тот или иной каталог (подразумевается - с подкаталогами). Запрос от клиента NFS попадает на обработку демону mountd. Тот выдает клиенту NFS специальный ключ. Этот ключ является идентификатором, который однозначно идентифицирует каталог, смонтированный по сети.
По NFS можно смонтировать как целые файловые системы, так и отдельные каталоги. Из соображений безопасности запрещено монтировать каталоги "через раздел". Это означает, что если каталог /var расположен на одном разделе диска, а каталог /var/adm - на другом, то при монтировании каталога /var каталог /var/adm не будет автоматически смонтирован. Если требуется монтировать те подкаталоги экспортируемого каталога, которые расположены в другой файловой системе (на другом разделе), следует экспортировать их отдельно и указывать в /etc/dfs/dfstab еще один разделяемый каталог - тот самый подкаталог с другого раздела.
Ключ, выданный клиенту при монтировании и идентифицирующий сеанс работы с данным удаленным каталогом, сохраняется при перезагрузке NFS-сервера, чтобы после восстановления его работы клиенты, замершие в ожидании, продолжили работу с удаленным сервером как ни в чем ни бывало. При демонтировании и новом монтировании файловой системы через NFS ключ обычно изменяется. На практике перезагрузка NFS-сервера все-таки может привести к сбою в работе клиентского приложения, особенно, если приложение читает или записывает файл в удаленный каталог во время перезагрузки.
После монтирования файловой системы через NFS клиент посылает серверу запросы на передачу и прием файлов, эти запросы обрабатывает демон nfsd.
Демонтирование файловой системы NFS выполняется так же, как и демонтирование любой другой файловой системы - командой umount.
Ниже будут обсуждены следующие аспекты настройки службы NFS в сети:
Для настройки NFS сервера нам потребуется выполнить настройку как минимум трех приложений: rpcbind, mountd и nfsd. Прежде всего, создадим файл /etc/dfs/dfstab, в котором опишем экспортируемые каталоги; в отличие от других систем UNIX, Solaris требует указать здесь не просто список каталогов с параметрами монтирования, а набор команд share, которые фактически и запускают экспорт каталогов. Таким образом, получается, что /etc/dfs/dfstab - это скрипт, который выполняется для того, чтобы сделать общие каталоги доступными для монтирования через сеть.
Теперь необходимо проверить, правильно ли запущены mountd и nfsd. Сначала это делается с помощью команды rpcinfo -p.
100000 4 tcp 111 rpcbind
100000 3 tcp 111 rpcbind
100000 2 tcp 111 rpcbind
100000 4 udp 111 rpcbind
100000 3 udp 111 rpcbind
100000 2 udp 111 rpcbind
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100005 3 udp 1023 mountd
100005 3 tcp 1023 mountd
100005 1 udp 1023 mountd
100005 1 tcp 1023 mountd
Как видно, rpcbind успешно анонсирует службы.
Если в ответ на rpcinfo -p мы получили сообщение
rpcinfo: can't con
или
RPC_PROG_NOT_REGISTERED
или нечто похожее вместо ожидаемого - стало быть, rpcbind не доступен (отключен). Возможно, в файлах /etc/hosts.allow или /etc/hosts.deny есть настройки, запрещающие программе rpcbind отвечать нам.
Для перезапуска служб NFS можно завершить выполнение демонов nfsd, mountd и rpcbind, и потом запустить их вновь в таком порядке: rpcbind, затем mountd и nfsd. Программе nfsd может быть передан числовой аргумент - число потоков, которые следует запустить при старте. Программа "распараллелится" в указанном количестве потоков.
Более стандартным выходом является запуск скрипта
/etc/init.d/nfs.server
вначале с параметром stop, затем с параметром start.
При штатной работе mountd и nfsd запускаются на сервере NFS при старте системы из стартовых скриптов. Это можно проверить командами
ps -ef | grep mountd
ps -ef | grep nfsd
Программа rpcbind объявляет свои службы независимо от того, продолжают ли работать программы, ранее зарегистрировавшиеся и (возможно) прекратившие работу вследствие аварии.
Следовательно, вышеприведенная проверка с помощью ps обязательна, если служба NFS перестала работать.
Совместный доступ к данным существенно упрощает процесс интеграции ваших UNIX и Linux систем. Если вы обеспечите совместный доступ к учетным данным, а также к другой пользовательской информации, ваши пользователи смогут входить в систему и работать на машинах UNIX и Linux, не задумываясь о необходимости запоминать несколько разных паролей. Настроив совместное использование данного функционала с функционалом NFS, вы можете предоставлять пользователям общий доступ к файлам. Если при этом вы используете автоматическое монтирование домашних каталогов, то независимо от операционной системы или компьютеров, за которыми работают пользователи, они смогут использовать свои файлы и ресурсы так, будто эти файлы расположены на локальном диске.