次の方法で共有


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 で高速ネットワークが有効になっていることを確認します。

  1. VM の Azure portal ページ上で、左側のメニューから [ネットワーク] を選びます。
  2. [ネットワーク設定] ページの [ネットワーク インターフェイス] で NIC を選びます。
  3. 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 構成内の eth0enP30832p0s0 を示しています。

$ 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

次のステップ