NFSv4

Материал из ALT Linux Wiki
Версия от 15:55, 28 июля 2008; AlekseyAvdeev (обсуждение | вклад) (Import from freesource.info)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Сервер NFSv4 для NFSv[34] клиентов


Общая настройка сервера NFSv4

Задача -- экспортировать часть ФС (/ftp/pub) с iso`шками и репозитариями (часть репозитариев -- подмонтированные iso).

Применил лобовое решение, описанное в http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html#exports, адаптираванно для моего случая:

mkdir -p /export/pub
mount --rbind /ftp/pub /export/pub

Теперь в /export/pub доступно всё содержимое /ftp/pub, в том числе -- и смонтированные туда /ftp/pub/foo* (содержимое соответствующего /ftp/pub/ISO/foo*.iso). Несмотря на это, в /etc/exports придётся упомянуть каждую из неявно (за счёт mount --rbind) подмонтированных в /export/pub/* ФС: иначе клиенты их видеть не будут.

В /etc/exports мне потребовалось примерно следующие (сильно упрощённо):

/export (ro,nohide,fsid=0)
/export/pub (ro,nohide,fsid=1)
/export/pub/foo1 (ro,nohide,fsid=2)
/export/pub/foo2 (ro,nohide,fsid=3)
/export/pub/foo<N> (ro,nohide,fsid=<N>)

При этом числа в параметре fsid должны различаться. При совпадении -- видна только одна из ФС с совпадающими fsid (нарвался на такое при повторяющемся fsid=0, но детально вопрос не исследовал).

Поправка от ns@ (http://lists.altlinux.org/pipermail/sysadmins/2006-July/001723.html):

Насколько я помню, fsid надо указывать только у /export. То есть только
там, где значение должно равняться "0".
Эта точка станет корнем для NFSv4.

Т. е. код ниже, тоже работает:

/export (ro,nohide,fsid=0)
/export/pub (ro,nohide)
/export/pub/foo1 (ro,nohide)
/export/pub/foo2 (ro,nohide)
/export/pub/foo<N> (ro,nohide)
Примечание: При экспортировании чего либо нерасположеного в /export (например /ftp/pub непосредствено) -- экспортированное доступно только по NFSv3. (Точнее -- уменя наблюдалась такая картина.)

Если невдаваться в подробности (настройка firewall -- ниже), то с сервером всё.

Монтирование клиентом

На клиенте всё монтируется в одной точке, но пути к ресурсу для NFSv4 и NFSv3 разлечаются:

mount -t nfs4 <сервер>:/ <точка монтирования>
mount -t nfs <сервер>:/export <точка монтирования>
При этом как mount -t nfs4 смонтировать удаётся только содержимое /export: при экспорте какого нибудь /ftp/pub напрямую -- он доступен только по mount -t nfs...

NFSv4 и NFSv3 через firewall

Т. к. для меня критична одновременная поддержка клиентов обоих версий NFS (v4 и v3), то фиксацию и открытие портов выполнял по рецептам для NFSv3, как для более гемаройного варианта. (Меня убеждают что NFSv4 требования мягче. Причин не верить у меня нет, но и специально не проверял.) Использовал http://ipesin.linux.kiev.ua/translations/rhm/tipstricks10.htm и http://nfs.sourceforge.net/nfs-howto/ar01s06.html

Фиксировал и открывал на серверном firewall следующие:

  • nfs -- работает по 2049 tcp/udp по умолчанию. Если требуется сдвинуть специально -- см. altbug:9769
  • mountd -- параметром MOUNTD_PORT/etc/sysconfig/nfs)
  • nlockmgr -- параметрами nlm_tcpport и nlm_udpport модуля lockd (строка вида options lockd nlm_tcpport=N nlm_udpport=M в /etc/modules.conf)
  • portmapper -- стандартные 111 tcp/udp

С firewall на клиентах пока не экспериментировал. Есть подозрение, что там придётся фиксировать и открывать порт для status (см. altbug:9770 .


Ссылки