在RHEL 9.4 上配置 Mellanox ConnectX-6 网卡的 PF 直通 (Passthrough)
在 ARM64 平台的 RHEL 9.4 上配置 Mellanox ConnectX-6 网卡的 PF 直通 (Passthrough)
概述
在虚拟化环境中,Mellanox ConnectX-6 网卡的物理功能 (Physical Function, PF) 直通(Passthrough)配置允许将整个物理网卡直接分配给虚拟机,从而获得接近裸机的网络性能。此配置特别适用于高性能网络需求的虚拟化应用场景。##详细介绍了如何在 ARM64 平台的 RHEL 9.4 上配置 Mellanox ConnectX-6 网卡的 PF 直通。
范围
适用于系统管理员和虚拟化技术人员,帮助他们在 RHEL 9.4 ARM64 系统上配置 Mellanox ConnectX-6 网卡的 PF 直通功能,以优化虚拟化环境中的网络性能。
职责
- 系统管理员:确保系统已正确安装必要的软件包,且系统硬件支持 IOMMU 和 PF 直通功能。
- 操作员:按照##配置 Mellanox ConnectX-6 网卡的 PF 直通,并确保其正确运行。
要求
- 运行 RHEL 9.4 操作系统的 ARM64 服务器。
- 基本的命令行操作知识。
- 具备 sudo 或 root 权限。
- Mellanox ConnectX-6 网卡,并确保服务器固件支持 IOMMU 和直通功能。
过程
1. 系统环境准备
1.1 更新系统软件包列表
- 在进行软件安装前,先确保系统软件包是最新的。
1
sudo dnf update -y
1.2 安装必要的驱动和工具
安装 Mellanox 网卡的驱动程序和相关工具:
1
sudo dnf install -y mlnx-ofed-basic
安装完毕后,重启服务器以加载新安装的驱动:
1
sudo reboot
1.3 检查 IOMMU 支持
确保系统的固件(Firmware/BIOS)设置中已启用 IOMMU 支持。
确认 IOMMU 已在内核启动参数中启用:
1
2sudo grubby --update-kernel=ALL --args="iommu.passthrough=on"
sudo reboot重启后,使用以下命令确认 IOMMU 已启用:
1
dmesg | grep -i iommu
2. 配置 Mellanox ConnectX-6 的 PF 直通
2.1 识别 Mellanox 网卡
- 使用
lspci命令找到 Mellanox ConnectX-6 网卡的 PCI 总线地址:1
lspci | grep Mellanox
- 记下类似
0000:03:00.0的总线地址,这个地址表示网卡的物理功能(PF)。
2.2 解除网卡绑定
- 在将网卡的 PF 直通给虚拟机之前,需要将其从主机系统中解除绑定:
1
echo "0000:03:00.0" | sudo tee /sys/bus/pci/devices/0000:03:00.0/driver/unbind
2.3 绑定到 VFIO 驱动
将网卡的 PF 绑定到 VFIO 驱动以启用直通:
1
2sudo modprobe vfio-pci
echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/vfio-pci/bind确认绑定成功:
1
lspci -nnk -d 15b3: | grep "Kernel driver in use"
输出应显示
vfio-pci作为内核驱动。
3. 配置 PF 直通到虚拟机
3.1 编辑虚拟机配置
- 使用
virsh edit或virt-manager将 PF 设备直接分配给虚拟机。示例 XML 配置:1
2
3
4
5
6<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</hostdev> - 该配置将 Mellanox 网卡的 PF 设备直通给虚拟机。
3.2 启用并启动虚拟机
- 编辑并保存虚拟机配置后,启动虚拟机:
1
virsh start <vm_name>
- 在虚拟机中,使用
ip link show或类似命令验证已分配的 PF 网卡。
4. 维护与管理
4.1 释放 PF 资源
- 如果需要将 PF 资源从虚拟机中释放并返回主机,可以先关闭虚拟机并解除 VFIO 绑定:
1
2virsh shutdown <vm_name>
echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/vfio-pci/unbind
4.2 重新绑定网卡到主机
- 将网卡重新绑定回主机操作系统的 Mellanox 驱动:
1
echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/mlx5_core/bind
4.3 定期更新驱动
- 确保定期更新 Mellanox 驱动程序和固件,以获取最新的功能和性能改进:
1
sudo dnf upgrade -y mlnx-ofed-basic
5. 常见问题与故障排除
5.1 PF 无法绑定到虚拟机
- 检查是否已正确启用 IOMMU 和 VFIO 驱动,确保 PF 已成功解除绑定并分配给虚拟机。
5.2 虚拟机中无法识别 PF 网卡
- 检查虚拟机内的网络配置,确认 PF 是否已正确加载,并安装必要的驱动程序。
5.3 性能问题
- 确保虚拟机配置中启用了 KVM 和 VFIO 驱动程序,确保最佳性能。
参考文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 FrankTest!
评论
