由於科學計算實驗的需求,需要使用InfiniBand做一個持久性內存全互聯的分布式存儲系統。其中從網卡到交換機使用Mellanox全家桶,而在Mellanox網卡與交換機的使用過程中還是遇到了不少的問題。在此將博主從0到RDMA的實踐過程做一個總結,以避免大家在做此類研究的時踩坑、浪費時間。
1.首先准備了Mellanox的網卡(博主使用的是ConnectX-3 354A)插到Pice*8的槽上,用InfiniBand連接線將網卡與交換機或者網卡與網卡之間來連接起來。不用奇怪,此時網卡上的燈不會亮
2.進入到節點上查看PCI設備可以看到網卡 lspci |grep Mellanox
查看主機是否安裝HCA lspci -v |grep Mellanox
3.安裝IB網卡驅動
上官網找到符合自己系統的驅動
https://cn.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers
紅色框中連接不能直接wget,點進去之后會有讓你Accept的東西,然后才給你下載連接。
在這有些小建議,最好用最新系統裝,並且把內核更新到最新,網卡驅動版本一般都會比較超前,不用擔心越界。老一些版本的系統可能會出稀奇古怪的內核不匹配問題,或者重啟之后就出現mlx4_ib belong to kernel which is not a part of MLNX failed skipping 這樣子的錯誤,博主在centos 7.4折騰了很久都是這個錯誤,更新版本與內核后就沒這個問題了。至於這個問題的具體原因網上有其他博客說過這個的解決方案,但非常麻煩且各種缺失這了那了。
查看系統版本:uname -a lsb_release-a
更新系統版本:yum update;
更新內核:yum upgrade kernel
Wget到驅動安裝包后解壓
# tar -zxvf MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64.tgz
進入到MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64文件夾,執行驅動安裝
# ./mlnxofedinstall
這時候有可能會提示缺少這了那了,根據提示缺啥按
yum install gtk2 atk tcl tcsh tk
然后重新執行 # ./mlnxofedinstall 繼續根據提示缺少啥安裝啥,如果不出問題,系統會自己查找到Mellanox設備,並且會提示update firmware之類的東西,不用擔心,系統重啟后會自動更新。這塊忘了截圖
小Tips :一般安裝好了以后系統就直接自己啟動了IB驅動,並且默認的是開機自啟動,不用自己設置。
如果沒有啟動#systemctl start openibd 啟動一下
設置開機自啟動(一般不用):#chkconfig openibd on
啟動好了可以看到
安裝完驅動,插好線,這個時候就可以看到網卡上的端口燈亮了,通過ibstat可以看到具體的IB端口信息
如上圖,顯示的是端口1正在初始化,且狀態是LinkUp,初始化狀態表示還存在問題(暫時先不考慮)。
卸載驅動則可以通過/usr/sbin/ofed_uninstall.sh或者進入到安裝驅動的文件夾下運行卸載驅動程序。
通過ibnodes可以查看互聯的IB節點信息
4.設置infiniband網卡IP IPoIB
Ifconfig 可以看到網卡信息
但會出現Infiniband hardware address can be incorrect! Please read BUGS section in ifconfig(8)的提示,這塊主要是由於IB網卡的MAC地址比較長,而ifconfig一般只認前八位。現在都推薦用 ip a命令查看網卡信息(我還是喜歡用ifconfig)。
InfiniBand網卡的IP設置辦法與以太網查不到,但要注意是的一定要加上TYPE,要不然會當作普通以太網處理,去查找以太網設備,然后提示找不到設備,或者網卡不符合,如圖
其中 HWADDR與UUID可以不寫,寫的話要自己給ifcfg-ib0生成一個UUID,#uuidgen eth1,最主要的就是一定要加TYPE=InfiniBand,博主在這塊浪費了好久時間,做了很多無用功,不過也搞清楚了這中間的部分細節。設置好了通過ip a可以查看
5.IB網性能測試
還記得之前ibstat的initialzing嗎,這個狀態在IB網使用時會出現問題。
IB帶寬測試在服務端執行:ib_send_bw -a -c UD -d mlx4_0 -i 1
在客戶端執行ib_send_bw -a -c UD -d mlx4_0 -i 1 10.0.0.6
不行的原因initialzing,主要由於opensm沒有開啟。開啟opensm可以整成運行服務端,客戶端也一樣
一切正常后測試過程可以看到
可以使用qperf測試其他內容,在服務端執行qperf
客戶端執行qperf 10.0.0.5 ud_lat ud_bw rc_rdma_read_bw rc_rdma_write_bw uc_rdma_write_bw tcp_bw tcp_lat udp_bw udp_lat可以看到
至此InfiniBand硬件設置踩坑過程結束。