Windows7をOpenSolaris ZFSストレージからiSCSIブートする
自作erだとRAIDカードでハードウェアRAIDしてる人も多いんじゃないかと思いますが、2010年代には流行らない。時代はiSCSIブートでストレージ側でデータ冗長化ですよ。
・・・などとは言い過ぎかもしれませんが、ZFS使えばそれなりのものはできるかもしれません。
前々から[twitter:@satokaz]さんが「ファーム書き換えでEXPI9301CTがiSCSIブートのHBAになる」と言っていたので、できるというのは知ってはいたんですが手を出してませんでした。NIC持ってるのに。。。
しかしお休みだった今日、Twitterで[twitter:@team_eririn]さんがつぶやいているのを見てこのことを思い出し、環境あるし時間あるしやってみるかというわけでチャレンジ。
- HDDの障害には強いがRAIDカードが死んだらデータも死ぬ
- 予備で持っておく必要がある
- それなりの性能出すにはそれなりの金額が必要
- ハードウェアRAIDを名乗るなら3万以上は覚悟する必要がある
自作PCでRAIDカードを使ったことはないのでそれにはそれのメリットあるのかもしれません。業務のサーバではRAIDカードを使ってますけど。
どうせハードウェアにお金かけるなら
NICとストレージにお金かけてみるのもいいのではと思ったり。ストレージはZFSで、RAIDカードなくてもそこそこのCPU(AMDだと低電圧クアッドコアとかでも1万ちょい)とメモリ4Gもあれば十分実用的に使えます。
NICもiSCSIブート可能なギガビットのものが、安いものだと4000円しないであります(intel EXPI9301CT)。
ZFSストレージ側でスナップショットによる世代管理もできるし、差分スナップショットで容量も節約できます。圧縮や重複排除で更に容量節約もできます。オートスナップショットもあります。ああ、素晴らしきかなZFS。
こんだけあればWinodws側でバックアップの設定やソフトは必要なくなるはず。さらにストレージ自体のバックアップもZFSのsend/receiveで簡単にできるのでより保守性を高めることもできます。
というわけでWinodws7でEXPI9301CT使ってiSCSIブートするための手順のメモ
NICのファームウェア書き換え
EXPI9301CTのカードはデフォルトではPXEブート対応になってます。このままではiSCSIブートのHBAとしては使えないので、こいつをiSCSI用のファームに書き換えてしまう。もちろん不要なら元に戻すことも可能です。
書き換え手順
- ダウンロード・センターでIntel® iSCSI Remote Boot Setup Utilityのダウンロード。2010/06時点の最新は15.2。
- exeを展開したフォルダをまるごとDOS起動できるUSBメモリの任意の場所にコピー
- USBメモリでDOS起動
- iscsiutl.exeを以下のコマンドで実行(デフォルトだとIntel15.2\iSCSIUtl\DOS\iscsiutl.exeにある)。コマンド実行後、バックアップの確認と実行確認の後で書き換えが始まります。複数ある場合、すべてのNICをが対象になるので注意。−NICで指定できるらしいけどエラーになります(オプションの組み合わせに問題があるかも)。コマンドの詳細はREADME参照。
iscsiutl -ALL -UP
以上でBoot ROM Typeの部分がiSCSI EnabledになればOK。
設定
書き換え後再起動して
- デバイス認識の部分でCtrl+Dで設定画面へ
- イニシエータとしてのIPアドレスの設定とOpenSolarisのZFSストレージ側のIPアドレスとiSCSIターゲット名の設定
- LUNの設定もあるので、ストレージ側のLUNをセットすれば任意のディスクを選べるはず(LUN 0でしか試してない)
- 起動対象のNICをPRIMARY状態にする
- Pキーでセット。Dキーで無効化。
これできちんと認識できていれば起動時にZFSストレージ側のディスクを認識しにいきます。認識できればただのブロックデバイスになるので、当然OSのインストールが可能です。
感想
試しに入れた感じとしては、ローカルデバイス(SSD)には劣るけど、問題なく使えるのではというところです。
というのもWindows7導入にあたって今回はローカルデバイスで普通にX25-Mを使うつもりなのであくまで検証どまりなので。。。
複数枚のNICがあってストレージ接続専用のNICにしておけば十分使えるのではないでしょうか。個人的にはローカルのSSDの快適さにはまだ勝てないのでメイン環境への投入は見送りますが、10Gのネットワーク環境を導入する段階で再検証してみたいと思います。
PXEブート用のファームウェアに戻す
- ダウンロード・センターでIntel® Boot Agent for Intel® Network Adaptersをダウンロード。
- exeを展開したフォルダをまるごとDOS起動できるUSBメモリの任意の場所にコピー
- USBメモリでDOS起動
- IBAUtil.exeを実行(デフォルトだとPROBOOT\IBAUtil.exe)。コマンド実行後、バックアップの確認と実行確認の後で書き換えが始まります。複数ある場合、すべてのNICをが対象になるので注意。−NICで指定できるらしいけどエラーになります(オプションの組み合わせに問題があるかも)。コマンドの詳細はREADME参照。
iscsiutl -ALL -UP
まとめ
Winodwsに限らずLinuxでも普通にできるので、サーバはすべてiSCSIブートにしてストレージへデータを集約というのもできます。なんで今まで試さなかったんだろうと小一時間(ry
まあ実際にはメリット・デメリットを見極めて試した方がいいですね
WindowsのiSCSIブートについてはハードウェアRAIDの対比から入りましたが、そのあたりは正直両方試したわけではないのであくまでも推測の範囲内なのであしからず。実際にハードウェアRAIDで運用してる人はそれなりのメリットがあるでしょう。ただ素のHDDへのインストールとであればIOPS的にもiSCSIの方が勝ると思います。連続読み書きは負けますが、ランダムのIOPSでは優秀だと思います。
しかしそもそもストレージが動いてないとメインが稼働できないですし、ストレージが飛んだらすべてが死に絶えます。なので一般的にはとても敷居が高いですが、サーバ触れる人には面白いんじゃないでしょうか。
自分的には10GのNIC導入したらZFSストレージに一本化したいところです。スイッチは高いので1対1接続ですけど。
参考リンク