如何在 VMware vSphere 7.0 中配置 RoCE PVRDMA 命名空间
创建于 2020 年 6 月 8 日 本文档介绍如何在 VMware vSphere 7.0 中通过 NVIDIA ConnectX 网卡启用 RoCE PVRDMA 命名空间。
文档目录
创建于 2020 年 6 月 8 日
本页内容
简介
本文档介绍如何在 VMware vSphere 7.0 中通过 NVIDIA ConnectX 网卡启用 RoCE PVRDMA 命名空间。
本指南假定已安装以下软件和驱动程序:
- VMware ESXi 7.0.0, build 15843807
- vCenter 7.0.0, build 15952599
- Distributed Switch 7.0.0
- ConnectX® Ethernet Driver for VMware® ESXi Server 4.17.13.1-1vmw.670.2.48.13006603
- VM Guest OS: Redhat 8.3 or 7.5 with linux kernel 5.5 RDMA features
- VM Hardware Version: 20
参考
- What is RDMA?
- Remote Direct Memory Access for Virtual Machines
- PVRDMA Support
- ConnectX® Ethernet Driver for VMware® ESXi Server
- How-to: Firmware update for NVIDIA ConnectX-5/6 adapter on VMware ESXi 6.5 and above.
解决方案概述
设置

解决方案逻辑设计

物料清单

解决方案物理网络布线

配置
网络配置
下表提供了 ESXi 服务器名称及其网络配置的详细信息。
| ESXi 服务器 | 服务器名称 | IP 和网卡 |
|---|---|---|
| 高速以太网网络 | ||
| ESXi-01 | sl01w01esx11 | none |
| ESXi-02 | sl01w01esx12 | none |
下表提供了虚拟机名称及其网络配置的详细信息。
| VM | 服务器名称 | IP 和网卡 |
|---|---|---|
| 高速以太网网络 | ||
| VM-01 | pvrdma-ns-vm01 | 192.168.11.51 |
| VM-02 | pvrdma-ns-vm02 | 192.168.11.52 |
ESXi 主机配置
前提条件
要设置 SR-IOV 环境,需要满足以下条件:
- 必须在特定服务器的 BIOS 中启用 SR-IOV。每台服务器的虚拟化 BIOS 配置选项不同。有关 BIOS 配置的示例,请参阅 HowTo Set Dell PowerEdge R730 BIOS parameters to support SR-IOV。
- 在 ESXi 服务器上安装 Mellanox Firmware Tools (MFT)。该过程在 How-to: Install NVIDIA Firmware Tools (MFT) on VMware ESXi 6.7/7.0. 中描述。
- 安装程序权限:安装需要在目标机器上具有管理员权限。
检查主机配置
-
启用 SSH Access to ESXi 服务器。
-
以 root 权限登录 ESXi vSphere Command-Line Interface。
-
验证主机是否配备了 NVIDIA 网卡。运行:
ESXi 控制台
~ lspci | grep Mellanox注意: 在此实例中,NVIDIA 网卡使用 vmnic4、5、6 和 7。
-
验证系统上当前是否注册了逻辑 RDMA 设备。运行:
ESXi 控制台
~ esxcli rdma device list
或者,在 vSphere Web Client 中验证它们是否已注册:
-
启动 vSphere Web Client 并连接到 vCenter Server 实例。
-
右键单击 ESXi 服务器(从 清单 列表区域),然后单击 配置 > 网络 > RDMA 适配器。

部署
在开始部署过程之前,我们需要创建一个 vSphere Distributed Switch (vDS)。
创建 vDS
要创建新的 vDS:
-
启动 vSphere Web Client 并连接到 vCenter Server 实例。
-
在 vSphere Web Client 主屏幕上,选择左侧列表中的 vCenter 对象。 将鼠标悬停在清单列表区域中的 分布式交换机 上,然后单击 新建分布式交换机(见下图)以启动新建 vDS 向导:

-
提供新 分布式交换机 的名称,并 选择 vCenter 清单中要存储新 vDS 的 位置(数据中心对象或文件夹)。单击 下一步。

-
选择要创建的 vDS 的 版本。

-
指定 上行链路 端口数为 2,勾选 创建默认端口组 框,并为该组命名。

-
单击 完成。

向 vDS 添加主机
要将 ESXi 主机添加到现有 vDS:
-
启动 vSphere Web Client 并连接到 vCenter Server 实例。
-
导航到 分布式交换机 列表。
-
右键单击对象列表中的新 分布式交换机,然后从 操作 菜单中选择 添加和管理主机。

-
选择 添加主机 按钮,然后单击 下一步。

-
单击 新主机绿色加号 图标以添加 ESXi 主机。这将打开“选择新主机”对话框。
-
从新主机列表中,勾选要 添加 到 vDS 的 每个 ESXi 主机名称 旁边的 框。

完成后单击 确定,然后单击 下一步 继续。

-
在下一个 管理物理适配器 屏幕中,配置 每个 ESXi 主机中的 vmnic4 作为 vDS 的 上行链路 1,然后单击 下一步。


-
在
配置 ESXi 主机以使用 PVRDMA 命名空间
创建并附加 VMkernel 适配器
要创建 VMkernel 适配器并将其附加到 vDS 端口组,请执行以下步骤:
-
在 vSphere Web Client 中,导航到主机。
-
在 Configure 选项卡中,展开 Networking 子标题。
-
转到 VMkernel adapters 部分。
-
单击 Add Networking... 按钮以创建新的 VMkernel 适配器 vmk1。

-
在 Select connection type 屏幕中,选择 VMkernel 网卡,然后单击 NEXT。

-
在下一个 Select target device 屏幕中,单击 Select an existing networking 选项,单击 BROWSE ... 并选择 sl01w01vds01-NS-PG 端口组,然后单击 OK。

-
单击 NEXT 继续。

-
在下一个 Port Properties 屏幕中,选择 vMotion,然后单击 NEXT。

-
为 VMkernel 适配器 vmk1 提供 IPv4 地址 和 子网掩码:

-
单击 NEXT 和 FINISH。

-
对第二个 ESXi 主机重复 创建并附加 VMkernel 适配器 步骤。
为 PVRDMA 命名空间配置 ESXi 主机
要在 vSphere 7.0 中使用 PVRDMA,您的环境必须满足多个配置要求。
要配置 ESXi 主机以使用 PVRDMA,请执行以下步骤。
为 PVRDMA 标记 VMkernel 适配器
要标记 VMkernel 适配器,请选择它并启用 PVRDMA 命名空间通信,步骤如下:
-
在 vSphere Web Client 中,导航 到 主机。
-
在 Configure 选项卡中,展开 System 子标题,然后单击 Advanced System Settings。
-
找到 Net.PVRDMAvmknic 并单击 Edit。

-
输入 要使用的 VMkernel 适配器 的 值(本例中为 vmk1),然后单击 OK。

-
在 Manage VMkernel adapters 和 Migrate VM networking 屏幕中,单击 NEXT 继续。

-
单击 FINISH。

确定。

可选: 您可以使用 ESXi CLI 为在 DVS 上创建的 vmknic 打标签,该 vmknic 将用于 VRDMA 的 TCP 通道,运行以下命令行:
esxcli system settings advanced set -o /Net/PVRDMAVmknic -s vmk1
启用 PVRDMA 的防火墙规则
要在 ESXi 主机的安全配置文件中启用 PVRDMA 的防火墙规则,请执行以下步骤:
-
在 vSphere Web Client 中,导航到主机。
-
在 Configure 选项卡中,展开 System 子标题。
-
转到 Firewall 部分,点击 Edit。

-
滚动到 pvrdma 规则,并勾选旁边的相关复选框:

-
点击 OK 完成。
可选: 您可以使用 ESXi CLI 启用 pvrdma 防火墙规则,运行以下命令行:
esxcli network firewall ruleset set -e true -r pvrdma -
进入维护模式 ESXi 主机。
-
按照 如何:在 VMware ESXi 6.7/7.0 上安装 NVIDIA 固件工具 (MFT) 中的步骤下载并安装 Mellanox 固件工具 (MFT)。
您可以使用 MFT 工具版本 4.14.2 for ESXi 7.0。
-
按照 如何:在 VMware ESXi 6.5 及以上版本上更新 NVIDIA ConnectX-5/6 适配器的固件 和 如何:在 VMware ESXi 6.7/7.0 及以上版本上升级 NVIDIA ConnectX 驱动程序 中的步骤更新固件和驱动程序。
您可以使用固件版本 16.27.2008 和驱动程序版本 4.19.70.1 及以上。
-
打印 NVIDIA 设备的当前状态。
ESXi 控制台
/opt/mellanox/bin/mst status示例输出:

-
在两个 ESXi 上使用 MFT 在 ConnectX 适配器上将 MKEY_BY_NAME 标志设置为 1。
从 Linux 内核 5.9+ 开始,无需将 MKEY_BY_NAME 标志设置为 1,因为内核补丁已添加支持。
ESXi 控制台
/opt/mellanox/bin/mlxconfig -d mt4119_pciconf0 set MKEY_BY_NAME=1设置 MKEY_BY_NAME=1 将导致网卡或任何 VF 的 PCI 直通不可用,因为 Linux 驱动程序无法识别该固件选项。
-
使用模块参数打开 VF。固件和 BIOS 必须配置为 SR-IOV。
ESXi 控制台
esxcli system module parameters set -m nmlx5_core -p "max_vfs=2,2"有关启用 VF 和 SR-IOV 的更多信息,请参阅以下文档:如何:在 VMware ESXi 6.7/7.0 及以上版本上以 SR-IOV 模式配置 NVIDIA ConnectX-5/6 适配器。
-
重启 ESXi 主机。
-
通过在 CLI 中运行以下命令获取已打开的 VF:
ESXi 控制台
esxcli hardware pci pcipassthru list示例:

或者,如果使用 vSphere Web Client:
-
导航到主机。
-
在 Configure 选项卡中,展开 Hardware 子标题。
-
转到 PCI Devices 部分。

-
-
通过在 CLI 中运行以下命令,将已打开的 VF 从用户空间****移动到内核空间。我们需要移动至少两个 VF(vMotion 所需)。
ESXi 控制台
esxcli hardware pci pcipassthru set -d 0000:13:00.2 -e 0 -a esxcli hardware pci pcipassthru set -d 0000:13:00.3 -e 0 -a或者,如果使用 vSphere Web Client:
客户端
-
导航至 主机。
-
在 配置 选项卡中,展开 硬件 子标题。
-
进入 PCI 设备 部分。
-
在右上角 单击 "配置直通",取消选中 VF 以将所有权移交给 VMkernel。

-
退出维护模式 ESXi 主机。
将 PVRDMA 适配器分配给虚拟机
要使虚拟机能够使用 RDMA 交换数据,必须将虚拟机与 PVRDMA 网络适配器关联。操作步骤如下:
-
在 vSphere Web Client 中 定位 虚拟机。
-
选择 数据中心、文件夹、集群、资源池或主机,然后单击 虚拟机 选项卡。
-
单击 虚拟机,然后从列表中 双击 该 虚拟机。
-
关闭 虚拟机 电源。
-
在虚拟机的 摘要 选项卡中,展开 虚拟机硬件 子标题,然后单击 编辑设置。
-
在 虚拟硬件 选项卡中单击 添加新设备,从列表中选择 网络适配器,然后单击 确定。

-
展开 新网络* 部分,将虚拟机连接到分布式端口组。单击 浏览 以选择端口组。

-
选择 PVRDMA 作为 适配器类型。

-
展开 内存 部分,选中 预留所有客户机内存(全部锁定) 复选框。

-
单击 确定 关闭对话框。
-
打开 虚拟机 电源。
为 PVRDMA 配置客户机操作系统
注意: 此步骤仅适用于为 Red Hat/CentOS 7.5 或更高版本的虚拟机分配 PVRDMA 适配器的过程。 在我们的实验室中,Red Hat 安装 包括一个 基础架构服务器,并带有以下 附加组件:调试工具、InfiniBand 支持、开发工具 和 系统管理工具。
要配置客户机操作系统以支持 PVRDMA,需要安装 PVRDMA 驱动程序。安装过程取决于 ESXi 版本、VM 工具和客户机操作系统版本:
| 客户机操作系统:CentOS 7.5 及更高版本 |
|---|
| VM 硬件版本 17 |
| ESXi v7.0.0 |
| 1. 创建 VM 兼容版本为 17 的虚拟机,并安装 CentOS 7.5 或更高版本。 |
- 从 vCenter 在 DVS 端口组上添加 PVRDMA 适配器。
- InfiniBand 软件包是 linux kernel 5.5 RDMA 功能 的一部分。
验证:日志必须包含此行:vmw_pvrdma 0000:13:00.1: device version 20, driver version 20.|
| 客户机操作系统:Ubuntu 18.04 及更高版本 |
|---|
| VM 硬件版本 17 |
| ESXi v7.0.0 |
| 1. 创建 VM 兼容版本为 17 的虚拟机,并安装 Ubuntu 18.04 或更高版本。 |
- 从 vCenter 在 DVS 端口组上添加 PVRDMA 适配器。
- InfiniBand 软件包是 linux kernel 5.5 RDMA 功能 的一部分。
验证:日志必须包含此行:vmw_pvrdma 0000:13:00.1: device version 20, driver version 20.|
验证
在 ESXi 主机上
ESXi 控制台
[root@sl01w01esx11:~] vsish
/> cd /vmkModules/vrdma/pvrdmaDevices/
/vmkModules/vrdma/pvrdmaDevices/> dir
2114737_0/
/vmkModules/vrdma/pvrdmaDevices/> cat /vmkModules/vrdma/pvrdmaDevices/2114737_0/properties
/> cat /vmkModules/vrdma/pvrdmaDevices/2114737_0/properties
PVRDMA Device Properties {
VMM leader ID of VM:2114737
adapter index:0
MAC address:00:50:56:a1:50:19
Physical HCA available:1
Namespace allocated:1
SRQ support enabled:1
MR Key extension enabled:1
Phys handles enabled:1
Prefer RoCE v1 over v2:0
RoCE version:2
Active MTU:1024
注意: 分配的命名空间数量必须为 1。
在虚拟机上
虚拟机控制台
dmesg
...
[176904.512175] vmw_pvrdma 0000:13:00.1: device version 20, driver version 20
[176904.512239] vmw[root@localhost ~]# dmesg_pvrdma 0000:13:00.1: paired device to ens224f0
[176904.512333] vmw_pvrdma 0000:13:00.1: irq 70 for MSI/MSI-X
[176904.512358] vmw_pvrdma 0000:13:00.1: irq 71 for MSI/MSI-X
[176904.512383] vmw_pvrdma 0000:13:00.1: irq 72 for MSI/MSI-X
[176904.582977] vmw_pvrdma 0000:13:00.1: attached to device
日志中必须包含以下行:
vmw_pvrdma 0000:13:00.1: device version 20, driver version 20.
部署验证
要使用 PVRDMA 测试通信,我们将使用 Perftest。这是一组基于 uverbs 编写的测试,旨在用作性能微基准测试。
这些测试可用于硬件或软件调优以及功能测试。
安装并运行基准测试:
-
安装 Perftest:
虚拟机控制台
cd wget https://github.com/linux-rdma/perftest/archive/master.zip unzip master.zip cd perftest-master/ ./autogen.sh ./configure make modprobe ib_core modprobe ib_uverbs modprobe ib_cm modprobe rdma_cm modprobe rdma_ucm警告: InfiniBand 软件包不属于 linux kernel 5.4 的一部分。在这种情况下,您需要在安装 perftest 之前安装以下软件包:
- rdma-core
- libtool
- libibverbs-dev
- librdmacm-dev
- libibumad-dev
- libpci-dev
-
检查网络接口名称:
虚拟机控制台
ifconfig ... ens224f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 -
为网络接口添加静态 IP 配置。 修改 /etc/sysconfig/network-scripts/ifcfg-ens224f0。
添加到文件
DEVICE=ens224f0 BOOTPROTO=none ONBOOT=yes PREFIX=24 IPADDR=192.168.11.51
对第二台虚拟机重复步骤 1-3。
在第一台虚拟机(“服务器”)上,运行以下命令:
VM01 “服务器”控制台
systemctl disable firewall
systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state
./ib_write_bw -x 0 -d vmw_pvrdma0 --report_gbits
在第二台虚拟机(“客户端”)上,运行以下命令:
VM02 “客户端”控制台
./ib_write_bw -x 0 -F 192.168.11.51 -d vmw_pvrdma0 --report_gbits
************************************
* Waiting for client to connect... *
************************************
-------------------------------------------------------------------------------- -------
RDMA_Write BW Test
Dual-port : OFF Device : vmw_pvrdma0
Number of qps : 1 Transport type : IB
Connection type : RC Using SRQ : OFF
CQ Moderation : 100
Mtu : 1024[B]
Link type : Ethernet
GID index : 0
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
-------------------------------------------------------------------------------- -------
local address: LID 0000 QPN 0x0004 PSN 0xfb9486 RKey 0x000005 VAddr 0x007f68c62 a1000
GID: 254:128:00:00:00:00:00:00:02:80:86:255:254:170:101:146
remote address: LID 0000 QPN 0x0002 PSN 0xe72165 RKey 0x000003 VAddr 0x007f2ab4 361000
GID: 254:128:00:00:00:00:00:00:02:80:86:255:254:170:58:174
-------------------------------------------------------------------------------- -------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 5000 90.56 90.39 0.172405
-------------------------------------------------------------------------------- -------
完成!
关于作者
![]() |
Boris KovalevBoris Kovalev 过去几年一直担任解决方案架构师,专注于 NVIDIA Networking/Mellanox 技术,负责复杂的机器学习、大数据和基于 VMware 的高级云研究与设计。此前,Boris 在多家公司担任高级顾问和解决方案架构师超过 20 年,最近在 VMware 工作。他撰写了多份涵盖 VMware、机器学习、Kubernetes 和容器解决方案的参考设计,这些设计可在 NVIDIA 文档网站上获取。 |


