В операционной системе 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, данный пакет уже включен в систему.
Добавить комментарий