|
Настройка компьютера с ОС FreeBSD для работы в качестве сервера NFS требует добавления всего одной строки в файл /etc/rc.conf: nfs_server_enable="YES" Убедитесь также, что параметр portmap_enable имеет значение "YES" (как и было по умолчанию, если вы не изменили его). Демон portmap необходим для функционирования системы NFS, поскольку NFS-серверу требуется механизм сообщения клиентам о том, к какому порту подключаться. Службы UDP работают с единственным "подключением" к порту, поэтому, хотя начальные соединения с сервером NFS выполняются через порт 2049, они сопоставляются службами RPC (удаленные вызовы процедур) с новыми, неиспользуемыми портами сервера. Поддержку служб RPC и предоставляет демон portmap. Учтите, что службы portmap весьма небезопасны и подвержены частным взломам, поэтому не стоит предоставлять доступ к серверу NFS из Internet, не защитив его брандмауэром. После установки опции nfs_server_enable и перезагрузки, ОС FreeBSD запускает два вида процессов-демонов (точнее, три, с учетом portmap) после прочтения содержимого файла /etc/exports, задающего ресурсы, предоставляемые в общий доступ через NFS.
Демон NFS (nfsd)
Демон сервера NFS, эквивалентный по назначению демонам sshd или httpd, называется nfsd. Несколько процессов nfsd запускаются при инициализации сети (по умолчанию - четыре); эти процессы должны обслуживать подключения клиентов NFS, каждый процесс - для одного клиента. В стандартной конфигурации к серверу NFS одновременно может подключаться не более четырех клиентов. Это количество можно изменить с помощью параметров nfs_server_flags в файле /etc/rc.d:
nfs_server_flags="-u -t -n 4"
Если nfsd - программа, обеспечивающая подключение для каждого отдельного монтирования ресурса NFS, то вторая программа службы отвечает за прослушивание сети в ожидании новых запросов клиентов NFS (поступающих по протоколу TCP к порту 2049). Это программа mountd, демон монтирования. Она запускается автоматически вместе с процессами nfsd в ходе процедуры начальной настройки сети при загрузке, если параметр nfs_server_enable имеет значение "YES". Демон mountd принимает запросы на подключение к NFS и передает их процессам nfsd. Он также следит за общими ресурсами NFS, указанными в файле /etc/exports; как будет вскоре продемонстрировано, для перезапуска служб NFS после изменения файла
/etc/exports необходимо послать сигнал HUP демону mountd. Полезных опций запуска демона mountd немного. Стандартные установки в файле /etc/defaults/rc.conf, которые можно переопределить в файле /etc/rc.conf, имеют следующий вид:
mountd_flags="-r"
Опция -r позволяет демону mountd обслуживать обычные файлы, а не только каталоги, для совместимости с некоторыми бездисковыми рабочими станциями, загружающимися с помощью службы NFS. Опция -l позволяет регистрировать все запросы монтирования NFS, а опция -n обеспечивает возможность монтирования общих ресурсов NFS на удаленные системы вроде ПК с ОС Windows, не поддерживающие модель владения и прав доступа ОС UNIX.
Опции -maproot=<имя пользователя> или -maproot=<идентификатор пользователя> в файле /etc/exports позволяют сопоставить права владения так, что пользователь с соответствующим именем или идентификатором на клиентской машине получит полные права доступа пользователя root на общем ресурсе. Например, следующая запись предоставляет всю
файловую систему сервера NFS любому хосту в сети 64.41.131 так, что пользователь frank на клиентах будет иметь полный доступ на чтение и запись ко всем файлам:
/ -maproot=frank -network 64.41.131 -mask 255.255.255.0
После внесения изменений в файл /etc/exports необходимо перезапустить процесс mountd. Для этого следует указать идентификатор соответствующего процесса, содержащийся в файле /var/run/mountd.pid:
> kill -HUP 'cat /var/run/mountd.pid'
Нельзя задавать несколько строк экспорта для точек монтирования в одном разделе или физической файловой системе. Это позволяет предотвратить проблемы в случае конфликта прав
доступа к различным общим ресурсам в пределах одной файловой системы. Клиенты NFS не могут отдельно обращаться к файловой системе, смонтированной в каталог уже смонтированного
общего ресурса, причем одни и те же права доступа должны применяться для всех общих ресурсов в одной физической файловой системе. Следующая конфигурация недопустима:
/home/frank 64.41.131.102
/home/joe 64.41.131.102
А вот т ак правильно :
/home/frank /home/joe 64.41.131.102
Для получения списка всех имеющихся общих ресурсов и прав доступа к ним можно использовать программу showmount. Вот как можно проверить, правильно ли файл /etc/exports настроен:
# showmount -e
Exports list on localhost:
/usr Everyone
/home/frank 64.41.131.102
/home/joe 64.41.131.102
/ 6 4.41.131.0
Для настройки клиентской машины NFS включите следующую строку в файл /etc/rc.conf:
nfs_client_enable="YES"
Наиболее простой способ запуска служб NFS - перезагрузка системы. Однако если необходимо запустить эти службы, а перезагрузка нежелательна, выполните следующие команды от имени пользователя root (команду portmap можно не вводить, если соответствующий демон уже работает):
# portmap
# nfsd -u -t -n 4
# mountd -r
Затем используйте команду showmount -e, чтобы проверить, правильно ли экспортированы общие ресурсы NFS.
Демон nfsiod не обязателен для функционирования клиента NFS, но помогает ускорить работу. Он позволяет выполнять операции чтения и записи NFS асинхронно, так что "опережающее чтение" и "запись с задержкой " выполняются в фоновом режиме и не приходится ждать завершения каждого последовательного шага процесса. Как и в случае с демоном nfsd, должно работать столько процессов nfsiod, сколько общих ресурсов NFS смонтировано на клиентской машине. Количество процессов *nfsiod* (по умолчанию - 4), можно задать с помощью параметра nfs_client_flags в файле /etc/rc.conf: nfs_client_flags="-n 4" Больше никаких опций у демона nfsiod нет. Для запуска его без перезагрузки машины выполните команду: # nfsiod -n 4 Монтирование общего ресурса NFS выполняется с помощью команды mount_nfs, являющейся сокращенным вариантом стандартной команды mount -t nfs # mount_nfs spots:/home /home2 Общие ресурсы NFS можно монтировать множеством различных способов; соответствующие опции описаны на странице справочного руководства man mount_nfs. Чаще всего используются опция -Т, требующая использования транспортного протокола TCP вместо UDP (полезно при монтировании по глобальным сетям), и опции -s и -х <секунд>, благодаря которым точка монтирования устаревает и исчезает в случае сбоя или по истечении указанного периода времени (так называемое "мягкое" монтирование). # mount_nfs -s -х 60 spots:/home /home2 Задание опции -b приводит к тому, что команда mount пытается связаться с сервером и, если это сделать не удается, запускает порожденный процесс, выполняющий повторные попытки подключиться, пока продолжается процесс загрузки. Точно также при попытке монтирования общего ресурса из командной строки с опцией -b, запускается порожденный фоновый процесс, а вы сразу же получаете приглашение командного интерпретатора. Демон автоматического монтирования, *amd*, делает работу с общими ресурсами NFS еще удобнее. Этот демон позволяет монтировать общие ресурсы NFS (на самом деле все типы файловых систем) динамически, при переходе в каталог, в который должен быть смонтирован ресурс, не вводя вообще никаких команд монтирования. ОС FreeBSD обеспечивает простой способ настройки демона amd. Добавьте следующую строку в файл /etc/rc.conf: amd_enable="YES" При загрузке системы с таким параметром демон amd запускается с опциями, задаваемыми параметром amd_flags, стандартное значение которого обеспечивает автоматическое монтирование по имени всего содержимого каталогов /host или /net, которые автоматически создаются демоном amd.
Проблема
root@ctrl1 ~ # mount 10.5.0.12:/data/tinderbox/portstrees/backup.bacula-amd64-1.0.0.2010-05-05/ports /usr/ports/ [udp] 10.5.0.12:/data/tinderbox/portstrees/backup.bacula-amd64-1.0.0.2010-05-05/ports: RPCPROG_NFS: RPC: Program not registered
Решение
root@node1 ~ # /etc/rc.d/nfsd stop Stopping nfsd. root@node1 ~ # /etc/rc.d/mountd stop Stopping mountd. root@node1 ~ # /etc/rc.d/rpcbind stop Stopping rpcbind. root@node1 ~ # /etc/rc.d/rpcbind start Starting rpcbind. root@node1 ~ # /etc/rc.d/mountd start Starting mountd. root@node1 ~ # /etc/rc.d/nfsd start NFS on reserved port only=YES Starting nfsd.
basics/posts/NFS -- Last updated 2010-06-02 Wednesday 16:42:27 Edit
© copyright 2010
Design by: lev