使用 Azure 网络适配器的 Linux VM

了解如何使用 Azure 网络适配器 (MANA) 来提高 Azure 中 Linux 虚拟机 (VM) 的性能和可用性。

有关 Windows 支持,请参阅使用 Azure 网络适配器的 Windows VM

有关 MANA 的详细信息,请参阅 Azure 网络适配器概述

重要

MANA 目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Azure 预览版的补充使用条款

受支持的 Azure 市场映像

Azure 市场中的多个 Linux 映像对 MANA 中的以太网驱动程序提供内置支持:

  • Ubuntu 20.04 LTS
  • Ubuntu 22.04 LTS
  • Red Hat Enterprise Linux 8.8
  • Red Hat Enterprise Linux 9.2
  • SUSE Linux Enterprise Server 15 SP4
  • Debian 12 "Bookworm"
  • Oracle Linux 9.0

注意

Azure 市场中当前的 Linux 发行版均未采用 RDMA/InfiniBand 和数据平面开发工具包 (DPDK) 所需的 6.2 或更高版本内核。 如果使用来自 Azure 市场的现有 Linux 映像,则需要更新内核。

检查 MANA 支持的状态

由于 MANA 功能集需要主机硬件和 VM 软件组件,因此必须执行以下检查以确保 MANA 在 VM 上正常工作。

Azure 门户检查

确保在至少一个 NIC 上启用了加速网络:

  1. 在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”
  2. 在“网络设置”页中,为“网络接口”选择你的 NIC
  3. 在“NIC 概述”窗格的“概要”下,注意已将“加速网络”设置为“已启用”还是“已禁用”

硬件检查

启用加速网络后,可以将基础 MANA NIC 识别为虚拟机中的 PCI 设备:

$ lspci
7870:00:00.0 Ethernet controller: Microsoft Corporation Device 00ba

内核版本检查

验证你的 VM 是否已安装 MANA 以太网驱动程序:

$ grep /mana*.ko /lib/modules/$(uname -r)/modules.builtin || find /lib/modules/$(uname -r)/kernel -name mana*.ko*

kernel/drivers/net/ethernet/microsoft/mana/mana.ko

更新 内核

内核 5.15 及更高版中包含 MANA 以太网驱动程序。 内核 6.2 版本包含对 InfiniBand/RDMA 和 DPDK 等功能的 Linux 支持。 更低的或分支内核版本(5.15 和 6.1)需要向后移植支持。

若要更新 VM 的 Linux 内核,请查看你的特定发行版的相关文档。

验证流量流经 MANA

为启用了加速网络的 VM 每配置一个虚拟 NIC (vNIC),都将在 VM 中生成两个网络接口。 以下示例演示了单 NIC 配置中的 eth0enP30832p0s0

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:22:48:71:c2:8c brd ff:ff:ff:ff:ff:ff
    alias Network Device
3: enP30832p0s0: <BROADCAST,MULTICAST,CHILD,UP,LOWER_UP> mtu 1500 qdisc mq master eth0 state UP mode DEFAULT group default qlen 1000
    link/ether 00:22:48:71:c2:8c brd ff:ff:ff:ff:ff:ff
    altname enP30832s1296119428

eth0 接口是由网络虚拟服务客户端 (NetVSC) 驱动程序提供服务的主要端口,也是 vNIC 的可路由接口。 关联的 enP* 接口表示 MANA 虚拟函数 (VF),在本例中,它绑定到 eth0 接口。 你可以从可路由的 ethN 接口获取 MANA VF 的数据包和字节计数:

$ ethtool -S eth0 | grep -E "^[ \t]+vf"
     vf_rx_packets: 226418
     vf_rx_bytes: 99557501
     vf_tx_packets: 300422
     vf_tx_bytes: 76231291
     vf_tx_dropped: 0

后续步骤