Windows7をOpenSolaris ZFSストレージからiSCSIブートする

自作erだとRAIDカードでハードウェアRAIDしてる人も多いんじゃないかと思いますが、2010年代には流行らない。時代はiSCSIブートでストレージ側でデータ冗長化ですよ。


・・・などとは言い過ぎかもしれませんが、ZFS使えばそれなりのものはできるかもしれません。
前々から[twitter:@satokaz]さんが「ファーム書き換えでEXPI9301CTがiSCSIブートのHBAになる」と言っていたので、できるというのは知ってはいたんですが手を出してませんでした。NIC持ってるのに。。。
しかしお休みだった今日、Twitterで[twitter:@team_eririn]さんがつぶやいているのを見てこのことを思い出し、環境あるし時間あるしやってみるかというわけでチャレンジ。

  • HDDの障害には強いがRAIDカードが死んだらデータも死ぬ
    • 予備で持っておく必要がある
  • それなりの性能出すにはそれなりの金額が必要

自作PCRAIDカードを使ったことはないのでそれにはそれのメリットあるのかもしれません。業務のサーバではRAIDカードを使ってますけど。

どうせハードウェアにお金かけるなら

NICとストレージにお金かけてみるのもいいのではと思ったり。ストレージはZFSで、RAIDカードなくてもそこそこのCPU(AMDだと低電圧クアッドコアとかでも1万ちょい)とメモリ4Gもあれば十分実用的に使えます。
NICiSCSIブート可能なギガビットのものが、安いものだと4000円しないであります(intel EXPI9301CT)。
ZFSストレージ側でスナップショットによる世代管理もできるし、差分スナップショットで容量も節約できます。圧縮や重複排除で更に容量節約もできます。オートスナップショットもあります。ああ、素晴らしきかなZFS
こんだけあればWinodws側でバックアップの設定やソフトは必要なくなるはず。さらにストレージ自体のバックアップもZFSのsend/receiveで簡単にできるのでより保守性を高めることもできます。

というわけでWinodws7でEXPI9301CT使ってiSCSIブートするための手順のメモ

NICファームウェア書き換え

EXPI9301CTのカードはデフォルトではPXEブート対応になってます。このままではiSCSIブートのHBAとしては使えないので、こいつをiSCSI用のファームに書き換えてしまう。もちろん不要なら元に戻すことも可能です。

書き換え手順
  1. ダウンロード・センターIntel® iSCSI Remote Boot Setup Utilityのダウンロード。2010/06時点の最新は15.​​2。
  2. exeを展開したフォルダをまるごとDOS起動できるUSBメモリの任意の場所にコピー
  3. USBメモリDOS起動
  4. iscsiutl.exeを以下のコマンドで実行(デフォルトだとIntel15.2\iSCSIUtl\DOS\iscsiutl.exeにある)。コマンド実行後、バックアップの確認と実行確認の後で書き換えが始まります。複数ある場合、すべてのNICをが対象になるので注意。−NICで指定できるらしいけどエラーになります(オプションの組み合わせに問題があるかも)。コマンドの詳細はREADME参照。
iscsiutl -ALL -UP

以上でBoot ROM Typeの部分がiSCSI EnabledになればOK。

設定

書き換え後再起動して

  1. バイス認識の部分でCtrl+Dで設定画面へ
  2. イニシエータとしてのIPアドレスの設定とOpenSolarisZFSストレージ側のIPアドレスiSCSIターゲット名の設定
  3. LUNの設定もあるので、ストレージ側のLUNをセットすれば任意のディスクを選べるはず(LUN 0でしか試してない)
  4. 起動対象のNICをPRIMARY状態にする
    • Pキーでセット。Dキーで無効化。

これできちんと認識できていれば起動時にZFSストレージ側のディスクを認識しにいきます。認識できればただのブロックデバイスになるので、当然OSのインストールが可能です。

感想

試しに入れた感じとしては、ローカルデバイス(SSD)には劣るけど、問題なく使えるのではというところです。
というのもWindows7導入にあたって今回はローカルデバイスで普通にX25-Mを使うつもりなのであくまで検証どまりなので。。。
複数枚のNICがあってストレージ接続専用のNICにしておけば十分使えるのではないでしょうか。個人的にはローカルのSSDの快適さにはまだ勝てないのでメイン環境への投入は見送りますが、10Gのネットワーク環境を導入する段階で再検証してみたいと思います。

PXEブート用のファームウェアに戻す

基本的にiSCSIファームウェアへの書き換えと同じ

  1. ダウンロード・センターIntel® Boot Agent for Intel® Network Adaptersをダウンロード。
  2. exeを展開したフォルダをまるごとDOS起動できるUSBメモリの任意の場所にコピー
  3. USBメモリDOS起動
  4. IBAUtil.exeを実行(デフォルトだとPROBOOT\IBAUtil.exe)。コマンド実行後、バックアップの確認と実行確認の後で書き換えが始まります。複数ある場合、すべてのNICをが対象になるので注意。−NICで指定できるらしいけどエラーになります(オプションの組み合わせに問題があるかも)。コマンドの詳細はREADME参照。
iscsiutl -ALL -UP

以上でPXEブート用のファームウェアに戻せます。

注意点

試しにメインマシン(ASUSマザー P5Q-E)で試したらうまくできたけど、別マシン(GIGABYTEマザー P55M-UD4)だとNICの認識の段階で止まったまま進まなくなった。ハードウェアの相性があるかもしれない。
この場合ファームの書き換えのUSBブートまですら行けないのでどうにもならない。。。別のマシンで書き戻すと普通に認識して使えるので謎。試す場合は注意。

まとめ

Winodwsに限らずLinuxでも普通にできるので、サーバはすべてiSCSIブートにしてストレージへデータを集約というのもできます。なんで今まで試さなかったんだろうと小一時間(ry
まあ実際にはメリット・デメリットを見極めて試した方がいいですね

WindowsiSCSIブートについてはハードウェアRAIDの対比から入りましたが、そのあたりは正直両方試したわけではないのであくまでも推測の範囲内なのであしからず。実際にハードウェアRAIDで運用してる人はそれなりのメリットがあるでしょう。ただ素のHDDへのインストールとであればIOPS的にもiSCSIの方が勝ると思います。連続読み書きは負けますが、ランダムのIOPSでは優秀だと思います。
しかしそもそもストレージが動いてないとメインが稼働できないですし、ストレージが飛んだらすべてが死に絶えます。なので一般的にはとても敷居が高いですが、サーバ触れる人には面白いんじゃないでしょうか。

自分的には10GのNIC導入したらZFSストレージに一本化したいところです。スイッチは高いので1対1接続ですけど。


参考リンク

次の展開とか

以前のNAS(というかiSCSIのDAS)関係のエントリに思ったよりアクセスがあったので、その後の展開も書きたいと思ってます。ずっとハードウェアの構成を試行錯誤していて、やっと実作業に乗り出した段階です。
Twitterでも色々助言をもらったりしてます。ハードウェアについては選定にかなり悩みました。そのあたりの顛末も追々エントリとしてまとめていきたいと思っているので、何か気づいた点とかアドバイスとかあればお願いします。