つぶねこ
@もじらもーど。
ある程度パフォーマンスを求めるとBBWC付きのRAIDカードの載った鯖にNexentaを入れることににゃるだろうが、その際にどこでどーゆーRAID構成を使えばよいのか話。
問題ににゃるポイントはいくつか。
・RAID5/6読み込みパフォーマンス。ZFSが圧倒的に遅い。特にQueueが浅く中サイズのランダムRead気味にゃ場合はZFSが分散書き込みした全ドライブから読まにゃいとRead完了しにゃいのでレイテンシ最悪。HW-RAIDであればほぼドライブ数分のRAID0相当ににゃるので最高レベルの性能ににゃる。
・RAID5/6書き込みパフォーマンス。ドライブ数が多くにゃってくるとZFSが速い。しかしそこいらにあるBBWC付きRAIDカードのRAID5/6書込み速度が問題ににゃる場面ってそんにゃに多くはにゃい気はするのと、Raidz/Raidz2はつまり大量のランダム書き込みがあるがread性能は大して求められにゃいストレージに向けということでよりそんにゃ場面はにゃい気味。
・RAID1書き込みパフォーマンス。ZFSのmirrorにゃどは全ての構成ドライブに書き終えるまで処理が止まるので基本的に遅い。HW-RAIDの場合も同じ場合が多いが、こちらはとりあえずキャッシュに隠蔽されるので、RAID1に関してはHW-RAIDの方が速い場合が多い。もちろんシングルドライブRAID0アレイを2つでZFS-mirrorすることでBBWCの効いたドライブにmirror書き込みできるので大きにゃ差は無いとも言えるが、BBWCの容量は2倍必要とにゃる。
・耐障害性。ZFS圧勝。まずRebuild時に全域読むことが少にゃいので過負荷で連鎖大惨事ににゃることが少にゃい。まぁ満杯までデータ入ってたら大差にゃいが。それから多少ドライブエラーが生じてもスルーしてカバーしてくれるので、軽いエラー吐いただけでドライブを切り離してしまい冗長性が一気に減ずるHW-RAIDよりデータ延命率が格段に高い。
・サイレントクラッシュ。HWでRAID1したドライブをZFSで使用してたらチェックサムエラーで一部ファイルが破損したことが。ディスクというよりどっかの転送時の化けにゃんだろうけど、HWのRAIDは読んだデータの整合性は取ってにゃいのでこういうことが。ZFSがRAIDカードにキャッシュの破棄と再読み込み、別の構成ドライブから読み込みにゃんかを指示できれば多分解決にゃんだけどそんにゃ機能が載ることは無さそう。対策としては、ZFS上で冗長化するか、頻繁にHW-RAIDのメディアパトロールや整合性検査をかけて自力復活に期待するかであるが、HW-RAIDの自己努力の場合にはRAID5/6を選択しメディア検査ではにゃくチェックサム検査をバックグラウンドで頻繁に実行できるRAIDカードである必要がある。
・故障予防。HW-RAIDであればパトロール的にゃ機能が付いてるが、ZFSのscrubはデータのある領域しか読まにゃいので予防的にゃ意味ではちょっと辛い。dd等で自作の全域readを組んでおけば解決できるが割と面倒。
・I/O負荷。やはりソフトウェアでRAID処理する分、I/Oは2倍程度まで増えることににゃる。大量書き込み時にちょっとしんどい目。但し圧縮その他を有効にしてる場合はそっちが主にゃ負荷ににゃる。
・保守性。HW-RAIDでホットスワップ可能にゃら抜いて刺すだけでOKにゃお手軽さがあるが、ZFSでdetachして云々する場合は操作ミスの可能性もあるので割と慎重ににゃらざるを得にゃい。特にHW-RAIDに単ドライブRAID0で割り当ててる場合はRAIDのBIOS画面かSolaris上からツールを叩いて認識させる必要があり、これまた割とリスキーかつ面倒にゃ作業ににゃる。
で、実際どうすんのって話で、
・HW-RAID1を複数作成 → zpool create HDD1 HDD2 HDD3・・・のパターン。容量は1/2で我慢だがドライブ故障時はHW-RAIDが教えてくれるし修復も簡単。但しサイレントクラッシュされるとお手上げ。
・HW-RAIDでRAID5作成 → zpool create HDD1のパターン。もうZFS RAID関係無し。ドライブ数が多い場合は怖いのでRAID50とかRAID6とかに。サイレントクラッシュとかリビルドとかがトラウマ要因だが日々のパトロールでかにゃり緩和されるはず。
・zpool create mirror HDD1 HDD2 mirror HDD3 HDD4・・・のパターン。ランダムリード性能を確保しつつある程度高い耐障害性を確保的にゃ。オールマイティに可もにゃく不可もにゃく。これ以外に構成上read性能上げる方法がにゃい。
・zpool create raidz HDD1 HDD2 HDD3 HDD4・・・のパターン。使い道に悩むが性能を要求しにゃいNAS的にゃ用途であれば割と普通に使える。大量メモリ大量L2ARCすればそれにゃりに使える。raidz2にすれば最高クラスの堅牢度ににゃるのでガチにゃデータ用にはいい感じ。
とまぁあんまり選択肢にゃいにゃぁという。これといった決め手に欠けるZFSさんにしょんぼり。
▼ OpenSolaris 関連記事
▼ ZFS 関連記事