NFS sharing

februari 26, 2007

Любая unix-совместимая система поддерживает NFS. NFS позволяет очень гибко обмениваться и разделять информацию внутри одной или нескольких сетей. Я рассмотрю вариант конфигурирования nsf клиента и сервера на примере OpenBSD -current.

Начиная с версии 1.3 OpenBSD использует четвертую версию NFS, которая использует в качестве транспорта только TCP, что повышает общую стабильность NFS и гарантирует нормальное качество обслуживания, конечно можно использовать nfsd и в режиме с использованием UDP в качестве транспорта, но такой вариант лучше использовать только внутри LAN.

Как же осуществить обмен и разделение информации с помощью NFS? Каждое nsf-соединение работает по client-server модели, один узел является сервером и предоставляет в пользование некоторую часть свой файловой системы, это называется exports. Любой клиент может примотрировать такой export к локальной фс, как обычный локальный раздел, все операции для пользователя будут прозрачными.

Нужно удостоверится, что ядро поддерживает эту файловую систему, в конфиге ядра должна присутствовать строчка:

options NFS

Если вы используете GENERIC-ядро, то эта опция уже включена и поддержка осуществляется.

Для работы NFS демона нужно запустить portmap(8). Добавляем строчку в rc.conf.local:

portmap=YES

Далее или перезагружаемся или запускаем portmap из /usr/sbin/portmap.

Теперь осталось внести нужные дирректории в /etc/exports:

/home/borr/nsf_export -alldirs -ro -network=89.110.0 -mask=255.255.0.0

Эта строчка означает, что /home/borr/nfs_export будет доступна для NFS-клиентов, клиенты смогут монтировать любой подкаталог из nfs_export, возможен только read-only доступ и только из сети 89.110.0.0 с маской подсети 255.255.0.0. (одна из подсетей Авангард).

nsf_server=YES

Добавляем эту строчку в /etc/rc.conf.local. Теперь мы можем перезагрузиться, но можно запустить демоны и самостоятельно:

# /sbin/nfsd -tun 10
# echo -n >/var/db/mountdtab
# /sbin/mountd

Это запустит nsfd для поддержки 10 соединений и mountd для поддержки оперций монтирования exports клиентами. Нельзя допускать изменения /etc/exports без перезагрузки mountd, нужно его перезапускать:

# kill -HUP `cat /var/run/mountd.pid`

# killall -1 mountd

Теперь запускаем rpcinfo -p 10.0.0.2 и видим что-то вроде:

# rpcinfo -p 10.0.0.2
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100005 1 udp 953 mountd
100005 3 udp 953 mountd
100005 1 tcp 730 mountd
100005 3 tcp 730 mountd

Осталось только пробросить нужные порты на вашем маршрутизаторе и можно раздавать файлы :) Также нужно настроить pf, а если NFS смотрит в WAN, тот лучшим вариантом будет IPSec, который поможет шифровать трафик и избежать проблем с его же перехватом.

5 Reacties naar “NFS sharing”

  1. Igor Zegt:

    NFS – единственный способ обмена файлов, который без геморроя поддерижвает русский язык, у меня по крайней мере. ftp сервер надо патчить для поддержания юникода, по ssh почему-то кириллица тоже не отображается (возможно, потому что я его пользовал через konqueror’овский fish://)

  2. Igor Zegt:

    Я ступил, надо было в konqueror’е кодировку настроить =)))

  3. Dmitry Zegt:

    Так как примонтируешь, так такая кодировка и будет…

  4. Igor Zegt:

    у монтирования ext2 вроде не было кодировок..
    А в ftp и доступу по ssh и подавно. Просто надо было в konqueror’е кодировку юникодную выставить.


Reageer