Intel PRO/1000 PT Server Adapterを使ってiSCSIブート(ディスクレス)を行う

2011/01/05 追記:
ファームウェアの更新手順が変更されているので新たに書きましたので
よろしければ一緒にご覧ください。
「Intel Gigabit CT Desktop Adapter などにiSCSI起動ファームを書き込む」
http://shell.peach.ne.jp/aoyama/archives/1335
2011/01/05 追記:

とりあえずWindows Server 2003と2008で確認しました。

WS2003で利用したもの:
Intel PRO/1000 PT Server Adapter 2個
(追記:Server Adapter + Desktop Adapter の構成でもできました)
iscsi-target 20090122パッチ版
Windows Sever 2003 R2 評価版CDROM
Intel iSCSI Remote Boot FLASH ROM Utility
(ISBOOT.EXE 12.4/Firmware 2.1.22)
Intel PRO1000/PT Network Adapter Drivers for 2000/XP/2003
(PRO2KXP_v13_5.exe)
Microsoft iSCSI Initiator 2.08 boot version
(Initiator-2.08-boot-build3825-x86fre.exe)
http://www.microsoft.com/downloads/details.aspx?familyid=12CB3C1A-15D6-4585-B385-BEFD1319F825&displaylang=en

最初にターゲットを用意する。
FreeBSD 7.1 に iscsi-target 20090122パッチ版を使って下記のドライブを作成しました。

/usr/local/etc/iscsi/targets
extent11        /tank/iscsiz/istgt-boot00       0       120GB
target11        rw              extent11                192.168.3.0/24

次にNICのファームを更新する。

ISBOOT.EXEをダウンロードしてくる。
http://downloadcenter.intel.com/Product_Search.aspx?Prod_nm=ISBOOT.EXE
今回は12.4を利用しました。(後ろの方にあります)
展開すると、iSCSIUtl\DOSの中にiSCSIUtl.exeがあるのでこれをFDにコピーします。

DOS上から次のコマンドを実行する。

ISCSIUTL -ALL -FLASHENABLE
ISCSIUTL -ALL -UP

この操作ですべてのアダプタにiSCSIブートファームが書き込まれます。
NICが複数の場合はNICオプションで指定できます。
PXEブートに戻すにはPROBOOT.EXEにあるIBAUtil.exeを使えば戻るらしいけど、
私は戻すつもりはないのでよくわかりません(笑)

再起動すると正しくBIOSがロードされていれば、
iSCSIのセットアップに入るために
「Ctrl+Dを押してください」
と出るので押してセットアップに入る。

Firmware設定例:
Initiator Name
 iqn.2007-09.jp.ne.peach:pluto
Initiator IP
 192.168.3.48
Subnet Mask
 255.255.255.0
Gateway IP
 0.0.0.0

Target Name
 iqn.1994-04.org.netbsd.iscsi-target:target11
Target IP
 192.168.3.36
Target Port
 3260
Boot LUN
 0

設定をして、起動するために設定したアダプタをPRIMARYとして選択する。
マシンを再起動してLUN0にNETBSD HDDが認識される事を確認する。
(表示が短すぎて目視するのが難しいけどw)
Attempting Connect to の次の行に
LUN0 DEVICE NetBSD ほげほげ
が表示されない場合は接続にミスしているので設定を再確認する。

ISBOOT.EXEを展開した場所にある Win32以下のセットアップドライバを予めFDにコピーしておく。
さらにPRO2KXP_v13_5.exeを展開してPRO1000\Win32以下をDVDRWやUSBメモリなどに保存しておく。
Intel(R) Ethernet Drivers and Software for Multiple Operating SystemsだとZIPなので、
その展開のコピーでもいいとおもう。

Windows Server 2003 のCDROMで起動する

F6ほげほげが表示されたらF6キーを連打する。
次のF2ほげほげが出たらもう押さなくてOK
しばらくロードが続いて、ドライバの入力を求める画面になります。
Sキー>エンターキーで続行してFDから
「Intel(R) iSCSI Setup Driver」
を読み込む。できたらエンターキーで続行する。

そのまま進み、正しくFDからロードできればiSCSIのHDDが表示されます。
後は普通にパーティションを作成してインストールを指示します。

CDからHDDにコピーが終わると再起動になるのでFDを抜いておく。
そのまま待てばCDROMのスキャン後にiSCSIのHDDからブートして、
Windowsのセットアップが続行します。
途中でドライバがWindowsロゴに合格していないと言われるけど入れてしまう。
インストールが終了して起動するとiSCSIブートに使っているNICが
デバイスマネージャからSCSIとRAIDコントローラに
「Intel(R) iSCSI Setup Driver」として認識されています。

(自分的メモ)
ここまで出来たらWindowsを終了させてから、
ZFSスナップショットを作成しておく。
# zfs snapshot tank/iscsiz@snap20090122

上記コマンドを打ち込むと数秒で即座に今の状態が保存されます。
これで今後の操作でミスっても再インストールする必要がなくります(笑)

次にIntelのNICドライバを手動でいれます。
デバイスマネージャを開いて、不明デバイスの
イーサネット コントローラになっているものに
上記で作成したPRO2KXPドライバを導入します。
デバイスの詳細を見るとVEN_8086~となっているのがIntel製です。
WindowsUpdateを使わず、「いいえ、今回は接続しません」を選択する。
一覧または特定の場所からインストールするで場所を指定します。
iSCSI起動に使っているNICはインストールに失敗します。
それ以外のデバイスが認識された事を確認します。

オンボードのLANドライバも同様に導入して、
iscsi-targetのマシンにpingできる事を確認してから再起動します。
(複数ポータルの設定方法がわからないのと、SAN1とSAN2のGWをもってないので
 SAN2用NICに仮IPを振ってSAN1と同じとこに接続しといた)

再起動するとインストールできなかったデバイスに黄色のびっくりマークが付いて
ネットワークアダプタのグループに移動します。

この状態で、Microsoft iSCSI Initiator 2.08 boot versionsをインストールします。
セットアップでConfigure iSCSI Network Boot Supportというのが出るので、
チェックを入れて、e1expressというServiceNameの行を選択します。(←重要)
(現在のiscsi-targetパッチではMPIOはチェックしなくていいです)
インストールが終わったら再起動します。

起動したら、iSCSI InitiatorプロパティでTargetsに起動ディスクのみが
認識されてConnectedされていることを確認します。
(この段階ではDiscoveryタブはからっぽでなければいけない)

確認できたらF6ドライバのディスクにあるiSCSIApp.exeを実行します。
「はい」をクリックしてドライバを除去します。
この実行によりF6ドライバの制御下の起動ドライブが
Microsoft iSCSI Initiator boot版に委譲されます。
終わったら再起動します。

デバイスマネージャのSCSIとRAIDコントローラにある
「Intel(R) iSCSI Setup Driver」
が黄色いびっくりマークになっているのを確認します。
確認できたらネットワークアダプタの失敗したものに
ネットワークドライバをインストールします。
今度は成功しますのでIPアドレスを設定します。
※ここで仮に設定したIPも削除しました。

出来たらスタートメニューからコマンドプロンプトを起動して、
iscsibcg /verify /fix
を実行します。
Nic service used for iSCSI Boot is e1express
Driver e1express is not set to boot start
Driver e1express fixed to be be boot start
All iSCSI boot verification checks completed
と起動ドライバに e1express を使うようになって
チェック完了すればiSCSIブートのディスクレスマシンの完成です。
再起動すればiSCSIとネットワークの両方が使えるようになっています。
おつかれさまです。

最後のiscsibcgはドライバ更新とかOSのアップデートを行ったら
再度実行する必要があるそうです。
詳細はISBOOT.EXEのドキュメント(英語)を参照してくださいな。

ポイントはiSCSI Firmから起動した段階ではストレージコントローラ専用に
なっているため通常のネットワークパケットを一切扱えないので、他のNICで
処理するために2ポート必要になるのと、ストレージ用とネットワーク用の
ドライバが起動時に動いていて、MS iSCSI Initiatorから読めるように
予め構成しなければいけない所かな。

※使用上の注意※
同系列のNICを必ず2ポート以上用意すること。(Dual/Quadなら1枚でOK)
iSCSIファームは起動するNICにのみあればいいのでServer+Desktopでもいけるかも?
(追記:iSCSIファームをいれたServer1個とDesktop1個でもできました)
複数セッションを張る必要があるので最大セッション数を極端に小さくしない事。
テスト環境での設定は “-s 32 -C 8″ です
ドライバの交換が終了する前にクラッシュしたりすると起動不能に陥る事があります。
いわゆるディスクチェック完了してからでないと起動できないよ状態。
(しかしドライバは制御から外れてアクセスできない?)
DHCPでは詳しく試していないのでよくわからないです。

WS2008で利用したもの:
Intel PRO/1000 PT Server Adapter 2個 (追記:1個でもできました)
(firmは上記で更新済み)
iscsi-target 20090122パッチ版
Windows Server 2008 DVDメディア

ターゲット設定、Firmware設定は2003と同様です。

2008では最初からPRO/1000PT用ドライバが添付されていますので、
別途用意するものは何もありません。iSCSIも標準対応です。

DVDから起動すればiSCSI HDDが最初から見えます。
あとは普通にインストールすれば問題ありません。
iSCSI起動に使ったNICに設定したIPが最初から指定されています。

テスト環境の構成:

LAN構成
192.168.2.0/24
2001:380:e00:20::/64

SAN用経路1
192.168.3.0/24
2001:3e0:6cf:3::/64

SAN用経路2
192.168.4.0/24
2001:3e0:6cf:4::/64

iscsi-target FreeBSD 7.1/ZFS raidz2
em0:
192.168.4.36, 192.168.4.37
2001:3e0:6cf:4:21f:d0ff:fe16:38bd
em1:
192.168.3.36, 192.168.3.37
2001:3e0:6cf:3:21b:21ff:fe04:f405
em2:
192.168.2.36, 192.168.2.37
2001:380:e00:20:203:47ff:fe72:34f2

テストインストール完了後のマシン構成
ASUS M2A-VM(BIOS 2201) + Athron X2 5200/メモリ2GBx2/HDDなし
LAN:  192.168.2.48 (オンボードRealtek8111かな?)
SAN1: 192.168.3.48 (PCIe  x1: PRO/1000 PT Server Adapter iSCSI boot firm 2.1.22)
SAN2: 192.168.4.48 (PCIe x16: PRO/1000 PT Server Adapter boot disabled)

追記:
追加テストによりわかったので修正しました。
XPSP3は起動はできるけどブート版Initiatorが入らないのでNGです。
VistaSPなしはHDD認識せず撃沈。Server2008が認識している所をみると、boot.wimを更新すればいけるかも。ただ、これを変更するには Windows Automated Installation Kit (AIK)がいるわけで面倒なので当面放置。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>