RAID

複数のハードディスクを使用して冗長性を確保する方式

RAID(Redundant Arrays of Inexpensive Disks、または Redundant Arrays of Independent Disks、レイド[1]は、複数台のハードディスクを組み合わせることで仮想的な1台のハードディスクとして運用し冗長性を向上させる技術[2]ディスクアレイの代表的な実装形態で、主に信頼性・可用性の向上を目的として用いられるものである。バックアップと混同される場合もあるが、RAIDはあくまでも運用に対しての冗長性を確保するものでありバックアップとは異なる点に注意が必要。

本記事において、「装置」という語句を用いるが、これはRAIDが取り付けられる機器(サーバ・ワークステーション・パソコンなど)の総称を意味する。

概要 編集

1988年カリフォルニア大学バークレー校デイビッド・パターソン, Garth A. Gibson, Randy H. Katzによる論文「A Case for Redundant Arrays of Inexpensive Disks (RAID)」において提唱された[3]

この論文は、安価で低容量、価格相応の信頼性のハードディスクドライブ (Inexpensive Disk) を用い、大容量で信頼性の高いストレージ(補助記憶装置)をいかに構築すべきかを提案したものである。論文にはハードディスクの構成によって、RAID 1からRAID 5までの5種類を定義している。

また、論文では提案されていないが、ストライピングのみの場合も一般的にはRAIDの一種とみなされ、これは冗長性が確保されないことからRAID 0と呼ばれる[4]

はじめに定義された6種類のうち、RAID 2はほとんど利用されず、RAID 3,4もRAID全体の中では少数派である[5]。今日ではRAID 0・RAID 1・RAID 5、およびこれら3方式の組み合わせが用いられている。後にRAID 5を拡張したRAID 6が定義され、RAID 5より耐障害性が必要な場面で利用されている。

導入を検討するユーザにとっては、信頼性速度予算(ハードディスクの利用効率も含む)の内どれを重視するかを考え、実情にあわせた導入方法を選択することができる。3つを完全に満たすのは難しいが、2つを満たす現実的な方法は充分にある。

RAIDの構成によっては、一部のハードディスクが故障してもディスクアレイは稼動を継続できる。その場合、ディスクを稼働させたまま故障したハードディスクを取り外して代わりのハードディスクに交換することにより装置を停止することなく運用を続けることができる。このように装置が稼働中に接続しなおして、即座に利用できる機能を「ホットスワップ(活線挿抜)」と呼ぶ。ホットスワップ機能を使用するには装置側でハードウェアとして対応していることが前提となる。サーバ用途など24時間連続稼働が求められる装置ではホットスワップ対応が望ましい。

RAIDは、大容量データの高速処理や耐障害性の向上を必須要件とする大規模な業務用サーバワークステーション、特定目的に製造されたコンピュータ機器等に用いられていたが、近年、小規模サーバやパソコンにも普及しつつある[要出典]

普及の要因 編集

  • デジタルデータの重要性が高まっているため
  • HDD(ハードディスクドライブ)が大容量化し、一般ユーザにとっても故障時に失われるデータ量を無視できなくなったため
  • HDDやRAID関連製品も低価格化、RAID機能のチップセットへの内蔵(HDDさえあれば追加投資無しでRAIDが利用できる)が進んでいるため

注意点 編集

RAIDは複数のHDDを用いて、ディスクアレイの可用性を高める技術である。そのため、ファイルの誤消去など人為的なもの、コンピュータウイルスによるファイルの破壊、ファイルシステムの不整合など、ソフトウェア的な障害には対応できない。またHDDが同時期に複数故障する、リビルド時に他のHDDが障害を起こす等、単体のHDDに比べれば非常に低いがディスクアレイも故障の可能性を持つ。

バックアップは、データを静的な状態で、一定期間、複数世代、保存するものであり、RAIDとは役割が異なる。データはRAIDとバックアップの両者を組みあわせて運用することにより、サービスの継続性を保証しつつ、高い安全性を持って保全することができる。

RAIDの方式 編集

RAIDを実装する方法としては、ハードウェアで実現する方法(ハードウェア方式)とソフトウェアで実現する方法(ソフトウェア方式)がある。この2方式は明確に分類できるものではなく、中間的な方式がいくつか存在する。

ハードウェア方式 編集

コントローラカード 編集

 
シリアルATA RAIDカード

この方式は、RAIDコントローラと呼ばれるカードを装置に取り付け、パリティ演算やディスクの管理などを任せるものである。ドライバさえ用意すればハードウェア側のマシンパワーに影響を与えず、カード自体に専用のキャッシュメモリを搭載している場合はアクセスの高速化が見込める。一部のマザーボードにはRAIDコントローラをあらかじめ実装している製品がある[6]

純粋なハードウェア方式では、ホストが僅かな指示を送るだけでRAIDコントローラが具体的な処理を全て行うため、CPUの負荷が低減される[7]。しかし、コントローラ毎に制御方法が異なるため、OS側で各RAIDコントローラカードへの対応が必要であり、専用のデバイスドライバが必要となる。

一方、RAIDコントローラカードの中には、RAID機能の大部分をソフトウェアで実現しているものもある[8]。この場合、OS起動前にある程度のRAID機能を使用可能であるがCPUの負荷はソフトウェア方式と大差が無く、ハードウェア方式に比べて対応OSが限定されたり信頼性に乏しい場合があり、ソフトウェア方式に分類される。

ディスクアレイユニット 編集

複数のディスクを搭載出来るケースにRAIDを搭載したハードウェア。コンピュータやOS側からは単なるSCSIファイバーチャネルのドライブとして見えるため、特別なドライバが必要なく、CPUへの負荷が全くない。ディスクアレイユニットを接続したい装置に必要な外部接続インタフェースがすでにあれば装置の筐体を開けることもなく、ケーブルをつなぐだけで使えるようになる。

ソフトウェア方式 編集

ソフトウェア方式は、OS自身が普通のドライブコントローラ(IDESCSIFC など)を通して複数台のディスクを管理する。この方式はハードウェア方式と比較し、CPUへの負荷が高いが、特別なハードウェアを購入する必要がなく導入コストが低いという利点がある[7]。しかしながらアクセスコントロールの大半をOSやCPUに依存するためマシンパワーを消費すること、物理的なキャッシュが存在しないためハード的な障害やソフトウェア側の障害発生に伴ってRAID情報に致命的な問題を引き起こす可能性がハードウェア方式に比べて高いという欠点が存在する。

Windowsは、RAID機能をサポートしている[9]Linuxは、カーネル2.4系以降にてRAID0/1/4/5/6をサポートしている[10]FreeBSDは、gmirrorというソフトウェアにてサポートしている[11]。ファイルシステムのZFSはそれ自身にRAID機能をもち、RAID5またはRAID6相当の機能としてそれぞれRAID-Z、RAID-Z2が実装されている。インテルチップセットでは、マトリックス・ストレージ・マネージャー機能によりRAID機能をサポートしている[12]。これはソフトウェアというよりはファームウェアでのRAIDである。Adaptecの低価格RAIDボードでは、HostRAIDによりソフトウェアRAIDを行っている[13]

近年、サーバ向けチップセットだけでなくメインストリーム向けのチップセットでもRAIDコントローラ機能(0/1/0+1/5など)を集積したものが広く普及しつつある。マトリックス・ストレージ・マネージャー機能はMUX(マルチプレクサ)/DEMUX(デマルチプレクサ)で構成されており、CPUが発行したディスクI/O操作を複数のハードディスクへのディスクI/Oに分散・またディスクからの読み出しの多重化を行う(パリティ演算機能を持つものと持たないものがある)。信頼性はもとより、ディスクI/O速度を高速化する総合アクセラレータ的要素が強い。このため、ソフトウェア方式に分類される場合が多い。[要出典]

電源問題 編集

ハードディスクの必要台数が増えるため、特にRAIDコントローラカードを用いて装置内部にハードディスクを取り付けている場合、電源がハードディスク台数分の負担に耐えられるか注意すべきである。

ハードディスクは突入電流等により起動時に最も電力を必要とするため、スタッガードスピンアップ(各ディスクに時間差を置いて起動する)機能を搭載しているRAIDコントローラもある[14]

ライトホール問題 編集

RAID 5の問題として有名だが、複数のHDDを束ねて1つのグループと見なす、すべてのRAIDシステムで起こりうる。 RAID 2以外のRAIDは読み出し時のエラー検出をHDDのエラー検出に依存しているので、RAIDシステムではエラー検出が出来ない。 物理的な破損等でHDDから応答が無かった場合や読み出しエラーをHDDが返した場合に限り、RAIDシステムではエラーを検出できるが、正しく読み出せる場合はエラー検出が出来ない。

例えば、2台でのRAID 1の場合、RAIDコントローラからHDD AとHDD Bに同時に書き込みリクエストは発生するが、HDDには書き込み時の処理のタイムラグがあるため、HDD Aには書き込みが完了したがHDD Bには書き込みが発生していないと言うタイミングが存在する(逆もしかり)。 このタイミングで電源断等により処理が中断した場合、HDD Aには新しく書き込まれたデータ、HDD Bには上書きされる前の古いデータが記録されており、HDD AとHDD Bのミラーとして対になるセクタの値が同一ではなくなる。 ブロックサイズが大きい場合は、ブロック自体が複数のセクタで構成されているため、同一HDDの中でも、ブロックを構成する一部のセクタのみ書き込み完了しそれ以外は書き換えられていないということも発生する。 このようにRAIDを構成するグループのHDDのブロックすべてに書き込めずに、穴が開いたのように書き込まれるためライトホールと呼ばれる。

HDDレベルではどちらも正常なのでエラー無く読み出せるが、HDD毎に異なる値が読み出されるようになる。 これはRAIDレベルでは不整合を起こした状態となり、RAIDシステムではエラー検出機能を持っていないために、エラーが起きている事を検出することが出来ない。

結果として、RAID 1の場合は、読み込むHDDによって値が変わる。上記の例ではHDD Bの書き込みがされていないためにBから読み出された場合やHDD Aが破損し、HDD BからHDD A'にリビルドされた際にデータが壊れる。 RAID 3,4,5、6の場合は、誤ったパリティによりデータが破壊される。 これらを、サイレントクラッシュ(正確にはサイレントデータコラプション)と呼ぶ。

バッテリバックアップされたNVRAMやフラッシュメモリ等の不揮発メモリを持っているハードウェアRAIDでは、 HDDから書き込みの完了・未完了等のトランザクション管理をしているためこの問題は発生しないようになっているが、 ソフトウェアRAIDや、不揮発メモリを持たない安価なハードウェアRAIDでは、この問題が発生する。

RAID 2はそれ自体がハミングコードによるエラー検出機能を持っているので、この問題は発生しない。 RAID-Zもブロック単位での書き換えがCopyOnWriteにより保証される事とチェックサムがあるためにこの問題は発生しない。

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の概念図。一つのファイルをA1からA8に分割して、これを複数のディスクに同時に分散して書き込む。

RAID 0はデータを分割し、複数台のハードディスクに同時に分散して読み書きする。高速化が可能となる。ストライピングとも呼ぶ。冗長性がなく耐障害性もないが、実装要素(ハードウェアおよびソフトウェア)はRAIDのそれらを転用できるため、他のRAIDモードとともに実装しているコントローラが多い。冗長性を持たないことを明示する意味で、無を表現する数であるゼロが付される。最低2台のドライブが必要である。

1台のドライブが故障しただけでアレイ全体の故障となるため、その故障率は単体ドライブに比べ高い。例えば、単位時間あたりのドライブ故障率が1%の場合、2台でRAID 0を構成した場合のアレイの故障率は約2% (1-0.99*0.99=0.0199) と約2倍に上昇する。

単独のRAID 0では速度は向上するものの故障率が増加することから、後述のRAID 1や5と組み合わせて用いられることも多い。

  • 長所
    • ドライブ数が増えるほどシーケンシャル及びランダムアクセス速度が上がる。但し後者の向上にはストライプサイズ(分割の粒度)、セクタサイズ、クラスタサイズ、ブロックサイズ、先読み深度などを適切に設定する事が必要である。
  • 短所
    • 冗長性が全くない。
    • ドライブ数が増えるほどアレイの故障率が上がる。
    • 適切なストライプサイズやコマンドキューの調整が出来ない場合、ランダムアクセス速度はあまり向上しないかドライブ数の増加に伴い低下する可能性がある。

RAID 1 編集

 
RAID 1の概念図。データをA1-4に分割して同じデータを同時に書き込む。

RAID 1は複数台のハードディスクに、同時に同じ内容を書き込む。これをミラーリングと呼ぶ。最もシンプルな方式であり、RAIDの弱点であるコントローラの故障にも対応しやすい。最低2台のドライブが必要である。

全てのディスクが同時に故障する可能性は低いため、システムの安定性は高い。

例えば、単位時間当たりのドライブの故障率を1%として2台でRAID 1を構成する場合、アレイの故障率は0.01% (0.01*0.01=0.0001) と1/100となる。

ただし、利用可能な容量は単体のハードディスク容量を超えない。台数が増えるほど容量効率が悪くなる。効率重視ならばRAID 5の方がよい。

本来読み出しは、一つのドライブからのみでそれ以外はバックアップである。全てのディスクから読み出せば、理論上、高速に読み出せる。

初期のネットワークOSであるNetware 2.x、3.xは、上記を取り入れており、コントローラが複数個ある場合には、一方のディスクに書き込みながら他方のディスクから読み込みを行うなどの負荷分散を行っていた[要出典]。従って、ディスク間で記録データに不一致が発生する時間があり、ディスクの同期を完了させてから終了する必要があった。

しかし、常に性能を重視した実装が行われている訳ではなく、Windows NTのソフトウェアRAID 1では、読み込みは常にひとつのディスクからのみ行われる。Windows Server 2003は低負荷時には片方から、高負荷時には負荷分散を行う[要出典]

  • 長所
    • OSやマザーボードに標準装備されている場合、RAIDハード/ソフトウェアを別途用意せずとも使用できる。
    • ドライブ数が増えるほど耐障害性が上がる。
  • 短所
    • 容量の利用効率が悪い。N 台のドライブとした時、容量効率は1/Nとなる。
    • 大容量化を目的としていない。
    • 高速化は限定的である。

RAID 01 (0+1) および RAID 10 (1+0) 編集

 
RAID 0+1 (RAID 01)
 
RAID 1+0 (RAID 10)

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台がどちらも故障しない限りデータは破壊されない[15]。台数が増えれば増えるほどRAID 1+0のほうが耐障害性が上がる[16]。コントローラ故障への耐性はRAID 0+1が上回る局面も存在しうるが[17]、基本的にはRAID 1+0のほうが優れていると考えてよい。

RAID 2 編集

RAID 2の冗長化機構はハミング符号で、ストライプ単位は1ビットである[5]。ハミングコードによるビット単位のデータ修復が常に必要なほどHDDの信頼性は低くないので、RAID 2は実用性がなく、製品は市販されていない。

必要なドライブ数は、ハミングコードの訂正可能ビット数により異なるため一意に記述できないが、最低で5台のドライブを必要とする。

  • 長所
    • 全RAIDレベルの中で最高の耐障害性を持つ。最小構成の5台の場合、3台のドライブの故障にも耐えられる[5]
  • 短所
    • ハミングコード計算コストが莫大である[18]
    • ディスクの使用効率が極めて悪い。最小構成の5台で利用可能な容量は2台分[18]。7台の場合には4台分、15台の場合には11台分、31台の場合には26台分となる。但し最小構成時を除けばRAID 1よりも効率は良い。

RAID 3: ビット/バイト単位での専用パリティドライブ 編集

 
RAID 3

RAID 3はRAID 2の誤り訂正符号を排他的論理和によるパリティに変更し、演算コストを低減したものである。

最低3ドライブで構成され、1台を誤り訂正符号に割り当て、残りの複数台にデータを記録する。

ビデオ編集機器においてはアクセスの殆どがシーケンシャルアクセスであることから、現在でもRAID 3が用いられている場合があるが、パソコンやサーバでRAID 3を用いるメリットは存在しない。

  • 長所
    • パリティを訂正符号として用いているためRAID 2に比較して計算コストが低い。
    • 構成ドライブ数-1個の容量が確保できるため、ディスク容量の無駄を最小限に押さえられる。
  • 短所
    • ビット/バイト単位でアクセスを行うためI/Oの効率が悪い。
    • パリティドライブが書き込み処理時のボトルネックとなる。

RAID 4: ブロック単位での専用パリティドライブ 編集

 
RAID 4

RAID 4はRAID 3のI/O単位をブロックに拡大し、I/O効率の改善を図ったものである。最低3台で構成される。以下の短所からRAID5へ移行され、RAID4は実質的に消滅している。

  • 長所
    • アクセス単位がブロックになっているため、RAID 3より高速なI/Oが望める。
  • 短所
    • パリティドライブは書き込み処理時に常時アクセスが行われるため負担が集中する。性能上のボトルネックとなるだけでなく、消耗が激しく寿命も低下する。(これに対する解がRAID5)

RAID 5: ブロック単位でのパリティ分散記録 編集

 
RAID 5

RAID 5は水平パリティを使用して複数のハードディスクに誤り訂正符号データと共に分散させて記録することで、RAID 3、RAID 4のボトルネックを回避している。最低3ドライブが必要である。RAID1やRAID1+0に比べて使用効率に優れている。またRAID0のように複数のディスクに分散しているため読み出し性能が優れている。一方で書き込む場合にはパリティブロックを作成しなおすために、ディスクからの既存パリティ読み出しとパリティ演算が伴うが、I/Oプロセッサを搭載した高価格帯製品ではパリティを大容量キャッシュに保存しパリティ演算をI/Oプロセッサや専用演算機にて行う事で速度低下を回避している。

  • 長所
    • ボトルネックとなる、RAID 3やRAID 4のような専用のパリティドライブが存在しない。
    • ドライブの台数が増えるほど高速化を見込める。
    • 1台までのドライブが故障してもデータを復旧できる
  • 短所
    • パリティ演算が必要なため、ソフトウェアRAIDに不向き。ただしI/Oプロセッサを搭載した高価格帯製品では大容量のキャッシュメモリとI/Oプロセッサやパリティ演算機を搭載することでRAID0並みに読み書きともに高速化している製品もある。
    • 停電やディスククラッシュにより部分的に書き込みが行われた状態での停止が発生した場合に検出困難な不整合が発生するタイミングがあり、RAID 5書き込みホールと呼ばれる。ハードウェアRAIDではバッテリを搭載するなどして電源異常時の問題を回避するように構成されている場合が多いが、ソフトウェアRAIDでは一般に対応は困難である(同様の問題はパリティを用いるRAID 4・RAID 6等でも存在する)。RAID-Zはソフトウェアによるこの問題の解法の一つ。
    • 低価格品や低性能品では(障害発生後の)復元処理が遅い。
    • ドライブ1台故障時にパリティからデータを再生するため、性能が低下する。
    • 2つ以上のドライブが同時に故障すると回復できない(RAID6では3つ同時故障で回復不能)。
    • ドライブ1台故障時はRAID 0並みに信頼性が低い状態となる。特に構成台数が多い場合、復元作業中にもう1台が故障し、回復不可能となってしまうケースがある(これに対する解がRAID 6)。

水平パリティによる分散記録 編集

RAID 5においてパリティはパリティ用領域に使用されるディスク以外のXORで水平方向のパリティ (PH) をとる。水平パリティはそれぞれのディスクに格納され、1台のディスク障害に耐えることができる。ディスク障害時は障害の発生したディスクのXORによる再計算で復元が可能である。 データ書き込み時におけるパリティ計算方法の一例を下記に掲載する(An、BnはA1 B1 A2 B2 A3 B3の順に並んだデータブロック)。

A1/B1/PH1/
A2/PH2/B2/
PH3/A3/B3/

PH1=A1+B1
PH2=A2+B2
PH3=A3+B3

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のほうが、次の理由で優れているといえる。

  • ドライブ故障への耐性に優れる[19]
  • 読み書きの高速性を利点とする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のほうがより強い耐障害性を持つ[20]

メンテナンス性にも優れる。何らかの理由によりすべてのドライブを交換する必要が生じた場合、ミラーの片方のディスクを一度に交換し、リビルド後に残りを交換して再リビルド、という簡便な手順で、装置を止めることなく交換を完了でき、またこの作業中もRAID 5の耐障害性が残っている。

RAID 5+5 編集

RAID 5によってRAID 5を組む、RAID 5+5も考えられる。この構成には最低9ドライブを要する。

RAID 5+1や1+5と同様、同時に3ドライブまでの故障に耐えられ、またディスク利用効率でそれらを上回る。耐障害性ではRAID 5+1と1+5の中間程度になる[21]

同様に、3次元化したRAID 5+5+5、4次元化したRAID 5+5+5+5なども考えられる。RAID 5+5+5は7台、RAID 5+5+5+5は15台までの同時故障に耐えられるが、必要となるドライブ数およびディスク効率の面から実用的ではない[22]

RAID 6: ブロック単位・複数パリティ分散記録 編集

 
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 5よりさらに高い耐障害性がある。ドライブ1台故障時においても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
RAID 6単体と比較して耐障害性が強化される。最小8ドライブを要し、5ドライブまでの故障に耐えられる。
RAID 6+5とRAID 5+6
RAID 6単体と比較して耐障害性が強化され、高いディスク利用効率も兼ね備える。最小12ドライブを要し、5ドライブまでの故障に耐えられる。
RAID 6+6
階層化されたRAID 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を用いる。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と似た機構を持ち、速度と耐障害性を向上させたもの。 Oracle社のSolarisFreeBSDにおいて、ZFSとしてRAID Z1,Z2,Z3が実用化されている。

RAID 5やRAID 6ではパリティ更新時に何らかの障害が発生するとデータとパリティが一致しなくなり、システム上では正常に見えても内部ではデータ破壊が進んでいるという状態(サイレントクラッシュ)に陥るという致命的な欠点がある。またストライプ幅より小さいデータを書き込む際にも、全体のデータとパリティを読み込んで再計算をする必要があるため、パフォーマンスが著しく低下するという弱点も持っている。

RAID Zでは常にストライプ全体への書き込みを行い、コピーオンライトと組み合わせることでRAID 5やRAID 6が持つサイレントクラッシュの問題を完全に回避できる。

計算方法(RAID0, 1, 10, 5, 6) 編集

RAID容量計算式
RAIDの名前 RAIDの計算式 RAIDの最低必要台数
RAID0 HDDの台数xHDDの容量 2台以上
RAID1 HDDの台数xHDDの容量/2 2台
RAID10 HDDの台数xHDDの容量/2 2台以上
RAID5 (HDDの台数-1)xHDDの容量 3台以上
RAID6 (HDDの台数-2)xHDDの容量 4台以上
Option Explicit

Dim ans, m, p
Dim raid0, raid1, raid1e, raid10, raid5, raid50, raid6, gb

m = InputBox("HDD(SSD)の容量を入力してください。(GB)", "入力")
p = InputBox("HDDの本数を入力してください。", "入力")
MsgBox("RAIDの容量を計算できます。")

raid0 = Round(m * p)
raid1 = Round(m * p / 2)
raid1e = Round(m * p / 2)
raid10 = Round(m * p / 2)
raid5 = Round(m * p - m)
raid6 = Round(m * p - (m * 2))
gb = Round(m *p)

ans = "raid0:" & raid0 & "GB 1本から" & vbCr _
    & "raid1:" & raid1 & "GB 2本から2本まで" & vbCr _
    & "raid1E:" & raid1e & "GB 3本から" & vbCr _
    & "raid10:" & raid10 & "GB 2本から 偶数本"&vbCr _
    & "raid5:" & raid5 & "GB 3本から"&vbCr _
    & "raid6:" & raid6 & "GB 4本から"&vbCr _
    & "最大容量:" & gb & "GB"&vbCr _
    & "HDDの容量:" & m & "GB"&vbCr _
    & "HDDの本数:" & p & "本"
MsgBox ans, , "答え"

プログラムをコピーペーストして拡張子を(.vbs)して開くとRAID容量の計算ができる。

このプログラムではRAID0,1,1e,10,5,6が計算できる。

Defunct Disk Drive 編集

無効ディスクドライブ (DDDDefunct Disk Drive) とは、RAIDを構成するディスクにおいて何らかの障害が発生し、RAIDの構成ディスクから外されたディスクないしその状態を示す[23]

Spare Disk Drive 編集

予備ディスクドライブ (Spare Disk Drive) (予備ディスク)は、RAIDの構成で普段は使用されていないが、使用中のいずれかのディスクに障害が発生した時にそのディスクを置き換えることに備えて接続されているハードディスク装置である。ベンダーによって呼称は異なるが、ホットスペアに該当するものである。

たとえば、全部で4台のディスクのうち3台でRAID 5を構成するシステムを考える。RAID 5中のいずれか一台のディスクが故障すると、予備ディスクで故障ディスクを自動的に置き換えて元通りRAID 5を構成する。

これら4台のディスクでRAID 6を構成しても同じ実効ディスク容量が得られるが、それと比較して予備ディスクは以下の利点・欠点をもっている。

  • 利点: RAID 5なのでRAID 6に比べて書込み速度が速い。予備ディスクは普段は動作していない(ただし通電は継続)ので寿命が長くなることが期待される。
  • 欠点: 予備ディスクで故障したディスクを置き換えてリシンク(resync、再同期)が終了するまでの間(2013年の技術で1TBあたり10分以上)はシステムは冗長性を持っていないので、さらにもう一台のディスクが故障するとシステム全体の情報が失われる。

また、4台のディスクのうち3台でRAID 1を構成すると、上記のリシンク中の冗長性欠如のリスクは大幅に低減する。

RAID中に組み込まれたディスクはリアルタイム・オンラインで冗長性を作り出しているのに対して、予備ディスクは実際の故障発生時にオフラインバッチ処理でまとめて冗長性を作り出していると見ることもできる。

非RAID設計 編集

一般的に複数のディスクを構成する際にはRAIDが使用されるが、RAIDを使用しないディスク構成も存在する。

  • JBOD (Just a Bunch Of Disks) は複数の物理ディスクを一つのディスクとして扱いアクセスする[24]。冗長性はない。
  • スパニング (SPANNING) とも呼ばれる[25]

参考文献 編集

脚注 編集

  1. ^ 略称でない名称に関しては諸説ある。後述のパターソンの論文ではRedundant Arrays of Inexpensive Disksであるが、用語辞典によってRedundant Array of Inexpensive Disksであったり、Redundant Arrays of Independent Disksであったりする。出典: カシオEX-word XD-SF6200収録の日経パソコン用語事典、NE最新略語小辞典
  2. ^ パターソン&ヘネシー (下)p.530
  3. ^ Patterson(1988)
  4. ^ パターソン&ヘネシー (下) p.530
  5. ^ a b c あまり使用されないRAIDレベル”. 2018年1月7日閲覧。
  6. ^ RAID – WHAT IS RAID? AND SETUP GUIDE FOR FIRST TIMERS”. 2018年1月8日閲覧。
  7. ^ a b ソフトウエアRAIDとハードウエアRAIDの違いは?”. 2018年1月7日閲覧。
  8. ^ DELL製、PERC Sシリーズ等
  9. ^ ストライプ ボリューム (RAID 0) の作成方法”. 2018年1月7日閲覧。
  10. ^ The Software-RAID HOWTO”. 2018年1月7日閲覧。
  11. ^ FreeBSD Manual Pages”. 2018年1月7日閲覧。
  12. ^ Intel Matrix Storage Manager 8.x User's Manual”. 2018年1月7日閲覧。
  13. ^ ハードウェアRAIDとHostRAIDの違いは何ですか?(Adaptec Support Knowledgebase)[リンク切れ]
  14. ^ Enabling and Setting Up Staggered Spin-up”. 2018年1月7日閲覧。
  15. ^ RAID 0+1とRAID 1+0をそれぞれ4台のドライブで構成し、ランダムに各2台のドライブが故障したと仮定すると、RAID 0+1が破壊される確率は2/3、RAID 1+0が破壊される確率は1/3である。
  16. ^ 同様に16台(8ストライプ・2ミラー)でRAID 0+1と1+0を組み、各2台が故障した場合、RAID 0+1が破壊される確率は8/15、RAID 1+0が破壊される確率は1/15となる。
  17. ^ 各ストライプ、各ミラーのコントローラがそれぞれ別となっている場合、RAID 1+0はコントローラが1つでも故障すると破壊されるが、RAID 0+1はRAID 0領域のコントローラ故障に対して、そのすべてが同時に故障しない限り耐えられる。
  18. ^ a b 2.RAID 2とRAID 3、RAID 4とは”. 2018年1月8日閲覧。
  19. ^ 8台のドライブ(4台構成RAID 5×2台構成RAID 0)でRAID 0+5と5+0を組み、各2台が故障した場合、RAID 0+5が破壊される確率は6/7、RAID 5+0が破壊される確率は3/7。
  20. ^ 8台のドライブ(4台構成RAID 5×2台構成RAID 1)でRAID 1+5と5+1を組み、各4台が故障した場合、RAID 1+5が破壊される確率は3/35、RAID 5+1が破壊される確率は18/35。
  21. ^ 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の確率で破壊される。
  22. ^ 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台分の容量が利用可能である。
  23. ^ ServeRAID - Recovery Procedures for DDD Drives”. 2018年1月7日閲覧。
  24. ^ RAIDレベルを理解しよう (2/3)”. 2018年1月7日閲覧。
  25. ^ ハードディスクとRAIDの基礎を学ぼう”. 2018年1月7日閲覧。

関連項目 編集

外部リンク 編集