クラスター共有ボリューム (CSV) を利用する環境での SMB Multichannel 設定の考慮事項

こんにちは、Windows プラットフォーム サポートです。
今回は Windows Server 2012 のフェールオーバー クラスター環境で、CSV を利用する場合の SMB Multichannel 設定の考慮事項を紹介いたします。

[事象]
以下のシナリオを想定します。

・Windows Server 2012 のフェールオーバー クラスターを構成します。
・CSV を構成します。
・クラスター ノードで SMB Server 側の Multichannel を無効化します。(Set-SmbServerConfiguration -EnableMultiChannel $false)

このとき、以下のような事象が発生することがあります。

・クラスターの検証で、CSV の構成確認の項目で以下のエラーが記録されます。
「ノード '<ノード名>' からノード '<ノード名>' 上の共有へのサーバー メッセージ ブロック (SMB) プロトコルを使用したアクセスを検証しています。
フェールオーバー クラスタリング用のフォールト トレラント ネットワーク ドライバー (NetFT) の IP アドレスによるサーバー メッセージ ブロック (SMB) 共有のアクセスを検証できませんでした。
接続は、クラスターの共有ボリュームのテスト ユーザー アカウントを使用し、ノード '<ノード名>' からノード '<ノード名>' の共有に対して試行されました。
コンピューターへの接続数が最大値に達しているため、これ以上このリモート コンピューターに接続できません。」

・Hyper-V クラスターを構成している場合に、仮想マシンのライブマイグレーションに失敗します。

[原因]
CSV を利用するクラスター環境で、SMB Server 側の Multichannel を無効化した場合、クラスターノード間の SMB 通信で Session Setup が失敗し続けることがあります。
これにより、CSV へのアクセスが失敗するために本事象が発生します。

[回避策]
CSV を利用するクラスターノードで SMB Multichannel 機能を無効化する場合は、SMB Client 側でのみ無効化し、SMB Server 側の MultiChannel は有効化してください。

SMB Client で Multichannel 無効化する PowerShell コマンド
> Set-SmbClientConfiguration -EnableMultiChannel $false

SMB Server で Multichannel 有効化する PowerShell コマンド
> Set-SmbServerConfiguration -EnableMultiChannel $true

 

補足 1 : 発生 OS について
本事象は Windows Server 2012 でのみ発生し、Windows Server 2012 R2 以降では発生しません。

補足 2 : CSV にアクセスする際に発生する SMB 通信について
クラスター共有ボリューム (CSV) へアクセスする際に CSV のコーディネーターノード (ディスクの所有ノード) と非コーディネーターノードで SMB プロトコルを使用した通信を行います。

非コーディネーターノードがストレージパスの障害で、直接 CSV にアクセスできない場合は、すべての I/O が、この SMB 通信経由でコーディネーターノードに送られ、CSV 上のファイルにアクセスします。(リダイレクトアクセス)
また、すべてのノードが CSV にアクセスできる場合は、非コーディネーターノードは直接 CSV 上のファイルに対してアクセスすることが可能ですが、一部の I/O (NTFS の管理情報 (メタデータ) の更新) においては、SMB 通信により CSV のコーディネーターノードを介して行います。
これはメタデータの操作はファイルシステムの整合性を保つために CSV のコーディネーターノードしか行えないためです。

この SMB 通信は CSV 用のネットワークを使用しますが、Windows Server 2012 以降の環境では SMB Multichannel の機能が既定で有効となるため、複数のネットワークを使用して行います。

補足 3 : Multichannel 無効化時の CSV 通信とメトリックについて
SMB Multichannel の機能を無効化した場合、クラスターはメトリック値の一番低いネットワークを CSV 用のネットワークとして使用します。

このメトリック値は、クラスター ネットワークのプロパティとして管理しているメトリックを指します。(ネットワーク インターフェースのメトリック値とは異なります)

以下に、クラスター ネットワークのメトリック値の確認方法を紹介します。

[クラスター ネットワークのメトリック値確認方法]
管理者権限の PowerShell (64bit) を起動し、以下のコマンドレットを実行します。

> Get-ClusterNetwork | ft Name, Metric

SMB Multichannel を無効化した場合は、メトリック値が一番低いクラスター ネットワークを使用してリダイレクト I/O 処理を行います。

本ブログが少しでも皆様のお役に立てば幸いです。

 

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。