Nfs share — различия между версиями
Andy (обсуждение | вклад) (Новая страница: «== Конфигурирование NFS == ==== Предварительные требования ==== * Виртуальная машина с двумя се…») |
Andy (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 6: | Строка 6: | ||
== Конфигурирование сетевой директории == | == Конфигурирование сетевой директории == | ||
− | Для | + | Для развертывания <code>NFS</code> необходимые утилиты и демоны включены в пакет <code>nfs-utils</code>. Файл <code>/etc/sysconfig/nfs</code> необходим для настроек параметров демона <code>rpc.nfsd</code>. |
− | + | В данном файле необходимо указать версию протокола <code>NFS</code> - 4.1. Приводим файл <code>/etc/sysconfig/nfs</code> к следующему виду: | |
− | <code>/ | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | [root@vm-01 ~]# cat /etc/sysconfig/nfs | |
+ | # | ||
+ | # Optinal options passed to rquotad | ||
+ | RPCRQUOTADOPTS="" | ||
+ | # | ||
+ | # Optional arguments passed to in-kernel lockd | ||
+ | #LOCKDARG= | ||
+ | # TCP port rpc.lockd should listen on. | ||
+ | #LOCKD_TCPPORT=32803 | ||
+ | # UDP port rpc.lockd should listen on. | ||
+ | #LOCKD_UDPPORT=32769 | ||
+ | # | ||
+ | # Optional arguments passed to rpc.nfsd. See rpc.nfsd(8) | ||
+ | RPCNFSDARGS="-V 4.1" | ||
+ | # Number of nfs server processes to be started. | ||
+ | # The default is 8. | ||
+ | RPCNFSDCOUNT=8 | ||
+ | # Set V4 grace period in seconds | ||
+ | #NFSD_V4_GRACE=90 | ||
+ | # | ||
+ | # Optional arguments passed to rpc.mountd. See rpc.mountd(8) | ||
+ | RPCMOUNTDOPTS="" | ||
+ | # | ||
+ | # Optional arguments passed to rpc.statd. See rpc.statd(8) | ||
+ | STATDARG="" | ||
+ | # | ||
+ | # Optional arguments passed to rpc.idmapd. See rpc.idmapd(8) | ||
+ | RPCIDMAPDARGS="" | ||
+ | # | ||
+ | # Optional arguments passed to rpc.gssd. See rpc.gssd(8) | ||
+ | RPCGSSDARGS="" | ||
+ | # Enable usage of gssproxy. See gssproxy-mech(8). | ||
+ | GSS_USE_PROXY="no" | ||
+ | # | ||
+ | # Optional arguments passed to rpc.svcgssd. See rpc.svcgssd(8) | ||
+ | RPCSVCGSSDARGS="" | ||
+ | # | ||
+ | # Optional arguments passed to blkmapd. See blkmapd(8) | ||
+ | BLKMAPDARGS="" | ||
+ | [root@vm-01 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Настройки сетевых директорий располагаются в файле <code>/etc/exports</code>, для удобства, можно класть файлы с расширением <code>.exports</code> в директорию <code>/etc/exports.d</code>. | ||
+ | Структура файла /etc/exports следующая: | ||
+ | # Путь к сетевой директории | ||
+ | # Хост или сеть, для который будет предоставляться общий доступ к директории | ||
+ | # Опции для хоста | ||
+ | Создаем файл <code>/etc/exports.d/public.exports</code> в котором будет указана сетевая директория, следующего содержания: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-01 ~]# cat /etc/exports.d/public.exports | ||
+ | /srv/nfs/public 192.168.10.0/24(ro,root_squash) | ||
+ | [root@vm-01 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Директория <code>/srv/nfs/public</code> доступна машинам из сети 192.168.10.0/24, директория доступна только для чтения, пользователь <code>root</code> будет отображаться в | ||
+ | пользователя <code>nobody</code> на сервере. | ||
+ | Создаем директорию и записываем в нее проверочный файл: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-01 ~]# mkdir -p /srv/nfs/public | ||
+ | [root@vm-01 ~]# printf "This is test file for NFSv4.1 for RHEL7.0\n" > /srv/nfs/public/nfs_test.txt | ||
+ | [root@vm-01 ~]# ls -lahi /srv/nfs/public/nfs_test.txt | ||
+ | 12948466 -rw-r--r--. 1 root root 42 Nov 30 14:30 /srv/nfs/public/nfs_test.txt | ||
+ | [root@vm-01 ~]# cat /srv/nfs/public/nfs_test.txt | ||
+ | This is test file for NFSv4.1 for RHEL7.0 | ||
+ | [root@vm-01 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Проверяем разрешения <code>SELinux</code> на монтирование директорий <code>NFS</code> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-01 ~]# semanage boolean -l | grep nfs_export | ||
+ | nfs_export_all_rw (on , on) Allow any files/directories to be exported read/write via NFS. | ||
+ | nfs_export_all_ro (on , on) Allow any files/directories to be exported read/only via NFS. | ||
+ | [root@vm-01 ~]# | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
==== Запуск ==== | ==== Запуск ==== | ||
Запускаем сервис: | Запускаем сервис: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | [root@vm-01 | + | [root@vm-01 ~]# systemctl enable nfs-server |
− | [root@vm-01 | + | ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service' |
+ | [root@vm-01 ~]# systemctl start nfs-server | ||
+ | [root@vm-01 ~]# systemctl is-active nfs-server | ||
active | active | ||
− | [root@vm-01 | + | [root@vm-01 ~]# |
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Для корректной работы nfs, необхомо включить несколько сервисов в файрволе. Добавляем разрешения: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | [root@vm-01 ~]# firewall-cmd --add-service={ | + | [root@vm-01 ~]# firewall-cmd --add-service={mountd,nfs,rpc-bind} --permanent |
success | success | ||
− | [root@vm-01 ~]# firewall-cmd --reload | + | [root@vm-01 ~]# firewall-cmd --reload |
success | success | ||
− | [root@vm-01 ~]# firewall-cmd --list-services | + | [root@vm-01 ~]# firewall-cmd --list-services |
− | dhcpv6-client https | + | dhcpv6-client http https mountd nfs rpc-bind ssh |
[root@vm-01 ~]# | [root@vm-01 ~]# | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Проверка ==== | ==== Проверка ==== | ||
− | С виртуальной машины <code>vm- | + | С виртуальной машины <code>vm-01</code> проверим доступность сетевой директории на самом сервере: |
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-01 ~]# showmount -e vm-01.virtual.lab | ||
+ | Export list for vm-01.virtual.lab: | ||
+ | /srv/nfs/public 192.168.10.0/24 | ||
+ | [root@vm-01 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Теперь проверим на клиентской машине: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [root@vm-02 ~]# showmount -e vm-01.virtual.lab | ||
+ | Export list for vm-01.virtual.lab: | ||
+ | /srv/nfs/public 192.168.10.0/24 | ||
+ | [root@vm-02 ~]# | ||
+ | </syntaxhighlight> | ||
+ | Теперь монитируем: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | [root@vm-02 ~]# | + | [root@vm-02 ~]# mount.nfs4 -v -o nfsvers=4.1 vm-01.virtual.lab:/srv/nfs/public /mnt/ |
− | + | mount.nfs4: timeout set for Fri Nov 30 14:52:53 2018 | |
− | + | mount.nfs4: trying text-based options 'nfsvers=4.1,addr=192.168.10.8,clientaddr=192.168.10.9' | |
+ | [root@vm-02 ~]# cat /mnt/nfs_test.txt | ||
+ | This is test file for NFSv4.1 for RHEL7.0 | ||
[root@vm-02 ~]# | [root@vm-02 ~]# | ||
</syntaxhighlight> | </syntaxhighlight> |
Текущая версия на 13:05, 3 декабря 2018
Содержание
Конфигурирование NFS
Предварительные требования
- Виртуальная машина с двумя сетевыми интерфейсами
- Установленные пакеты:
bash-completion
,policycoreutils
,policycoreutils-python
,policycoreutils-devel
,setroubleshoot-server
,nfs-utils
Конфигурирование сетевой директории
Для развертывания NFS
необходимые утилиты и демоны включены в пакет nfs-utils
. Файл /etc/sysconfig/nfs
необходим для настроек параметров демона rpc.nfsd
.
В данном файле необходимо указать версию протокола NFS
- 4.1. Приводим файл /etc/sysconfig/nfs
к следующему виду:
[root@vm-01 ~]# cat /etc/sysconfig/nfs
#
# Optinal options passed to rquotad
RPCRQUOTADOPTS=""
#
# Optional arguments passed to in-kernel lockd
#LOCKDARG=
# TCP port rpc.lockd should listen on.
#LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
#LOCKD_UDPPORT=32769
#
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
RPCNFSDARGS="-V 4.1"
# Number of nfs server processes to be started.
# The default is 8.
RPCNFSDCOUNT=8
# Set V4 grace period in seconds
#NFSD_V4_GRACE=90
#
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
RPCMOUNTDOPTS=""
#
# Optional arguments passed to rpc.statd. See rpc.statd(8)
STATDARG=""
#
# Optional arguments passed to rpc.idmapd. See rpc.idmapd(8)
RPCIDMAPDARGS=""
#
# Optional arguments passed to rpc.gssd. See rpc.gssd(8)
RPCGSSDARGS=""
# Enable usage of gssproxy. See gssproxy-mech(8).
GSS_USE_PROXY="no"
#
# Optional arguments passed to rpc.svcgssd. See rpc.svcgssd(8)
RPCSVCGSSDARGS=""
#
# Optional arguments passed to blkmapd. See blkmapd(8)
BLKMAPDARGS=""
[root@vm-01 ~]#
Настройки сетевых директорий располагаются в файле /etc/exports
, для удобства, можно класть файлы с расширением .exports
в директорию /etc/exports.d
.
Структура файла /etc/exports следующая:
- Путь к сетевой директории
- Хост или сеть, для который будет предоставляться общий доступ к директории
- Опции для хоста
Создаем файл /etc/exports.d/public.exports
в котором будет указана сетевая директория, следующего содержания:
[root@vm-01 ~]# cat /etc/exports.d/public.exports
/srv/nfs/public 192.168.10.0/24(ro,root_squash)
[root@vm-01 ~]#
Директория /srv/nfs/public
доступна машинам из сети 192.168.10.0/24, директория доступна только для чтения, пользователь root
будет отображаться в
пользователя nobody
на сервере.
Создаем директорию и записываем в нее проверочный файл:
[root@vm-01 ~]# mkdir -p /srv/nfs/public
[root@vm-01 ~]# printf "This is test file for NFSv4.1 for RHEL7.0\n" > /srv/nfs/public/nfs_test.txt
[root@vm-01 ~]# ls -lahi /srv/nfs/public/nfs_test.txt
12948466 -rw-r--r--. 1 root root 42 Nov 30 14:30 /srv/nfs/public/nfs_test.txt
[root@vm-01 ~]# cat /srv/nfs/public/nfs_test.txt
This is test file for NFSv4.1 for RHEL7.0
[root@vm-01 ~]#
Проверяем разрешения SELinux
на монтирование директорий NFS
[root@vm-01 ~]# semanage boolean -l | grep nfs_export
nfs_export_all_rw (on , on) Allow any files/directories to be exported read/write via NFS.
nfs_export_all_ro (on , on) Allow any files/directories to be exported read/only via NFS.
[root@vm-01 ~]#
Запуск
Запускаем сервис:
[root@vm-01 ~]# systemctl enable nfs-server
ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
[root@vm-01 ~]# systemctl start nfs-server
[root@vm-01 ~]# systemctl is-active nfs-server
active
[root@vm-01 ~]#
Для корректной работы nfs, необхомо включить несколько сервисов в файрволе. Добавляем разрешения:
[root@vm-01 ~]# firewall-cmd --add-service={mountd,nfs,rpc-bind} --permanent
success
[root@vm-01 ~]# firewall-cmd --reload
success
[root@vm-01 ~]# firewall-cmd --list-services
dhcpv6-client http https mountd nfs rpc-bind ssh
[root@vm-01 ~]#
Проверка
С виртуальной машины vm-01
проверим доступность сетевой директории на самом сервере:
[root@vm-01 ~]# showmount -e vm-01.virtual.lab
Export list for vm-01.virtual.lab:
/srv/nfs/public 192.168.10.0/24
[root@vm-01 ~]#
Теперь проверим на клиентской машине:
[root@vm-02 ~]# showmount -e vm-01.virtual.lab
Export list for vm-01.virtual.lab:
/srv/nfs/public 192.168.10.0/24
[root@vm-02 ~]#
Теперь монитируем:
[root@vm-02 ~]# mount.nfs4 -v -o nfsvers=4.1 vm-01.virtual.lab:/srv/nfs/public /mnt/
mount.nfs4: timeout set for Fri Nov 30 14:52:53 2018
mount.nfs4: trying text-based options 'nfsvers=4.1,addr=192.168.10.8,clientaddr=192.168.10.9'
[root@vm-02 ~]# cat /mnt/nfs_test.txt
This is test file for NFSv4.1 for RHEL7.0
[root@vm-02 ~]#