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

Опубликовано nekit - пн, 19/03/2012 - 15:36

В операционной системе 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:
    1. rpcbind_flags="-h my_ip"
    2. rpcbind_enable="YES"
    И запускаем его:
    1. # service rpcbind start
    Проверить работает ли сервис можно таким образом:
    1. # sockstat -l | grep rpcbind
    2. root     rpcbind    85723 5  stream /var/run/rpcbind.sock
    3. root     rpcbind    85723 7  udp4   127.0.0.1:111         *:*
    4. root     rpcbind    85723 8  udp4   192.168.7.250:111     *:*
    5. root     rpcbind    85723 9  udp4   *:960                 *:*
    6. root     rpcbind    85723 10 tcp4   127.0.0.1:111         *:*
    7. root     rpcbind    85723 11 tcp4   192.168.7.250:111     *:*
  • mountd - это сервис обрабатывающий запросы на монтирование NFS. Именно его нужно перезапускать, когда вы изменяете файл экспортируемых точек монтирования, о котором я расскажу далее. Некоторые полезные ключи:
    • -l - заставляет демона записывать удачные запросы монтирования в лог файл.
    • -h - привязать демон к определенному IP адресу. Учтите, что при запуске демон автоматически привязывается к loopback адресам (127.0.0.1 и ::1).
    Теперь о файле экспортируемых точек монтирования. Находится он должен здесь - /etc/exports и иметь такой формат:
    1. mountpoint  [[-parameters]...]
    Каждая точка монтирования должна начинаться с новой строки и путь к директории должен быть абсолютным. Символ вначале строки "#" означает, что далее следует комментарий. Некоторые параметры:
    • -alldirs - позволяет монтировать все поддиректории относительно указанной директории. То есть можно использовать вместо такой записи:
      1. /usr /usr/bin /usr/sbin /usr/src /usr/ports и т.д.
      вот такую:
      1. /usr -alldirs
    • -maproot=user - дать права рута удаленной машине, использующей точку монтирования, пользователю user (сопоставление идет по числовому идентификатору пользователя в системе). Все группы, в которых состоит пользователь, также будут иметь такие права. Можно указывать числовой идентификатор пользователя или его имя. Чаще всего здесь указывают пользователя root.
    • -maproot=user:group1:group2:... - список имен или числовых идентификаторов пользователя и групп, разделенный двоеточиями, которым будут даны права рута.
    • -ro - директория будет экспортироваться только для чтения.
    • -network=netname[/prefixlength] - подсеть, которой разрешено монтировать данную директорию.
    • -mask - маска подсети, можно использовать вместо указания prefixlength в предыдущем параметре.
    • -quiet - подавлять некоторые сообщения об ошибках в syslog для некорректных строк в файле.
    Пример содержимого файла:
    1. /usr -ro -mapall=nobody
    2. /u -maproot=bin: -network 131.104.48 -mask 255.255.255.0
    3. /a -network 192.168.0/24
    4. /a -network 3ffe:1ce1:1:fe80::/64
    5. /cdrom -alldirs,quiet,ro -network 192.168.33.0 -mask 255.255.255.0
    6. /usr/ports/distfiles -maproot=0 -network 192.168.7.0 -mask 255.255.255.0
    Не забывайте "говорить" демону перечитать файл, если он был изменен. Итак, добавляем следующие строки в /etc/rc.conf:
    1. mountd_enable="YES"
    И запускаем его:
    1. # service mountd start
    Проверить работает ли сервис можно таким образом:
    1. # sockstat -l | grep mountd
    2. root     mountd     85836 5  udp4   127.0.0.1:603         *:*
    3. root     mountd     85836 6  udp4   192.168.7.250:603     *:*
    4. root     mountd     85836 7  tcp4   127.0.0.1:603         *:*
    5. root     mountd     85836 8  tcp4   192.168.7.250:603     *:*
  • nfsd - собственно сам сервер NFS, который обрабатывает NFS запросы от других машин. Некоторые полезные ключи:
    • -n - количество создаваемых процессов.
    • -h - привязать демон к определенному IP адресу. Полезно, когда на сервере несколько сетевых интерфейсов. Можно указывать несколько раз.
    • -t - обрабатывать запросы по протоколу TCP.
    • -u - обрабатывать запросы по протоколу UDP.
    Итак, добавляем следующие строки в /etc/rc.conf:
    1. nfs_server_enable="YES"
    2. nfs_server_flags="-u -t -n 3 -h 192.168.7.250"
    И запускаем его:
    1. # service nfsserver start
    Проверить работает ли сервис можно таким образом:
    1. # sockstat -l | grep nfsd
    2. 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:
  1. nfs_client_enable="YES"
и в случае необходимости указании точек монтирования NFS в /etc/fstab, для автоматического монтирования во время запуска системы. Приведу несколько примеров. Чтобы подмонтировать NFS, необходимо использовать тулзу mount_nfs:
  1. # mount_nfs 192.168.7.250:/usr/port /usr/ports
А так будет выглядеть строчка в /etc/fstab:
  1. 192.168.7.250:/usr/ports /usr/ports nfs rw 0 0
Так же существует возможность использования NFS в Windows. Для этого нужно установить пакет Services for Unix (SFU). Начиная с Windows Vista, данный пакет уже включен в систему.

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

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