Настройка NFS на Centos 7

Решил рассмотреть вопрос с настройкой простого NFS-сервера на Centos 7. Перед началом небольшое вступление. Network File System применяется обычно для шасшаривания файлов между Linux или Unix систем. Протокол разработан компанией Sun.

Для настройки NFS, в ОС должны быть установлены и запущены следующие сервисы:

  • nfs-server – предоставляет доступ для клиентов;
  • nfs-idmap – преобразовывает uid & gid в имена и наоборот;
  • rpcbind – преобразует номера программ RPC в универсальные адреса; работает на 111 порту; необходим для совершения вызовов удаленных процедур (Remote Procedures Calls);
  • nfs-lock / rpc-stat – служит для восстановления блокировки файлов при сбое сервера с NFS.

Пакеты ставятся со всеми вышеописанными зависимостями и запускаются сразу благодаря тому, что в одном юните /usr/lib/systemd/system/nfs-server.service всё уже прописано из коробки:

yum install nfs-utils nfs-utils-lib

Для Debian: nfs-kernel-server и nfs-common для клиента

После установки запустить и включить автозагрузку:

systemctl start nfs-server rpcbind
systemctl enable nfs-server rpcbind

Создать будущую шару:

mkdir /home/share

Отредактировать конфигурационный файл NFS /etc/exports:

/home/share 192.168.99.1(rw,sync,no_root_squash)

Небольшие пояснения по конфигурации:

  • первый параметр – путь до шары;
  • вместо IP можеть быть подсеть или звездочка (* – любой хост);
  • rw – разрешения на запись в шару;
  • sync – для немедленной записи всех изменений клиентом на диск;
  • no_root_squash – для того, чтобы root на клиенте имел аналогичные права, что и root на сервере. По дефолту root на клиенте имеет уровень доступа как nobody на сервере.

Есть много ещё различных параметров, подробное описание для конкретной задачи можно посмотреть в оригинальном мануале.

После правки файла, надо применить изменения командой:

exportfs -r

Тут также можно посмотреть доп. флаги, которые ещё существуют.

После этого поправить параметры штатного firewalld, открыв порты для сервисов:

rpc-bind – 111/tcp
nfs – 2049/tcp
mountd – 20048/tcp, 20049/udp

firewall-cmd --permanent --add-service mountd
firewall-cmd --permanent --add-service rpc-bind
firewall-cmd --permanent --add-service nfs
firewall-cmd --reload

После применения всех настроек, можно проверить на сервере, какая шара нам доступна:

showmount -e

Export list for localhost.localdomain:
/home/share 192.168.10.161

Проверка на клиенте:

showmount -e <client_ip>

И теперь осталось только подмонтировать доступную по NFS директорию:

mount <server_ip>:/home/share /mnt

Для наглядности, можно посмотреть доп. параметры монтирования. Как видно, используется NFS 4 версии:

mount | grep nfs
192.168.10.176:/home/share on /mnt type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.161,local_lock=none,addr=192.168.10.176)

Или посмотреть так:

df -hT

192.168.10.176:/home/share nfs4      9.1G  3.9G  5.2G  43% /mnt

Для автоматического монтирования, прописать в /etc/fstab:

<server_ip>:/home/share /mnt    nfs     nosuid,rw,sync,hard,intr  0  0

На этом настойка завершена. В завершении хочу сказать, что нужно помнить о том, что NFS – протокол без шифрования, а потому лучше использовать его как минимум через VPN.

Ваш комментарий будет первым

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *