2017年2月6日月曜日

FreeNASをiSCSIストレージとして構築し、Windows Server 2012から接続してみた② (Windows Server iSCSIイニシエーター設定編)

前回、FreeNASのiSCSI設定を実施したので、今回はWindows Server 2012にて、iSCSIイニシエーターの設定を実施する。

★前回はこちら↓

Windows Server 2008 R2 Server CoreでActive Directoryのドメインコントローラーを作った話① (Server Core OS初期設定)
https://tech-mmmm.blogspot.jp/2017/02/windows-server-2008-r2-server.html

おまけとして、iSCSIのMPIOのパスの切り替わり時間とその変更方法についても記載する。

構成の確認

今回の構成を再度記載する。iSCSIイニシエーターからはiSCSIターゲットに対して2パスを構成する。

------------------------------
【2パス構成】
・NIC1 -> iSCSI1
・NIC2 -> iSCSI2
------------------------------

今回は同セグメントなので、以下のような4パスも構成可能だが、前回説明した通りパス毎にセグメントは分離して構成したほうがよいので、お勧めはしない。

------------------------------
【4パス構成(不採用)】
・NIC1 -> iSCSI1
・NIC1 -> iSCSI2
・NIC2 -> iSCSI1
・NIC2 -> iSCSI2
------------------------------



iSCSIイニシエーター設定

1. Windows Server 2012にiSCSIイニシエーターとMPIOがインストール済みで、iSCSIのMPIOが有効化されているものとする。有効化の方法は、以下のサイトが詳しいのでここでは割愛。

・Windows コンピューターで、iSCSI Target をマルチパス I/O で使用する方法
https://www.synology.com/ja-jp/knowledgebase/DSM/tutorial/Virtualization/How_to_Use_iSCSI_Targets_on_Windows_Computers_with_Multipath_I_O

2. 「コントロールパネル」→「iSCSI設定」にて「iSCSIイニシエーターのプロパティ」画面を開く

3. 「探索」タブにて以下を設定する。

------------------------------
・192.168.11.145 / 3260
・192.168.11.146 / 3260
------------------------------


登録後「ターゲット」タブに移ると、「非アクティブ」状態にてFreeNASのターゲットが見えているはず。



パス1の設定

1. 「ターゲット」タブにて、1個目のターゲットを選択し、「接続」ボタンを押下する。

2. 「ターゲットへの接続」画面が表示されるので、「複数パスを有効にする」にチェックを入れ、「詳細設定」ボタンを押下する。


3. 「詳細設定」画面では以下を設定する。

------------------------------
・ローカルアダプター:Microsoft iSCSI Initiator
・イニシエーターIP:192.168.11.115
・ターゲットポータルIP:192.168.11.145 / 3260
------------------------------



4. 「OK」→「OK」を押し、「iSCSIイニシエーターのプロパティ」画面に戻る。1個目のターゲットの状態が「接続完了」に変わることを確認する。



パス2の設定

1. 「ターゲット」タブにて、2個目のターゲットを選択し、「接続」ボタンを押下する。

2. 「ターゲットへの接続」画面が表示されるので、「複数パスを有効にする」にチェックを入れ、「詳細設定」ボタンを押下する。

3. 「詳細設定」画面では以下を設定する。

------------------------------
・ローカルアダプター:Microsoft iSCSI Initiator
・イニシエーターIP:192.168.11.118
・ターゲットポータルIP:192.168.11.146 / 3260
------------------------------


4. 「OK」→「OK」を押し、「iSCSIイニシエーターのプロパティ」画面に戻る。2個目のターゲットの状態が「接続完了」に変わることを確認する。



5. 以上でパスの設定は終わり。MPIOの状態は、「デバイス」→「MPIO」にて確認ができる。ディスクに対して以下の通りアクティブなパスが2つあることがわかる。


(おまけ) iSCSIのパスの切り替わり時間と変更方法

ここからはおまけで、iSCSIのMPIOのパス切り替わり時間とその変更方法について記載する。参考にしたURLは以下の通り。

・MPIO Failover Time
https://social.technet.microsoft.com/Forums/office/en-US/dfa3c7ea-3ee4-4a5b-95f1-74be87c7e75a/mpio-failover-time?forum=winservergen

MPIOのパスの切り替わり時間は、レジストリ値で制御されている。「ファイル名を指定して実行」で「regedit」を入力するとレジストリエディタが開くので、以下を選択して、「右クリック」→「検索」を選択して、対象のキーを探す。
※パスは環境によって変わるようなので、検索にて見つける必要がある。

------------------------------
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet」で
「右クリック」→「検索」し、「LinkDownTime」を検索
------------------------------

LinkDownTimeは、デフォルトでは15秒で設定されている。これがMPIOの切り替わり時間で、例えばiSCSIイニシエーターのNICが切断した際には、15秒間切断が継続するとMPIOのフェールオーバーが発生する(ターゲット側のNICを切断した場合も同様)。

私の検証した限りでは、NIC切断からMPIOのフェールオーバーが発生するまで、LUNのアクセスは停止する(NTFSでマウントしているとExplorerが固まる)ので、この切り替わり時間は少なくともOSのI/Oタイムアウトの時間よりも短くする必要がある。

※OSのタイムアウトに関しては以下の過去記事参照
https://tech-mmmm.blogspot.jp/2015/03/ostcp.html

従って、可能な限りパスを早く切り替えたい場合は、このレジストリキーを短くすればよいのだが、頻繁なパス切り替わりを引き起こす可能性もあり、一長一短となる。また、ストレージメーカーからは、このキーの値が明示的に指定されている場合もあるので、確認して設定した方がよい(調べた限りでは、この値を大きくするケースが多い模様)。

MPIOのフェールオーバーの発生は、「イベントビューアー」の「Windowsログ」→「システム」から確認可能で、以下のようなログが記録される。

------------------------------
<NIC1を切断時(LUNへのアクセスが停止)>
・説明:ターゲットへの接続が失われました。イニシエーターは接続を再試行します。
・ソース:iScsiPrt
・イベントID:20
・レベル:エラー
------------------------------

------------------------------
<フェールオーバー時(LUNへのアクセスが回復)>
・説明:\Device\MPIODisk0に対するフェールオーバーが発生しました。
・ソース:mpio
・イベントID:16
・レベル:エラー
------------------------------