Microsoft Azure ネットワーク アダプターを使う Linux VM
Microsoft Azure ネットワーク アダプター (MANA) を使って、Azure での Linux 仮想マシン (VM) のパフォーマンスと可用性を向上させる方法について説明します。
Windows のサポートについては、Windows VM と Microsoft Azure ネットワーク アダプターに関する記事を参照してください。
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
Note
Azure Marketplace の現在の Linux ディストリビューションはいずれも、RDMA/InfiniBand とデータ プレーン開発キット (DPDK) に必須の 6.2 以降のカーネルを搭載していません。 Azure Marketplace の既存の Linux イメージを使用する場合は、カーネルを更新する必要があります。
MANA のサポートの状態を確認する
MANA 機能セットにはホスト ハードウェアと VM ソフトウェア コンポーネントの両方が必要であるため、次のチェックを実行して MANA が VM 上で正常に動作していることを確認する必要があります。
Azure portal のチェック
少なくとも 1 つの NIC で高速ネットワークが有効になっていることを確認します。
- VM の Azure portal ページ上で、左側のメニューから [ネットワーク] を選びます。
- [ネットワーク設定] ページの [ネットワーク インターフェイス] で 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 には、InfiniBand/RDMA や DPDK などの機能に対する Linux のサポートが含まれています。 それより前またはフォークされたカーネル バージョン (5.15 と 6.1) では、バックポートされたサポートが必要です。
VM の Linux カーネルを更新するには、お使いのディストリビューションのドキュメントを参照してください。
トラフィックが MANA を経由していることを確認する
高速ネットワークを有効にして各仮想 NIC (vNIC) を VM 用に構成すると、VM 内のネットワーク インターフェイスは 2 つになります。 次の例は、単一 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
インターフェイスにバインドされています。 MANA VF のパケットとバイト数は、ルーティング可能な ethN
インターフェイスから取得できます。
$ 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