SMB マルチチャネルの管理

適用対象: Azure Stack HCI、バージョン 22H2 および 21H2。Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows 10

SMB マルチチャネルは、サーバー メッセージ ブロック (SMB) 3.0 プロトコルの一部です。これにより、ネットワーク パフォーマンスが向上し、ファイル サーバーの可用性が高まります。

SMB マルチチャネルを使用すると、ファイル サーバーは複数のネットワーク接続を同時に使用できます。 また、SMB 3.0 クライアントと SMB 3.0 サーバーの間で複数のパスが利用できる場合は、ネットワーク帯域幅の集約とネットワーク フォールト トレランスが促進されます。 これにより、サーバー アプリケーションは、使用可能なすべてのネットワーク帯域幅を最大限に活用し、ネットワーク障害に対する回復力を高めることができます。

SMB マルチチャネルには、次の機能があります。

  • 高スループット。 ファイル サーバーは、高速ネットワーク アダプターまたは複数のネットワーク アダプターに複数の接続を使用して、追加データを同時に送信できます。

  • ネットワーク フォールト トレランス。 クライアントが同時に複数のネットワーク接続を使用している場合、ネットワーク接続が失われても、クライアントは中断することなく続行できます。

  • 自動構成。 SMB マルチチャネルは、使用可能な複数のネットワーク パスを自動的に検出し、必要に応じて接続を動的に追加します。

SMB マルチチャネルの要件

SMB マルチチャネルは既定で有効になっているため、追加の役割、役割サービス、機能をインストールする必要はありません。 構成が識別されると、SMB クライアントは複数のネットワーク接続を自動的に検出して使用します。 ただし、SMB マルチチャネルには次の要件があります。

  • Azure Stack HCI、Windows Server、または Windows 10 オペレーティング システムを実行する 2 台以上のコンピューター。

  • 次の構成のうち、少なくとも 1 つ:

    • 複数のネットワーク アダプター

    • Receive Side Scaling (RSS) をサポートする 1 つ以上のネットワーク アダプター

    • チーミングされている複数のネットワーク アダプター (「NIC チーミング」を参照)

    • リモート直接メモリ アクセス (RDMA) をサポートする 1 つ以上のネットワーク アダプター

SMB マルチチャネルを構成する

このセクションでは、多数のネットワーク アダプターを使用して SMB マルチチャネルを展開するためのいくつかの構成オプションについて説明します。 これらの構成は、構成例にすぎません。 このトピックに含まれない可能な構成が他にも多数あります。

RSS 対応の単一のネットワーク アダプター

この一般的な構成では、1 つの 10 ギガビット イーサネット (10 GbE) ネットワーク アダプターを使用して SMB クライアントと SMB サーバーを構成します。 SMB が SMB マルチチャネルなしで展開され、1 つの SMB セッションのみが確立されている場合、SMB は単一の TCP/IP 接続を作成します。 CPU コアが 1 つだけの場合、特に多数の小規模な I/O 操作が実行されると、この構成は本質的に輻輳を引き起こします。 そのため、パフォーマンスのボトルネックになる可能性が大きくなります。

現在のほとんどのネットワーク アダプターは、Receive Side Scaling (RSS) と呼ばれる機能を提供しています。これにより、複数の接続を複数の CPU コアに自動的に分散できます。 ただし、単一の接続を使用する場合、RSS は役に立ちません。 RSS 対応のネットワーク アダプターで SMB マルチチャネルを使用する場合、SMB はその特定のセッションに対して複数の TCP/IP 接続を作成します。 この構成を使用すると、多数の小規模な I/O 操作が必要な場合に、1 つの CPU コアでボトルネックが発生する可能性が回避されます。

複数のネットワーク アダプター

この構成では、SMB クライアントと SMB サーバーは複数の 10 GbE ネットワーク アダプターを使用して構成されます。 SMB が SMB マルチチャネルなしで展開され、1 つの SMB セッションのみが確立されている場合、SMB は使用可能なネットワーク アダプターのいずれかを使用して、単一の TCP/IP 接続を作成します。 このシナリオでは、複数のネットワーク アダプターの帯域幅を集約することはできません。たとえば、2 つの 1-GbE ネットワーク アダプターを使用しても、2 ギガビット/秒 (Gbps) を達成することはできません。 また、選択したネットワーク アダプターが切断または無効化された場合に障害が発生する可能性があります。

SMB が SMB マルチチャネルと共に展開されている場合、ネットワーク アダプターが RSS 対応であれば、SMB は 1 つのセッションに対して複数の TCP/IP 接続を作成し、インターフェイスごとに少なくとも 1 つの接続を確立します。 この構成により、SMB は使用可能なネットワーク アダプターの帯域幅を合わせて使用することができ、ネットワーク アダプターに障害が発生しても、SMB クライアントは中断することなく続行できるようになります。

NIC チーミング

Azure Stack HCI と Windows Server では、NIC チーミングと呼ばれる機能を使用して、複数のネットワーク アダプターを単一のネットワーク アダプターに結合する機能がサポートされています。 チームは常にフォールト トレランスを提供しますが、SMB が SMB マルチチャネルなしで展開されると、SMB はチームごとに 1 つの TCP/IP 接続のみを作成します。 この構成にすると、使用される CPU コアの数と、チームの帯域幅の最大使用量の両方に制限が生じます。

SMB が SMB マルチチャネルと共に展開されている場合、SMB は、より適切に CPU コア間のバランスを取り、使用可能な帯域幅をより有効に使用できるように、1 つのセッションに対して複数の TCP/IP 接続を作成します。 NIC チーミングは、SMB マルチチャネルを単独で使用するよりも高速に動作するフェールオーバー機能を引き続き提供します。 また、NIC チーミングは、SMB に依存しない他のワークロードにフェールオーバー機能を提供するため、推奨されます。これらのワークロードは、SMB マルチチャネルのフェールオーバー機能の利点を利用できないためです。

記憶域スペース ダイレクトのトラフィックに専用のネットワーク アダプター セットを使用している場合 (Azure Stack HCI で行われる場合があります)、これらの記憶域ネットワーク アダプターのチーミングは厳密には省略可能であり、大きな利点も欠点もありません。

重要

Windows Server 2012 R2 以前では、ネットワーク アダプターの RDMA 機能を使用する予定がある場合は、NIC チーミングを使用しないでください。 これらのオペレーティング システムでは、チーミングによりネットワーク アダプターの RDMA 機能が無効になるため、RDMA 対応ネットワーク アダプターのチームは常に RDMA 非対応として報告されます。

RDMA 対応の単一または複数のネットワーク アダプター

SMB マルチチャネルがネットワーク アダプターの RDMA 機能を検出することにより、RDMA 経由の SMB ダイレクトと呼ばれる SMB ダイレクト機能が有効になります。 SMB マルチチャネルを使用しない場合、SMB は RDMA 対応ネットワーク アダプターで通常の TCP/IP 接続を使用します。この場合、すべてのネットワーク アダプターにより、新しい RDMA スタックと並んで存在する TCP/IP スタックが提供されます。

SMB が SMB マルチチャネルと共に展開されている場合、SMB はネットワーク アダプターの RDMA 機能を検出して、その 1 つのセッションに対して複数の RDMA 接続を作成し、インターフェイスごとに 2 つの RDMA 接続を確立します。 この構成を使用すると、RDMA 対応ネットワーク アダプターによって提供される高スループット、低遅延、および低 CPU 使用率を SMB で利用できるようになります。 複数の RDMA インターフェイスを使用する場合は、フォールト トレランスも提供されます。

重要

RDMA 接続が作成されると、元のプロトコル ネゴシエーションの TCP/IP 接続は使用されなくなります。 ただし、その接続は、別の RDMA 接続が失敗した場合に備えて維持されます。

SMB マルチチャネル、RDMA 対応ネットワーク アダプター、および NIC チーミングの互換性

次の表は、SMB マルチチャネル、RDMA (SMB ダイレクト)、および NIC チーミングを組み合わせた場合に使用できるさまざまな機能をまとめたものです。

構成 スループット SMB のフォールト トレランス SMB 以外のフォールト トレランス より低い CPU 使用率
単一のネットワーク アダプター (RSS なし) *
複数のネットワーク アダプター (RSS なし) ** *
NIC チーミングを使用した複数のネットワーク アダプター (RSS なし) ** ** *
RSS を使用した単一のネットワーク アダプター *
RSS を使用した複数のネットワーク アダプター ** *
RSS と NIC チーミングを使用した複数のネットワーク アダプター ** ** *
RDMA 対応の単一のネットワーク アダプター * *
RDMA 対応の複数のネットワーク アダプター *** * *
NIC チーミングを使用した、RDMA 対応の複数のネットワーク アダプター *** ** * *

Windows Server 2016 以降を実行している場合は、複数の RDMA 対応ネットワーク アダプターを使用し、NIC チーミングと SMB マルチチャネルを組み合わせることが理想的なソリューションです。 この組み合わせにより、最適なスループットが実現し、SMB やその他のプロトコルを使用するアプリケーションにフォールト トレランスが提供され、CPU への影響を最小限に抑えることができます。

前述のように、Windows Server 2012 R2 以前で RDMA 対応ネットワーク アダプターを使用する場合、NIC チーミングは、ネットワーク アダプターの RDMA 機能を無効にするため、適切な選択肢ではありません。

SMB マルチチャネルを使用しない構成の例

RSS なしで単一のネットワーク アダプターを使用する予定の場合は、複数のネットワーク接続の利点を利用できないため、SMB マルチチャネルは使用されません。 また、さまざまな速度のネットワーク アダプターを使用する予定の場合、SMB マルチチャネルは最速のネットワーク アダプターを自動的に選択します。 これは、同じ種類 (RDMA、RSS、またはそのいずれでもない) で速度が同じネットワーク アダプターが、SMB マルチチャネルによって同時に使用されるためです。 より低速のネットワーク アダプターはアイドル状態です。

SMB マルチチャネルを無効にする

通常、SMB マルチチャネルを無効にする必要はありません。 ただし、テスト環境などで SMB マルチチャネルを無効にする必要がある場合は、次の Windows PowerShell の手順を使用します。

まず、PowerShell セッションを開いて、いずれかのサーバーに接続します。

Enter-PSSession <server-name>

サーバー側で SMB マルチチャネルを無効にするには、次のコマンドレットを使用します。

Set-SmbServerConfiguration -EnableMultiChannel $false

クライアント側で SMB マルチチャネルを無効にするには、次のコマンドレットを使用します。

Set-SmbClientConfiguration -EnableMultiChannel $false

注意

クライアントまたはサーバーのいずれかで SMB マルチチャネルを無効にすると、両方のシステムでそれを使用できなくなります。

SMB マルチチャネルを再度有効にする

SMB マルチチャネルを無効にしていて、再度有効にする場合は、次の手順を使用します。

サーバー側で SMB マルチチャネルを再度有効にするには、次のコマンドレットを使用します。

Set-SmbServerConfiguration -EnableMultiChannel $true

クライアント側で SMB マルチチャネルを再度有効にするには、次のコマンドレットを使用します。

Set-SmbClientConfiguration -EnableMultiChannel $true

注意

もう一度 SMB マルチチャネルの使用を開始するには、クライアントとサーバーの両方でそれを再度有効にする必要があります。

SMB マルチチャネルをテストする

このセクションでは、SMB マルチチャネルをテストするためのいつかのシナリオについて説明します。これには、SMB マルチチャネルを使用した場合と使用しない場合のファイル コピーの比較と、ファイル コピー操作中にネットワーク アダプターの失敗を意図的に発生させることが含まれます。

SMB マルチチャネルを使用した場合と使用しない場合のファイル コピーを比較する

SMB マルチチャネルによって提供されるスループットの向上を測定するには、次のテストを実行します。 各テストの前にサーバーとクライアントの両方を再起動して、それらが同様の条件下で動作するようにします。

  1. 前述の構成のいずれかを使用して、SMB マルチチャネルを構成します。

  2. SMB マルチチャネルを使用して実行時間の長いファイル コピー操作を実行するためにかかる時間を測定します。

  3. SMB マルチチャネルを無効にします。 手順については、「SMB マルチチャネルを無効にする」を参照してください。

  4. SMB マルチチャネルを使用せずに同じファイル コピーを実行するためにかかる時間を測定します。

  5. SMB マルチチャネルを再度有効にします。 手順については、「SMB マルチチャネルを再度有効にする」を参照してください。

  6. 2 つの結果を比較します。

重要

キャッシュのパフォーマンスへの影響を回避するには、まず、使用可能なメモリのサイズを超える大量のデータをコピーします。 次に、最初のコピー操作をウォームアップとして使用して、コピー操作をもう一度実行します。 2 番目のコピー操作のみの時間を測定します。

SMB マルチチャネルを使用したファイル コピー中にいずれかのネットワーク アダプターを失敗させる

SMB マルチチャネルのフェールオーバー機能を確認するには、次のようにします。

  1. 複数ネットワーク アダプター構成で SMB マルチチャネルが機能するようにします。

  2. 実行時間の長いファイル コピー操作を実行します。

  3. ファイル コピー操作の実行中に、いずれかのケーブルを切断するか、いずれかのネットワーク アダプターを無効にして、いずれかのネットワーク パスの障害をシミュレートします。

  4. ファイル コピーが残りのネットワーク アダプターを引き続き使用し、ファイル コピーのエラーが発生することなく動作することを確認します。

切断されたネットワーク接続パスを使用する他のワークロードが存在しないようにしてください。 この予防措置によって、SMB マルチチャネルを利用しないワークロードでエラーが発生する可能性を回避できます。

SMB マルチチャネルが機能することを確認する

SMB マルチチャネルが機能することを確認するには、次の手順を使用します。

  1. ネットワーク アダプター構成が正しいことを確認するには、SMB サーバーと SMB クライアントの両方で Windows PowerShell に次のように入力します。

    Get-NetAdapter
    Get-NetAdapterRSS
    Get-NetAdapterRDMA
    Get-NetAdapterHardwareInfo
    
  2. SMB マルチチャネルが有効になっていることを検証し、SMB でネットワーク アダプターが正しく識別されていることと、ネットワーク アダプターの RSS および RDMA の各機能が正しく識別されていることを確認するには、以下を実行します。

    SMB クライアントで、Windows PowerShell に次のように入力します。

    Get-SmbClientConfiguration | Select EnableMultichannel
    Get-SmbClientNetworkInterface
    

    SMB サーバーで、Windows PowerShell に次のように入力します。

    Get-SmbServerConfiguration | Select EnableMultichannel
    Get-SmbServerNetworkInterface
    
  3. SMB クライアントで、実行時間の長いファイル コピー操作を実行します。これにより、SMB サーバーとの進行中のセッションが作成されます。 コピー操作の実行中に、Windows PowerShell に次のように入力して、正しいバージョンの SMB が接続で使用されていることと、SMB マルチチャネルが機能することを確認します。

    Get-SmbConnection
    Get-SmbMultichannelConnection
    Get-SmbMultichannelConnection -IncludeNotSelected
    

次のステップ

関連情報については、以下もご覧ください。