NFS4 клиент/сървър реализация с RDMA интеграция за услугите в инфраструктурата на УНИТе под CentOS 7 и Scientific Linux 7Съдържание:
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 на сървъра и клиентаПакетите, които са инсталирани съгласно препоръките по-горе, ще инсталират в системата конфигурационния файл Допълнително, във файла * soft memlock unlimited * hard memlock unlimited Добре е след задаването на тези опции, системата да бъде рестартирана. За да може RDMA да е налична още при зареждането на системата, трябва да разрешите услугата $ sudo systemctl enable rdma $ sudo systemctl start rdma За да оптимизирате буферирането и повишите скоростта при RDMA комуникация, съставете файла 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 Параметрите в
4. Стартиране на NFS4 сървъра и конфигуриране на ресурсите за експортПреди да стартирате първоначално услугата $ sudo modprobe svcrdma завърши успешно (не бъде изведено съобщение за грешка), може да създадете файла svcrdma Рестартирайте системата, за да проверите дали модула е зареждаем. Ако модулът е зареден, ще го видите известен в списъка с модули в паметта: $ sudo modprobe | grep ^svcrdma След като всичко порай зареждането на този модул е наред, може да разрешите услугата $ sudo systemctl enable nfs-server $ sudo systemctl start nfs-server Въпреки, че е стартирана, на този етап услугата $ echo rdma 20000 > /proc/fs/nfsd/portlist като тази операция трябва допълнително да се автоматизира, тъй като не се поддържа от systemd услугата Разрешете и стартирането на услугата $ sudo systemctl enable rpcbind След това я стартирайте ръчно, за да проверите дали при стартирането ѝ възниква проблем: $ sudo systemctl start rpcbind Имайте предвид, че записите, деклариращи ресурсите за експорт към клиентите, които са направени във файла
5. Настройки на firewalld върху NFS4 сървъраВ случай, че се налага на 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 Рестартирайте системата и проверете дали в списъка със заредени модули се намира този модул: $ sudo lsmod | grep ^xprtrdma След като сте убедили, че модула е зареждаем, задайте стартирането на услугата $ 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 на сървъра до системата, на която сте извършили монтирането. Ако прочита (или писането, в случай, че ви е разрешено) минава без проблеми, размонтирайте ресурса, опишете го в 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 УНИТе, Веселин Колев