УНИТе

Портал > Документация > NFS4 клиент/сървър реализация с RDMA интеграция за услугите в инфраструктурата на УНИТе под CentOS 7 и Scientific Linux 7

NFS4 клиент/сървър реализация с RDMA интеграция за услугите в инфраструктурата на УНИТе под CentOS 7 и Scientific Linux 7

Съдържание:

  1. Предварителна информация
  2. Изтегляне и инсталиране на необходимите пакети
  3. Конфигуриране на RDMA на сървъра и клиента
  4. Стартиране на NFS4 сървъра и конфигуриране на ресурсите за експорт
  5. Настройки на firewalld върху NFS4 сървъра
  6. Отдалечено монтиране на NFS4 ресурс с RDMA интеграция
  7. Криптиране на комуникацията между NFS сървъра и клиента

 

1. Предварителна информация

NFS4 сървър/клиент с RDMA интеграция реализира високоскоростна мрежова файлова система, която намира приложение в HPC инфраструктури, с високи изисквания относно скоростта на четене и запис върху отдалечени дискови масиви. Максимумът се постига при използване на InfiniBand хардуер, за свързване на NFS сървъра и клиентите.

Описанието, дадено по-долу, засяга реализацията на NFS4 сървър/клиент с RDMA интеграция такава, каквато тя може да бъде направена под CentOS 7 или Scientific Linux 7.

 

2. Изтегляне и инсталиране на необходимите пакети

Както NFS4 клиента, така и NFS4 сървъра, се инсталират в системата в рамките на един пакет:

$ sudo install nfs-tools

Допълнително, при нужда, може да бъде инсталиран и пакета nfs4-acl-tools:

$ sudo install nfs4-acl-tools

За работата с RDMA трябва да се инсталира групата пакети "Infiniband Support":

$ sudo yum groupinfo "Infiniband Support"

като опционалните пакети от групата трябва да се инсталиран отделно:

$ sudo yum --setopt=group_package_types=optional groupinstall "Infiniband Support"

 

3. Конфигуриране на RDMA на сървъра и клиента

Пакетите, които са инсталирани съгласно препоръките по-горе, ще инсталират в системата конфигурационния файл /etc/rdma/rdma.conf. Използването на подразбиращите се опции там, може да бъде достатъчно (в противен случай, трябва да се определи кои от тях да се променят, съгласно конкретния случай).

Допълнително, във файла /etc/security/limits.conf трябва да укажете следното:

* soft memlock unlimited
* hard memlock unlimited

Добре е след задаването на тези опции, системата да бъде рестартирана.

За да може RDMA да е налична още при зареждането на системата, трябва да разрешите услугата rdma и да я стартирата ръчно, за да проверите дали стартирането ѝ протича без проблеми:

$ sudo systemctl enable rdma
$ sudo systemctl start rdma

За да оптимизирате буферирането и повишите скоростта при RDMA комуникация, съставете файла /etc/sysctl.d/20-rdma.conf, със следното съдържание:

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 87380 33554432
net.core.netdev_max_backlog = 30000

За да въведете тези промени, изпълнете:

$ sudo systemctl restart systemd-sysctl

Параметрите в /etc/sysctl.d/20-rdma.conf подлежат на корекция, специфична за конкретната реализация на InfiniBand.

 

4. Стартиране на NFS4 сървъра и конфигуриране на ресурсите за експорт

Преди да стартирате първоначално услугата nfs-server, трябва да интегрирате NFS с RDMA. Това става чрез зареждане на модула svcrdma. Първо, проверете дали този модул е ръчно зареждаем. Ако изпълнението на командния ред:

$ sudo modprobe svcrdma

завърши успешно (не бъде изведено съобщение за грешка), може да създадете файла /etc/modules-load.d/svcrdma.conf и в него да поставете реда:

svcrdma

Рестартирайте системата, за да проверите дали модула е зареждаем. Ако модулът е зареден, ще го видите известен в списъка с модули в паметта:

$ sudo modprobe | grep ^svcrdma

След като всичко порай зареждането на този модул е наред, може да разрешите услугата nfs-server да се зарежда със зареждането на системата и да я стартирате ръчно, за да проверите дали работи:

$ sudo systemctl enable nfs-server
$ sudo systemctl start nfs-server

Въпреки, че е стартирана, на този етап услугата nfs-server все още няма RDMA поддръжка. За да стане това, трябва да се изпълни:

$ echo rdma 20000 > /proc/fs/nfsd/portlist

като тази операция трябва допълнително да се автоматизира, тъй като не се поддържа от systemd услугата nfs-server и няма да се изпълни при зареждане на системата.

Разрешете и стартирането на услугата rpcbind при зареждането на системата:

$ sudo systemctl enable rpcbind

След това я стартирайте ръчно, за да проверите дали при стартирането ѝ възниква проблем:

$ sudo systemctl start rpcbind

Имайте предвид, че записите, деклариращи ресурсите за експорт към клиентите, които са направени във файла /etc/exports, стават налични за клиентите след изпълнение на $ sudo exportfs -a!

 

5. Настройки на firewalld върху NFS4 сървъра

В случай, че се налага на NFS4 сървъра да се поддържа firewalld, следните правила осигуряват достъпа до NFS4 портовете в публичната зона (променете зоната, ако се налага):

$ sudo firewall-cmd --permanent --add-service=nfs --zone=public
$ sudo firewall-cmd --permanent --add-service=mountd --zone=public
$ sudo firewall-cmd --permanent --add-service=rpc-bind --zone=public
$ sudo firewall-cmd --permanent --add-port=20000/tcp --zone=public
$ sudo firewall-cmd --reload

Забележете, че RDMA порта се задава като номер на порт, а не като име на услуга (все още услугата не е стандартизирана и декларирана в подразбиращите се шаблони на услуги в пакета firewalld).

 

6. Отдалечено монтиране на NFS4 ресурс с RDMA интеграция

На клиента, заредете модула xprtrdma, след това стартирайте услугата nfs и накрая монтирайте ресурса, като укажете протокол RDMA:

Създайте файла /etc/modules-load.d/xprtrdma.conf и в него поставете реда:

xprtrdma

Рестартирайте системата и проверете дали в списъка със заредени модули се намира този модул:

$ sudo lsmod | grep ^xprtrdma

След като сте убедили, че модула е зареждаем, задайте стартирането на услугата nfs да става при зареждане на системата и ръчно стартирайте въпросната услуга:

$ sudo systemctl enable nfs
$ sudo systemctl start nfs

В случай, че не бъдат изведени грешки, може да опитате да монтирате споделен NFS ресурс, до който имате достъп, например:

$ sudo mount -o proto=rdma,port=20000 192.168.199.1:/srv/software /usr/unite

При успешно монтирате, опитайте да четете от монтирани ресурс и следете дали има трафик до и от порт 20000/tcp на сървъра до системата, на която сте извършили монтирането.

Ако прочита (или писането, в случай, че ви е разрешено) минава без проблеми, размонтирайте ресурса, опишете го в /etc/fstab чрез декларацията:

192.168.199.1:/srv/software /usr/unite nfs4 _netdev,auto,proto=rdma,port=20000,hard,intr,rsize=65536,wsize=65536,noatime	0	0

и изпълнете:

$ sudo mount -a

Би следвало след това да видите ресурса в списъка с монтираните устройства в сустемата.

Ако искате да изведете списък с всички споделени NFS ресурси, предлагани от сървъра, изпълнете:

$ sudo showmount -e 192.168.199.1

 

7. Криптиране на комуникацията между NFS сървъра и клиента

Най-удобният начин за криптиране на NFS потоците между сървъра и клиента, е IPsec в транспортен режим. По този начин не се налага да се изгражда тунел и да се правят специфични настройки за достъп, който да включват тунелните IP адреси. При това IPsec транспорта може да поддържа RDMA преноса между сървъра и клиента, без да натоварва критично системите. Повече за използването на IPsec в транспортен режим, може да намерите в документа "Изграждане на IPsec stateless транспорт за услугите в инфраструктурата на УНИТе под CentOS 7 и Scientific Linux 7".

 


Последна актуализация: 24 август 2019

2019 УНИТе, Веселин Колев