安価に多くのHDDを使ったRAIDを試してみたいと思ったとき、SATAのHostRAIDカード+ポートマルチプライヤを内蔵したeSATA HDD Boxは扱いやすい候補の一つです。
ここでは玄人志向SATA2RAID-PCIX (Silicon Image SiI3124)とRATOC Systems SA-DK5ES-PE(ポートマルチポートマルチプライヤを内蔵した外付HDD Box)様々なRAIDを組んで比較した結果が記載されています。Intel(R) Matrix Storageの例は「WD Raptorで構成したRAID0の調整例」の方に少しですが記述が有ります。
当サイトのメインPCは、少し多めのHDDを搭載するためにSATAのインターフェイスを拡張しています。このインターフェイスとして、安価で入手しやすいのにPCI-Xに対応して十分な転送能力を確保出来る玄人志向SATA2RAID-PCIX (Silicon Image SiI3124)を使っています。各ポートは、内蔵HDD用に使っているほかに、リムーバブルケースを5つもったRATOC Systems SA-DK5ES-PE(ポートマルチポートマルチプライヤを内蔵した外付HDD Box)を繋げて、バックアップ用HDDを接続したり、面白そうなHDDを実験したりするのに使っています。
普段RAIDを使わず単なる拡張SATAインターフェイスとして動作しています。玄人志向SATA2RAID-PCIXを動作させているワークステーション/サーバ系のチップセット Intel 5000Xを使ったM/B Supermicro X7DAE上のPCI-Xは強力で余裕のあるI/Oバスです。このシステム上に乗せて使っているのもあるのでしょう、非常に良く性能が出ています。
さて、気軽にHDD台数の多いRAIDを組もうと思うと、SATAのHotsRAID+ポートマルチプライヤというのは外せないラインです。その割に、特性について参考になる資料が少ないように思います。よく見かけるのは、RAID構成の仕方の資料で、其の特性を全般的に調べた資料が少ないのです。
特に、RAIDらしいRAIDのインテリジェントRAIDインターフェイスやRAID BOXで常識とされている振る舞いと異なる振る舞いをする可能性があるのですが、其の辺りについて調べた資料はあまりありません。
ちょうど良いことに単体HDDで良い性能が出ている上記組み合わせは、RAIDを構成できます。そこで、玄人志向SATA2RAID-PCIX (Silicon Image SiI3124)+RATOC Systems SA-DK5ES-PEを組み合わせて、安価なRAIDの構成例として特性を測ってみることにしました。
以下の文書では其の測定結果について解説します。
| RAID方式 | おすすめ状況 | 意見 |
|---|---|---|
| RAID0 | ○ | 安全性を犠牲にして潔く性能と容量のメリットを取ると割り切る。この組み合わせにはよく似合う。 |
| RAID1 | △ | RAIDの基本だがこの組み合わせでは性能劣化のデメリットが大きい。同じHostRAIDでもIntel Matrix StorageやMirroring BoxなどRAID1で性能劣化の少ない物を利用した方がよい。 |
| RAID10 | ○ | 通常は贅沢な構成だが、この組み合わせの場合比較的安価ではあるし、高容量のHDDが安価に入手できることもあり、そこそこ性能が出て安全性の確保できるこの組み合わせは選択枝の範疇。 |
| RAID5 | × | 性能劣化が激しく、デメリットがメリットを覆い隠している気がする。RAID5を使うのならRAID5を積極的に支援する機構を持ったRAIDカードを使った方がよい。RAID5はインテリジェントRAIDカードやRAID Boxが似合っていると思う。 |
| 単独(Pass-THRU) | ◎ | RAIDを組まず、高速でCPU負荷の少ない単純なSATAインターフェイスとして多台数の扱うのが一番似合っているように思う。 |
| IF | 玄人志向 SATA2RAID-PCIX (Silicon Image SiI3124) |
|---|---|
| Host Raid ROM | Version 6.4.09 |
| Host RAID Driver | Version 1.5.11.0 |
| バックプレーン | RATOC Systems SA-DK5ES-PE |
| HDD | WD Raptor(WD1500ADFD) |
グラフは、テストサイズ1000Mbyteの物と50Mbyteの物の2つを取り上げています。50Mbyteのテストサイズの場合はキャッシュが効きやすい状態になります。逆にテストサイズが1000Mbyteもあるとキャッシュはあまり効かない状態になります。
RAID1のシーケンシャル読み出しの転送速度の低下が目立ちます。単独HDDの半分以下です。HDDのアクセスランプの点き方を見ていると小さなサイズで2つのHDDを交互にアクセスしているように見えます。この読み出し方をHDD側から見ると飛び飛びにアクセスされることになり、連続読込みの半分が無駄になるのではないかと考えます。
これに比べるとIntel Matrix StorageのRAID1構成の場合は、リクエストサイズに応じてある程度は片方だけのHDDから読み出すようです。このため、単独のHDDの読み書き性能から大幅に低下することはないようです。
RAID1のシーケンシャル読み出しの性能からすると、RAID10はシーケンシャル読み出しは良く性能が出ています。単独HDDの性能に比較してこの程度性能が出ていれば納得の出来きます。
RAID0は、複数のHDDの組み合わせる事により読み書きを並列に行う事が出来ることによる教科書的な性能向上はもとより、キャッシュが増加した効果が良く現れています。WD Raptor(WD1500ADFD)は16Mbyteのキャッシュを持つのでRAID0で4台合わせると64Mbyteの大きなキャッシュサイズを持つことになります。
通常、RAID0の構成を取っても、ランダムアクセスはさほど性能が向上しないというのがよく言われることだと思います。しかし、この組み合わせの場合は、キャッシュの効果らしき性能向上がランダムアクセス性能に現れています。このくらいランダムアクセスの性能が向上すると使用感が大幅に向上すると思います。HDD4台をRAID0に使う効果は大きいので安全性の犠牲と性能のトレイドオフに関して用途に応じて考えるのは十分意味がありそうです。
RAID5は、得意とするはずのシーケンシャル読み出しで性能がさほど伸びずに、書き込み性能低下が目立ってしまいます。やはりRAID5はパリティ計算を積極的に支援する機構のあるインテリジェントRAIDカードやRAID Boxが似合っていると思いました。
これらの方式と比較した場合、単独HDDはなかなか良い価格性能比を保っていると感じます。特にこの組み合わせの場合RAID1の性能低下が目立つ項目があるので余計にそれを感じます。Intel Matrix StorageのRAID1構成のように性能低下が少なければ、単独HDDがここまで善戦した印象がなかったと思います。
台数が増えると速度が上がるという当たり前の結論ではあるのですが、その増え方に注目すると少し別の物が読み取れます。
まず分かるのは転送速度の飽和傾向です。読み出しの方は230Mbyte/s程度、書き込みの方は212Mbyte/s程度で転送速度が飽和しているようです。この差は、転送速度の7%程に達しています。
取り上げている組み合わせの場合、ポートマルチプライヤによりポート数を拡張しています。このため、SATAインターフェイスである玄人志向SATA2RAID-PCIX (Silicon Image SiI3124)とポートマルチプライヤ間の通信が混み合うところになります。この部分はGeneration 2:3.0Gbit/sec(SATA300接続)なので、上り下りおのおの300Mbyte/sの通信量が限界になります。
HDD⇒SiI3124方向には読み出しデータと、結果のステータスが流れます。SiI3124⇒HDD方向にはコマンドと書き込みデータが流れます。結果のステータスよりコマンドの方が大きいので、通信負荷をぎりぎりまでかけると書き込みの場合の方が実質のデータ転送量が減少します。これが読み書きの飽和の差に関わっていそうです。
どちらにしても、もう新しいHDDでなくシーケンシャルアクセス性能が見劣りし始めたWD Raptor(WD1500ADFD)で飽和していますので、より高速な昨今のHDDでは、より少ない台数で飽和することになります。このため最高速度を生かしてRAIDを組むには各HDDとSATAインターフェイスと直結する必要がありそうです。ただ、現在のHDDでも最後のほうのセクタの転送速度はまだまだ遅いので、ポートマルチプライヤでRAID0を組高速化する意味は十分ありそうです。
転送速度のほかに、ランダムアクセスのキャッシュの効き方を見て取ることができます。キャッシュのよく効くテストサイズ50Mbyteの方で大幅に性能が向上しているのがキャッシュの効果とみなせます。読み出しでは、合計のキャッシュサイズが64Mbyteになりテストサイズを超える4台のHDDによるRAID0で、ランダム読み出しの性能が大幅に向上しています。また、512Kbyteのブロックサイズのランダム書き込みでは2台の構成から性能が大幅に向上しています。
これが示すような向上があるのなら、10台や20台というもっと多台数でやってみたい気がしますが、安全性が、1/10や1/20になってしまいます。これは実用ではつらいので、RAID10かRAID5で行うことになります。ここまでやるならば本格的なインテリジェントRAIDインターフェイスを導入したいとも思います。
これらの特性を勘案すると、シーケンシャルアクセスの性能は飽和しているもののランダムアクセスで性能の向上が見られる4台くらいがこの組み合わせではよいバランスかなと思います。
RAID5の組んだHDDの中の1台分のパリティが生成されます。書き込みはこのパリティ生成為のロスが発生しますが、読み出しはパリティ部分を読み飛ばすだけで済むはずです。シーケンシャルアクセスの場合、有効読み出しHDDは4台構成の場合3台相当、3台構成の場合2台相当となります。このため構成台数-1台と同じHDDを使ったRAID0程度のシーケンシャル読み出し性能を期待したいところです。
ところがこの組み合わせの場合、構成台数-2台程度の性能も出ておらず、RAID5が苦手なことがよく分かります。読み出しでこの性能ですので、書き込みはさらに性能低下が激しくパリティ生成のための機構がないデメリットが直に出ています。RAID1の例といい、SiI3124とメーカー製ファームウエアの組み合わせは冗長を持たせるのが苦手のようです。
これらの特性のため、この組み合わせによるRAID5は、読み書き共にメリットが少ないと思います。やはりRAID5は、インテリジェントRAIDカードかRAID-BOXが似合っているように思います。せめてパリティ生成のための支援機構を持ったカードでないとデメリットが大きいように思います。
この組み合わせの場合特に、大容量HDDが手軽に入手できる現在では、あっさりRAID10を選択しても良いように思います。
ストライプサイズが大きい方がランダムアクセスの性能が向上し、小さい方がシーケンシャルアクセス性能が向上すると言われています。
しかし、この組み合わせの場合一番大きなサイズである128Kbyteでほとんどの場合性能が良くなっています。劣っている場合はほんのわずかの差になっています。どうもよく言われているような法則が成り立たないようです。
これは、この頃のHDDが大きめのキャッシュを持っているのが関わっているように思います。ストライプサイズが小さいとキューが有効に使われにくく、全体の性能が低下したり、コマンド発行回数が増えて通信効率が低下してしまうのではないかと思います。
この組み合わせの場合、迷うことなく、128Kbyteのストライプサイズを選択して良いのではないでしょうか。他のHDDとの組み合わせの場合も、WD Raptor(WD1500ADFD)と同等以上の大きなキャッシュを持っていることが多いのでまず128Kbyteのストライプサイズから試して、応用の様子により小さい物を選択するのがよいように思います。
RAID0の時と比べると、変化が少ないようです。128Kbyteのストライプサイズでシーケンシャル読み出し性能が大幅に劣化している他は、変化が乏しいグラフになっています。他の差異としてはHDDのキャッシュの影響が大きいテストサイズ50Mbyteのシーケンシャル読み出しに大きめの差が認められます。
この中でストライプサイズ8kbyteか64Kbyteが性能が高そうです。ただ、HDDのキャッシュの影響が大きいテストサイズ50Mbyteのシーケンシャル読み出しの8Kbyteの性能は、キャッシュが特によく効いた時の特異点のように見えますので、ここは64Kbyteの方が有効のように思います。