OpenSolarisでXenServer用のiSCSIストレージを自作する Vol.01

OpenSolarisiSCSIサーバを自作して、XenServerのストレージで使うということで、とりあえず現状問題なく動いている。文字通り動いているだけで、課題はまだまだたくさんあると思う。ただまあこんな感じで動いていますということで、次の段階に向けての整理の意味も含めてハードウェアの構成を書いてみる。
ただ今回は詳細なベンチマークデータはない。OCの設定とかZFSの設定とか細かいとこもスルー。あくまでもハードウェアと構成の紹介。

XenServer

CPU
Corei7 920 D0ステッピング
マザーボード
MSI X58M
メモリ
Corsair TR3X6G1600C9 2Gx3
電源
Corsair CMPSU-520HXJP
CPUクーラー
Scythe Megahalems
グラボ
社内にあったgeforce の型番は不明・・・
ケース
TACENS VICTORIA-EX
NIC
intel EXPI9301CTx2
HDD
社内にあったSeagate 80Gx2でミラー

まずはXenServer。これは前回のエントリでも書いた通り、CPUはNehalemアーキテクチャのCorei7。まあ、これが今回の肝だったので、これをいかにオーバークロックして安定させるかというのが今回の課題。
マザーは

  1. LGA1366ソケット
  2. microATX
  3. 安い

ということでこれにしました。個人ブログでレビューやらみていてよさげだったのと、デスクトップで使うわけでもないので拡張性は求めないし、OCの設定が一通りできるということでチョイス。PCIeでNICを拡張する予定だったので、スロット的にも問題なかった。
電源は正直520Wもいらないんだけど、

  1. 2chの自作電源すれで高評価
  2. 着脱可能ケーブル

というところで決定。
メモリはとりあえずOC考えて

  1. DDR3-1600
  2. 個人的にCorsairとは相性がいい
  3. 値段が手ごろ

というころで決定。
クーラーは2chのクーラースレで発売当初から評価が高く、安定した冷却性があるのはわかっていたから最初からこれで決定。これに12cmファンを追加。
ケースが一番悩んだんだけど、実はこれが一番後悔している。というのも、サイドファンが40cmもあって冷却性はばっちりなんだけど、フィルタがないのでホコリの問題が・・・。今回は冷却性を最重視で構成を考えていて、形が面白いのと安さで決めてしまった。設置しているところが社内のサーバールームで、24時間365日20度ぐらいに保たれていて環境は快適なのでここまで冷却重視でなくてもよかったかなーと思い、これは次回に改良。
これにNICを2枚追加して、ホットスワップ用にOWL-BF90SA(B)を2個設置。お値段11万円ぐらい。ホットスワップケースがなければい万ぐらい下がるかなぁ。

OpenSolaris iSCSIストレージ

本題のiSCSIストレージの構成は以下。

CPU
AthlonⅡX4 630
マザーボード
M4A78 PRO
メモリ
UMAX DCDDR2-2GB-800 計8G
電源
型番不明の在庫電源
CPUクーラー
リテール
ケース
社内にあったATXケース
NIC
intel EXPI9301CTx2
HDD
WD Caviar Black(WD5001AALS)500G x4と社内在庫の80Gx2
ホットスワップケース
3代目楽ラックx2

本題といいつつかなり適当な構成。というのもいろいろ実験用でいじっていたものをそのまま流用したのでこんな感じになってます。金額的には8万ちょっと。ケースと電源もそろえると10万ぐらいいくかも。ホットスワップ用のケースが2万近いのでこれなければもっと抑えられると思う。
オンボのNICは使わずintelNICを使用。他は実験パーツの流用が元なので特にこだわりがあるわけでもなく・・・。

設定とか

今回は仮想化でXenServerを使用することが前提だったので以下の感じ。実稼動前にいろいろ実験はしたが、外部公開用に記録していないのでざっと記述しておく。

CPUクロック
2.66GHz→3.8GHzへOC
ホストOS
XenServer5.5
ゲストOS
Windows XP SP3 x5
負荷テスト
Prime95 12時間+実際の環境を想定した負荷テスト
OpenSolaris
500Gのディスク3枚でraidz2構成なので使用領域は500G。ログデバイスとして1台使用(このあたりちょっと無駄。当初SSDの予定だった)。rpoolのシステム領域は80Gのディスク2枚でミラーリング。今回はZFSのプロパティ(shareiscsi=on)でiSCSIを運用している。COMSTARの存在をこの時点で知らなかったのです。

クロックはCPU電圧を定格電圧に収めて無理しない設定にしている。ちなみにこのクロックで問題のExcelマクロを動作させてみたところ、Core2 Duo E7200 2.53GHzで24分かかる処理が16分ぐらいになった。置き換え元のPentium4のマシンだと40分近くかかっていたので段違いである。

実環境としてOSはWindowsXPを5個動かしている。HTをonにしてそれぞれにVCPUを1個ずつ割り当てているので3CPUあまり(HTだから正確にはCPUではないが)。負荷テストとしてゲストOSを8個起動して同時にマクロを走らせてということも試した。ただ速度的にはやはりゲストOS6つめぐらいから動作速度が格段に落ちていったので今回は5台稼動にとどめた。

エクセルマクロの処理速度的には、ゲストOS1台だけだと生でwindowsを動かす場合と比べてほとんど変わらないというのが感想。Nehalemアーキテクチャの仮想化はオーバーヘッドが少ないというレポートをどこかで見たが、やはりかなり進化していると感じる。5台同時稼動でもマクロの処理時間が23〜4分と、1台で動かすCore2マシンと比べても遜色ない速度が出た。まあ、今回の用途はシングルスレッドの処理速度勝負なので当然といえば当然な気もするが、5台分が1台集約できるんだからコストパフォーマンスは高いなぁと思う。

考察とか次への課題とか

今回の用途ではオンメモリで処理される部分でしかほとんど使われていないので、I/O部分では正直負荷がかかっていない。起動とシャットダウンぐらいである。なので今回のエントリではOpenSolaris(ZFS)を使用したiSCSIストレージとしての評価は微妙である。

というのもZFSiSCSIは小規模環境ではノーマル設定だと非常に遅い。安全性を考慮されての設計になっているので当然なのだが、このままでは普通には使えない。
zfs_nocacheflushを有効にしたり、zil_disableを有効にすると劇的にI/Oパフォーマンスは改善するが、トラブッったときにデータの保証がされない。

ZILデバイスはアップリケーションから同期書き込みが要求が出された場合に、実際にディスクにデータとして書き込まずにトランザクションログとして書き込まれるもので、ここにランダム書き込みに強いSSDを用いることで遅延を最小限にとどめることができる。この設定を無効にすることでこの書き込みがメモリにバッファ?されるため速度が段違いに向上する(無効にしたときに挙動の理解があいまい・・・)。
しかし、システムクラッシュや不意の電源断が発生した場合、通常なら正常起動した後にログデバイスからディスクへの書き込みが続行されるのだが、ZILを無効にしていると「書き込まれたことになっているデータ」が実際にはメモリ上にまだ残っているケースがあり、その場合データは失われてしまう
このあたりは「zpool iostat -v (プール名) 1」でwriteの様子を見ているとわかる。ZILを無効にすると十数秒に1回しか書き込みがない。この書き込みまでの間にシステムがクラッシュするとデータが飛ぶ。

zfs_nocacheflushはよくわからない。これはデフォルトでoffになっていて、有効にすると書き込みのパフォーマンスがアップする。ZILを無効にする方がアップ率は高いが、こちらも書き込みパフォーマンスには効果がある。ただし、これもデータの保証がない
これってライトバックキャッシュのことなのかな?よくわかっていないので知ってる方教えてくださいm(_ _)m。


このあたりのベンチを取っている方がいるので紹介しときます。


[zfs_nocacheflushについて追記:2009/12/25]
この設定はディスクのキャッシュを即座にflushするというデフォルトの設定を無効にするということのようだ。
デフォルトの意味としては、ディスクキャッシュを無効というよりキャッシュを常にディスクに書き出せということらしい。
このフラグを有効にする(nocacheflush=「キャッシュをflushしない」を有効にする)ことでキャッシュに溜め込むことを許容するということになる。

次はSSDだ!

次の第2段階運用ではSSDを使用したストレージ構成を考えていて、ハードウェア構成も決まっている。簡単に紹介、

  • 2.5インチHDD 7200rpm x12
  • X25-M(intel MLC SSD 80G) x4
  • Xeon E5530
  • Supermicroのマザー(NIC4つ搭載+IPMI)
  • 2Uラックマウント

こんな感じ。お値段約60万!(^_^;)パーツ構成をあれこれ考えてたら特注ベアボーンになってしまった。発注はしてあるので納入待ちなんだけど、3週間ぐらいかかるのでまだちょと先になるかなぁ。
ちゃんと用途にあった動作をすればという前提はあるが、iSCSIストレージでは破格の安さだと思うので次はちゃんとベンチデータ取りながらいじくってみよう。納期的に余裕があればだけど・・・。