使用 Azure MANA 的 Linux VM

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

有关 Windows 支持,请参阅使用 Azure MANA 的 Windows VM

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

重要

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

支持的市场映像

多个 Azure 市场 Linux 映像内置了对 Azure 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 或更高版本内核。 如果使用现有的市场 Linux 映像,则需要更新内核。

检查 MANA 支持的状态

由于 Azure MANA 的功能集需要主机硬件和 VM 软件组件,因此需要进行一些检查才能确保 MANA 正常工作

Azure 门户检查

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

  1. 在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。
  2. 在“网络设置”页中,选择“网络接口”。
  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

内核更新

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

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

验证流量是否流经 MANA 适配器

为启用了加速网络的 VM 配置的每个 vNIC 都将在 VM 中生成两个网络接口。 例如,eth0 和 enP30832p0s0 单 NIC 配置:

$ 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

后续步骤