Настройка и использование NFS

В операционной системе FreeBSD поддерживается множество файловых систем и NFS не является исключением. NFS (Network File System) - распределенная файловая система, позволяющая пользователям получать доступ к данным через сеть, причем работа с ней аналогична работе с локальными ФС. Область применения ее ограничивается только вашей фантазией, например, можно использовать ее, если у вас много компов с FreeBSD, а точнее хранить коллекцию портов на одном компе и предоставлять доступ к ней другим компам посредством NFS. Так же ее можно использовать при установке ОС по сети, при использовании бездисковых станций или для хранения домашних директорий пользователей. Далее я опишу, какие настройки небходимо сделать на  сервере, а какие на клиенте.

На сервере настройка заключается в поднятии нескольких основных демонов (rpcbind, mountd, nfsd) и указании экспортируемых директорий.

  • rpcbind - это сервер, преобразующий номера программ RPC в универсальные адреса. Он должен работать, чтобы была возможность делать RPC вызовы (RPC calls) на сервер, на котором он будет запущен. Некоторые полезные ключи:
    • -6 - работать только с протоколом IPv6.
    • -h - привязать демон к определенному IP адресу. Учтите, что при запуске демон автоматически привязывается к loopback адресам (127.0.0.1 и ::1).

Итак, добавляем следующие строки в /etc/rc.conf:

rpcbind_flags="-h my_ip"
rpcbind_enable="YES"

И запускаем его:

# service rpcbind start

Проверить работает ли сервис можно таким образом:

# sockstat -l | grep rpcbind
root     rpcbind    85723 5  stream /var/run/rpcbind.sock
root     rpcbind    85723 7  udp4   127.0.0.1:111         *:*
root     rpcbind    85723 8  udp4   192.168.7.250:111     *:*
root     rpcbind    85723 9  udp4   *:960                 *:*
root     rpcbind    85723 10 tcp4   127.0.0.1:111         *:*
root     rpcbind    85723 11 tcp4   192.168.7.250:111     *:*
  • mountd - это сервис обрабатывающий запросы на монтирование NFS. Именно его нужно перезапускать, когда вы изменяете файл экспортируемых точек монтирования, о котором я расскажу далее. Некоторые полезные ключи:
    • -l - заставляет демона записывать удачные запросы монтирования в лог файл.
    • -h - привязать демон к определенному IP адресу. Учтите, что при запуске демон автоматически привязывается к loopback адресам (127.0.0.1 и ::1).

Теперь о файле экспортируемых точек монтирования. Находится он здесь - /etc/exports и должен иметь такой формат:

mountpoint  [[-parameters]...]

Каждая точка монтирования должна начинаться с новой строки, путь к директории должен быть абсолютным. Символ вначале строки "#" означает, что далее следует комментарий. Некоторые параметры:

  • -alldirs - позволяет монтировать все поддиректории относительно указанной директории. То есть можно использовать вместо такой записи /usr /usr/bin /usr/sbin /usr/src /usr/ports и т.д. вот такую /usr -alldirs
  • -maproot=user - дать права рута удаленной машине, использующей точку монтирования, пользователю user (сопоставление идет по числовому идентификатору пользователя в системе). Все группы, в которых состоит пользователь, также будут иметь такие права. Можно указывать числовой идентификатор пользователя или его имя. Чаще всего здесь указывают пользователя root.
  • -maproot=user:group1:group2:... - список имен или числовых идентификаторов пользователя и групп, разделенный двоеточиями, которым будут даны права рута.
  • -ro - директория будет экспортироваться только для чтения.
  • -network=netname[/prefixlength] - подсеть, которой разрешено монтировать данную директорию.
  • -mask - маска подсети, можно использовать вместо указания prefixlength в предыдущем параметре.
  • -quiet - подавлять некоторые сообщения об ошибках в syslog для некорректных строк в файле.

Пример содержимого файла /etc/exports:

/usr -ro -mapall=nobody
/u -maproot=bin: -network 131.104.48 -mask 255.255.255.0
/a -network 192.168.0/24
/a -network 3ffe:1ce1:1:fe80::/64
/cdrom -alldirs,quiet,ro -network 192.168.33.0 -mask 255.255.255.0
/usr/ports/distfiles -maproot=0 -network 192.168.7.0 -mask 255.255.255.0

Не забывайте "говорить" демону перечитать файл, если он был изменен.

Итак, добавляем следующие строки в /etc/rc.conf:

mountd_enable="YES"

И запускаем его:

# service mountd start

Проверить работает ли сервис можно таким образом:

# sockstat -l | grep mountd
root     mountd     85836 5  udp4   127.0.0.1:603         *:*
root     mountd     85836 6  udp4   192.168.7.250:603     *:*
root     mountd     85836 7  tcp4   127.0.0.1:603         *:*
root     mountd     85836 8  tcp4   192.168.7.250:603     *:*
  • nfsd - собственно сам сервер NFS, который обрабатывает NFS запросы от других машин. Некоторые полезные ключи:
    • -n - количество создаваемых процессов.
    • -h - привязать демон к определенному IP адресу. Полезно, когда на сервере несколько сетевых интерфейсов. Можно указывать несколько раз.
    • -t - обрабатывать запросы по протоколу TCP.
    • -u - обрабатывать запросы по протоколу UDP.

Итак, добавляем следующие строки в /etc/rc.conf:

nfs_server_enable="YES"
nfs_server_flags="-u -t -n 3 -h 192.168.7.250"

И запускаем его:

# service nfsserver start

Проверить работает ли сервис можно таким образом:

# sockstat -l | grep nfsd
root     nfsd       85891 3  tcp4   192.168.7.250:2049    *:*
  • amd - демон, который автоматически монтирует файловые системы, когда происходит запрос к директории. Подробности смотрите в мане.
  • rpc.lockd и rpc.statd - демоны, которые позволяют блокировать файлы на NFS, ведь она сама не поддерживает такой функционал.

Для администрирования этого чуда есть пару полезных утилит:

  • nfsstat - отображает статистику по NFS.
    • -c - показать статистику только по клиентам.
    • -s - показать статистику только по серверу.
  • showmount - отображает подмонтированные точки NFS на удаленных машинах.
    • -a - показать список всех точек монтирования в формате хост:директория.
    • -d - показать список подмонтированных директорий вместо хостов.
    • -e - показать содержимое /etc/exports.

На этом настройка сервера закончена и теперь, можно переходить к настройке клиентских машин. Вся настройка заключается в указании следующей строки в /etc/rc.conf:

nfs_client_enable="YES"

и в случае необходимости указании точек монтирования NFS в /etc/fstab, для автоматического монтирования во время запуска системы. Приведу несколько примеров. Чтобы подмонтировать NFS, необходимо использовать тулзу mount_nfs:

# mount_nfs 192.168.7.250:/usr/port /usr/ports

А так будет выглядеть строчка в /etc/fstab:

192.168.7.250:/usr/ports /usr/ports nfs rw 0 0

Так же существует возможность использования NFS в Windows. Для этого нужно установить пакет  Services for Unix (SFU). Начиная с Windows Vista, данный пакет уже включен в систему.

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика