在RDMA(RoCE)上配置NFS

這篇文章顯示瞭如何通過RDMA(RoCE)配置NFS。 在本文中,它是通過CentOS7完成的,其他Linux OS發行版是相似的

基本設置

兩臺配有通過Mellanox以太網SX1036交換機連接的ConnectX-3適配器(40GbE)的服務器。

先決條件

1.CentOS 7與MLNX-OFED 2.4一起安裝在兩臺服務器上

操作系統:CentOS 7
驅動程序:MLNX_OFED 2.4

2.在連接到交換機的ConnectX-3適配器端口上配置IP地址

在主機A上進行配置,類似地,在主機B(IP地址爲19.19.19.8)上進行配置。

Host A # ifconfig ens1 19.19.19.7/24 up

3.驗證MLNX_OFED版本

Host A # ofed_info -s
MLNX_OFED_LINUX-2.4-1.0.0:

4.驗證服務器之間的IP連接

Host A # ping 19.19.19.8

PING 19.19.19.8 (19.19.19.8) 56(84) bytes of data.
64 bytes from 19.19.19.8: icmp_seq=1 ttl=64 time=0.099 ms

5.確保RDMA在服務器之間正常運行。 有關示例,請參考如何啓用,驗證和診斷RDMA故障。

6.驗證不帶RDMA的NFS是否正常工作(從服務器安裝NFS目錄,檢查基本的讀/寫操作)

配置nfs

1.創建要通過NFS掛載的目錄

Host A # mkdir /root/my_directory

2.在服務器端(主機A)上,將/etc/exports文件配置爲

/root/my_directory *(rw,async,insecure,no_root_squash)

3.在服務器上加載RDMA傳輸模塊

Host A # modprobe svcrdma

4.啓動NFS服務

HostA # service nfs start
Redirecting to /bin/systemctl start nfs.service

HostA # service nfs status

Redirecting to /bin/systemctl status nfs.service
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled)
Active: active (exited) since Thu 2015-02-26 02:49:15 IST; 3 weeks 6 days ago
Process: 3099 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT (code=exited, status=0/SUCCESS)
Process: 3096 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 3093 ExecStartPre=/usr/libexec/nfs-utils/scripts/nfs-server.preconfig (code=exited, status=0/SUCCESS)
Main PID: 3099 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Mar 13 20:47:52 HostA systemd[1]: Started NFS Server.
Mar 17 01:10:21 HostA systemd[1]: Started NFS Server.
Mar 25 18:20:07 HostA systemd[1]: Started NFS Server.
Mar 25 20:34:09 HostA systemd[1]: Started NFS Server.

5.指示服務器偵聽RDMA傳輸端口。

注意,20049是默認端口(由IANA選擇),但是任何其他端口都可以工作(要與NFS客戶端中一致)

Host A # echo rdma 20049 > /proc/fs/nfsd/portlist

Host A # cat /proc/fs/nfsd/portlist

rdma 20049
udp 2049
tcp 2049

6.在客戶端(主機B)上加載RDMA傳輸模塊

HostB # modprobe xprtrdma 

7.通過rdma協議將目錄(在步驟1中創建)安裝到客戶端的本地目錄

HostB # mount -o rdma,port=20049 19.19.19.7:/root/my_directory /mnt/my_directory

8.檢查安裝參數

Host B # mount | grep my_directory

19.19.19.7:/root/my_directory on /mnt/my_directory type nfs  (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=rdma,port=20049,timeo=600,retrans=2,sec=sys,mountaddr=19.19.19.7,mountvers=3,mountproto=tcp,local_lock=none,addr=19.19.19.7)

9.驗證對遠程目錄的訪問

Host B # touch /mnt/my_directory/1.txt

Host A # ls /root/my_directory

1.txt

10.要檢查RDMA上NFS的吞吐量/延遲,可以使用fio(或任何類似的測試)

# fio --rw=randread --bs=64k --numjobs=4 --iodepth=8 --runtime=30 --time_based --loops=1 --ioengine=libaio --direct=1 --invalidate=1 --fsync_on_close=1 --randrepeat=1 --norandommap --exitall --name task1 --filename=/mnt/my_directory/1.txt --size=10000000

11.測試NFS並更改/etc/exports下的配置文件時,需要使用命令“ exportfs -a”導出該文件(exportfs命令維護NFS服務器的當前導出表)

# exportfs -a

12. Wireshark對NFSoRDMA的支持已添加到開發樹1.99.7中,並將作爲Wireshark 2.0的一部分發布

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章