使用 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 上启用了加速网络:
- 在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。
- 在“网络设置”页中,为“网络接口”选择你的 NIC。
- 在“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 配置中的 eth0
和 enP30832p0s0
:
$ 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