RAID(レイド(Redundant Arrays of Inexpensive (もしくはIndependent) Disks )とは、
「複数台のSSD、HDDをひとつのドライブとして運用するシステム」のこと!
読み書き速度2倍とか高速化ができたりする。

今時のマザーボードだったらたいていオンボードの追加機能でRAIDが組めるようになっている。
説明書読め。
また、Windowsのディスク管理からもRAIDの設定ができる。ググれ。
ただこれらはCPU処理なので、CPUに若干負荷がかかる。
ほんのちょびっとだけど。

それが嫌な人はRAIDボードというハードウエアで処理するボードが市販されている。
信頼性、速度、キャッシュなんかの面から考えるとこれ使った方が良いっちゃ良い。
でも高い。
3万円~ってかんじ。
それ以下のもの使うんだったらオンボのでおk。
安いRAIDカードは大抵ソフトウェアRAIDカードなのでオンボと大差無い。

で、そのRAIDにはいくつか種類があって、使われるのは大体RAID0,RAID1,RAID5なんでそれを以下で説明する。
RAIDを組むとOSからはS.M.A.R.T.なんかの情報が直接読めなくなるので、へたしたらSSD、HDDが壊れているのに気付かずに使い続けてしまう可能性がある。
マザボのデバイスドライバ付属CDにRAIDを監視するツールが入ってることがあるので、確認してインストールしてドライブを監視しといたほうがいい。


RAID0

同じ容量を持ったドライブ A と B を、「1つの A+B の容量を持ったドライブ」として扱うRAID のこと。
ストライピングとか言う(二台の容量が違う場合は RAID ボリュームのサイズは小さい方の容量 * 2 となる)。
A と B を結合させてるのでドライブにアクセスする速度は理論上最大 2 倍になる(MLC SSDのRAID0だと1000MB/s前後というPCIe SSD並の速度を叩き出す)
(要するに1つのデータを2人で分担して書き込んでいると思ってもらえばいい)。
まあ実際は 2 倍なんていかないけどね。それでも 1 台ずつ扱うよりは高速にデータ転送ができる。(ほぼシーケンシャルのみ)
ただ、RAID0 で注意するべきは故障率。A と B の故障率が共に n の場合ドライブCが故障する確率は (1-n)(1-n)=1-2n+n^2(n<<1のとき≒1-2n) として単機使用の時と比べて約 2 倍。
ここでは 2 台で説明したけど 3 台でも 4 台でも増やせば増やすほど早くなり(もちろん頭打ちがあるけど)、故障率はあがる(こっちは無限にあがっていくよ!)
更に故障やアレイがぶっ壊れた場合、データを細切れにして二台に書き込む RAID0 は復旧が困難だよ!
RAID0 は動画編集の一時保存領域とか、いつデータが消えても困りはしないがとにかくシーケンシャルが欲しい場合(例えば起動ドライブとか)に使う。(MLCタイプのSSDを推奨する)
データが消えて困る場合はよりシーケンシャルが高速なM.2SSDを単体で使った方がずっとマシ。

SSD1 1 3 5 7 9 11 13 15
SSD2 2 4 6 8 10 12 14 16
何度も言いますがRAID0はSSD推奨です
HDDではやらないように

JBOD

JBOD は RAID0 に似ているが、ストライピングではなくスパニングと呼ばれ、単に複数台の HDD をくっつけて1つのボリュームを作成し、OS 上からひとつの巨大な HDD として認識させる機能。RAID では無いが大抵の RAID チップでサポートされているのでよく目にする。RAID0 が基本的に同じ容量の HDD を複数台用意するのに比べ、こちらは容量が不揃いでも構わない。例えば 80GB、400GB、1TB、2TB の四台で JBOD を組むと単純に全部足して 3480GB のボリュームが作成できる。RAID0 と比べ同時に複数の HDD にアクセスする訳ではないのでシーケンシャル速度は向上せず、RAID0 同様に信頼性は低下する。JBOD はハードウェア・ソフトウェア RAID カードを用いなくとも OS の機能でもスパニングボリュームの作成が可能な場合がある。

小容量の HDD を複数台纏めて大容量のボリュームが作成できるが信頼性も低下するしより大容量の HDD を一台に纏めた方が搭載スペース・消費電力も減ってずっとよい。基本的には、RAID カードに接続しているんだけども単機で使いたい HDD を一台だけで JBOD ボリュームに設定し OS に認識させる以外の使い道は無い。

HDD1 1 2 3 4 5 6 7 8 1000
HDD2 1001 1002 1003 1004 1005 1006 1007 1008


RAID1

RAID1 は最も典型的な RAID といっていい。
ドライブ A と B がある時、A と B の両方に同じデータを書き込む。つまり冗長化というか、常にコピーを取っている状態と思ってもらえばいい。
もちろん使える容量は実ドライブ総容量よりも小さくなる。1TB の HDD 2 台で RAID1 すると使える容量は 1TB。750GB と 1TB でやると小さい方にあわせるので 750GBになる。
ただオンボ RAID1 では RAID0 のように速くはならない(たっかいハードウェア RAID カードでは同時アクセスを行い読み出しが高速化するものもある)。
片方のドライブが故障しても片方が生きている限りデータは復旧可能。
つまり 1/100 の確率で故障するドライブなら 1/10000 の 1 の確率でしかデータは失われない。めちゃくちゃ大切なヌけるエロ動画保存にどうぞ。
アレイがぶっ壊れても RAID メンバのどれかひとつが生きていれば完全に復旧できるし、非 RAID の SATA コントローラーに接続しても大抵単体ディスクとしてそのまま認識できるので(つまり他のパソコンに繋いでそのまま認識できるはず)安全性が高い。

但し電源の故障で同時に二台(以上)同時に故障したり、ユーザーの操作によって過ってファイルを削除してしまったりといったケースには対応不可能。バックアップの代わりにはならない事に注意。定期的にディスクの過去のバージョンを保存するには OS 上のシャドウコピー/スナップショットを使え。また電源故障や雷直撃に備えて定期的なバックアップも欠かさずやろう。

書き込み速度が違う、または同じ 2TB 表記でも実際にはメーカーや機種によって僅かに容量が違う事が原因のトラブルを防止する為、基本的に全く同じ型番の HDD を二台(以上)用いるのが望ましいが、全く同じロットの HDD を二台使用した場合壊れるタイミングまでほぼ同じになってしまうので、二台を別々の店で買ったり買う時期をずらしたりしてロットをずらすのが望ましい。

HDD1 1 2 3 4 5 6 7 8 1000
HDD2 1 2 3 4 5 6 7 8 1000


RAID5

2~4 はどうしたって?俺もよく知らないしそもそも普通使わねーから気にすんな。知りたければggr
3 台以上のドライブで構成する RAID で 1 台だけは壊れちゃっても大丈夫な RAID。

[理屈]
今 n(≧3) 個のドライブから構成されてるとする
あるデータ A があったとして、それが n 個のドライブにわたって記述されてるとするだろ?
RAID0 基準で考えると n 個の中の 1 個でも故障したらデータは復旧できないよな
だが RAID5 は違う。パリティってのが各ドライブに記述されてる。
n 個のうち 1 個が失われた時、手元にあるデータは n-1 個のドライブのデータとパリティだ
なんと RAID5 はパリティを元にしてなくなった 1 個のドライブに記述されていたデータを復旧させることができる。
連立方程式とか解いてなくなったデータを求めるらしい すげえ!

 RAID5 は上記のように RAID アレイにアクセスするたびに常にパリティ計算・リードモディファイライトを行うのでオンボだとかなり遅くなる上 CPU 負荷が高くなる。ハードウェア RAID カードなら IOP (パリティ計算専用チップ) が乗っているのでアクセスもリビルドも多少マシな速度になる。RAID5 は最低三台から組めるがより台数を増やすことでより高速に (ハードウェア RAID カードなら) なり、台数を増やしてもパリティ用のドライブは一台なので台数を増やせば増やす程ディスクの利用効率が高まる。

 RAID5 は RAID1 が搭載容量の半分以下の容量しか使えないのに対して n(RAIDメンバ)-1 の容量、つまり 1TB * 3 で組んだ場合 2TB 使えるので一時期注目され、最近ではオンボでも大抵組めるのだが基本的にオンボではリビルド含めて遅過ぎるし、複数台HDDがぶっ壊れた時の復旧が難しいのでやらない方が良い。また停電等でパリティとデータの不整合が起きるとその後一見正常に見えてもデータが徐々に破壊されるサイレントクラッシュという現象が起きる場合がある。RAID カードにキャッシュが付いている場合は必ず BBU (バッテリバックアップユニット)も装着しよう。っていうか RAID5 やるなら無停電装置買え。ぶっちゃけRAID1 の方がディスクの利用効率は低いが信頼性は高いよ!

HDD1 A1 A2 P3 A4 A5 P6 A7 A8 A1000
HDD2 B1 P2 A3 B4 P5 A6 B7 P8 B1000
HDD3 P1 B2 B3 P4 B5 B6 P7 B8 P1000


RAID6

RAID5 は基本的に同じ HDD 複数台で運用するので、1台故障→他の同時期に導入したのもそろそろ故障するっていう理由も助けて 一個壊れた直後の復旧作業中にもう1個が壊れたりということがままある。いやまじで。かなり泣ける。そんな人のために 2 個まで壊れて OK な RAID6 なるものもあるよ!
RAID6 はパリティを二重にする方式で最低 4 台から組める。n(RAIDメンバ数)-2 分の容量となり、4 台 で RAID6 した場合 RAID1 と同じディスクの利用効率 1/2 となるが、RAID 5 同様台数を増やすことで 3/5、2/3、5/7 と利用効率がが高くなる。但しパリティが二重な分パフォーマンスは RAID5 に劣る。サイレントクラッシュの危険性があるのは RAID5 同様。オンボじゃあんまりサポートされてない。データを冗長化したいなら素直に RAID1 を組もう。

HDD1 A1 A2 P3 Q4 A5 A6 P7 Q8 A1000
HDD2 B1 P2 Q3 A4 B5 P6 Q7 A8 B1000
HDD3 P1 Q2 A3 B4 P5 Q6 A7 B8 P1000
HDD4 Q1 B2 B3 P4 Q5 B6 B7 P8 Q1000


RAIDZ

ZFS ファイルシステム上のソフトウェア RAID でこのサイレントクラッシュの問題を完全に回避する RAIDZ なるものが最近登場した。基本的な仕組みは RAID5 同様パリティを用いる方式だが、ストライプ幅可変で常にストライプ全体に書き込みリードモディファイライトが発生しないのでパフォーマンスも改善している。シングルパリティで RAID5 相当の RAIDZ、ダブルパリティで RAID6 相当の RAIDZ2、トリプルパリティの RAIDZ3 等がある。無論 ZFS ファイルシステムが使える Sun Microsystems の Solaris って OS じゃなきゃ使えないけどね!
最近FreeBSDにも取り込まれたので、ZFSはFreeBSDでも使えるよ。


RAID10,RAID1+0,RAID0+1,その他

各 RAID を組み合わせることもできる。
たとえば RAID1+0 普通は RAID10 とか呼ばれてる
RAID1 を組んでいるドライブで RAID0 を組む
ちょっと難しいが RAID0+1 とは違うぞ? 何が違うかはよく考えてくれ
RAID10 はオンボでもサポートされてる場合があり、RAID1 同様ディスクの利用効率は 1/2 だが RAID5 や 6 より信頼性が高いよ!他に RAID5 や 6 とその他を組み合わせた RAID5+0、5+1、5+5、6+0、6+1、6+6 とかそれ以上のもあるが、かなり本格的なハードウェア RAID カードじゃないと出来ないのであまり気にするな。


ホットスペア

ホットスペアとは、常に通電されているが平時は特にアクセスされないディスクで、上記の RAID5 や RAID6 、または RAID1 等の各種 RAID アレイで使用できるオプションのひとつ。RAID メンバのひとつが故障した際、ホットスペアが無いシステムでは手動でディスクを入れ替えてリビルドとなるが、ホットスペアがある場合は自動的にホットスペアに対してリビルドが行われる。ハードウェア RAID カードの中でもかなり本格的な奴じゃないと対応してない。


IntelチップセットのMatrix RAID


上の RAID レベルとは全然別次元の話だが、従来の RAID コントローラーと異なり比較的柔軟な RAID が構築できるようになっている。例えば 500GB の HDD 二台で先頭 100GB づつを RAID0 して 200GB のボリュームを作成し、後半 400GB づつは RAID1 でミラーリングするなど。ただ、Intel はドライバの完成度があまり高くない。
http://www.intel.com/jp/support/chipsets/imsm/sb/cs-020681.htm

一例
RAID0 アレイ RAID1 アレイ
HDD1 a1 a3 a5 a199 b1 b2 b3 b4 b400
HDD2 a2 a4 a6 a200 b1 b2 b3 b4 b400


ストライプサイズとパーティションアライメント


ストライプサイズはデータを短冊切りにして複数のディスクに記録する RAID0 や RAID5 で設定できる項目で、
何 byte 毎に短冊切りにするかというもの。4/8/16/32/64/128KB… 等の選択肢がある場合が多い。
どのサイズを選ぶかでパフォーマンスが変わる場合があるが、RAID ボリュームに置くパーティションの種類やデータ等の環境によって最適なサイズは変わってくる。

パーティションアライメントは AFT の HDD や SSD でお馴染みだがこれは RAID ボリュームでも行う必要があり、
例えばストライプサイズが 4KB なのにパーティション開始セクタが 63 = 31.5KB だったりするとランダムアクセス性能がかなり悪化する事になる。
Microsoft は殆どのストライプサイズに対応できる 2048 セクタ目 = 1MB をパーティション開始セクタにするよう推奨している。


RAID に向く HDD と向かない HDD


RAID 0に限って言えばMLC SSDでやった方がいいと思うけどね、俺的には(3DでないTLCは書き込みが急に遅くなるのでおすすめしかねない)
基本的に遅いドライブは向かない。特に省電力の為に自動的にヘッド退避やスピンダウンする HDD はレスポンスが悪すぎて RAID コントローラーが故障と判断してしまう可能性もある。(WesternDigital WD20EARS とか。)またバッドセクタが発見された場合、単体運用前提の一般向け HDD では最長で数分間セクタの読み取りと代替を試みる。しかしハードウェア RAID カードでは 7~14 秒ディスクから応答が無い場合タイムアウトエラーでディスクを切り離し、RAID アレイ損傷となる。これを防ぐ為に RAID 前提のエンタープライズ向けモデルでは各社 TLER、ERC、CCTL 等の名称でセクタ回復を試みる時間を制限する機能を設けている。大体 7 秒以下だが更に短く設定できることもある。この秒数は Linux のコマンドである smartctl、DOS 上で動作する HDAT2、WD のみに対応した WDTLER 等のツールで変更出来、一般向け HDD でもその機能を持っているのに無効になっているだけの場合はこれらのツールで有効にしたりできる。


また RAID を組むとなると自動的に一台の PC に複数台の HDD を搭載することになり振動が多くなる。なので振動が多い環境に対応しているエンタープライズ向けのグレードのものが望ましい。(WesternDigital では RE シリーズ、HGST では Ultrastar シリーズとか。)振動補正機能を備えているものや、スピンドルが両面から固定されているものが多い。(SSDなら振動しないしそっちのがいいと思うけどね)

その他、エンタープライズ向け HDD は出荷時のテストが厳重に行われており初期不良が少ないことが期待できる。


RAID ボリュームを構成してる HDD の S.M.A.R.T って読めんの?


基本的には期待するな。HDD・RAID コントローラー(のファームウェアとドライバ)が共に S.M.A.R.T に対応している上で、使用している RAID コントローラー(のドライバ)に対応した S.M.A.R.T 取得ツールを使えば読める場合もある。

AMD製マザーなら、「RAIDExpert」というツールをAMDのサイトで探して落としてインストールすれば、S.M.A.R.T.だけでなく、シリアル番号とかドライブの書き込みキャッシュの有効無効とかいろいろ読める。

Intel Rapid Storage TechnologyによるRAIDはCrystalDiskInfoがバージョン5.0.0から対応してる。

ClystalDiskInfoでは対応しているRAID コントローラーの場合のみ読める(RAID ボリュームの内一台のみ)。
3.10.0 で対応しているのは
  • Promise Ultra100 TX2
  • VIA VT6421
  • Silicon Image SiI0680・3114・3132・3512
  • ATI SB400
  • ALi M5229

Hard Disk Sentinel (商用ソフト) 対応 RAID コントローラー

Intelli-SMART (商用ソフト)
  • RAID にも対応しているとされている。デモ版有り。

SCSI (非RAID)の場合は HDD Scan で一部読める場合がある。バージョンによって読めたり読めなかったりするので色々なバージョンを試すこと。


Windows上でRAIDを設定しているならば、ClystalDiskInfoでさくっと読めるので、RAIDがどんなもんかやってみたいという程度であればWindowsのディスク管理でRAIDを設定してみても良いかも。

RAID 組んでた HDD を別の RAID カードに接続したら使える?


無理です。RAID の実装はメーカーによって様々で互換性はありません。RAID ボリュームを組むと RAID コントローラーは HDD に管理情報 (例えばこの HDD はポート 2 に繋がったストライピングボリュームの一部で…とか) を書き込むが、この管理情報ひとつとっても書き込む位置 (セクタ 1~62 とか、あるいはディスク末尾とか) も違えば書き方も違う。ストライピングの場合もストライプサイズも色々。だから別の RAID コントローラーに繋いでも認識されないし、下手したら繋いだだけで今のデータが消えます。RAID カードやマザーを乗り換える時は RAID ボリュームではない HDD にデータをバックアップしましょう。
RAID1ならば、特別な管理情報は使っていないコントローラーも多いので、単体のドライブを別のマザーに挿してもそのまま読める可能性は高いが、複数台のRAID1構成のまんま他のRAIDカードやマザーに移してRAID1の復旧をしたくてもたぶん無理。やめとけ。


RAID1 で片方の HDD 抜いてまっさらな HDD 突っ込んだら勝手にリビルドするからバックアップにいいよね


基本的にやらない方がいい。まっさらな HDD を突っ込んだ後、操作ミスやアホコントローラーだとまっさらな HDD のデータを RAID1 の片割れにコピー(つまりデータが消える)してしまったり、再度 RAID1 の片割れを突っ込んだ時に正常に認識してくれない場合もある。

同様の理由で既にデータが入っている HDD と同じ容量の HDD を買ってきて RAID1 を組んだら全データが消えることもある。RAID を組むときは既存のデータはバックアップした上でやろう。つか、RAID コントローラーによって挙動は様々なのでマニュアルを読んだり不要なデータを突っ込んでわざとアレイ壊して復旧の予行演習くらいしよう。

RAIDのバックアップってどうするの?


3テラ4テラのHDDがポチれば買える現在では、DVDやブルーレイでのバックアップはもう無理。
ブルーレイにバックアップを取ったとしても、10年後20年後に読める保証はない(そもそも動くドライブが20年後にあるのかどうか…)。
とかまぁいろいろ考えると、同容量かそれ以上の容量の、複数の外付けHDDにコピーするのが現実的かと。
数年に一度買い替えればなんとかなるだろう。

金に糸目をつけないならば、テープドライブなり海外FTPサーバをテラバイト単位で複数契約して同期を取って保存するとかまぁ好きにしてくれ。