Microsoft Azure ネットワーク アダプター (MANA) を使用して、Azure 上にある Linux 仮想マシン (VM) のパフォーマンスと可用性を向上させる方法について説明します。
Windows のサポートについては、「Windows VMs with the Microsoft Azure Network Adapter (Windows VM と Microsoft Azure ネットワーク アダプターの組み合わせ)」を参照してください。
MANA の詳細については、「Microsoft Azure Network Adapter overview (Microsoft Azure ネットワーク アダプターの概要)」を参照してください。
MANAのLinuxサポート
MANAの推奨Linuxディストリビューション一覧と推奨カーネルの最小バージョンについては、Azure Accelerated Networking Overviewをご覧ください。
MANA のサポートの状態を確認する
MANA 機能セットにはホスト ハードウェアと VM ソフトウェア コンポーネントの両方が必要です。そのため、次のチェックを実行して MANA が VM 上で正常に動作していることを確認する必要があります。
Azure portal のチェック
少なくとも 1 枚の NIC で高速ネットワークが有効になっていることを確認します。
- VM の Azure portal ページで、左側のメニューから [ネットワーク] を選択します。
- [ネットワークの設定] ページの [ネットワーク インターフェイス] で該当する NIC を選択します。
- [NIC Overview (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 を経由していることを確認する
高速ネットワークを有効にし、各仮想 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
VF に関連付けられている値が 0 の場合、またはインクリメントされない場合は、仮想関数を使用しません。