在 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
    2
    sudo 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
    2
    sudo 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 editvirt-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
    2
    virsh 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 驱动程序,确保最佳性能。

参考文献