你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Microsoft Azure 网络适配器的 Linux VM

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

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

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

受支持的 Azure 市场映像

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

  • Ubuntu 22.04 LTS

  • Ubuntu 24.04 LTS

  • Red Hat Enterprise Linux 8.8

  • Red Hat Enterprise Linux 8.10

  • Red Hat Enterprise Linux 9.2

  • Red Hat Enterprise Linux 9.4

  • Red Hat Enterprise Linux 9.6

  • SUSE Linux Enterprise Server 15 SP4

  • Rocky Linux (CIQ) 8.10 (所有变体)

  • Rocky Linux (CIQ) 9.2+ (所有变体)

  • Debian 12 “Bookworm”

  • Oracle Linux 8.0 UEK R7

  • Oracle Linux 9.0 UEK R7

注意

较新的 MANA 功能正在积极开发中,Linux 分发供应商与 Microsoft 合作,通过上游更改更新其内核。 更新节奏因分发供应商而异。 分发和内核更新的可能性就越大。

检查 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

后续步骤