瞭解如何使用 Microsoft Azure 網路介面卡 (MANA) 在 Azure 改善 Linux 虛擬機器 (VM) 的效能和可用性。
如需 Windows 支援,請參閱 Windows VM 搭配 Microsoft Azure 網路介面卡。
如需 MANA 的詳細資訊,請參閱 Microsoft Azure 網路介面卡概觀。
支援的 Azure Marketplace 映像
許多 Azure Marketplace 的 Linux 映像在 MANA 有內建的乙太網路驅動程式支援:
作業系統支援細節詳見 Azure 加速網路概覽。
附註
新版 MANA 功能正在積極開發中,且 Linux 分銷商與 Microsoft 合作,透過上游變更來更新核心程序。 更新的步調會因分銷商而異。 發行版本和核心程序越新,就越有可能擁有最新更新。
檢查 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
如果你看到其他乙太網路控制器裝置,你就不會使用 MANA。 在 後續步驟 中,你也應該確認 MANA 介面已正確初始化並結合。
核心程序版本檢查
確認您的 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 版包含 InfiniBand/RDMA 和 DPDK 等功能的 Linux 支援。 舊版或分支核心程序版本 (5.15 和 6.1) 需要向後移植的支援。 作業系統支援細節詳見 Azure 加速網路概覽。
若要更新 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
如果與 VF 相關的值為 0 或沒有遞增,表示你沒有在使用虛擬函數。