Установка и настройка NFS-сервера в Linux

Описание

NFS (Network File System) – это протокол сетевого доступа к файловым системам. RPC обычно доступен на 111 порту UDP и RPC.

Сетевой доступ к файловой системе сервера прозрачен, и любое приложение может работать с удалённой файловой системой как со своей собственной.

NFS – сейчас открытый стандарт, поддерживающий механизмы прав доступа и функции файловой системы, и активно развивается.

Серверы NFS экспортируют сетевые каталоги. Клиенты NFS – монтируют сетевой каталог в локальную точку монтирования.

    Варианты монтирования:
  • Вручную, с помощью команды mount;
  • Автоматически, с помощью заранее определённой конфигурации в /etc/fstab;
  • По запросу, используя сервис автомонтирования.
    Обеспечение безопасности файлового доступа для общих папок NFS:
  • none - анонимный доступ к файлам. Операции записи на сервера (если разрешено) получают идентификаторы UID и GID nobody;
  • sys - файловый доступ на основе стандартных разрешений Linux. Используется по умолчанию;
  • krb5 - клиенты должны пройти проверку подлинности с помощью Kerberos, после чего применяются стандартные разрешения Linux;
  • krb5i - добавление криптографически сильной гарантии того, что данные в каждом запросе не были взломаны;
  • krb5p - добавление шифрования во все запросы между клиентом и сервером. Влияет на производительность.

NFS-сервер может иметь различные настройки для каждого экспортируемого каталога. NFS-клиент должны подключаться к экспортируемому каталогу, явно указав режим безопасности в опции sec=<метод>.

Настройка сервера

Установка nfs клиента и сервера
yum install nfs-utils nfs4-acl-tools
После установки пакетов появляется конфигурационные файлы
/etc/nfs.conf
/etc/nfsmount.conf
/etc/sysconfig/nfs
Запуск и добавление в автозагрузку
systemctl start nfs
systemctl enable nfs
  • mount.nfs монтирование сетевой файловой системы
  • mount.nfs4 монтирование сетевой файловой системы
  • umount.nfs размонтирование сетевой файловой системы
  • umount.nfs4 размонтирование сетевой файловой системы
  • exportfs управление экспортируемыми каталогами на сервере
  • nfsiostat статистика ввода-вывода для существующих точек монтирования
  • nfsstat статистика взаимодействия с NFS-сервером
  • showmount вывод экспортированных сетевых файловых систем, локальные или другого NFS сервера
  • nfs4_editfacl, nfs4_getfacl, nfs4_setfacl команды управления ACL для смонтированной сетевой файловой системы
Настройка экспортируемых каталогов осуществляется в файле
/etc/exports
например
/mnt/exp *(ro,sync) test1.home(rw,sync)
/opt/exchange *.home(rw)
/mnt/nfs_shares/backups 192.168.10.15/24(rw,sync,no_root_squash)
Пробел используется для разделения полей. Может указываться ip адрес клиента или подсети.
Команда
showmount -e
покажет
/mnt/exp *
/opt/exchange *.home
  • exportfs -a активация настроек /etc/exports
  • exportfs -ua остановка доступа к экспортированным каталогам (деактивация)
  • exportfs -r применение изменений в /etc/exports и /etc/exports.d
  • exportfs -arv применение изменений
  • exportfs -s проверка
Разрешения файервола
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

Настройка клиента

Проверка доступа к серверу
showmount -e 192.168.10.15
Создание каталога точки монтирования
mkdir /mnt/data
Монтирование каталога
mount -t nfs4 server:share_dir /mnt/data
например
mount -t nfs 192.168.10.15:/mnt/nfs_shares/backups /mnt/backups

По умолчанию при подключении пользователь root превращается в пользователя nobody, поэтому если запись в каталог только для рута, то будет запрет доступа.

    Диагностика проблем:
  1. Проверить, что nfs сервер и rpcbind работают (rpcbind должен быть запущен на обоих проверяемых узлах);
  2. Проверить доступность сервера по сети (ping);
  3. Проверить вывод showmount;
  4. Проверить настройку firewalld;
  5. Если firewalld был отключен или изменены его настройки, необходимо перезапустить nfs-сервер;
  6. Попробовать смонтировать сетевой каталог;
  7. Если проблемы остаются, проверьте правила экспорта ФС и опции монтирования;
  8. Проверьте политики SELinux и контекст/типы экспортируемых каталогов.

Автоматическое монтирование сетевого хранилища с помощью NFS на клиенте

Для автоматического монтирования используется сервис autofs (необходим пакет autofs). Служба autofs автоматически монтирует каталоги (в т.ч.) NFS по требованию, и демонтирует их, если они не используются. При этом пользователям не нужно иметь привилегированные права для запуска команд mount/umount. Общие каталоги NFS, настроенные с помощью автоматического монтирования, доступны для всех пользователей системы с учётом разрешений доступа.

Создать файл demo.autofs в каталоге /etc/auto.master.d. Этот файл будет называться master-map и нужен для сопоставления базового каталога и будущих точек автомонтирования. Требование к названию, имя файла должно завершаться на «.autofs»
touch /etc/auto.master.d/demo.autofs
написать в нем
/mnt/demo /etc/auto.demo
Создать файл
touch /etc/auto.demo
написать в нем Формат записи: точка монтирования, опции монтирования, экспортируемый каталог.
exchange -rw,sync 192.168.10.15:/opt/exchange
Запустить сервис
systemctl start autofs
Если сервер экспортирует несколько вложенных подкаталогов, то их автомонтирование можно настроить одной строкой
* -rw,sync serverX:/shares/&
где "*" - маска создаваемой точки монтирования, «&» маскирует имя экспортируемого каталога. Точка монтирования будет называться так же, как и экспортируемый каталог.