【DOCA征文活动】DPU加速存储优化分享

753 阅读5分钟

文章来源:  首期NVIDIA DOCA 中国开发者社区有奖征文活动 

原文链接看这里

作者: 极客天成Scaleflash 驱动下载:

dpu os 自带ib驱动,在安装ib驱动时候会更新卡固件,dpu的固件版本需要和驱动固件为一个版本,在实际使用中发现dpu os驱动版本和主机驱动版本无法对上,尽量采用相近版本

如果无法过dou os固件版本只能先安装一个ib驱动,刷想要的系统进去看驱动版本,然后主机下载对应版本驱动更新固件即可。

 
ib卡驱动

www.mellanox.com/products/in…

DPU os下载

developer.nvidia.com/zh-cn/netwo…

初始化配置
常用系统初始化配置

vim 格式

猫 >> /root/.vimrc << 'EOF'
设置数字
集选项卡停止=4
设置移位宽度=4
设置忽略大小
集 hlsearch
nnoremap :设置非枚举!:设置折叠柱=0
设置粘贴切换=
EOF

yum 本地仓库

[root@bms-03 ~]# 猫 /etc/yum.repos.d/iso.repo
[红帽-7.8-iso] 名称=红帽-7.8-iso]
名称=红帽-7.8-iso
基本网址=文件:///sf/iso/
启用=1
优先级=1
gpgcheck=0
[root@bms-03 ~]#

安装驱动

驱动安装

./mlnxofedinstall --with-nvmf --force-fw-update --力

根据安装提示做完剩余操作
如法完成可以先设定dpu卡参数后重启生效

启动 rshim ,用于主机 访问 dou os

systemctl start rshim

编译安装驱动

非标准系统 编译方式安装驱动

redhat7.8 系统采用最小安装

yum install vim
yum install perl
yum install kernel-devel
yum install createrepo
yum install python-devel pciutils lsof redhat-rpm-config rpm-build gcc
yum install automake autoconf
yum install libtool
yum install libusbx tcl gcc-gfortran fuse-libs tcsh tk

yum install vim perl kernel-devel createrepo python-devel pciutils lsof redhat-rpm-config rpm-build gcc automake autoconftool libusbx tcl gcc-gfortran fuse-libs tcsh tk

./mlnxofedinstall --with-nvmf --add-kernel-support --fw-update-only --force

/tmp/MLNX_OFED_LINUX-5.2-2.2.3.0-3.10.0-1127.el7.x86_64/MLNX_OFED_LINUX-5.2-2.2.3.0-rhel7.8-ext/mlnxofedinstal --fw-update-only --force

dracut -f

systemctl start rshim

DPU刷入系统

host 启动 rshim 服务

systemctl start rshim

主机 连接 dpu console

screen /dev/rshim0/console

host 上为 DPU 刷系统

cat Ubuntu20.04-MLNX_OFED-5.2-2.2.0.0-3.5.1.11601-1-aarch64.bfb > /dev/rshim0/boot

看 dpu console 等待系统安装完成

设置DPU

首先启动 mst,然后执行如下命令:

开启参数不对会无法启动 开启 NVME_EMULATION 支持

mst start
mlxconfig -d /dev/mst/mt41686_pciconf0 s INTERNAL_CPU_MODEL=1 NVME_EMULATION_ENABLE=1

host 重新上电 (此处可以先不重启等待 配置完dpu 后一次重启即可)

echo 3 > /proc/sys/vm/drop_caches
ipmitool power cycle

 

重启说明(该处为掉电重启,否则上述步骤中NVMEEMULATIONENABLE=1等参数不生效):

主机掉电重启

主机不掉电重启

配置DPU OS

hoat 连接 DPU console

systemctl restart rshim
screen /dev/rshim0/console

dpu 切换 root 用户

sudo passwd root
su -
hostnamectl set-hostname roce-dpu-100

dpu 配置 root ssh

vim /etc/ssh/sshd_config
PermitRootLogin yes
StrictModes yes

echo -e “\nPermitRootLogin yes\n” >> /etc/ssh/sshd_config

dpu 修正啪

啪mv /etc/mlnx_snap/*.conf /root/bak/
systemctl 重新启动mlnx_snap;systemctl 状态 mlnx_snap

dpu 关闭部分不需要的服务

systemctl stop docker;systemctl disable docker
systemctl disable cloud-init-local cloud-init cloud-config cloud-final
systemctl stop cloud-init-local cloud-init cloud-config cloud-final

systemctl stop x11-common.service;系统ctl 禁用 x11-common.service

systemctl 停止打开-iscsi ;systemctl 禁用打开-iscsi

系统ctl 停止 nfs-client.目标
系统停止 nfs-common.service
systemctl 停止 nfs-config.service
systemctl 停止 nfs-idmapd.service
systemctl 停止 nfs-utils.service

systemctl 禁用 nfs-client.target
systemctl 禁用 nfs-common.service
系统禁用 nfs-config.service
systemctl 禁用 nfs-idmapd.service
systemctl 禁用 nfs-utils.service

systemctl 停止多路径;systemctl disable multipathd

配置ip地址

mv /etc/netplan/50-cloud-init.yaml bak/

cat > /etc/netplan/99-ib.yaml << “EOF”
网络:
版本: 2
渲染器: 网络
以太网:
ibp3s0f0:
dhcp4: 无
地址:

  • 192.168.6.214/24
    ibp3s0f1:
    dhcp4: 无
    地址:
  • 192.168.8.214/24
    EOF

猫 > /etc/netplan/60-mlnx.yaml << “EOF”
网络:
版本: 2
渲染器: 网络
以太网:
ibp3s0f0:
dhcp4: 否
地址:

  • 192.168.6.213/23
    ibp3s0f1:
    dhcp4: 无
    地址:
  • 192.168.8.213/23
    EOF

猫 > /etc/netplan/60-mlnx.yaml << “EOF”
网络:
版本: 2
渲染器: 网络
以太网:
ibp3s0f0:
dhcp4: 无
地址:

  • 192.168.1.14/23
    ibp3s0f1:
    dhcp4: no
    addresses:
  • 192.168.3.14/23
    EOF

使上述修改生效

netplan apply

所有配置已经完成主机 重新上电

做重启测试 以及验证 参数是否全部持久化

echo 3 > /proc/sys/vm/drop_caches
ipmitool power cycle

额外内容 无特殊情况无需配置

内核 锁定内核防止更新
apt-mark hold linux-image-4.15.0-20-generic
apt-mark hold linux-image-generic

配置记录及注意事项

ib dpu

开启参数不对会无法启动 根据所需功能开启参数 此处开启 NVME_EMULATION 和 VIRTIO_BLK_EMULATION 支持

mlxconfig -d /dev/mst/mt41686_pciconf0 s INTERNAL_CPU_MODEL=1 NVME_EMULATION_ENABLE=1 VIRTIO_BLK_EMULATION_NUM_PF=1

root@dpu-213:~# mlxconfig -d /dev/mst/mt41686_pciconf0 s INTERNAL_CPU_MODEL=1 NVME_EMULATION_ENABLE=1 VIRTIO_NET_EMULATION_ENABLE=1 VIRTIO_BLK_EMULATION_NUM_PF=1

设备 #1:


设备类型: 蓝场2
名称: MBF2H516A-EEEO_Ax_Bx
描述: 蓝场-2 DPU 100GbE/EDR/HDR100 VPI 双端口 QSFP56;聚类电脑 Gen4 x16;启用加密;16GB 板载 DDR;1GbE 网络商店管理;FHHL
设备: /dev/mst/mt41686_pciconf0

配置: 下次启动 新
INTERNAL_CPU_MODEL EMBEDDED_CPU(1) EMBEDDED_CPU(1)
NVME_EMULATION_ENABLE False(0) 真(1)
VIRTIO_NET_EMULATION_ENABLE假(0) 真(1)
VIRTIO_BLK_EMULATION_NUM_PF 0 1

应用新配置?(年/无)[n] : y
正在申请做!
-I- 请重新启动计算机以加载新配置。
root@dpu213日:#

 

下面参数 hygon服务器无法开机 一直处于黑屏状态

PCI_SWITCH_EMULATION_ENABLE=1 PCI_SWITCH_EMULATION_NUM_PORT=32

罗思

roce dpu 与 ib dpu配置几乎一直就是网络初始化存在差异

驱动下载地址同上

网络初始化需要 dpu 启动后根据具体查询信息配置

配置记录

root@roce-dpu-100:~# 系统停止打开vs开关-switch.service;系统禁用打开vs交换机-交换机.service

系统ctl启动开放vs交换机-service.service;systemctl enable openvswitch-switch.service

systemctl stop ufw;系统禁用 ufw

猫 > /etc/netplan/60-mlnx.yaml << “EOF”
网络:
以太网:
enp3s0f0s0:
dhcp4: 无
地址:

  • 192.168.6.100/24
    enp3s0f1s0:
    dhcp4: 无
    地址:

  • 192.168.8.100/24
    渲染器: 网络
    版本: 2
    EOF

DPU存储挂载

root@roce-dpu-100:~# nvme 发现 -t rdma -a 10.10.0.44 -s 4444

发现日志记录数 1,生成计数器 2
=====发现日志条目 0======
trtype: rdma
adrfam: ipv4
子类型: nvme 子系统
treq: 未指定, sq 流控制禁用支持的
端口 id: 0
trsvcid: 4444
子模块: t1-nvme5n1
traddr: 10.10.0.44
rdma_prtype: 未指定
rdma_qptype: 连接
rdma_cms:
rdma_pkey

0x0000
root@roce-dpu-100:~# spdk_rpc.py bdev_nvme_attach_controller -b nvme0 -t rdma -f ipv4 -a 10.10.0.44 -s 4444 -n t1-nvme5n1
root@roce-dpu-100

:~# snap_rpc.py subsystem_nvme_create --nqn nqn.bluefield.sf.0001 SNAPNVME0001 “梅拉诺克斯 NVMe Snap Controller”
{
“nqn”: ”nqn.bluefield.sf.0001“,
”subsys_id“: 0
}

root@roce-dpu-100:~# ibdev2netdev |grep enp3s0f0s0
mlx5_2端口 1 ==> enp3s0f0s0 (上)

root@roce-dpu-100:~# snap_rpc.py emulation_functions_list
[
{
“emulation_manager”: “mlx5_0”,
“hotplugged”: 假,
“emulation_type” : “nvme”,
“pf_index”: 0,
“VUID”: “”,
“pci_bdf”: “84:00.2”,
“controller”: {},
“num_vfs”: 0
}
]

root@roce-dpu-100:~# snap_rpc.py controller_nvme_create --pf_id=0 -c /etc/mlnx_snap/mlnx_snap.json --nqn nqn.bluefield.sf.0001 mlx5_0
{
“name”: “NvmeEmu0pf0”,
“cntlid”: 0,
“version”1.3.0“,
”卸载“: 假,
”内存池“: 假,
”max_nsid“: 1024,
”max_namespaces“: 1024
}

root@roce-dpu-100:~# snap_rpc.py controller_nvme_namespace_attach -c 内华达州

 

主机:

[root@node26 ~]# 修改 nvme
[root@node26 ~]# modprobe nvme
[root@node26 ~]#
[root@node26 ~]# nvme 列表
节点 SN 模型 命名空间使用格式 固件修订版


/dev/nvme0n1 A065E7B6 WUS4BA118DSP3X1 1 1.80 TB / 1.80 TB 512 B + 0 B R2109003
/dev/nvme1n1 SNAPNVME0001 梅拉诺克斯 NVMe SNAP Controller 1 3.84 TB / 3.84 TB 512 B + 0 B 1.0
/dev/nvme2n1 A065DECE WUS4BA118DSP3X1 1 1.80 TB / 1.80 TB 512 B + 0 B R2109003

NVIDIA DOCA 现已开放接受申请,扫描下方海报二维码,立刻注册抢先体验!