「RAID」の版間の差分
210行目: | 210行目: | ||
:* 2つ以上のドライブが同時に故障すると回復できない。 |
:* 2つ以上のドライブが同時に故障すると回復できない。 |
||
:* ドライブ1台故障時はRAID 0並みに信頼性が低い状態となる。特に構成台数が多い場合、復元作業中にもう1台が故障し、回復不可能となってしまうケースがある(これに対する解がRAID 6)。 |
:* ドライブ1台故障時はRAID 0並みに信頼性が低い状態となる。特に構成台数が多い場合、復元作業中にもう1台が故障し、回復不可能となってしまうケースがある(これに対する解がRAID 6)。 |
||
=== 水平パリティによる分散記録 === |
|||
RAID 5において[[パリティ]]はパリティ用領域に使用されるディスク以外のXORで水平方向のパリティ(PH)をとる。水平パリティはそれぞれのディスクに格納されることで、1台のディスク障害に耐えることができる。ディスク障害時は障害の発生したディスクのXORによる再計算で復元が可能である。 |
|||
データ書き込み時におけるパリティ計算方法は以下の通り。<br /> |
|||
A1/B1/PH1/<br /> |
|||
A2/PH2/C1/<br /> |
|||
PH3/B2/C2/<br /> |
|||
PH1=A1+B1<br /> |
|||
PH2=A2+C1<br /> |
|||
PH3=B2+C2<br /> |
|||
=== 水平パリティによる分散記録 === |
=== 水平パリティによる分散記録 === |
2012年5月2日 (水) 01:00時点における版
この記事の内容の信頼性について検証が求められています。 |
この記事には独自研究が含まれているおそれがあります。 |
RAID(Redundant Arrays of Inexpensive Disks、または Redundant Arrays of Independent Disks、レイド)とは、複数台のハードディスクを組み合わせることで仮想的な1台のハードディスクとして運用し冗長性を向上させる技術[1]。ディスクアレイの代表的な実装形態で、主に信頼性・可用性の向上を目的として用いられるものである。
本記事において、「装置」という語句を用いるが、これはRAIDが取り付けられる機器(サーバ・ワークステーション・パソコンなど)の総称を意味する。
概要
1988年にカリフォルニア大学バークリー校のデイビッド・パターソン, Garth A. Gibson, Randy H. Katzによる論文「A Case for Redundant Arrays of Inexpensive Disks (RAID)」に於いて提唱された[2]。
この論文は、安価で低容量、価格相応の信頼性のハードディスクドライブ (Inexpensive Disk) を用い、大容量で信頼性の高いストレージ(補助記憶装置) をいかに構築すべきかを提案したものである。論文にはハードディスクの構成によって、RAID 1からRAID 5までの5種類を定義している。
また、論文では提案されていないが、ストライピングのみの場合も一般的にはRAIDの一種とみなされ、これは冗長性が確保されないことからRAID 0と呼ばれる[3]。
はじめに定義された6種類のうち、RAID 2はほとんど利用されず、RAID 3、RAID 4もRAID全体の中では少数派である。今日ではRAID 0、RAID 1、RAID 5、およびこれら3方式の組み合わせが用いられている。後にRAID 5を拡張したRAID 6が定義され、RAID 5より耐障害性が必要な場面で利用されている。
導入を検討するユーザにとっては、信頼性 ・ 速度 ・ 予算(ハードディスクの利用効率も含む)の内どれを重視するかを考え、実情にあわせた導入方法を選択することができる。3つを完全に満たすのは難しいが、2つを満たす現実的な方法は充分にある。
RAIDの構成によっては、一部のハードディスクが故障しても仮想ディスクは稼動できることがある。その場合、仮想ディスクを稼働させたまま故障したハードディスクを取り外して代わりのハードディスクに交換することにより装置を停止することなく運用を続けることができる。このように装置が稼働中に接続しなおして、即座に利用できる機能を「ホットスワップ(活線挿抜)」と呼ぶ。ホットスワップ機能を使用するには装置側でハードウェアとして対応していることが前提となるため、サーバ用途など24時間連続稼働が求められる装置ではホットスワップが実質的に標準装備となっている。
RAIDは、大容量データの高速処理や耐障害性の向上を必須要件とする大規模な業務用サーバやワークステーション、特定目的に製造されたコンピュータ機器等に用いられていたが、近年、小規模サーバやパソコンにも普及しつつある。
RAIDが一般ユーザに普及してきた要因
- デジタルデータの重要性が高まっているため
- HDD(ハードディスクドライブ)が大容量化し、一般ユーザにとっても故障時に失われるデータ量を無視できなくなったため
- HDDやRAID関連製品も低価格化、RAID機能のチップセットへの内蔵(HDDさえあれば追加投資無しでRAIDが利用できる)が進んでいるため
RAIDは複数のHDDを用いて、仮想ディスクの故障する可能性を低減させる技術である。そのため、ファイルの誤消去など人為的なもの、コンピュータウイルスによるファイルの破壊、ファイルシステムの不整合など、ソフトウェア的な障害には対応できない。またHDDが同時期に複数故障する、リビルド時に他のHDDが障害を起こす等、単体のHDDに比べれば非常に低いが仮想ディスクも故障の可能性を持つ。
一方でバックアップは、データを静的な状態で、一定期間、複数世代、保存するものであり、RAIDとは役割が異なる。データはRAIDとバックアップの両者を組みあわせて運用することにより、サービスの継続性を保証しつつ、高い安全性を持って保全することができる。
RAIDの方式
RAIDを実装する方法としては、ハードウェアで実現する方法(ハードウェア方式)とソフトウェアで実現する方法(ソフトウェア方式)がある。この2方式は明確に分類できるものではなく、中間的な方式がいくつか存在する。
ハードウェア方式
ハードウェア方式は、RAIDコントローラカードを使用するものとディスクアレイユニットを用いる2方式が存在する。
RAIDコントローラカード
この方式は、RAIDコントローラと呼ばれるカードを装置に取り付け、パリティ演算やディスクの管理などを任せるものである。一部のマザーボードにはRAIDコントローラをあらかじめ実装している製品がある。
純粋なハードウェア方式では、ホストが僅かな指示を送るだけでRAIDコントローラが具体的な処理を全て行うため、CPUの負荷が低減される。しかし、コントローラ毎に制御方法が異なるため、OS側で各RAIDコントローラカードへの対応が必要であり、専用のデバイスドライバが必要となる。
一方、RAIDコントローラカードの中には、RAID機能の大部分をソフトウェアで実現しているものもある。この場合、OS起動前にRAID機能を使用可能であるがCPUの負荷はソフトウェア方式と大差ない。このため、ソフトウェア方式に分類される。
ディスクアレイユニット
コンピュータやOS側からは単なるSCSIやファイバーチャネルのドライブとして見えるため、特別なドライバが必要なく、CPUへの負荷が全くない。更に、ホットスワップやホットスペアはもとよりオートリカバリ機能を備えているため、運用コストをも低減することが出来る。ディスクアレイユニット内のハードディスクが故障した場合は、シリアルポートやイーサネットを通じて状態を監視ソフトに通知する機能が備わっている。また、ディスクアレイユニットの中にはデファレンシャルSCSIやファイバーチャネルを使い、2台のサーバで1台のディスクアレイユニットを共有出来るものもある。複数台のディスクアレイユニットを組み合わせて専用の制御用サーバがセットになったものもある。
ディスクアレイユニットを接続したい装置に必要な外部接続インタフェースがすでにあれば装置の筐体を開けることもなく、ケーブルをつなぐだけで使えるようになる。
ソフトウェア方式
純粋なソフトウェア方式は、OS自身が普通のドライブ コントローラ (IDE、SCSI、FC など) を通して複数台のディスクを管理する。この方式はハードウェア方式と比較し、CPUへの負荷が高いが、特別なハードウェアを購入する必要がないという利点がある。
上記の純粋なソフトウェア方式以外のソフトウェアRAIDの実現には、ファイルシステム・単体ソフトウェア・チップセット・増設RAIDボードなど複数の方式が存在する。
Windowsは、NTFSファイルシステムにおいてRAID機能をサポートしている。Linuxは、カーネル(2.4系以降)にてRAID0/1/4/5/6をサポートしている、。FreeBSDは、gmirrorというソフトウェアにてサポートしている。ファイルシステムのZFSもNTFS同様に自身でRAID機能をもち、RAID5またはRAID6相当の機能としてRAID-ZまたはRAID-Z2が実装されており、ZFS自身の機能もあいまってUSBメモリを何本もUSBポートに挿してRAID化してしまうという離れ業さえ容易である。インテルのチップセットでは、マトリックス・ストレージ・マネージャー機能によりRAID機能をサポートしている。Adaptecの低価格RAIDボードでは、HostRAIDによりソフトウェアRAIDを行っている。
近年、サーバ向けチップセットだけでなくメインストリーム向けのチップセットでもRAIDコントローラ機能(0/1/0+1/5など)を集積したものが広く普及しつつある。インテルのチップセットでは、マトリックス・ストレージ・マネージャー機能によりRAID機能をサポートしている。基本的な構造はMUX(マルチプレクサ)/DEMUX(デマルチプレクサ)で構成されており、CPUが発行したディスクI/O操作を複数のハードディスクへのディスクI/Oに分散・またディスクからの読み出しの多重化を行う(パリティ演算機能を持つものと持たないものがある)。信頼性はもとより、ディスクI/O速度を高速化する総合アクセラレータ的要素が強い。このため、ソフトウェア方式に分類される場合が多い。
電源問題
ハードディスクの必要台数が増えるため、特にRAIDコントローラカードを用いて装置内部にハードディスクを取り付けている場合、電源がハードディスク台数分の負担に耐えられるか注意すべきである。
ハードディスクが最も電力を必要とするのは起動時であるため、スタッガードスピンアップ(各ディスクに時間差を置いて起動する)機能を搭載しているRAIDコントローラも多い。
RAIDレベル
RAID 0からRAID 6まで7種類のうち、実際に利用されるのはRAID 0、RAID 1、RAID 5、RAID 6で、RAIDコントローラやソフトウェアによって使用できるレベルが限定されている場合が多い。
各RAIDレベルを組み合わせて信頼性と速度を両立させることができる。
サーバ用途としては、データの保全性を重視するためRAID 1またはRAID 5が主に利用されている。サーバ台数の限られた環境で、一台のサーバにかかる負担が高い場合はこれらにRAID 0を組み込んで高速化を狙うケースもある。(もちろんサーバ自体を増設して、一台あたりの負担を軽減することも検討すべきであり、負荷の度合い・設置場所の都合・予算などを多角的に検討する必要がある。単にRAID 0をかぶせて高速化することだけに過度の期待を寄せるべきではない) RAIDの方式によらず、サーバ用途の場合はトラブル発生時に速やかなハードディスク交換を実施できる態勢を採るのが重要であり、ホットスペアやホットスワップ対応の製品を用いるのが望ましい。
また、ある種のアプリケーションは、制御情報はRAID 1またはRAID 5のファイルシステムに保存し、マルチメディアデータはRAID 0に保存するとともにテープや光メディアにバックアップしている。
RAID 0: 耐故障性の無いディスクアレイ (ストライピング)
RAID 0は複数台のハードディスクに、データを分散して読み書きし高速化したものである。これをストライピングと呼ぶ。冗長性がなく耐障害性もないため、RAIDには含まれないとされ、RAID 0と呼ばれる。 RAID 0には最低2ドライブが必要である。
1台のドライブが故障しただけでアレイ内の全データが失われてしまうため、故障率は単体ドライブに比べ高い。例えば、ある条件で一定期間使用した場合におけるドライブの故障率が1%だったとした場合、1台ならば故障率は1%だが、2台でRAID 0を構成した場合は約2%(1-0.99*0.99=0.0199)となり故障率は約2倍に上昇する。
単独のRAID 0では速度は向上するものの信頼性(対故障性)が低下することから、後述のRAID 1やRAID 5などを速度の向上を図る目的でストライピング化した形で用いられることも多い。
- 長所
-
- ドライブ数が増えれば増えるほどシーケンシャルアクセス速度が上がる。
- 短所
-
- 冗長性が全くない。
- ドライブ数が増えれば増えるほど故障率が上がる。
- 性能を100%引き出すには、I/O性能の向上に見合った帯域を持ったバスアーキテクチャが必要となる。
- ランダムアクセス速度はあまり向上しないか、ドライブ数が増えれば増えるほどシーク待ちの増加によってむしろ低下する。SSDなどシーク時間が圧倒的に短いドライブでは問題ない。
- RAID 0の容量は、構成ドライブ中の最小容量×ドライブ数となり、余った部分は利用できない。
RAID 1: 二重化 (ミラーリング)
RAID 1は複数台のハードディスクに、同時に同じ内容を書き込む。これをミラーリングと呼ぶ。 RAID 1は最もシンプルなRAIDであり、耐障害性の高いRAIDである。 また、RAIDの最大の弱点であるRAIDコントローラの故障にも対応しやすい。 RAID 1には最低2ドライブが必要である。
一台が故障した際に、もう一方も同時に故障する可能性は低く、システムは稼動し続けることが出来る。
例えば、ある条件で一定期間使用した場合におけるドライブの故障率が1%だったとした場合、1台ならば故障率は1%だが、2台でRAID 1を構成した場合は約0.01%(0.01*0.01=0.0001)と故障率は1/100となり、耐障害性が上がる。
ただし、複数台に同じデータを持っているので、扱えるデータ容量としてはアレイを構成するハードディスク容量の半分以下となる。RAID 1ではハードディスク台数が増えれば増えるほどハードディスクの利用効率が悪くなる。ハードディスクの利用効率を重要視するならばRAID 5の方がよい。
また、RAID 1をRAIDコントローラひとつで構成した場合、そのRAIDコントローラが故障してしまうと、ハードディスクが健在であってもドライブのアクセスが不能となる。特に信頼性を重視する場合には、ハードディスクひとつにRAIDコントローラひとつを割り当てて使用する。
本来RAID 1の読み出しは、一つのドライブのみにアクセスし、もう片方は、完全なバックアップドライブである。これを双方から読み出すようアルゴリズムを拡張することで、理論上、単体ディスクの2倍の速度で読み出しを行える。
初期のネットワークOSであるNetware 2.x、3.xでは、RAID 1であっても積極的に書き込み・読み出し速度向上を行うアルゴリズムを取り入れており、コントローラが複数個ある場合には一方のディスクに書き込みながら他方のディスクから読み込みを行うなどの負荷分散を積極的に行っていた。従って、複数のディスク間で記録されているデータに不一致が発生する時間があり、ディスクの同期化を完了させてから終了する必要があった。
しかし、常に性能を重視した実装が行われている訳ではなく、Windows NTに実装されているソフトウェアRAID 1では読み込み、書き込み共に1つで、読み込みは常に一方のディスクからのみ行われる。Windows Server 2003は低負荷時には片方から、高負荷時には負荷分散を行う。
- 長所
-
- OSやマザーボードの機能として標準装備されているものにあっては、別段のRAIDハードウェア/ソフトウェアなしでも使用できる。
- 故障したハードディスクを交換すればバックグラウンドでディスクデータの復旧が行われるため、システムダウンからの復旧が速い。
- 一方のハードディスクが故障しても、もう一方のハードディスクは正常動作しているので、性能が低下しない。
- RAIDコントローラの故障に対応する冗長構成が可能。
- ドライブ数が増えれば増えるほど耐障害性が上がる。
- 短所
-
- 構成ディスク容量に対するデータ記録可能量が常に構成ディスク台数の逆数倍であるため効率が悪い。
- RAID 1の容量は、構成するドライブの中でもっとも小さな容量に決定され、余った他のドライブ部分は利用できない。
- RAIDの中で唯一ディスクサイズの大容量化、高速化を目的としていない。
RAID 01(0+1) および RAID 10(1+0)
RAID 0とRAID 1を組み合わせた構成を特別にRAID 0+1(RAID 01)およびRAID 1+0(RAID 10)と呼ぶ。高速化、大容量化を目指したRAID 0と高信頼性を求めたRAID 1を組み合わせることにより、速度、容量、耐障害性の向上を図ることができる。最低4ドライブ必要である。
RAID 0とRAID 1は相性がよく、 RAID 1の特性によりRAID 0の弱点であったランダムアクセスも高速化できる。RAID 1を使用しているためコントローラの2重化にも対応できるので、容量が必要でなおかつ強力な耐障害性を求める場合に採用されることが多い。
RAID 0とRAID 1、どちらを下層で行うかにより名前が変わる。0または1は、下層で行われる処理を先に表記する。一見どちらも同じように見えるが耐障害性の面で異なる。
- RAID 0+1:ストライプされた領域をミラーリング
- RAID 1+0:ミラーセットをストライプ
ドライブ故障への耐性はRAID 1+0のほうが優れている。RAID 0+1ではRAID 1を構成するRAID 0領域のドライブそれぞれ1台ずつが故障した時点でデータが破壊されるが、RAID 1+0ではRAID 0を構成するRAID 1セットの構成ドライブ2台がどちらも故障しない限りデータは破壊されない[4]。台数が増えれば増えるほどRAID 1+0のほうが耐障害性が上がる[5]。コントローラ故障への耐性はRAID 0+1が上回る局面も存在しうるが[6]、基本的にはRAID 1+0のほうが優れていると考えてよい。
RAID 2: ビット単位での専用誤り訂正符号ドライブ (ECC)
RAID 2の冗長化機構はハミング符号で、ストライプ単位は1ビットである。ハミングコードによるデータ修復が常に必要なほどHDDの信頼性は低くないので、RAID 2は実用性がなく、製品は市販されていない。
RAID 2の耐障害性、実装に必要なドライブ数は、訂正可能ビット数により異なるため一意に記述できない。最低で5ドライブを必要とする。
- 長所
-
- 全RAIDレベルの中で最高の耐障害性を持つ。
- 短所
-
- ハミングコード計算コストが莫大である。
- ディスクの使用効率が極めて悪い[7]。
RAID 3: ビット/バイト単位での専用パリティドライブ
RAID 3はRAID 2の誤り訂正符号を排他的論理和によるパリティに変更し、演算コストを低減したものである。
最低3ドライブで構成され、1台を誤り訂正符号に割り当て、残りの複数台にデータを記録する。
ビデオ編集機器においてはアクセスの殆どがシーケンシャルアクセスであることから、現在でもRAID 3が用いられている場合があるが、パソコンやサーバでRAID 3を用いるメリットは存在しない。
- 長所
-
- パリティを訂正符号として用いているためRAID 2に比較して計算コストが低い。
- 構成ドライブ数-1個の容量が確保できるため、ディスク容量の無駄を最小限に押さえられる。
- 短所
-
- ビット/バイト単位でアクセスを行うためI/Oの効率が悪い。
- パリティドライブが書き込み処理時のボトルネックとなる。
RAID 4: ブロック単位での専用パリティドライブ
RAID 4はRAID 3のI/O単位をブロックに拡大し、I/O効率の改善を図ったものである。 性能面でRAID 5に劣るRAID 4は廃れつつある。
- 長所
-
- アクセス単位がブロックになっているため、RAID 3より高速なI/Oが望める。
- 短所
-
- パリティドライブは書き込み処理時のボトルネックになり得る。(これに対する解がRAID5)
RAID 5: ブロック単位でのパリティ分散記録
RAID 5は水平パリティを使用して複数のハードディスクに誤り訂正符号データと共に分散させて記録することで、RAID 3、RAID 4のボトルネックを回避している。最低3ドライブが必要である。RAID1やRAID1+0に比べて使用効率に優れている。またRAID0のように複数のディスクに分散しているため読み出し性能が優れている。一方で書き込む場合にはパリティを作成しなおすために、ディスクからの読み出しとパリティ演算が必要となる。
- 長所
-
- ボトルネックとなる、RAID 3やRAID 4のような専用のパリティドライブが存在しない。
- ドライブの台数が増えるほど高速化を見込める。
- RAID 0と異なり、ランダムリードに対しても性能向上を見込める。
- 短所
-
- 読み出しは高速であるが書き込みは低速である(特にドライブ台数が少ない場合)。高価格帯製品では大容量のキャッシュを搭載することで吸収している。
- パリティ演算が必要なため、ソフトウェアRAIDに不向き。
- 停電やディスククラッシュにより部分的に書き込みが行われた状態での停止が発生した場合に検出困難な不整合が発生するタイミングがあり、RAID 5書き込みホールと呼ばれる。ハードウェアRAIDではバッテリを搭載するなどして電源異常時の問題を回避するように構成されている場合が多いが、ソフトウェアRAIDでは一般に対応は困難である(同様の問題はパリティを用いるRAID 4、RAID 6等でも存在する)。RAID-Zはソフトウェアによるこの問題の解法の一つ。
- (障害発生後の)復元処理が遅い。
- ドライブ1台故障時にパリティからデータを再生するため、性能が低下する。
- 2つ以上のドライブが同時に故障すると回復できない。
- ドライブ1台故障時はRAID 0並みに信頼性が低い状態となる。特に構成台数が多い場合、復元作業中にもう1台が故障し、回復不可能となってしまうケースがある(これに対する解がRAID 6)。
水平パリティによる分散記録
RAID 5においてパリティはパリティ用領域に使用されるディスク以外のXORで水平方向のパリティ(PH)をとる。水平パリティはそれぞれのディスクに格納されることで、1台のディスク障害に耐えることができる。ディスク障害時は障害の発生したディスクのXORによる再計算で復元が可能である。
データ書き込み時におけるパリティ計算方法は以下の通り。
A1/B1/PH1/
A2/PH2/C1/
PH3/B2/C2/
PH1=A1+B1
PH2=A2+C1
PH3=B2+C2
RAID 5を用いた組み合わせ
RAID 5に速度面、耐障害性などでの不満がある場合、RAID 0+1や1+0と同様に、他のRAIDと組み合わせることで弱点をカバーできる。
RAID 5+0とRAID 0+5
RAID 5の速度を向上させたい場合、使っている台数と同数のハードディスクを追加してRAID 0と組みあわせるか、サーバを増設し負荷を分散させるのが有効である。RAID 5+0およびRAID 0+5を構成する場合は、最低6ドライブが必要である。
RAID 1+0や0+1と同様、RAID 5とRAID 0のどちらを先に行うかで名前が変わる。RAID 5のセットによるストライピングを行うRAID 5+0のほうが、次の理由で優れているといえる。
- ドライブ故障への耐性に優れる[8]。
- 読み書きの高速性を利点とするRAID 0を外側にすることで、書き込み速度の向上効果がより強く期待できる。
RAID 5+1とRAID 1+5
RAID 6を上回る強力な耐障害性が要求される場合、この組み合わせが選択肢となる。RAID 5+0やRAID 0+5と同様、最低6ドライブを必要とする。
RAID 5+1、RAID 1+5とも3ドライブまでの同時故障に耐えられるが、RAID 1+5のほうがより強い耐障害性を持つ[9]。
メンテナンス性にも優れる。何らかの理由によりすべてのドライブを交換する必要が生じた場合、ミラーの片方のディスクを一度に交換し、リビルド後に残りを交換して再リビルド、という簡便な手順で、装置を止めることなく交換を完了でき、またこの作業中もRAID 5の耐障害性が残っている。
RAID 5+5
RAID 5によってRAID 5を組む、RAID 5+5も考えられる。この構成には最低9ドライブを要する。
RAID 5+1や1+5と同様、同時に3ドライブまでの故障に耐えられ、またディスク利用効率でそれらを上回る。耐障害性ではRAID 5+1と1+5の中間程度になる[10]。
同様に、3次元化したRAID 5+5+5、4次元化したRAID 5+5+5+5なども考えられる。RAID 5+5+5は7台、RAID 5+5+5+5は15台までの同時故障に耐えられるが、必要となるドライブ数およびディスク効率の面から実用的ではない[11]。
RAID 6: ブロック単位・複数パリティ分散記録
RAID 6は任意の2つのハードディスクに障害が発生してもデータが復元できるRAIDである。冗長データを2種類作成し2つのディスクに記録することで、2重障害に対応でき、同時に2ドライブが故障しても復元できる。最低4ドライブを必要とする。1つの冗長データはRAID5と同じようにパリティ符号を用いる。もう1つの冗長データは、異なるアドレスのデータからパリティを生成する方式(対角線パリティ)や、異なる係数を乗算してから生成する方式(P+Qパリティ)など、複数の実装形態がある。RAID 1のミラーリングを3重化した場合も2つのハードディスク障害に対応できるが、これは通常RAID 6とは呼ばない。
- 長所
-
- RAID 5と同等の長所を持つ。
- RAID 3やRAID 4のように、ボトルネックとなる、専用のパリティドライブが存在しない。
- ドライブの台数が増えるほど高速化を見込める。
- RAID 0と異なり、ランダムリードに対しても性能向上を見込める。
- RAID 5よりさらに高い耐障害性がある。ドライブ1台故障時においてもRAID 5並みの信頼性を保っている。
- RAID 5と同等の長所を持つ。
- 短所
-
- 初期投資が大きい(ただし、長期的な運用コストはRAID 5と大差ない)。
- 二重にパリティを生成するため、RAID 5よりもさらに書き込み速度が低下する。
- RAID 5と同様、ドライブ故障時に性能が低下する。
- 3つ以上のドライブが同時に故障すると回復できない。
EMC CLARiX/CLARiiON のRAID6では EVENODDアルゴリズムを使って、X86プロセッサのXOR命令でパリティの計算、データのリカバリをソフトウェアで行っている。
大規模なシステムでは、RAID 6を用いた多重RAIDも、RAID 5と同様に考えられる。
- RAID 6+0とRAID 0+6
- RAID 6の耐障害性を活かしたうえで高速化を図る。最小8ドライブを要し、2ドライブまでの故障に耐えられる。
- RAID 6+1とRAID 1+6
- 耐障害性が非常に強い。最小8ドライブを要し、5ドライブまでの故障に耐えられる。
- RAID 6+5とRAID 5+6
- 強力な耐障害性とディスク利用効率を兼ね備える。最小12ドライブを要し、5ドライブまでの故障に耐えられる。
- RAID 6+6
- 極めて強い耐障害性。最小16ドライブを要し、8ドライブまでの故障に耐えられる。
対角線パリティの計算方法
RAID 6ではRAID 5の水平パリティ(PH)に加え、対角線パリティ(PD)もパリティとして使用される。
水平パリティとは異なり対角線パリティは専用のディスクに格納される。ディスク4台でRAID6を構成しているとき、対角線パリティの配置と計算は以下の通り。
PH1/B1 /C1 /PD1
A2 /PH2/C2 /PD2
A3 /B3 /PH3/PD3
PD1=PH1+C2+B3
PD2=B1+A2+PH3
PD3=C1+PH2+A3
P+Qパリティの計算方法
PパリティはRAID5と同じXORによるパリティであり、もう一つの冗長データであるQパリティは重みつきのガロア体GF(2)における剰余、つまり8ビットのCRCを用いる。CRCは誤り検出符号であって誤り訂正能力を持たないが、いくつかの条件が満たされていれば誤り訂正が可能であり、RAID6での利用方法の場合はこの条件が満たされている。8ビットCRCの制限により、この方式を用いる限りデータディスクは255台(+冗長ディスク2台)までしかサポートできない。
規格のようなものがないため、生成多項式や重みのつけかたが各社で異なる。また高速化やハードウェア的な最適化のためにあらかじめ定数をかけたテーブルが用意されているなど、単純なCRCには見えない場合もある。あるいは、これ以外の算出方法を採っている場合も有り得る。
具体的な算出方法は以下の通りである。
データディスクをA、B、C、Dとし、冗長ディスクをP、Qとする。現実には冗長ディスクは分散されているが、便宜上こうしておく。
- P=A+B+C+D (RAID5と同じ)
- Q=CRC(A+B*2+C*4+D*8)
ここで、AとはデータディスクAにある1バイトのデータであり、以下B、C、D、P、Qそれぞれ、対応する同じ位置にある1バイトのデータを示す。またCRC(x)は、値xをビット列とした時のCRC符号である。このCRCは、生成多項式が既約性を持つ(==原始多項式である)必要がある。また上記加算(+)及び乗算(*)は、共にガロア体での加算乗算である。
また回復方法は以下の通りである。
データディスクA、B、C、Dのいずれか一つが破損した場合は、RAID5と同じ。また冗長ディスクP、Qのいずれか一つ乃至は二つが破損した場合は、データディスクA、B、C、Dから再計算する。
A、B、C、Dのいずれか一つとQが破損した場合は、Pと正常なデータディスクとで破損したデーターディスクを(RAID5と同様に)回復し、Qを再計算する。
A、B、C、Dのいずれか一つとPが破損した場合は、Qから、破損したデータディスクの位置に8ビットのバースト誤りがあったものとして回復する。
A、B、C、Dのいずれか二つが破損した場合は、PとQに関する連立方程式を解いて回復する。
例えばB、Dが破損したとする。
- P=A+B+C+D
- P-(A+C)=B+D
- P+A+C=B+D (加算と減算は共にXORで同一なので)
- Q=CRC(A+B*2+C*4+D*8)
- Q=CRC(A+C*4)+CRC(B*2+D*8) (CRCは加算(XOR)に関して分配法則が成り立つ)
- Q-CRC(A+C*4)=CRC(B*2+D*8)
- Q+CRC(A+C*4)=CRC(B*2+D*8) (加算と減算は共にXORで同一なので)
となるので、この連立方程式を解く。
- P+A+C=B+D
- P+A+C-B=D
- P+A+C+B=D
これを代入して
- Q+CRC(A+C*4)=CRC(B*2+D*8)
- Q+CRC(A+C*4)=CRC(B*2+(P+A+C+B)*8)
- Q+CRC(A+C*4)=CRC(B*2+(P+A+C)*8+B*8)
- Q+CRC(A+C*4)=CRC(B*2+B*8+(P+A+C)*8)
- Q+CRC(A+C*4)=CRC(B*(2+8)+(P+A+C)*8)
- Q+CRC(A+C*4)=CRC(B*10+(P+A+C)*8)
- Q+CRC(A+C*4)=CRC(B*10+(P+A+C)*8)
- Q+CRC(A+C*4)=CRC(B*10)+CRC((P+A+C)*8)
- Q+CRC(A+C*4)-CRC((P+A+C)*8)=CRC(B*10)
- Q+CRC(A+C*4)+CRC((P+A+C)*8)=CRC(B*10)
ここで、CRCの生成多項式は原始多項式であるので、10と互いに素である。ここから中国の剰余定理を利用してBを算出する。つまり左辺を10(二進法で1010)で割る。 それを
- P+A+C+B=D
に代入して D を求める。
RAID Z: 可変ストライプ幅
RAID ZはRAID 5やRAID 6と似た機構を持つが、ストライプ幅を可変とすることで速度と耐障害性を向上させたものである。
RAID 5やRAID 6ではパリティ更新時に何らかの障害が発生するとデータとパリティーが一致しなくなり、システム上では正常に見えても内部ではデータ破壊が進んでいるという状態(サイレントクラッシュ)に陥るという致命的な欠点がある。またストライプ幅より小さいデータを書き込む際にも、全体のデータとパリティを読み込んで再計算をする必要があるため、パフォーマンスが著しく低下するという弱点も持っている。
RAID Zでは常にストライプ全体への書き込みを行い、コピーオンライトと組み合わせることでRAID 5やRAID 6が持つサイレントクラッシュの問題を完全に回避できる。
Defunct Disk Drive
無効ディスクドライブ(DDD、Defunct Disk Drive)とは、RAIDを構成するディスクにおいて何らかの障害が発生し、RAIDの構成ディスクから外されたディスクないしその状態を示す。
参考文献
- David A. Patterson and John L. Hennessy; 成田光彰 (2006). コンピュータの構成と設計 第3版(上) ハードウエアとソフトウエアのインタフェース. 日経BP. ISBN 4-8222-8266-X
- David A. Patterson and John L. Hennessy; 成田光彰 (2006). コンピュータの構成と設計 第3版(下) ハードウエアとソフトウエアのインタフェース. 日経BP. ISBN 4-8222-8267-8
[[デイビッド・パターソン |Patterson, David]]; Garth A. Gibson, Randy H. Katz (1988), A Case for Redundant Arrays of Inexpensive Disks (RAID), SIGMOD Conference, pp. 109-116
脚注
- ^ パターソン&ヘネシー (下)p.530
- ^ Patterson(1988)
- ^ パターソン&ヘネシー (下) p.530
- ^ RAID 0+1とRAID 1+0をそれぞれ4台のドライブで構成し、ランダムに各2台のドライブが故障したと仮定すると、RAID 0+1が破壊される確率は2/3、RAID 1+0が破壊される確率は1/3である。
- ^ 同様に16台(8ストライプ・2ミラー)でRAID 0+1と1+0を組み、各2台が故障した場合、RAID 0+1が破壊される確率は8/15、RAID 1+0が破壊される確率は1/15となる。
- ^ 各ストライプ、各ミラーのコントローラがそれぞれ別となっている場合、RAID 1+0はコントローラが1つでも故障すると破壊されるが、RAID 0+1はRAID 0領域のコントローラ故障に対して、そのすべてが同時に故障しない限り耐えられる。
- ^ 1bitECCの場合、最小構成の5台で利用可能な容量は2台分。7台の場合には4台分、15台の場合には11台分、31台の場合には26台分となる。
- ^ 8台のドライブ(4台構成RAID 5×2台構成RAID 0)でRAID 0+5と5+0を組み、各2台が故障した場合、RAID 0+5が破壊される確率は6/7、RAID 5+0が破壊される確率は3/7。
- ^ 8台のドライブ(4台構成RAID 5×2台構成RAID 1)でRAID 1+5と5+1を組み、各4台が故障した場合、RAID 1+5が破壊される確率は3/35、RAID 5+1が破壊される確率は18/35。
- ^ 16台のドライブでRAID 1+5、5+1(8台構成RAID 5×2台構成RAID 1)およびRAID 5+5(4台構成RAID 5×4台構成RAID 5)を組んだ場合、RAID 1+5と5+1は7台分、5+5は9台分の容量が利用可能であり、それぞれランダムに4台が故障した場合、RAID 5+1は196/455、RAID 1+5は7/455、RAID 5+5は57/455の確率で破壊される。
- ^ RAID 6+6はRAID 5+5+5を上回る8台までの故障に耐えられ、また一般にディスク利用効率でも優れる。例えば64台のドライブを用いた、4台構成RAID 5×4台構成RAID 5×4台構成RAID 5によるRAID 5+5+5の利用可能容量は27台分となるのに対し、8台構成RAID 6×8台構成RAID 6によるRAID 6+6では36台分の容量が利用可能である。
関連項目
- バックアップ
- ディスクアレイ
- JBOD
- ダイレクトアタッチトストレージ (DAS)
- ストレージエリアネットワーク (SAN)
- ネットワークアタッチトストレージ (NAS)
- iSCSI
- SATA
- Fibre Channel
- SAS(Serial Attached SCSI)
- SNIA
- ZFS
- ファイルサーバ
- ホットスペア
- 可用性
外部リンク
- ウィキメディアのサーバ ← どのような目的でどのようなRAIDが用いられるかをご覧ください。
- 富士通株式会社によるRAIDの解説
- インテル株式会社によるMatrixRAIDの概要
- Raid Controller & Raid Systems