NFS на FreeBSD

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»), но можно открыть и уже имеющиеся экспортируемые файловые системы.

  • настраиваем NFS-сервер FreeBSD
  • В /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

  • настраиваем NFS-клиент на FreeBSD
  • В /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

  • настраиваем NFS-клиент на Ubuntu
  • Устанавливаем необходимые компоненты:
    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

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