Установка и настройка NFS сервера / клиента в Centos 7
Network File System (NFS) — протокол сетевого доступа к файловым системам, первоначально разработан Sun Microsystems в 1984 году. За основу взят протокол вызова удалённых процедур. Позволяет подключать (монтировать) удалённые файловые системы через сеть.
NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. В отличие от FTP, протокол NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство его в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с NFS-файлом, без каких-либо модификаций самой программы.
Установка и настройка NFS-сервера
Устанавливаем утилиту (возможно по-умолчанию уже стоит)
1
$ sudo yum install nfs-utils
Добавляем правила в firewall
1
2
3
4
5
$ sudo firewall-cmd --permanent --zone=public --add-service=nfs
$ sudo firewall-cmd --permanent --zone=public --add-service=mountd
$ sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
Устанавливаем права на директорию, к которой будет доступ
1
2
$ sudo chown -R nfsnobody:nfsnobody /mnt/storage
$ sudo chmod -R 777 /mnt/storage
Отредактируем файл с настройками доступа к NFS-серверу
1
2
$ sudo nano /etc/exports
/mnt/storage 192.168.1.25(rw,sync,no_root_squash,no_subtree_check) 192.168.1.9(ro,sync,no_root_squash,no_subtree_check)
Пример настроек доступа к разным директориям
1
2
3
4
5
$ sudo nano /etc/exports
/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www 192.168.33.110(rw,sync,no_subtree_check)
/data 192.168.1.100/24(rw,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
rw
- разрешение на записьro
- только чтениеsync
- синхронный режим доступа. sync (async) - указывает, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами. Опция async указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежностьno_root_squash
- по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение.no_all_squash
- включение пользовательской авторизацииall_squash
- все подключения будут выполнятся от анонимного пользователяsubtree_check
(no_subtree_check
) - в некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks
) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опцииno_subtree_check
. Опцияsubtree_check
, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска;anonuid=1000
– привязывает анонимного пользователя к «местному» пользователю;anongid=1000
– привязывает анонимного пользователя к группе «местного» пользователя.
Добавляем службы rpcbind
и nfs
в автозагрузку и запускаем их
1
2
$ sudo systemctl enable rpcbind nfs-server
$ sudo systemctl start rpcbind nfs-server
Демон nfs-server
автоматически перечитывает файл /etc/exports
, но бывает, что надо вручную запустить перечитывание конфига
1
$ sudo exportfs -r
Команда exportfs
показывает какие ресурс опубликованы
1
2
3
$ sudo exportfs
/mnt/storage 192.168.1.25
/mnt/storage 192.168.1.9
Если при вводе появляется ошибка - Function not implemented
, значит, не запущены службы rpcbind
и nfs-server
Установка и настройка NFS-клиента
Устанавливаем софт
1
$ sudo yum install nfs-utils
Включаем и запускаем включаем службы rpcbind
1
2
$ sudo systemctl start rpcbind
$ sudo systemctl enable rpcbind
Создаем каталог, в который будет смонтирована шара и монтируем ее
1
2
$ sudo mkdir /mnt/nfs-share
$ sudo mount -t nfs 192.168.1.12:/mnt/storage /mnt/nfs-share
где 192.168.1.12
- ip-адрес NFS-сервера
Настраиваем автоматическое монтирование при перезагрузки сервера
1
2
3
$ sudo nano /etc/fstab
...
192.168.1.12:/mnt/storage /mnt/nfs-share nfs defaults 0 0