Linuxmaniaトップ活用ガイドRAIDの選択

Linuxmania:活用ガイド


■RAIDの選択


RAID を採用するに際に、どのレベルのRAIDを選択すればよいのか、判断基準と各レベルの特徴をご紹介します。

※ RAID (レイド)
 複数の HDD をまとめて 1 台の仮想ディスクとして扱う仕組みです。

RAID の判断基準

各 RAID レベルの特徴

ワンポイント


  耐障害性   高速化大容量化 最低必要HDD数
RAID 0 (ストライピング) ・・・・・ ☆☆☆☆☆ 2 台
RAID 1 (ミラーリング) ☆☆☆☆☆ ・・・・・ 2 台
RAID 5 (パリティ分散) ☆☆・・・ ☆☆☆☆・ 3 台
RAID 6 (複数パリティ分散) ☆☆☆☆・ ☆☆・・・ 4 台
RAID 1+0 ☆☆☆・・ ☆☆☆・・ 4 台
RAID 10 ☆☆☆・・ ☆☆☆・・ 2 台


耐障害性



耐障害性とは読んで字のごとく障害への耐性です。 RAIDでの障害とは大まかに HDD 故障を意味します。 HDD 故障時にもシステムの運用を継続できるかどうかという意味での耐性です。 ただし、1台の HDD が故障する確率は HDD の数を増やすだけ上がります。 故障の確率を下げるという意味ではない点に注意が必要です。
RAID 1 が最も耐障害性が高く、 RAID 6RAID 5 が続きます。

※ HDD 故障の他に、ハードウェアレベルではRAIDコントローラ故障やマザーボードの故障、そしてソフトウェアレベルでは仮想ディスクの故障やファイルシステムの破壊なども考えられます。

RAID 1(4台構成)RAID 6(4台構成)RAID 5(4台構成)
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4
3台故障まで耐える 2台故障まで耐える 1台故障まで耐える


バックアップと RAID の違い



HDD 故障リスクへの対策としてバックアップという方法もあります。 RAID では、障害発生時にも運用を続けることを主目的としています(RAID 0 を除く)。 一方でバックアップは、データ損失を防ぐことを主目的としています。 障害発生時には停止してもよいシステムであれば、 RAID ではなく、バックアップを検討した方がよいかもしれません。 また、RAID を構築している場合にも、マシン全体が災害に遭遇する可能性なども考慮し、重要なデータは別途バックアップすることをお勧めします。 バックアップは、別の HDD やメディアにコピーし、別の場所に保管し、必要ならば別のシステムへ変換するなど、複数の方法をとることによりリスクを軽減できます。


高速化



RAID は複数の HDD をまとめて 1 台の仮想ディスクとして扱う仕組みですが、 単に単体の HDD 搭載台数に応じて容量を増加させるだけでなく、 1つのデータを複数台の HDD に分散して同時に読み書きを行うことで、 単位時間あたりのデータ転送量すなわち速度を向上させることが出来ます。 基本的には、RAID では容量を増加させる分だけ速度が向上します。
RAID 0 のストライピングがこの最たるものです。 RAID 5RAID 6 でも、ある程度は速度が向上します。

※ HDD のシーク待ち時間により逆に性能が低下する場合があります。
※ パリティ計算ではCPUに負荷がかかるため、CPU待ち時間により性能が低下する場合があります。

RAID 0(4台構成)RAID 5(4台構成)RAID 6(4台構成)
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4
     ↑
単位時間あたり最大4データ
読み書き可能(4倍速)
     ↑
単位時間あたり最大3データ
読み書き可能(3倍速)
     ↑
単位時間あたり最大2データ
読み書き可能(2倍速)


大容量化



ボリュームの大容量化は RAID の当初は主目的でしたが、昨今では HDD 単体での容量が大幅に増加したため、容量を気にする状況は希になりました。

RAID 全般として、耐障害性を高めるために冗長化すると、データ領域の容量は小さくなります。
データ領域の容量を多く確保しようとすると、データを分散できる恩恵で高速化が見込めます。


RAID 0



RAID 0 は データを複数台の HDD に分散して同時に読み書きを行うことで高速化大容量化を実現します。 ストライピングとも呼ばれます。 HDD 2台以上で構築でき、基本的には HDD の台数だけ倍に高速になります。 複数台の HDD 全ての容量を、データ保存領域として使用可能です。 データがに分散されているため、 1 台の HDD が故障しただけで全てのデータが一部欠損してしまうので、耐障害性は全くありません。 むしろ HDD 単体の時よりもデータ損失のリスクは高くなります。

※ マザーボードなどでI/Oのバス幅が高速化の限界値になります。
※ シーク待ち時間により逆に性能が低下する場合があります。
  (大量の小さなファイルを扱う場合や、 HDD 台数を増やしすぎた場合などに問題になります。)

正常時(2台構成)1台故障=データ欠損
HDD 1
HDD 2
HDD 1
HDD 2
     ↑
単位時間あたり最大2データ読み書き可能(2倍速)
 
正常時(4台構成)1台故障=データ欠損
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4
     ↑
単位時間あたり最大4データ読み書き可能(4倍速)


RAID 1



RAID 1 は データを複数台の HDD に全く同じ読み書きを行うことで耐障害性を向上します。 ミラーリングとも呼ばれます。 HDD 2 台以上で構築でき、正常な HDD が残り 1 台 となるまでの故障に耐えます。 1 台分の HDD の容量がデータ保存領域として使用可能で残りの HDD は全てミラーとなります。 高速化大容量化は目的としていません。

※ Linux MD(LinuxカーネルによるソフトウェアRAID)では、読み込みリクエストは全ての HDD に行い、シーク待ち時間が最短となるように高速化がされています。
※ 一部の RAID 1 の実装では、さらに読み込み時にのみストライピングのような高速化を実現している物もありますが、Linux MD では実現されていません。
※ Linux MD では、HDD 2 台以上で構築できる RAID 1 で、かつ高速化を目指したものとして RAID 10 を選択することが出来ます。

正常時(2台構成)1台故障(運用可)
HDD 1
HDD 2
HDD 1
HDD 2
 
正常時(3台構成)2台故障(運用可)
HDD 1
HDD 2
HDD 3
HDD 1
HDD 2
HDD 3


RAID 5



RAID 5 は データを複数台の HDD に分散させて高速化大容量化を実現しつつ、 パリティと呼ばれる誤り訂正符号データも記録することで耐障害性を向上します。 HDD 3 台以上で構築でき、1 台 までの故障に耐えます。 HDD を N 台とすると、N - 1 台分の容量をデータ保存領域として使用可能で、 ほぼ N - 1 台分のストライピング相当の高速化大容量化が実現します。 ソフトウェアRAIDでは書き込み時にパリティ計算のためにCPUを使用して計算を待つために速度が低下しますが、最近の CPU を使用していれば大きな問題にはなりません。 HDD が 1 台故障している状態では、 RAID 0 と同程度となり耐障害性は全くなくなるため、障害からの復旧作業中に障害が発生してしまうと、回復不能となります。

※ RAID 5 で HDD が 1 台故障している状態では、パリティからデータを生成するため、読み込み速度も低下します。

正常時(3台)1台故障(運用可)
HDD 13^4
HDD 25^6
HDD 31^2
HDD 13^4
HDD 25^6
HDD 31^2
     ↑
単位時間あたり最大2データ
読み書き可能(2倍速)
        ↑
パリティ[3^4]と現存データ[3]
から欠損データ[4]を復元


RAID 6



RAID 6 は、RAID 5 のパリティを冗長化したもので、RAID 5 よりも耐障害性を向上します。 HDD 4 台以上で構築でき、2 台 までの故障に耐えます。 HDD を N 台とすると、N - 2 台分の容量をデータ保存領域として使用可能で、ほぼ N - 2 台分のストライピング相当の 高速化大容量化が実現します。 ソフトウェアRAIDでは書き込み時にパリティ計算のためにCPUを使用して計算を待つために速度が低下しますが、最近の CPU を使用していれば大きな問題にはなりません。 HDD が 1 台故障している状態でも、まだ RAID 5 と同程度の耐障害性を保持しています。

※ RAID 6 で HDD が 1 台または 2 台故障している状態では、パリティからデータを生成するため、読み込み速度も低下します。

正常時2台故障時(運用可)
HDD 13?45^6
HDD 25?6
HDD 31^2
HDD 41?23^4
HDD 13?45^6
HDD 25?6
HDD 31^2
HDD 41?23^4


RAID 1+0



RAID 1+0 は、 RAID 1耐障害性RAID 0高速化大容量化とを同時に実現します。 一般的には RAID 10 とも呼ばれますが、このページでは下記の RAID 10 と区別して表現します。 HDD 4 台以上で構築でき、最低でも 1 台、最大で半数の故障にまで耐えます。 HDD を N 台とすると、全体の半分である N / 2 台分の容量をデータ保存領域として使用可能で、ほぼ N / 2 台分のストライピング相当の 高速化大容量化が実現されます。 また、RAID 0 の弱点であったシーク時間の問題も RAID 1 の特性で解決されています。

※ 類似で RAID 0+1 も構築可能ですが、耐障害性が劣るため、あまり使用されていません。

正常時2台故障時(運用可)2台故障時(データ欠損)
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4
HDD 1
HDD 2
HDD 3
HDD 4


RAID 10



RAID 10 は、一般的には RAID 1+0 を意味し 4 台以上の HDD が必要ですが、 Linux MD(LinuxカーネルによるソフトウェアRAID)では 2 台以上の HDD で相当のRAIDが実現されていおり、このページでは区別して表現します。 レイアウトに near far offset などの種類があり、デフォルトのレイアウトは near です。 読み込み速度、書き込み速度、耐障害性にそれぞれ違いがあります。 データのミラー(copies)の数はデフォルトで 2 で、最低でも 1 台、最大で半数の故障にまで耐えます。 コピーの数を増やすと、高速化大容量化を犠牲にして耐障害性をさらに向上します。

near(2台 2copies)far(2台 2copies)offset(2台 2copies)
HDD 1
HDD 2
HDD 1......
HDD 2......
HDD 1
HDD 2
RAID 1 に類似
縮退時に減速しにくい
読み出し時は RAID 0 相当に高速
書き込み時、縮退時は低速
読み出し、書き込みとも
near と far の中間
 
near(3台 2copies)far(3台 2copies)offset(3台 2copies)
HDD 1
HDD 2
HDD 3
HDD 1......
HDD 2......
HDD 3......
HDD 1
HDD 2
HDD 3


RAID 4 / RAID 3 / RAID 2



RAID 5 の前身にあたる、RAID 4 / RAID 3 / RAID 2 がありますが、現在では使用されていないので省略します。



参考






[作成日 2011/04/25]