RAID

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

RAIDRedundant Arrays of Inexpensive (もしくはIndependent) Disksレイド)とは、複数台のハードディスクを組み合わせることで仮想的な1台のハードディスクとして運用する技術。ディスクアレイの代表的な実装形態で、主に信頼性の向上をねらって用いられるものである。

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

目次

概要

1988年カリフォルニア大学バークリー校デイビッド・パターソン, Garth A. Gibson, Randy H. Katzによる論文「A Case for Redundant Arrays of Inexpensive Disks (RAID)」に於いて提唱された。これはSIGMOD Conference 1988: pp 109-116 で発表された。

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

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

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

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

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

RAIDが一般ユーザに普及してきた要因

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

RAIDはバックアップの代替となるか?

答えは『ならない』、RAIDは「データを保護する技術」ではなく、「データ(およびシステム)をHDDの障害から保護する技術」という正しい認識を持つべきである

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

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

RAIDの方式

RAIDを実装する方法としては、ハードウェアで実現する方法(ハードウェア方式)とソフトウェアで実現する方法(ソフトウェア方式)がある。

ハードウェア方式

ハードウェア方式は、RAIDコントローラカードを使用するものとディスクアレイユニットを用いる2方式が存在する。

RAIDコントローラカード

シリアルATA RAIDカード

この方式は、RAIDコントローラと呼ばれるカードを装置に取り付け、パリティ演算やディスクの管理などを任せるものである。一部のマザーボードにはRAIDコントローラをあらかじめ実装している製品がある。

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

近年、チップセットにRAID0/1/0+1コントローラ機能を集積したサーバ向けチップセットが広く普及している。このハードウエアはパリティ演算などは行わない。基本的な構造はMUX(マルチプレクサ)/DEMUX(デマルチプレクサ)で構成されており、CPUが発行したディスクI/O操作を複数のハードディスクへのディスクI/Oに分散・またディスクからの読み出しの多重化を行う。信頼性はもとより、ディスクI/O速度を高速化する総合アクセラレータ的要素が強い。

ディスクアレイユニット

コンピュータやOS側からは単なるSCSIファイバーチャネルのドライブとして見えるため、特別なドライバが必要なく、CPUへの負荷が全くない。更に、ホットスワップやホットスペアはもとよりオートリカバリ機能を備えているため、運用コストをも低減することが出来る。ディスクアレイユニット内のハードディスクが故障した場合は、シリアルポートイーサネットを通じて状態を監視ソフトに通知する機能が備わっている。また、ディスクアレイユニットの中にはデファレンシャルSCSIやファイバーチャネルを使い、2台のサーバで1台のディスクアレイユニットを共有出来るものもある。複数台のディスクアレイユニットを組み合わせて専用の制御用サーバがセットになったものもある。


ディスクアレイユニットを接続したい装置に必要な外部接続インタフェースがすでにあれば装置の筐体を開けることもなく、ケーブルをつなぐだけで使えるようになる。

ソフトウェア方式

ソフトウェア方式は、OS自身が普通のドライブ コントローラ (IDE, SCSI, FC など) を通して複数台のディスクを管理する。この方式はハードウェア方式と比較し、CPUへの負荷が高いが、特別なハードウェアを購入する必要がないという利点がある。

ソフトウェアRAIDの実現には、OS・ファイルシステム・単体ソフトウェア・チップセット・増設RAIDボードなど複数の方式が存在する。

Windowsは、NTFSファイルシステムにおいてRAID機能をサポートしている。Linuxは、カーネルにてサポートしている。FreeBSDは、gmirrorというソフトウェアにてサポートしている。ファイルシステムのZFSには、RAID5相当の機能(RAID-Z)が存在する。インテルのチップセットでは、マトリックス・ストレージ・マネージャー機能によりRAID機能をサポートしている。Adaptecの低価格RAIDボードでは、HOST RAIDによりソフトウェアRAIDを行っている。

RAIDレベル

raid 0からRAID 6まで7種類のうち、実際に利用されるのはraid 0raid 1raid 5、RAID 6で、RAIDコントローラやソフトウェアによって使用できるレベルが限定されている場合が多い。

サーバ用途としては、データの保全性を重視するためraid 1またはraid 5が主に利用されている。サーバ台数の限られた環境で、一台のサーバにかかる負担が高い場合はこれらにraid 0を組み込んで高速化を狙うケースもある。(もちろんサーバ自体を増設して、一台あたりの負担を軽減することも検討すべきであり、負荷の度合い・設置場所の都合・予算などを多角的に検討する必要がある。単にraid 0をかぶせて高速化することだけに過度の期待を寄せるべきではない) RAIDの方式によらず、サーバ用途の場合はトラブル発生時に速やかなハードディスク交換を実施できる態勢を採るのが重要であり、ホットスペアやホットスワップ対応の製品を用いるのが望ましい。

また、ある種のアプリケーションは、制御情報はraid 1またはraid 5のファイルシステムに保存し、マルチメディアデータはraid 0に保存するとともにテープや光メディアにバックアップしている。

各RAIDレベルを組み合わせて信頼性と速度を両立させることができる。ただしハードディスクの必要台数が増えるため、特にRAIDコントローラカードを用いて装置内部にハードディスクを取り付けている場合、電源がハードディスク台数分の負担に耐えられるか注意すべきである。

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 1raid 5などを速度の向上を図る目的でストライピング化した形で用いられることも多い。

長所
  • 構成ドライブの全ての容量が利用可能。
  • ドライブ数が増えれば増えるほどアクセス速度が上がる。
短所
  • 冗長性が全くない。
  • ドライブ数が増えれば増えるほど故障率が上がる。
  • 性能を100%引き出すには、I/O性能の向上に見合った帯域を持ったバスアーキテクチャが必要となる。

raid 1: 二重化 (ミラーリング)

raid 1

raid 1は複数台のハードディスクに、同時に同じ内容を書き込む。これをミラーリングと呼ぶ。 raid 1は最もシンプルな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の読み出しは、一つのドライブのみにアクセスし、もう片方は、完全なバックアップドライブである。これを双方から読み出すようアルゴリズムを拡張することで、理論上、単体ディスクの2倍の速度で読み出しを行える。

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

長所
  • 復旧が速い。
  • RAIDハードウェア/ソフトウェアなしでも使用できる。
  • ハードディスク故障時にも性能が低下しない。
  • コントローラの故障に対応する冗長構成が可能。
  • ドライブ数が増えれば増えるほど耐障害性が上がる。
短所
  • 構成ディスク容量に対するデータ記録可能量が常に構成ディスク台数の逆数倍であるため効率が悪い。
  • raid 1の容量は、構成するドライブの中でもっとも小さな容量に決定され、余った部分は利用できない。
  • RAIDの中で唯一ディスクサイズの大容量化、高速化を目的としていない。
  • 既存のシステムにドライブを追加し、raid 1を導入する場合は細心の注意が必要である。なぜならば、中身が空である追加した方のドライブを複製してしまう危険性があり、重要なデータを全て失うかもしれないからだ。よってデータの複製の方向を十分に確かめなくてはならない。特に同一機種のドライブを用いた場合、操作画面での確認が難しくなるため、いっそうの注意が求められる。(とはいえ、これは事前にバックアップを取るよう心がければ良い問題。RAIDとバックアップは相補しつつも代替しない事の好例)
raid 0+1
raid 1+0

raid 1+0とraid 0+1

raid 0raid 1を組み合わせた構成を特別にraid 1+0(raid 10)/raid 0+1(raid 01)と呼ぶ。高速化、大容量化を目指したraid 0と高信頼性を求めたraid 1を組み合わせることにより、速度、容量、耐障害性の向上を図ることができる。最低4ドライブ必要である。

raid 0raid 1は相性がよく、組み合わせ次第ではRAID 6よりも耐障害性が高くなる。raid 1を使用しているためコントローラの2重化にも対応できるので、容量が必要でなおかつ強力な耐障害性を求める場合に採用されることが多い。

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

RAID 2: ビット単位での専用誤り訂正符号ドライブ (ECC)

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

RAID 2の実装に必要なドライブ数は訂正可能ビット数により異なるため、一意に記述することは出来ない。最低で5ドライブを必要とする。

長所
  • 全RAIDレベルの中で最高の耐障害性を持つ。
短所
  • ハミングコード計算コストが莫大である。
  • ディスクの使用効率が極めて悪い(1bitECCの場合、6台構成でraid 1相当)。

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

RAID 3

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

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

RAID 3はraid 5に取って代わられた。RAID 3に対応した機器をこれから手に入れることは不可能と考えてよい。ビデオ編集機器においては、アクセスの殆どがシーケンシャルアクセスであることから、現在でもRAID 3が用いられている場合があるが、パソコンやサーバでRAID 3を用いる理由はもうない。

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

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

RAID 4

RAID 4はRAID 3のI/O単位をブロックに拡大し、I/O効率の改善を計ったものである。 性能面でraid 5に劣るRAID 4は廃れつつある。

長所
  • アクセス単位がブロックになっているため、RAID 3より高速なI/Oが望める。
短所
  • パリティドライブは書き込み処理時のボトルネックになり得る。(これに対する解がRAID5)

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

raid 5

raid 5は複数のハードディスクに誤り訂正符号データと共に分散させて記録することで、RAID 3、RAID 4のボトルネックを回避している。最低3ドライブが必要である。RAID1やRAID1+0に比べて使用効率に優れている。またRAID0のように複数のディスクに分散しているため読み出し性能が優れている。一方で書き込む場合にはパリティを作成しなおすために、ディスクから読み出しとパリティ演算が必要となる。

長所
  • ボトルネックとなる、RAID 3やRAID 4のような専門のパリティドライブが存在しない。
  • ドライブの台数が増えるほど高速化を見込める。
短所
  • 読み出しは高速であるが書き込みは低速である(特にドライブ台数が少ない場合)。
  • 障害発生時の復元作業が遅い。
  • ハードディスク故障時に性能が低下する。
  • 2つ以上のドライブが同時に故障すると回復できない。(これに対する解がRAID 6)

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 5raid 0のどちらを先に行うかで名前が変わる。raid 5のセットによるストライピングを行うraid 5+0のほうが、次の理由で優れているといえる。

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

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

raid 5+5

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

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

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

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

RAID 6

RAID 6は任意の2つのハードディスクに障害が発生してもデータが復元できるRAIDである。冗長データを2種類作成し2つのディスクに記録することで、2重障害に対応でき、同時に2ドライブが故障しても復元できる。最低4ドライブを必要とする。1つの冗長データはRAID5と同じようにパリティ符号を用いる。もう1つの冗長データは、異なるアドレスのデータからパリティを生成する方式(対角線パリティ)や、異なる係数を乗算してから生成する方式(リード・ソロモン符号)など、複数の実装形態がある。raid 1のミラーリングを3重化した場合も2つのハードディスク障害に対応できるが、これは通常RAID 6とは呼ばない。

長所
  • 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 Z: 可変ストライプ幅

RAID Zはraid 5やRAID 6と似た機構を持つが、ストライプ幅を可変とすることで速度と耐障害性を向上させたものである。

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

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

脚注、参考文献

  1. ^ raid 0+1とraid 1+0をそれぞれ4台のドライブで構成し、ランダムに各2台のドライブが故障したと仮定すると、raid 0+1が破壊される確率は2/3、raid 1+0が破壊される確率は1/3である。
  2. ^ 同様に16台(8ストライプ・2ミラー)でraid 0+1と1+0を組み、各2台が故障した場合、raid 0+1が破壊される確率は8/15、raid 1+0が破壊される確率は1/15となる。
  3. ^ 各ストライプ、各ミラーのコントローラがそれぞれ別となっている場合、raid 1+0はコントローラが1つでも故障すると破壊されるが、raid 0+1はraid 0領域のコントローラ故障に対して、そのすべてが同時に故障しない限り耐えられる。
  4. ^ 8台のドライブ(4台構成raid 5×2台構成raid 0)でraid 0+5と5+0を組み、各2台が故障した場合、raid 0+5が破壊される確率は6/7、raid 5+0が破壊される確率は3/7。
  5. ^ 8台のドライブ(4台構成raid 5×2台構成raid 1)でraid 1+5と5+1を組み、各4台が故障した場合、raid 1+5が破壊される確率は3/35、raid 5+1が破壊される確率は18/35。
  6. ^ RAID-51による高冗長化 (株式会社ニューテックによる製品解説)
  7. ^ 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の確率で破壊される。
  8. ^ 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台分の容量が利用可能である。

関連項目

外部リンク

ウィキメディア・コモンズ

Article keywords: raid controller, raid 0, raid 1,

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net