RAID(Redundant Array of Independent Disks)
RAID(Redundant Array of Independent Disks)とは、ドライブの故障時にデータを保護するために、同じデータを複数のハードディスクやソリッドステートドライブの異なる場所に保存する方法です。
RAIDの仕組み
RAIDは、複数のディスクにデータを配置し、入出力(I/O)処理をバランスよくオーバーラップさせることで、パフォーマンスを向上させる仕組みです。
RAIDアレイは、オペレーティングシステム(OS)上では、1つの論理ドライブとして表示されます。 RAIDは、ディスクミラーリングまたはディスクストライピングの技術を採用しています。 ミラーリングは、同一のデータを複数のドライブにコピーします。 ストライピングは、複数のディスクドライブにデータを分散するのに役立ちます。 各ドライブの記憶領域は、1セクター(512バイト)から数メガバイトまでの単位に分割されます。 すべてのディスクのストライプがインターリーブされ、順番にアドレスが設定されます。
ディスクミラーリングとディスクストライピングは、RAIDアレイの中で組み合わせることもできます。
大きなレコードが保存されているシングルユーザーのシステムでは、1つのレコードがすべてのディスクにまたがり、すべてのディスクを同時に読み取ることで素早くアクセスできるように、ストライプは通常、小さく設定されます(おそらく512バイト)。
マルチユーザーシステムでは、より良いパフォーマンスのために、典型的なまたは最大サイズのレコードを保持するのに十分な幅のストライプが必要となり、ドライブ間でオーバーラップしたディスクI/Oが可能になります。
RAIDコントローラ
RAIDコントローラは、ストレージアレイ内のハードディスクドライブを管理するために使用されるデバイスです。 OS と物理ディスクの間の抽象化レベルとして使用でき、ディスクのグループを論理的なユニットとして表示します。
RAIDコントローラには、ハードウェアベースのものとソフトウェアベースのものがあります。 ハードウエアベースのRAID製品では、物理的なコントローラがアレイを管理します。 コントローラは、SATAやSCSIなどのドライブフォーマットをサポートするように設計することもできます。
ソフトウェアベースのRAIDでは、コントローラは、セントラルプロセッサやメモリなどのハードウェアシステムのリソースを使用します。
ソフトウェアベースのRAIDでは、コントローラはセントラルプロセッサやメモリなどのハードウェアシステムのリソースを使用します。ハードウェアベースのRAIDコントローラと同じ機能を実行しますが、ソフトウェアベースのRAIDコントローラでは、パフォーマンスの向上があまり期待できず、サーバー上の他のアプリケーションのパフォーマンスに影響を与える可能性があります。
ソフトウェアベースのRAID実装がシステムのブートアッププロセスと互換性がなく、ハードウェアベースのRAIDコントローラが高価すぎる場合は、ファームウェアまたはドライバベースのRAIDがもう1つの可能な選択肢となります。
ファームウェアベースのRAIDコントローラチップはマザーボード上に配置され、ソフトウェアベースのRAIDと同様に、すべてのオペレーションはCPUによって実行されます。 しかし、ファームウェアでは、RAIDシステムはブートプロセスの最初にのみ実装されます。 OSがロードされると、コントローラドライバがRAID機能を引き継ぎます。 ファームウェアRAIDコントローラは、ハードウェアオプションほど高価ではありませんが、コンピュータのCPUへの負担が大きくなります。
RAIDレベル
RAIDデバイスは、レベルと呼ばれる異なるバージョンを使用します。 RAIDという言葉を作り、RAIDセットアップのコンセプトを開発したオリジナルの論文では、0から5までの6つのレベルのRAIDを定義しています。 この数字のシステムにより、IT関係者はRAIDのバージョンを区別することができた。
標準的なRAIDレベル
RAID 0。 この構成では、ストライピングはありますが、データの冗長性はありません。
RAID 1。 ディスクミラーリングとも呼ばれるこの構成は、少なくとも2台のドライブで構成され、データの保存を二重化します。 ストライピングは行いません。 どちらかのディスクを同時に読み取ることができるため、読み取り性能が向上します。
RAID 2です。 この構成では、ディスク間のストライピングを使用し、一部のディスクにはECC(Error Check and Correcting)情報を格納します。 また、RAID 2では専用のハミングコードパリティ(線形形式のエラー訂正コード)を使用します。
RAID 3: この技術はストライピングを使用し、1つのドライブをパリティ情報の保存に充てます。 埋め込まれたECC情報は、エラーを検出するために使用されます。 データの復元は、他のドライブに記録されている排他的情報を計算することで行われます。 I/O操作はすべてのドライブを同時に扱うため、RAID3はI/Oをオーバーラップさせることができない。
RAID 4。 このレベルではラージストライプを使用しているため、ユーザーは任意の1台のドライブからレコードを読むことができます。 そして、オーバーラップしたI/Oを読み取り操作に使用することができます。
RAID 5。 このレベルは、パリティブロックレベルのストライピングに基づいています。 パリティ情報は各ドライブ間でストライピングされ、1台のドライブが故障してもアレイが機能するようになっています。 このアレイのアーキテクチャでは、読み取りと書き込みの操作を複数のドライブにまたがって行うことができます。その結果、1台のドライブよりも優れたパフォーマンスが得られますが、RAID 0アレイのパフォーマンスには及びません。
RAID 5アレイは、パリティデータの書き込みに伴うパフォーマンスへの影響があるため、一般的に書き込みの多いシステムでの使用には適していないと考えられています。
RAID 6。 この技術はRAID 5に似ていますが、アレイ内のドライブに分散された2つ目のパリティスキームを含みます。 追加のパリティを使用することで、2台のディスクが同時に故障した場合でもアレイの機能を維持することができます。 しかし、このような保護機能の追加にはコストがかかります。 RAID 6アレイは、しばしばRAID 5アレイよりも書き込みパフォーマンスが低下します。
入れ子のRAIDレベル
いくつかのRAIDレベルは、RAIDレベルの組み合わせに基づいているため、入れ子のRAIDと呼ばれています。
RAID 10 (RAID 1+0)の例です。 RAID 1とRAID 0を組み合わせたこのレベルは、しばしばRAID 10と呼ばれ、RAID 1よりも高いパフォーマンスを発揮しますが、コストはかなり高くなります。 RAID 1+0では、データはミラーリングされ、ミラーはストライピングされます。
RAID 01(RAID 0+1)。 RAID 0+1はRAID 1+0と似ていますが、データ整理の方法が若干異なります。
RAID 03(RAID 0+3、RAID 53またはRAID 5+3とも呼ばれる)。 このレベルでは、RAID 3の仮想ディスクブロックに(RAID 0のスタイルで)ストライピングを使用します。
RAID 50 (RAID 5+0)。
非標準のRAIDレベル
非標準のRAIDレベルは、標準的なRAIDレベルとは異なり、通常、企業や組織が主に独自の用途のために開発したものです。 以下はその例です。
RAID 7。 RAID 3とRAID 4をベースにキャッシュ機能を追加した非標準のRAIDレベル。
Adaptive RAID。 このレベルでは、RAIDコントローラがディスク上のパリティをどのように保存するかを決定することができます。
Linux MD RAID 10。 Linux カーネルが提供するこのレベルは、ネストされた非標準的な RAID アレイの作成をサポートします。
RAIDのメリット
RAIDのメリットは以下の通りです。
- 低価格のディスクが大量に使用されるため、費用対効果が向上します。
- 複数のハードディスクを使用することにより、RAIDは単一のハードディスクのパフォーマンスを向上させることができます。
- 構成によっては、コンピュータの速度とクラッシュ後の信頼性が向上します。
- RAID 0では、読み取りと書き込みが単一のドライブよりも速く実行できます。 これは、ファイルシステムが分割され、同じファイルに対して一緒に作業するドライブに分散されるためです。
- RAID 5では、可用性と回復力が向上します。
RAIDを使用することのデメリット
RAIDにはデメリットもあります。
- 入れ子式のRAIDレベルは、より多くのディスクを必要とするため、従来のRAIDレベルよりも実装コストが高くなります。
- 入れ子式のRAIDでは、多くのドライブが冗長性のために使用されるため、ストレージデバイスのギガバイトあたりのコストが高くなります。
- ドライブが故障すると、アレイ内の別のドライブもすぐに故障する確率が高くなり、その結果、データが失われる可能性が高くなります。 これは、RAIDアレイ内のすべてのドライブが同時にインストールされるため、すべてのドライブが同じ量の摩耗にさらされるからです。
- 一部のRAIDレベル(RAID 1や5など)では、1つのドライブの故障にしか対応できません。
- RAIDアレイとその中のデータは、故障したドライブが交換され、新しいディスクにデータが入力されるまで、脆弱な状態にあります。
- RAIDが最初に実装されたときよりも、現在のドライブははるかに大きな容量を持っているため、故障したドライブを再構築するにはかなりの時間がかかります。
- ディスクに障害が発生した場合、残りのディスクに不良セクタや読めないデータが含まれている可能性があり、アレイを完全に再構築することができない場合があります。
しかし、ネストされたRAIDレベルは、より高度な冗長性を提供することでこれらの問題に対処し、ディスクの同時故障によるアレイレベルの故障の可能性を大幅に減少させます。
RAIDの歴史
RAIDという用語は、1987年にDavid Patterson、Randy Katz、Garth A. Gibsonによって作られました。 3人は1988年に発表した技術レポート「A Case for Redundant Arrays of Inexpensive Disks (RAID)」の中で、安価なドライブを組み合わせたアレイが、当時のトップレベルのディスクドライブの性能を上回ることができると主張しました。
このレポートは、コンセプトに名前を付けた最初のものでしたが、冗長ディスクの使用については、すでに他の人々によって議論されていました。 Geac Computer Corp.のガス・ジャーマンとテッド・グルナウは、このアイデアを最初に「MF-100」と呼んだ。 IBMのノーマン・ケン・オオウチは1977年にこの技術の特許を申請し、後にRAID 4と命名された。 1983年にはデジタルイクイップメント社が、後にRAID1となるドライブを出荷し、1986年にはIBMがRAID5となる特許を申請した。
1988年の報告書に記載されたRAIDのレベルは、基本的には既に使用されている技術に名前を付けたものですが、コンセプトに共通の用語を作ることで、データストレージ市場を刺激し、より多くのRAIDアレイ製品を開発するのに役立ちました。
カッツ氏によると、頭文字をとったexpensiveという言葉は、低コストという意味合いから、業界のベンダーによってすぐにindependentに置き換えられたそうです。
RAIDの将来
RAIDはまだ死んでいませんが、多くのアナリストは、この技術は近年陳腐化していると言っています。 消去コーディングなどの代替技術は、(価格は高いものの)より優れたデータ保護を提供し、RAIDの弱点を解決する意図で開発されています。
ソリッド ステート ドライブ (SSD) の増加も、RAID の必要性を軽減すると考えられています。 SSDには可動部がないため、ハードディスクのように故障することはありません。 SSDアレイでは、データ保護をRAIDに頼らず、ウェアレベリングなどの技術を用いることが多い。
それでも、RAIDは今のところデータストレージの一部として定着しており、主要なテクノロジーベンダーは依然としてRAID製品をリリースしています。 IBMは、Spectrum Virtualize V7.6とともにIBM Distributed RAIDをリリースし、RAIDのパフォーマンスを向上させることを約束しています。 Intel Rapid Storage Technologyの最新バージョンは、RAID 0、RAID 1、RAID 5、RAID 10をサポートしており、NetApp ONTAP管理ソフトウェアは、RAIDを使用して最大3台のドライブの同時故障から保護する。 また、Dell EMC Unityプラットフォームは、RAID 1/0、RAID 5、RAID 6をサポートしています。