SMBマルチチャネルの利点は何ですか?
SMBマルチチャネルを使用すると、ファイルサーバーで複数のネットワーク接続を同時に使用できるため、次のことが保証されます。
- スループットの向上 。 クライアントとSMBサーバーは、10GbEなどの1つの高速ネットワークアダプターまたは複数のネットワークアダプターを使用して確立された複数のネットワーク接続を同時に使用しながら、より多くのデータを転送できます。 複数のネットワークアダプターの場合、SMB Multichannelは実際に帯域幅を集約します
- 耐障害性 。 1つ以上の接続が失われても、少なくとも1つの接続が存在し続けるまで、ファイルのコピーなどのネットワーク操作は中断されません。 接続の損失は、ネットワーク環境の問題(ケーブルの破損、スイッチの破損など)、またはネットワークアダプタの問題が原因で発生する可能性があります。 したがって、複数のネットワークアダプターを使用する場合、SMBマルチチャネルは物理ネットワークカードレベルでフォールトトレランスを提供します。 ただし、SMBプロトコルを使用する操作の場合のみ
SMBマルチチャネルが機能するための要件は何ですか?
SMBマルチチャネルが機能するには、2つの要件を満たす必要があります。
- クライアントおよびサーバー上のSMB 3.0。 現在、このバージョンのプロトコルはWindows Server 2012およびWindows 8に実装されています。
- 以下で説明するサポートされている構成のいずれか
サポートされている構成
SMBマルチチャネルが機能するには、クライアントとサーバーが次の構成の少なくとも1つをサポートする必要があります。
- 同じ速度の複数のネットワークアダプター
- 1つ以上のRSSフィードアダプター(Receive Side Scaling)
- NICチーミングを使用してグループ化された2つ以上のネットワークアダプター
- RDMA(リモートダイレクトメモリアクセス)をサポートする1つ以上のネットワークアダプター
そのため、コンピューターにRSSをサポートしないネットワークアダプターが1つある場合、または複数のアダプターが存在するが異なる速度で動作する場合、SMBマルチチャネルは動作しません。 後者の場合、トラフィックは最速のアダプターを介して送信されます。
個々の構成に関するいくつかの説明。
RSSアダプター
SMBマルチチャネルが存在しない場合、SMBクライアントがSMBサーバーにアクセスすると、SMBセッションが開き、その中で1つのTCP / IP接続が確立されます。 この接続でのトラフィック処理は、利用可能なプロセッサコアの1つによって実行されます。 ネットワークアダプターがRSSをサポートしていない場合、原則として、すべてのネットワークトラフィックは原則としてCPU0の1つのコアによって処理されます。 ネットワークアダプタがRSSをサポートしている場合、ネットワークトラフィックの処理は利用可能なプロセッサコアに分散されます。 ただし、SMBマルチチャネルがなければ、単一のセッション内で確立される接続は1つだけであり、RSSはこの特定のセッションを一切支援できません。
SMBマルチチャネルの場合、ネットワークアダプターがRSSをサポートしている場合、SMBプロトコルは1つのセッション内で複数の接続を確立し(デフォルトではRSSインターフェースに対して4)、次にRSSはこれらの接続を介して利用可能なコアにトラフィック処理を分散します。
したがって、単一のRSSアダプターを使用する場合でも、SMBマルチチャネルを使用すると、ネットワーク操作を高速化し、利用可能な帯域幅をより効率的に使用できます。 そして何より、これは10GbEアダプターにも当てはまります。
1つの物理アダプターを備えた構成でSMBマルチチャネルが提供できないのはフォールトトレランスです。1つのアダプターに障害が発生すると、すべての接続が失われることは明らかです。
Windows Server 2012およびWindows 8では、RSSをサポートするアダプターと現在のオプションを判断する最も簡単な方法は、PowerShellコマンドレットを使用することです
Get-NetAdapterRss
NICチーミングと組み合わせた2つ以上のアダプター
NICチーミングの使用は、SMBマルチチャネルの要件ではありません。 たとえば、システムに2つのギガビットアダプタがある場合、SMBマルチチャネルはタイミングなしでそれらを使用できます。 ただし、アダプターをタイミンググループに結合すると、フォールトトレランスに関して追加の利点が得られます。 タイミングを設定しないと、SMB MultichannelはSMBトラフィックに対してのみフォールトトレランスを提供し、NICチーミングとともに、ネットワークトラフィックのフォールトトレランスを受け取ります。 同時に、タイミングの有無にかかわらず、SMB Multichannelは既存のアダプターの利用可能な帯域幅を集約します。
RDMA(リモートダイレクトメモリアクセス)をサポートする1つ以上のネットワークアダプター
RDMAテクノロジーは、ネットワークを介してデータを送信する際の待ち時間を短縮し、プロセッサーの負荷を軽減します。 SMBマルチチャネルは、SMBセッションごとに、RDMAインターフェイスごとに2つの接続を確立します。 複数のRDMAアダプタがある場合、フォールトトレランスも提供されます。 Windows Server 2012でNICチーミングを使用してRDMAインターフェイスをグループに結合する場合、OSはこれらのインターフェイスを非RDMAと見なすことに注意してください。 つまり、タイミングでは、RDMA機能は使用できません。 RSSと同様に、コマンドレットを使用してRDMA対応アダプターとその構成に関する情報を取得できます。
Get-NetAdapterRdma
同じ速度の複数のネットワークアダプター
これは、SMBマルチチャネルが機能する最も簡単な構成オプションです。 アダプタがRSSをサポートしていない場合、インターフェイスごとに1つの接続が確立されます。
次に、SMBマルチチャネルのセットアップについて説明します。
SMBマルチチャネルを構成する
テクノロジーの利点は、自動的に構成されることです。 OSがサポートされている構成のいずれかを検出した場合(上記を参照)、SMBマルチチャネルが自動的に適用されます。 ただし、次を使用してテクノロジーが有効になっていることを確認できます。
またはGet-SmbClientConfiguration
Get-SmbServerConfiguration
さらに
RSSとRDMAが利用可能なインターフェイスで有効になっているかどうかを表示します。Get-SmbClientNetworkInterface
さまざまな種類のネットワークインターフェイス(RSSアダプターに4つ、RDMAアダプターに2つ、通常のNICに1つ)の確立された接続の数については既に述べました。 デフォルトでは、SMB Multichannelは、クライアント/サーバーのペアごとに最大8つの接続を使用します。 また、この数により、ネットワークインターフェイスごとの接続数を制限できます。 たとえば、3つのRSSアダプターがある場合、最初の接続、3番目の接続、3番目の接続で3つの接続が確立されます。
デフォルトのSMBマルチチャネル設定を使用することをお勧めします。 ただし、これらの設定は変更される場合があります。 たとえば、クライアント/サーバーのペアごとの最大接続数は次のように設定されます。
最後に、何らかの理由で、たとえばテストや診断のためにSMBマルチチャネルを無効にする必要がある場合、サーバーとクライアントでそれぞれ次の2つのコマンドを使用してこれを実行できます。
Set-SmbServerConfiguration -EnableMultiChannel $false Set-SmbClientConfiguration -EnableMultiChannel $false
値がtrueのこれらの同じコマンドは、テクノロジーを再びオンにします。
動作中のSMBマルチチャネル
システムにサポートされている構成のいずれかがある場合、SMB Multichannelサーバーで共有フォルダーを開くと、いくつかの接続が確立されます。 これを確認するには
Get-SmbMultichannelConnection
2つのギガビットカードを使用する私の環境では、次のようになります。
さらに、ネットワークリソースからファイルのコピーを開始すると、パフォーマンスモニターで、両方のネットワークアダプターを使用してコピーが実行されることを確認できます。
アダプターの1つをオフにすると、コピー操作が中断されず、すべての負荷が残りのアダプターに転送されることがわかります。
私のWebキャスト (SMB Multichannelデモにスクロール)で、SMB Multichannelがダイナミクスでどのように機能するかを確認し、テクノロジーが無効になっているときのOSの動作を比較できます。
したがって、SMB Multichannelのおかげで、ネットワーク運用の効率と信頼性を高めることができます。 SMBスケールアウト、SMBトランスペアレントフェールオーバーなどのWindows Server 2012の他のテクノロジと組み合わせて(他の投稿で説明します)、通常のOSツールを使用して、異なるレベルで実行中のサービスの高レベルの可用性を提供できます:ディスクサブシステム、クラスターノード、ネットワークインターフェイス。