Монтирование директорий используя NFS в CentOS

Монтирование директорий используя NFS в CentOS

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Монтирование файловых систем по NFS, что позволяет расшаривать директории нескольких серверов между друг другом.

Шаг 1. Установка NFS

Master Server: 192.168.2.1
Client Server: 192.168.2.10

Установим необходимые пакеты:

1
yum install nfs-utils nfs-utils-lib

Добавим в автозагрузку и запустим:

1
2
3
chkconfig nfs on 
service rpcbind start
service nfs start

Шаг 2. Настройка

Определим какую директорию будем расшаривать на клиентский сервер и указываем её в файле /etc/exports

Например мы хотим расшарить папку /storage

1
nano /etc/exports
1
/storage          192.168.2.10(rw,sync,no_root_squash,no_subtree_check)

rw: Данная опция позволяет производить чтение и запись в выбранный каталог
sync: Синхронный режим работы, ответы на запросы происходят только после того, как данные надежно будут
записаны на диск. Надежность выше, производительность меньше.
no_subtree_check: Если экспортируется подкаталог файловой системы, но не вся файловая система, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге. Отключение проверки уменьшает безопасность, но увеличивает скорость передачи данных.
no_root_squash: - root (uid0) на стороне клиента, выглядит как nobody (uid 65534) на стороне сервера, это называется смещением root т.к. позволяет защитить файлы, владельцом которых является root от изменений клиентами NFS. Опция no_root_squash: отменяет такое поведение, и позволяет пользователю root (на стороне клиента) иметь доверенный полный доступ к разделу. Данная опция может использоваться только в случае доверия.

Также (опционально):
async - Асинхронный режим работы, ответы на запросы происходят сразу, не дожидаясь записи на диск. Надежность ниже, производительность больше.
proto=(tcp|udp) - выбор протокола, по умолчанию - первый доступный из /etc/netconfig.
ro - Права только на чтение. Можно и не указывать, так как она установлена по умолчанию.

После того, как были внесены изменения запускаем команду:

1
exportfs -a

Шаг 3. Настройка клиента

Установим дополнительные пакеты:

1
yum install nfs-utils nfs-utils-lib

Шаг 4. Монтирование директорий

Создаем папку для монтируемой директории:

1
mkdir -p /storage

Монтируем папку

1
mount 192.168.2.1:/storage /storage

Выполним df -h для проверки маунта

1
2
3
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda 20G 783M 18G 5% /
192.168.2.1:/storage 20G 785M 18G 5% /storage

Используем команду mount для проверки примонтированных директорий.

1
2
3
4
5
/dev/sda on / type ext4 (rw,errors=remount-ro)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.2.1:/storage on /storage type nfs (rw,noatime,nolock,bg,nfsvers=2,intr,tcp,actimeo=1800,addr=192.168.2.1)

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

1
2
nano /etc/fstab
192.168.2.1:/storage /storage nfs auto,noatime,nolock,bg,nfsvers=3,intr,tcp,actimeo=1800 0 0

Правила для Firewall

1
2
3
4
5
6
7
8
9
10
11
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 32769 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT

Правила для FirewallD

1
2
3
firewall-cmd --permanent --zone=internal --add-service=nfs
firewall-cmd --permanent --zone=internal --add-service=mountd
firewall-cmd --permanent --zone=internal --add-service=rpc-bind