iSCSI ソフトウェア イニシエーターを利用される場合の注意点

こんにちは。Windows プラットフォーム サポートの吉井です。

今日は iSCSI ソフトウェア イニシエーターを利用される場合の注意点についてお話ししたいと思います。

Windows OS では Windows Server 2003 以降 Microsoft iSCSI Software Initiator を利用することで、iSCSI ターゲットへの接続を行うことができます。
Windows Server 2003 では、以下の弊社ダウンロード センターからイニシエーターをダウンロードする必要がありますが、Windows Vista/Windows Server 2008 以降は OS の標準機能として搭載されています。

 Microsoft iSCSI Software Initiator Version 2.08
 https://www.microsoft.com/en-us/download/details.aspx?id=18986

iSCSI Software Initiator を利用すると、既存のネットワーク インフラストラクチャーを利用して iSCSI ストレージへの接続が可能になるため、比較的手軽に SAN 環境を利用でき、多くのお客様にご利用いただいています。

ただし、iSCSI 環境特有の障害お問い合わせも少なからず頂戴しています。
iSCSI Software Initiator では、ハードウェアの HBA を用いた接続と比べ、ハードウェアの行っている処理部分をソフトウェア部分で代行していることになりますため、高パフォーマンスが必要な状況下や、複数のテクノロジーを組み合わせた処理を行っている状況下で、接続が不安定になるという障害報告が内容として多い状況です。

具体的には、弊社フェールオーバー クラスタリング (WSFC) や、Hyper-V、VSS (ボリューム シャドウ コピー) と併用した場合などがあります。フェールオーバー クラスタリングと Hyper-V を組み合わせた環境や、Hyper-V 環境でゲストの稼働中に VSS バックアップを行う場合 (オンライン バックアップ) などはストレージに対して、複雑、かつ、高パフォーマンスが求められる処理が行われますので、ネットワークの問題が顕在化する場合があります。
これらの環境で iSCSI をご利用の際には、事前に負荷テストも含めた十分な検証を実施されることを強くお勧めします。

また、iSCSI の性質上、ストレージ通信のための処理とネットワーク通信の処理が重なっているために処理が複雑になっている点や、ネットワーク環境側の問題の可能性、ネットワーク機器との相性/親和性も考慮する必要があるため、トラブルシュートが非常に難解になる場合が多いです。
ネットワーク パケットを確認するという調査アプローチもありますが、流量が膨大であるため、この解析から根本原因にたどり着けるケースは残念ながら多くない状況です。

そのため、iSCSI の問題の場合、一般的に以下の対応や切り分けのアプローチをお願いしています。
iSCSI の接続が不安定になるなどの問題が発生したときの対処方法として、参考にしていただければと思います。

ご確認項目
=====================
1. ネットワーク経路、ターゲット デバイスの確認について
2. NIC の受信バッファ サイズ、遅延 ACK に関する設定の変更について
3. 最新ドライバーのインストールについて
4. その他最適化機能の無効化について
5. イニシエーターの接続設定について

以下に各項目について説明します。

1. ネットワーク経路、ターゲット デバイスの確認について
-----------------------------------------------------------
まずはターゲット デバイスや、ネットワーク経路に問題 (機器側のエラーや再送の多発など) が発生していないかをご確認ください。

 

2. NIC の受信バッファ サイズ、遅延 ACK に関する設定の変更について
----------------------------------------------------------------------
iSCSI の接続が不安定な状況やパフォーマンスが出ていない場合、以下の公開情報に記載されている事象が発生している可能性があります。
受信バッファ サイズの拡張や、遅延 ACK の無効化をご検討ください。

文書番号: 981482
Windows Server 2008 および Windows Server 2008 R2 環境に、遅延 ACK が有効に設定されたネットワーク環境と iSCSI 接続されたストレージを持つ場合一般的な操作をするとシステム イベント ログに iScsiPrt のエラーが出力される
https://support.microsoft.com/kb/981482

なお、受信バッファ サイズについては基本的にはなるべく大きなサイズに設定することを推奨しています。メモリ消費量が多くなる可能性がありますが、基本的に大きな差異はありません。
遅延 Ack については、無効にすることで上記問題の影響を確実に切り分けることができるメリットがありますが、本来パフォーマンス向上のための機能ですので、無効時には逆にパフォーマンスが悪くなる可能性があります。
ただし、顕著に遅くなるなどの障害は基本的には起きませんので、問題の切り分けには有効です。

 

3. 最新ドライバーのインストールについて
-------------------------------------------------
NIC ドライバーの最新版への更新をご検討ください。最新版ドライバーの入手方法はご提供元のベンダー様へご確認ください。
また、iSCSI 用のドライバー (msiscsi.sys) の最新版 (2013 年 6 月時点) の適用をご検討ください。

// Windows Server 2012 用
文書番号 : 2779768
Windows 8 および Windows Server 2012 の累積的な更新プログラム (2012 年 12 月)
https://support.microsoft.com/kb/2779768

// Windows Server 2008 R2/Windows Server 2008 用
文書番号: 2684681
Iscsicpl.exe プロセスは、ストレージ デバイスは、Windows Vista、Windows Server 2008、Windows 7 は、または Windows Server 2008 R2 を実行しているコンピューターに再接続しようとするとを応答を停止します。
https://support.microsoft.com/kb/2684681

// Windows Server 2003 用
文書番号 : 2277122
Stop error in Windows Server 2003 or in Windows Server 2008 R2 if a computer has some iSCSI disks and the computer is under a heavy stress situation: "0x000000D1"
https://support.microsoft.com/kb/2277122

 

4. その他最適化機能の無効化について
----------------------------------------
SNP (Scalable Networking Pack) や、VMQ など、ネットワーク通信に関する最適化機能を用いている場合、ご利用の NIC デバイス等の親和性の問題により接続が不安定になる場合があります。
以下の参考資料をご参照いただき、無効化などの切り分けをご検討ください。

予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか?
https://blogs.technet.com/b/jpntsblog/archive/2010/03/23/scalable-networking-pack.aspx

Hyper-V 環境では以下もご確認ください。
仮想マシンの通信速度遅延 - VMQ 無効化手順 -
https://blogs.technet.com/b/jpntsblog/archive/2013/04/12/vmq.aspx

また、その他ジャンボ フレームなど、NIC 側の最適化機能がありましたら、一時的に無効化して切り分ける方法もご検討ください。

なお、上記は本来はパフォーマンスを向上させるための機能であり、無効化時には逆にパフォーマンスの問題が生じる可能性がありますのでご注意ください。

 

5. イニシエーターの接続設定について
----------------------------------------
イニシエーターから接続を行う際に使用されるアダプター、IP アドレス等は既定では自動選択される状態になっています。
この選択については、ターゲットへ接続する際に [詳細設定] メニューを開き、これを “既定値” から変更することで明示的に指定することが可能です。
この設定により、意図しない接続ルートが使われることを抑止できますので、この設定もご検討ください。

設定方法 (Windows Server 2008 R2 の例)

iSCSI イニシエーターを起動します。
[接続] を押します。  

 

[詳細設定] を押します。

 “ローカル アダプター”、”イニシエーター IP”、”ターゲット ポータル IP” を 「既定値」から変更し、明示的に設定します。

 *** 

以上、iSCSI ソフトウェア イニシエーターを利用されている環境で問題が発生した場合の手助けになれば幸いです。