RAIDってナニ?

まずは、ご存じのない方のために簡単に解説しておきましょう。RAIDは、Redundant Array of Inexpensive Disksの略で「レイド」と読みます。
直訳するなら安価な複数のディスクによる冗長化されたアレイ(配列)とでもいいましょうか? 
で、まぁ、教科書的には、UCBの教授による' 87年の論文に起源があり……、なんていう説明がつきますが、
要するに複数のディスクの集合にデータを配置して、一部のディスクが故障してもアレイ全体のデータは保全されるというかたちで、信頼性を得ようという手法です。
 件の論文では、その種類としてRAID1〜RAID5の5種類が挙げられていますが、現実にはすべての方式が現実の製品として実装されているわけではありません。
最近安価なPC用の製品としてよく利用されるのは、RAID1とRAID5でしょう。実際には、RAID0というものもありますが、これは厳密にはRAIDではありません。
 もっとも単純なRAID1は、ミラーリングといわれる方式です。
これは、2台のディスクを用意してそれぞれに同一のデータを書き込むことで、1台が故障しても、もう1台で運用が続けられるというものです。
次に説明するRAID5のように書き込み時にパリティの読み出しと再計算などをせず、単に同じデータを2 台に書き込むだけなので、単体のドライブの場合とほぼ同じ速度で書き込むことができるのが特徴です。
読み出し時は実装によっては、双方のディスク時から別々のデータを読み出すことで高速化を可能にしているものもあるようです。
ただし、全体のディスクの容量の半分しか使えないという欠点があります。

RAID1
RAID1(ミラーリング)は、2つのディスクに同一のデータを書き込む

 RAID5は、複数のディスクに順番にデータを書いていくほか、パリティと呼ばれるデータを書き込むことで冗長性を得ています。
たとえば、DISK1〜DISK4 の4台のディスクからなるRAID5によるアレイがあり、そこに、DATA1、DATA2、 DATA3……というデータのブロック(RAID5では一定の長さのブロック単位で書き込みます)を順に書いていく場合を考えてみましょう。
  まず、DATA1はDISK1 に、DATA2はDISK2に、DATA3はDISK3と順次書き込んでいきます。
ここで、 DISK4にはDATA4ではなく、DATA1〜3から計算したパリティを書き込みます。
パリティは、DATA1〜3のデータの排他論理和(XOR)を取った値です。
くわしい解説は避けますが、この場合、DISK1〜4に書き込んだこれらのブロックのいずれかの1つが失われても、ほかの3つから失われたデータが復元でき、それによって冗長性が確保されています。

RAID5
RAID5では、パリティとして各ビットの排他論理和(XOR)を取った値を使用する

 RAID5では、パリティを書き込むディスクをローテーションすることで、書き込み時のパフォーマンスを向上させています。
なぜなら、データを書くたびにパリティは必ず書かなくてはならず、パリティを書くディスクが同一(RAID4 の場合はそうです)だと、ディスクのアクセス速度の関係で全体的なスピードが低下してしまうのです。
とはいえ、書き込み時には、パリティを読み出して再計算し再度書き込まなくてはならないため、読み出し時に比べると書き込みのパフォーマンスは落ちてしまうことはさけられません。
RAID5の利用効率は、 4台のディスクから構成すると全体の3/4の容量というふうに、n台の場合は全体の(n-1)/n倍の容量となります。

RAID0
RAID0として知られるストライピングは冗長性はまったくないが、高速でのアクセスが可能

 ちなみに、RAID0として知られるものは、「ストライピング(ブロックストライピング)」と呼ばれるもので、データの書き込みを複数のディスクに分散することで、速度の向上とより大きなボリュームサイズを得られます。
そのため、動画像などの編集などに適しています。
ブロックストライピングを利用したものという点ではRAID5と同じですが、RAID0にはパリティなどの冗長性はないため、1台が壊れると全体が利用できなくなるたってしまいます。
そのため、信頼性という点ではディスク1台の場合よりも劣ってしまいます。
 このほかにも、RAID1とRAID0を組み合わせたものを、RAID10、RAID1+0などのように、メーカー独自の呼び方で呼ぶこともあります。

  そのほかに ソフトウェア RAID
「ソフトウェアRAID」とは、一見するとミラーリングやストライピングといったRAIDの機能を、ハードウェアRAIDコントローラだけで実現しているように見えるが、実際には内部でPCのプロセッサによるソフトウェア処理が大部分を占めている方式を指す。
安価なRAIDカードは、この方式を採用していることが多い。
OSだけで実現する純粋なソフトウェアRAIDのことではないので注意しください。
かつてはさまざまなメーカーからRAIDを実現するソフトウェアが発売されておりましたが今では秋葉原のジャンク屋さんでしか手に入らないかもしれません。
LinuxやSolarisではまだ使っている方もいらっしゃるとは思いますが・・・
なぜなら、「Windows 2000 SERVER」にてソフトウェア RAIDが実現されてしまったからです。
また、IDE-RAID機器も1999年頃から安価で個人でも手に入りやすくなってきているからです。
そして、さらに、2003年春にIntelからチップセット「Intel 875P」や「Intel 865G/PE/P」にてICH(I/O Controller Hub)いわゆるサウスブリッジがICH5でRAID0とRAID1がIAA RD3.5によって「Windows 2000 Pro」「Windows XP」へ提供されるようになったからでしょう・・・

20040505

ハードウェアRAID
ハードウェアベースのRAIDシステムは、RAIDサブシステムをホストから独立したものとして管理します。
ホストに、各RAIDアレイ毎に単一のディスクを提供します。

ハードウェアRAIDデバイスの例としては、SCSIコントローラに接続して、RAIDアレイ群を単独のSCSIドライブのようして提供するデバイスです。
外部RAIDシステムは、RAIDの処理機能をすべて外部ディスクサブシステムに存在するコントローラに移します。
サブシステム全体が通常のSCSIコントローラを介してホストに接続されるため、ホストからは単一のディスクのように見えます。

RAIDコントローラもカードの形をしており、オペレーティングシステムに対するSCSIコントローラのような役割を果たしますが、ドライブとの実際の通信はすべて自分自身で処理します。
この場合、ドライブはSCSIコントローラの場合と同様にRAIDコントローラに接続されますが、ドライブはRAIDコントローラの設定に追加されるため、オペレーティングシステムからは違いを認識することはできません。

ソフトウェアRAID (Linuxの場合)
ソフトウェアRAIDは、カーネルディスク(ブロックデバイス)コードでさまざまな RAIDレベルを実装します。(Linuxの場合)
これは低価格のソリューションを提供しますので 高額なディスク制御カード又は、ホットスワップシャーシ は必要としません。
ソフトウェアRAIDは、またSCSIのディスクだけでなく、より低額の IDEのディスクでも機能します。
最近の高速CPUを使用すれば、ソフトウェアRAIDの性能は ハードウェアRAIDに勝る可能性もあります。
Linuxカーネルに含まれるMDドライバはRAIDソリューションの一例であり、ハードウェアから完全に独立しています。
ソフトウェアベースのアレイの性能は、サーバーCPUの性能と負荷に依存します。

ソフトウェアRAIDで実現可能な機能についてさらに詳しく知りたい場合は、以下の重要な機能に注目してください:
スレッド化された再構築プロセス
カーネルに基づいた構成
・再構築せずにLinuxマシン間でアレイを移動可能
・ アイドル状態のシステム資源を使用する、バックグラウンドでのアレイ再構築
・ ホットスワップ可能なドライブをサポート
自動CPU検出により、特定のCPU最適化機能を利用