具有 Microsoft Azure 網路適配器的 Linux VM
瞭解如何使用 Microsoft Azure 網路適配器 (MANA) 來改善 Azure 中 Linux 虛擬機 (VM) 的效能和可用性。
如需 Windows 支援,請參閱 具有 Microsoft Azure 網路適配器的 Windows VM。
如需 MANA 的詳細資訊,請參閱 Microsoft Azure 網路適配器概觀。
重要
MANA 目前處於預覽狀態。 如需適合測試版、處於預覽狀態或其他尚未發行正式推出之 Azure 功能的法律條款,請參閱 Microsoft Azure 預覽版補充使用條款。
支援的 Azure Marketplace 映像
來自 Azure Marketplace 的數個 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 Marketplace 中目前的 Linux 散發套件都不是 6.2 或更新版本的核心,RDMA/InfiniBand 和數據平面開發工具包 (DPDK) 都需要此套件。 如果您使用來自 Azure Marketplace 的現有 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
更新核心
MANA 的乙太網路驅動程式包含在核心 5.15 版和更新版本中。 核心 6.2 版包含 Linux 支援 InfiniBand/RDMA 和 DPDK 等功能。 舊版或分支核心版本 (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