NFS (Network File System) — сетевая файловая система типа клиент-сервер, используемая для совместного использования файлами. Её преимуществом перед технологией. используемой в ОС w!nd0w$, является сравнительно меньшая загруженность сети запросами. Далее мы настроим NFS-сервер на FreeBSD, подключим NFS-ресурс на FreeBSD и Ubuntu.
Предполагается, что сетевые интерфейсы настроены и проблем с ethernet нет. IP-адрес потенциального NFS-сервера на FreeBSD 8.0 — 10.36.1.9, а ресурсы, которые мы предоставим для доступа расположены в /mnt/pools/dsk00 и /mnt/pools/dsk02 (создавал вручную командой «mkdir -p имя_папки» и назначал права через «chmod»), но можно открыть и уже имеющиеся экспортируемые файловые системы.
В /etc/rc.conf добавляем строки:
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 10"
# здесь
# -u -использовать UDP-протокол
# -t -использовать TCP-протокол
# -n 10 -обслуживать запросы только от 10 клиентов
# -h ip_адрес -указать IP сетевой карты, на котором будет работать nfs
mountd_flags="-r -n"
# здесь
# -r -опция, позволяющая обслуживать не только каталоги, но и обычные файлы
# -d -выводить отладочную информацию
# -p номер_порта -привязять принудительно к определённому порту.
# Проверьте, что порт не закрыт фаерволом и не используется
# другим приложением, в противном случае демон не
# запустится и ошибка будет записана в логах.
Теперь редактируем основной конфигурационный файл NFS-сервера:
ee /etc/exports
Содержимое файла:
/mnt/pools/dsk00 -alldirs -maproot=root -network 10.36.1.0 -mask 255.255.255.0
/mnt/pools/dsk02 -alldirs -maproot=root -network 10.36.1.0 -mask 255.255.255.0
здесь:
/mnt/pools/dsk0* -директория, к которой хотим дать доступ по сети (может быть другая, созданная вами).
-alldirs -опция даёт возможность монтировать поддиректории, а не только /mnt/pools/dsk0
-maproot=root -опция даёт возможность записывать в открываемую директорию от имени пользователя сервера root.
-network 10.36.1.0 -mask 255.255.255.0 -позволяет монтировать директория всем компьютерам сети 10.36.1.* с маской 255.255.255.0 (подсеть и маску исправьте на актуальные для вас).
Теперь можно перезагрузить сервер, дабы все демоны запустились автоматически, а можно выполнить из под root’а:
rpcbind
nfsd -u -t -n 10
mountd -r
проверим, запустилось ли:
rpcinfo -p
Должны увидеть нечто похожее на:
program vers proto port service
100000 4 tcp 111 rpcbind
100000 3 tcp 111 rpcbind
100000 2 tcp 111 rpcbind
100000 4 udp 111 rpcbind
100000 3 udp 111 rpcbind
100000 2 udp 111 rpcbind
100000 4 local 111 rpcbind
100000 3 local 111 rpcbind
100000 2 local 111 rpcbind
100005 1 udp 808 mountd
100005 3 udp 808 mountd
100005 1 tcp 808 mountd
100005 3 tcp 808 mountd
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
В /etc/rc.conf вписываем строки:
nfs_client_enable="YES"
По умолчанию запускается 4 процесса nfsiod (см. /etc/defaults/rc.conf), чтобы изменить их количество надо в /etc/rc.conf добавить (не обязательный параметр, не добавлял):
nfs_client_flags="-n 2"
nfsiod -позволяет выполнять асинхронное(быстрее стандартного) копирование. Для нормальной работы нужно запускать столько же процессов nfsiod, сколько клиентом смонтировано ресурсов.
Перезагрузим систему, вручную монтируем /mnt/pools/dsk00 и /mnt/pools/dsk02 NFS-сервера с IP адресом 10.36.1.9 к клиенту в /mnt/audio и /mnt/video соответственно, но сначала:
mkdir -p /mnt/audio
mkdir -p /mnt/video
chmod -R 0777 /mnt/audio
chmod -R 0777 /mnt/video
Теперь само монтирование:
mount_nfs 10.36.1.9:/mnt/pools/dsk00 /mnt/audio
mount_nfs 10.36.1.9:/mnt/pools/dsk02 /mnt/video
Для автоматического монтирования сразу при загрузке ОС в /etc/fstab необходимо дописать в конце(исправьте строки на ваши данные):
10.36.1.9:/mnt/pools/dsk00 /mnt/audio nfs rw, -b, -i 0 0
10.36.1.9:/mnt/pools/dsk02 /mnt/video nfs rw, -b, -i 0 0
здесь:
10.36.1.9 -IP-адрес NFS-сервера
/mnt/pools/dsk00 -открываемый NFS ресурс на сервере с IP 10.36.1.9
/mnt/audio -место, куда монтируем на клиенте
rw -разрешение на запись
-b -опция переводит процесс монтирования ресурса в фоновый режим
-i -использовать мягкое монтирование, т.е. в случае неудачной попытки примонтировать ресурс, процесс можно прервать сочетанием клавиш Ctrl+C
Устанавливаем необходимые компоненты:
sudo apt-get install portmap nfs-common
Монтируем вручную через консоль:
sudo mkdir /mnt/audio
sudo mkdir /mnt/video
sudo chmod -R 0777 /mnt/audio
sudo chmod -R 0777 /mnt/video
sudo mount -t nfs -o ,soft,intr 10.36.1.9:/mnt/pools/dsk00 /mnt/audio
sudo mount -t nfs -o ,soft,intr 10.36.1.9:/mnt/pools/dsk02 /mnt/video
Для автоматического монтирования правим файлик:
sudo nano /etc/fstab
дописав туда строки:
10.36.1.9:/mnt/pools/dsk00 /mnt/audio nfs rw,soft,intr 0 0
10.36.1.9:/mnt/pools/dsk02 /mnt/video nfs rw,soft,intr 0 0
Закрываем, сохраняем. Монтируем:
sudo mount -a
После перезагрузки, монтирование произойдёт автоматически.
Всё, NFS-сервер работает, клиенты настроены, можно пользоваться.
Примечание:
0) Посмотреть подключённых клиентов:
showmount
1) Если сделали какие-то изменения в /etc/exports, то mountd должен перечитать конфигурационный файл, для этого в FreeBSD можно выполнить:
/etc/rc.d/mountd reload
2) Если используется фаервол, то на нём должны быть открыты TCP и UDP порты с номерами 111 и 2049