Skip to the content.

配置Lnet可以使用两种方式,静态配置(支持所有版本)和动态配置(仅支持2.7.0以上版本)

1 静态配置

静态配置通过修改modprobe配置文件的方式实现,一般在/etc/modprobe.d/下添加一个lustre.conf的文件,有networks和ip2nets两种语法可以二选一进行配置。一般情况下,一台主机只能包含一个lustre.conf的配置。

1.1 networks语法

简单明了,适合一般场景,有几个注意的地方:

语法如下:

options lnet networks="<lnd><#>(<dev>)[,…]"

常见的例子如下:

options lnet networks="tcp0(eth1)"

复杂一点的例子

options lnet networks="tcp0(eth1),o2ib0(ib0),o2ib1(ib1)"

1.2 ip2nets语法

适合复杂场景,注意点如下:

通常语法:

options lnet ip2nets="<lnd>[<#>][(<dev>)][, <lnd>[<#>][(<dev>)]] <pattern>[; …]"

常见例子如下:

options lnet ip2nets="tcp0(eth1) 10.10.100.*; o2ib0(ib0) 192.168.200.*"
options lnet ip2nets="tcp0(eth0) 10.10.100.[1-50]; tcp0(eth1) 10.10.100.[100-200]"

复杂例子:

# 下面的匹配规则是11和12两台主机匹配tcp0(eth1),21-24主机匹配tcp0(eth2),其他主机匹配第一个非回环网卡且地址10.70.*.*
options lnet ip2nets="tcp0(eth1) 10.70.207.[11,12]; \
    tcp0(eth2) 10.70.207.[21-24]; \
    tcp0 10.70.*.*"

2 动态配置

使用lnetctl工具进行配置,使得LNet能够在内核模块运行的情况下更新,这个特性叫做动态LNet 配置(DLC)。

简单的例子

# 创建tcpip sockect LND:

lnetctl net add --net tcp1 --if eth1
# 创建一个基于infiniband的NID:

lnetctl net add --net o2ib0 --if ib0
# 查看主机当前配置
lnetctl net show

3. 举例

配置enp0s8为tcp0的方法,两种方法二选一。

3.1 本例中配置方法

这上一篇中的io1-io4这4个节点中,我们采用lnetctl进行动态配置如下:

# 在io1中操作即可
## 加载lnet内核模块
modprobe -v lnet
## 初始化配置lnet
lnetctl lnet configure
## 添加tcp0
lnetctl net add --net tcp0 --if enp0s8
## 保存到配置文件
lnetctl net show --net tcp0 > /etc/lnet.conf
[root@io1 ~]# cat /etc/lnet.conf 
net:
    - net type: tcp
      local NI(s):
        - nid: 192.168.56.11@tcp
          status: up
          interfaces:
              0: enp0s8
## 将配置文件复制到其他节点,因为四个节点配置完全一致,不需要单独修改配置
for i in 2 3 4;do scp /etc/lnet.conf io$i:/etc/;done
## 开机自启动 lnet 服务
for i in 1 2 3 4;do ssh io$i systemctl enable lnet ;done
## 启动lnet 服务
for i in 1 2 3 4;do ssh io$i systemctl start lnet ;done
# 使用lctl ping 测试一下各个节点nid连通性
[root@io1 ~]# for i in 1 2 3 4 ;do lctl ping io$i@tcp0 ;done
12345-0@lo
12345-192.168.56.11@tcp
12345-0@lo
12345-192.168.56.12@tcp
12345-0@lo
12345-192.168.56.13@tcp
12345-0@lo
12345-192.168.56.14@tcp