在咱們準備好了 librxe-dev 和 rxe-dev 的源碼以後,就能夠着手安裝 rdma 了。說是 安裝 rdma,實際上是 從新編譯 linux 內核,使之支持 soft-Roce 協議,以支持 rdma。linux
先貼出下載路徑:c++
rxe_submission_v18
。這裏要注意,切換到 18 版本以後,最好使用 git pull origin rxe_submission_v18 去再拉取一遍,確保無誤。若是目錄 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/ 下面有 aux.c 和 aux.h 這兩個文件,那麼就說明對了。librxe-1.0.0
rdma 在 centos 下的安裝步驟
1, 準備好 幾個 軟件:
gcc
gcc-c++
bcgit
pciutils
openssl-devel
automake
ncurses-devel
libibverbs
libibverbs-devel
libibverbs-utils
librdmacm
librdmacm-devel
librdmacm-utils
perl-Switch
注意:
安裝 perl-Switch 須要選用 centos 的源,用國內的 163 的源沒用。
2, 進入到 rxe-dev 目錄 ,
cp /boot/config-$(uname –r) .config
切換到 root 用戶權限,運行 make menuconfig
出現選擇界面。(若是沒出現,那麼安裝 ncurse-devel )
輸入 "/" ,而後輸入 RDMA_RXE,按下 enter,會查找有關 RDMA_RXE 的選擇項。
輸入數字 1,就會選擇到 RDMA_RXE 的設置,輸入 "M" ,選中 RDMA 的配置,若是 輸不了 M,那就輸入 空格,總之必定要把 RDMA 加到 編譯選項裏面去。
而後按 方向鍵 向下看幾行,將有 RDMA 字眼的選項都選中,按 "M" 或者 空格,以防萬一。好比 」IP-over-InfiniBand data path debugging「。
爲了保險起見,咱們也輸入 INFINIBAND 將幾個 配置選中,這個就看哪些像是 rdma 的就選上就能夠了。看前幾個就好。
而後 vi .config 來確認 CONFIG_RDMA_RXE 爲 m ,CONFIG_INFINIBAND_ADDR_TRANS 和 CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS 爲 y
3, 輸入 make 進行編譯。 make -j 32 表示 用 32 個核 進行編譯, 通常 make -j 會自動判斷 cpu 的核數。個人虛擬機是 4 核,運行 make -j 4
4, make modules_install ,可能執行中途 會提示 丟失一些 module,這個 不要緊,可有可無。
5, make install
6, make headers_install INSTALL_HDR_PATH=/usr
7, 確認 新的內核是否在 grub 引導中。查看 /etc/grub.cfg 便可看見。在開機的時候能夠選擇 新內核啓動。
8, 開始安裝 librxe-dev。 既然 librxe-dev 目錄:cd librxe-dev
9, ./configure --libdir=/usr/lib64/ --prefix=
10, make
11, make install
12, 驗證 rdma 。
rxe_cfg start
rxe_cfg add eth0
rxe_cfg statusgithub
------------------------------------------
------------------------------------------
------------------------------------------
------------------------------------------vim
若是是使用克隆的虛擬機,那麼就須要注意,因爲 克隆的虛擬機的 網卡信息跟之前的是如出一轍的,包括 網卡的uuid 也是同樣的,全部咱們須要將舊網卡移除,添加新網卡,並手動修改配置文件。
具體作法:
1, 在vmware 的設置中移除 網絡適配器 這一硬件,而後添加新硬件,選 「自定義-VMnet8(NAT模式)」 便可。
2, 在 centos 下面新加的網卡是沒有配置文件的。全部咱們要手動添加配置文件,首先看一下新加的網卡的信息: nmcli con 。(若是 nmcli 命令沒法執行,那麼本身去
yum -y install NetworkManager 而且啓動它, service NetworkManager start,參考網址 http://www.linuxidc.com/Linux/2016-08/134149.htm)
這裏個人信息是:
NAME UUID TYPE DEVICE
eno33554984 fb67dbad-ec81-39b4-42b1-ebf975c3ff13 802-3-ethernet eno33554984
3, 在 /etc/sysconfig/network-scripts 目錄下新建一個配置文件,我這起名爲 ifcfg-eno33554984,而後加入配置信息:
TYPE="Ethernet"
# IP地址 固定
BOOTPROTO="static"
BROADCAST=192.168.3.255
#手動配置 IP地址
IPADDR=192.168.3.144
NETMASK=255.255.255.0
NETWORK=192.168.3.0
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="no"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
#這裏修改成上面查看的信息
NAME="eno33554984"
#這裏修改成上面查看的信息
UUID="fb67dbad-ec81-39b4-42b1-ebf975c3ff13"
#HWADDR=00:0c:29:81:af:02
#這裏修改成上面查看的信息
DEVICE="eno33554984"
ONBOOT="yes"
4, 配置修改完以後 重啓 network : service network restart
5, 此時 輸入 rxe_cfg start 通常就能夠 啓動了。咱們能夠經過 rxe_cfg status 查看狀態。
Name Link Driver Speed NMTU IPv4_addr RDEV RMTU
eno33554984 yes e1000 rxe0 1024 (3)
若是出現 rxe0 這樣的,就表示成功了。若是沒有,那麼咱們能夠執行以下步驟:
rxe_cfg add eno33554984
而後再次 rxe_cfg start 就能夠了。
6, 到這一步咱們已經可使用 rdma 的協議了。可是因爲咱們是 克隆的虛擬機,會殘留上一塊網卡 eno16777736 在 rdma 中的信息,有時候會出現 "sh: line 0: echo: write error: Invalid argument" ,"interface eno16777736 not found"這樣的提示。爲避免影響咱們的判斷,咱們修改 /var/rxe/rxe 的內容,去掉 eno16777736 這一行就能夠了。
7, 最後,因爲 開機的時候常常要選擇 支持rdma 的內核,咱們能夠修改 /etc/grub.cfg 或者 /etc/grub2.cfg ,將其餘的內核註釋掉,只留下 "CentOS Linux (4.7.0-rc3+) 7 (Core)" 這一個內核,就不須要每次開機都手動選擇了。centos
8, 在試驗 rdma 的時候,記得關閉防火牆 sudo iptables -F 網絡
#chkconfig iptables off #開機不啓動
或者 # setenforce 0 #調整到寬鬆模式
ui
# vim /etc/selinux/config
this
SELINUX=disabled
#之後開機selinux都禁用
debug