NFSv4: различия между версиями
(Import from freesource.info) |
(перенос в категорию Admin, мелкая правка разметки) |
||
Строка 1: | Строка 1: | ||
[[ | [[Категория:Admin]] | ||
{{MovedFromFreesourceInfo|AltLinux/Dokumentacija/NFSv4}} | {{MovedFromFreesourceInfo|AltLinux/Dokumentacija/NFSv4}} | ||
== Сервер NFSv4 для NFSv[34] клиентов == | == Сервер NFSv4 для NFSv[34] клиентов == | ||
=== Общая настройка сервера NFSv4 === | === Общая настройка сервера NFSv4 === | ||
Задача — экспортировать часть ФС (<tt>/ftp/pub</tt>) с iso`шками и репозитариями (часть репозитариев — подмонтированные iso). | |||
Применил лобовое решение, описанное в [http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html#exports http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html#exports], адаптираванно для моего случая: | Применил лобовое решение, описанное в [http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html#exports http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html#exports], адаптираванно для моего случая: | ||
Строка 15: | Строка 12: | ||
mount --rbind /ftp/pub /export/pub</pre> | mount --rbind /ftp/pub /export/pub</pre> | ||
Теперь в <tt>/export/pub</tt> доступно всё содержимое <tt>/ftp/pub</tt>, в том | Теперь в <tt>/export/pub</tt> доступно всё содержимое <tt>/ftp/pub</tt>, в том числе — и смонтированные туда <tt>/ftp/pub/foo*</tt> (содержимое соответствующего <tt>/ftp/pub/ISO/foo*.iso</tt>). Несмотря на это, в <tt>/etc/exports</tt> придётся упомянуть <u>каждую</u> из неявно (за счёт <tt>mount --rbind</tt>) подмонтированных в <tt>/export/pub/*</tt> ФС: иначе клиенты их видеть не будут. | ||
В <tt>/etc/exports</tt> мне потребовалось примерно следующие (сильно упрощённо): | В <tt>/etc/exports</tt> мне потребовалось примерно следующие (сильно упрощённо): | ||
Строка 24: | Строка 21: | ||
/export/pub/foo<N> (ro,nohide,fsid=<N>)</pre> | /export/pub/foo<N> (ro,nohide,fsid=<N>)</pre> | ||
При этом числа в параметре <tt>fsid</tt> должны различаться. При | При этом числа в параметре <tt>fsid</tt> должны различаться. При совпадении — видна только одна из ФС с совпадающими <tt>fsid</tt> (нарвался на такое при повторяющемся <tt>fsid=0</tt>, но детально вопрос не исследовал). | ||
Поправка от ns@ ([http://lists.altlinux.org/pipermail/sysadmins/2006-July/001723.html http://lists.altlinux.org/pipermail/sysadmins/2006-July/001723.html]): | Поправка от ns@ ([http://lists.altlinux.org/pipermail/sysadmins/2006-July/001723.html http://lists.altlinux.org/pipermail/sysadmins/2006-July/001723.html]): | ||
Строка 31: | Строка 28: | ||
Эта точка станет корнем для NFSv4.</pre> | Эта точка станет корнем для NFSv4.</pre> | ||
То есть код ниже, тоже работает: | |||
<pre>/export (ro,nohide,fsid=0) | <pre>/export (ro,nohide,fsid=0) | ||
/export/pub (ro,nohide) | /export/pub (ro,nohide) | ||
Строка 38: | Строка 35: | ||
/export/pub/foo<N> (ro,nohide)</pre> | /export/pub/foo<N> (ro,nohide)</pre> | ||
<div style="display: inline; color: red;">Примечание: При экспортировании чего либо нерасположеного в <tt>/export</tt> (например <tt>/ftp/pub</tt> непосредствено) | <div style="display: inline; color: red;">Примечание: При экспортировании чего либо нерасположеного в <tt>/export</tt> (например <tt>/ftp/pub</tt> непосредствено) — экспортированное доступно только по NFSv3. (Точнее — уменя наблюдалась такая картина.)</div> | ||
Если невдаваться в подробности (настройка | Если невдаваться в подробности (настройка firewall — ниже), то с сервером всё. | ||
=== Монтирование клиентом === | === Монтирование клиентом === | ||
Строка 48: | Строка 45: | ||
mount -t nfs <сервер>:/export <точка монтирования></pre> | mount -t nfs <сервер>:/export <точка монтирования></pre> | ||
<div style="display: inline; color: red;">При этом как <tt>mount -t nfs4</tt> смонтировать удаётся только содержимое <tt>/export</tt>: при экспорте какого нибудь <tt>/ftp/pub</tt> | <div style="display: inline; color: red;">При этом как <tt>mount -t nfs4</tt> смонтировать удаётся только содержимое <tt>/export</tt>: при экспорте какого нибудь <tt>/ftp/pub</tt> напрямую — он доступен только по <tt>mount -t nfs</tt>…</div> | ||
=== NFSv4 и NFSv3 через firewall === | === NFSv4 и NFSv3 через firewall === | ||
Так как для меня критична одновременная поддержка клиентов обоих версий NFS (v4 и v3), то фиксацию и открытие портов выполнял по рецептам для NFSv3, как для более гемаройного варианта. (Меня убеждают что NFSv4 требования мягче. Причин не верить у меня нет, но и специально не проверял.) Использовал [http://ipesin.linux.kiev.ua/translations/rhm/tipstricks10.htm http://ipesin.linux.kiev.ua/translations/rhm/tipstricks10.htm] и [http://nfs.sourceforge.net/nfs-howto/ar01s06.html http://nfs.sourceforge.net/nfs-howto/ar01s06.html] | |||
Фиксировал и открывал на серверном firewall следующие: | Фиксировал и открывал на серверном firewall следующие: | ||
* <tt>nfs</tt> | * <tt>nfs</tt> — работает по 2049 tcp/udp по умолчанию. Если требуется сдвинуть специально — см. [[altbug:9769]] | ||
* <tt>mountd</tt> | * <tt>mountd</tt> — параметром <tt>MOUNTD_PORT</tt> (в <tt>/etc/sysconfig/nfs</tt>) | ||
* <tt>nlockmgr</tt> | * <tt>nlockmgr</tt> — параметрами <tt>nlm_tcpport</tt> и <tt>nlm_udpport</tt> модуля <tt>lockd</tt> (строка вида <tt>options lockd nlm_tcpport=N nlm_udpport=M</tt> в <tt>/etc/modules.conf</tt>) | ||
* <tt>portmapper</tt> | * <tt>portmapper</tt> — стандартные 111 tcp/udp | ||
С firewall на клиентах пока не экспериментировал. Есть подозрение, что там придётся фиксировать и открывать порт для status (см. | С firewall на клиентах пока не экспериментировал. Есть подозрение, что там придётся фиксировать и открывать порт для status (см. |
Версия от 20:50, 17 августа 2008
Сервер 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)
Если невдаваться в подробности (настройка firewall — ниже), то с сервером всё.
Монтирование клиентом
На клиенте всё монтируется в одной точке, но пути к ресурсу для NFSv4 и NFSv3 разлечаются:
mount -t nfs4 <сервер>:/ <точка монтирования> mount -t nfs <сервер>:/export <точка монтирования>
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 .