序章

サーバーをセットアップするとき、ストレージは重要な考慮事項です。 あなたとあなたのユーザーが気にかけているほとんどすべての重要な情報は、後で検索できるように保存するために、ある時点でストレージデバイスに書き込まれます。 ニーズが単純な場合は、単一のディスクで十分に機能します。 ただし、より複雑な冗長性またはパフォーマンス要件がある場合は、RAIDなどのソリューションが役立つ場合があります。

このガイドでは、一般的なRAIDの用語と概念について説明します。 デバイスをRAIDアレイに配置することの利点と欠点のいくつかについて説明し、実装テクノロジの違いについて説明し、さまざまなRAIDレベルがストレージ環境に与える影響について説明します。

RAIDとは何ですか?

RAIDは、R冗長AレイのI非依存Dリスクの略です。 さまざまなパターンでドライブを組み合わせることにより、管理者は、ドライブのコレクションが個別に操作した場合よりも優れたパフォーマンスまたは冗長性を実現できます。 RAIDは、rawドライブまたはパーティションとファイルシステム層の間の層として実装されます。

RAIDはいつ良いアイデアですか?

RAIDが提供する主な価値は、データの冗長性とパフォーマンスの向上です。

冗長性は、データの可用性を高めるのに役立つことを目的としています。 これは、ストレージドライブに障害が発生した場合など、特定の障害状態の間も情報にアクセスでき、ドライブが交換されるまでシステム全体が機能し続けることを意味します。 これはではなくバックアップメカニズムを意味します(他のタイプのストレージと同様に、RAIDでは常に個別のバックアップをお勧めします)が、問題が発生した場合の中断を最小限に抑えることを目的としています。

一部のシナリオでRAIDが提供する他の利点は、パフォーマンスにあります。 ストレージI/Oは、多くの場合、単一のディスクの速度によって制限されます。 RAIDを使用すると、データは冗長または分散されます。つまり、読み取り操作ごとに複数のディスクを参照できるため、総スループットが向上します。 特定の構成では、個々のディスクにデータ全体のごく一部のみを書き込むように要求される場合があるため、書き込み操作を改善することもできます。

RAIDのいくつかの欠点には、管理の複雑さが増し、多くの場合、使用可能な容量が減少することが含まれます。 これは、同じ量の使用可能なスペースの追加コストに相当します。 アレイが完全にソフトウェアで管理されていない場合、専用のハードウェアを使用すると、さらに費用が発生する可能性があります。

冗長性のないパフォーマンスに重点を置いたアレイ構成のもう1つの欠点は、データ全体が失われるリスクが高まることです。 これらのシナリオのデータセットは、複数のストレージデバイスに完全に依存しているため、損失のリスクが高まります。

ハードウェアRAID、ソフトウェアRAID、およびハードウェア支援ソフトウェアRAID

RAIDアレイは、いくつかの異なるテクノロジーを使用して作成および管理できます。

ハードウェアRAID

RAIDコントローラーまたはRAIDカードと呼ばれる専用ハードウェアを使用して、オペレーティングシステムから独立してRAIDをセットアップおよび管理できます。 これは、ハードウェアRAIDとして知られています。 真のハードウェアRAIDコントローラーには、RAIDデバイスを管理するための専用プロセッサーが搭載されています。

これには多くの利点があります。

  • パフォーマンス:正規のハードウェアRAIDコントローラーは、基盤となるディスクを管理するためにCPUサイクルを消費する必要はありません。 これは、接続されているストレージデバイスの管理にオーバーヘッドがないことを意味します。 高品質のコントローラーは、パフォーマンスに大きな影響を与える可能性のある広範なキャッシュも提供します。
  • 複雑さの抽象化:RAIDコントローラーを使用するもう1つの利点は、オペレーティングシステムから基盤となるディスク配置を抽象化することです。 ハードウェアRAIDは、ドライブのグループ全体をストレージの単一の論理ユニットとして表示できます。 オペレーティングシステムは、RAIDの配置を理解する必要はありません。 単一のデバイスであるかのように、アレイとインターフェイスすることができます。
  • 起動時の可用性:アレイは完全にソフトウェアの外部で管理されるため、起動時に利用可能になり、ルートファイルシステム自体をRAIDアレイに簡単にインストールできます。

ハードウェアRAIDには、いくつかの重大な欠点もあります。

  • ベンダーロックイン:RAID配置はハードウェア自体の独自のファームウェアによって管理されるため、アレイはそれを作成するために使用されたハードウェアにいくらかロックされます。 RAIDコントローラが故障した場合、ほとんどの場合、同一または互換性のあるモデルと交換する必要があります。 一部の管理者は、最初の問題が発生した場合に使用する1つ以上のバックアップコントローラーを購入することを推奨しています。
  • 高コスト:高品質のハードウェアRAIDコントローラーはかなり高価になる傾向があります。

ソフトウェアRAID

RAIDは、オペレーティングシステム自体で構成することもできます。 ディスク間の関係は、ハードウェアデバイスのファームウェアではなく、オペレーティングシステム内で定義されるため、これはソフトウェアRAIDと呼ばれます。

ソフトウェアRAIDのいくつかの利点:

  • 柔軟性:RAIDはオペレーティングシステム内で管理されるため、実行中のシステムからハードウェアを再構成することなく、使用可能なストレージから簡単に構成できます。 LinuxソフトウェアRAIDは特に柔軟性があり、さまざまなタイプのRAID構成が可能です。
  • オープンソース:LinuxやFreeBSDなどのオープンソースオペレーティングシステム用のソフトウェアRAID実装もオープンソースです。 RAIDの実装は隠されておらず、他のシステムで簡単に読み取って実装できます。 たとえば、Ubuntuマシンで作成されたRAIDアレイは、後でCentOSサーバーに簡単にインポートできます。 ソフトウェアの違いにより、データにアクセスできなくなる可能性はほとんどありません。
  • 追加コストなし:ソフトウェアRAIDは特別なハードウェアを必要としないため、サーバーやワークステーションに追加コストを追加しません。

ソフトウェアRAIDのいくつかの欠点は次のとおりです。

  • 実装固有:ソフトウェアRAIDは特定のハードウェアに関連付けられていませんが、RAIDの特定のソフトウェア実装に関連付けられる傾向があります。 Linuxは mdadm、FreeBSDはGEOMベースのRAIDを使用し、Windowsには独自のバージョンのソフトウェアRAIDがあります。 オープンソースの実装は移植または読み取ることができる場合もありますが、フォーマット自体は他のソフトウェアRAID実装と互換性がない可能性があります。
  • パフォーマンスのオーバーヘッド:これまで、ソフトウェアRAIDは、追加のオーバーヘッドを作成することで批判されてきました。 アレイを管理するにはCPUサイクルとメモリが必要であり、他の目的に使用できます。 のような実装 mdadm ただし、最新のハードウェアでは、これらの懸念はほとんど否定されます。 CPUオーバーヘッドは最小限であり、ほとんどの場合重要ではありません。

ハードウェア支援ソフトウェアRAID(偽のRAID)

ハードウェア支援ソフトウェアRAID、ファームウェアRAID、または偽のRAIDと呼ばれる3番目のタイプのRAIDも利用できます。 通常、これはマザーボード自体のRAID機能または安価なRAIDカードに見られます。 ハードウェア支援ソフトウェアRAIDは、コントローラーまたはカードのファームウェアを使用してRAIDを管理する実装ですが、通常のCPUを使用して処理を処理します。

ハードウェア支援ソフトウェアRAIDの利点:

  • マルチオペレーティングシステムのサポート:RAIDは初期起動時に起動され、オペレーティングシステムに渡されるため、複数のオペレーティングシステムで同じアレイを使用できます。これは、ソフトウェアRAIDでは使用できない場合があります。

ハードウェア支援ソフトウェアRAIDのデメリット:

  • 制限付きRAIDサポート:通常、RAID0またはRAID1のみが使用可能です。
  • 特定のハードウェアが必要:ハードウェアRAIDと同様に、ハードウェア支援ソフトウェアRAIDは、それを作成および管理するために使用されるハードウェアに関連付けられています。 RAIDコントローラの障害は、データに再度アクセスするためにマザーボード全体を交換する必要があることを意味する可能性があるため、この問題はマザーボードに含まれている場合はさらに問題になります。
  • パフォーマンスのオーバーヘッド:ソフトウェアRAIDと同様に、RAIDの管理専用のCPUはありません。 処理は、オペレーティングシステムの他の部分と共有する必要があります。

他の2つの実装の落とし穴の組み合わせに悩まされているため、ほとんどの管理者はハードウェア支援ソフトウェアRAIDを避けています。

用語

いくつかの一般的な概念に精通していると、RAIDをよりよく理解するのに役立ちます。 以下は、遭遇する可能性のあるいくつかの一般的な用語です。

  • RAIDレベル:アレイのRAIDレベルは、コンポーネントストレージデバイスに課せられる関係を指します。 ドライブはさまざまな方法で構成できるため、データの冗長性とパフォーマンス特性が異なります。 詳細については、RAIDレベルのセクションを参照してください。
  • ストライピング:ストライピングは、アレイへの書き込みを複数の基盤となるディスクに分割するプロセスです。 この戦略は、さまざまなRAIDレベルで使用されます(詳細については、次のセクションを参照してください)。 データがアレイ全体にストライピングされると、データはチャンクに分割され、各チャンクは基盤となるデバイスの少なくとも1つに書き込まれます。
  • チャンクサイズ:データをストライピングする場合、チャンクサイズは各チャンクに含まれるデータの量を定義します。 期待するI/O特性に一致するようにチャンクサイズを調整すると、アレイの相対的なパフォーマンスに影響を与える可能性があります。
  • パリティ:パリティは、配列に書き込まれたデータブロックから情報を計算することによって実装されるデータ整合性メカニズムです。 ドライブに障害が発生した場合、パリティ情報を使用してデータを再構築できます。 計算されたパリティは、計算元のデータとは別のデバイスに配置され、ほとんどの構成で、パフォーマンスと冗長性を向上させるために使用可能なドライブ全体に分散されます。
  • 劣化したアレイ:冗長性を備えたアレイは、データを失うことなく、さまざまなタイプのドライブ障害に見舞われる可能性があります。 アレイがデバイスを失ったがまだ動作している場合、そのアレイは劣化モードにあると言われます。 劣化したアレイは、故障したハードウェアを交換すると完全に動作する状態に再構築できますが、その間にパフォーマンスが低下する可能性があります。
  • Resilvering :Resilveringまたは再同期は、劣化したアレイを再構築するために使用される用語です。 RAID構成と障害の影響に応じて、これは、アレイ内の既存のファイルからデータをコピーするか、パリティ情報を評価してデータを計算することによって行われます。
  • ネストされたアレイ:RAIDアレイのグループを組み合わせてより大きなアレイにすることができます。 これは通常、2つ以上の異なるRAIDレベルの機能を利用するために行われます。 通常、冗長性を備えたアレイ(RAID1やRAID5など)は、パフォーマンスを向上させるためにRAID0アレイを作成するためのコンポーネントとして使用されます。
  • Span :残念ながら、配列について説明する場合、スパンにはいくつかの異なる意味があります。
    • 特定のコンテキストでは、「スパン」とは、2つ以上のディスクをエンドツーエンドで結合し、それらを1つの論理デバイスとして提示することを意味します。パフォーマンスや冗長性は向上しません。 これは、Linuxを扱う場合の線形配置としても知られています mdadm 実装。
    • 「スパン」は、RAID 10などのネストされたRAIDレベルについて説明するときに、結合されて次の層を形成するアレイの下位層を指すこともあります。
  • スクラブ:スクラブ、つまりチェックは、配列内のすべてのブロックを読み取って、整合性エラーがないことを確認するプロセスです。 これにより、データがストレージデバイス間で同じであることが保証され、特に再構築などの機密性の高い手順中にサイレントエラーが破損を引き起こす可能性がある状況を防ぐことができます。

RAIDレベル

アレイの特性は、RAIDレベルと呼ばれるディスクの構成と関係によって決まります。 最も一般的なRAIDレベルは次のとおりです。

RAID 0

RAID 0は、2つ以上のデバイス間でデータをストライピングすることにより、それらのデバイスを結合します。 前述のように、ストライピングは、データをチャンクに分割し、配列内の各ディスクにチャンクを交互に書き込む手法です。 これの利点は、データが分散されるため、各デバイスの全能力を読み取りと書き込みの両方に利用できることです。 RAID 0アレイの理論上のパフォーマンスプロファイルは、単に個々のディスクのパフォーマンスにディスクの数を掛けたものです(実際のパフォーマンスはこれを下回ります)。 もう1つの利点は、アレイの使用可能な容量が、構成するすべてのドライブの合計容量であるということです。

このアプローチは優れたパフォーマンスを提供しますが、いくつかの非常に重要な欠点もあります。 データはアレイ内の各ディスク間で分割および分割されるため、1つのデバイスに障害が発生すると、アレイ全体がダウンし、すべてのデータが失われます。 他のほとんどのRAIDレベルとは異なり、RAID 0アレイは再構築できません。これは、コンポーネントデバイスのサブセットに、データを再構築するためのコンテンツに関する十分な情報が含まれていないためです。 RAID 0アレイを実行している場合、データセット全体がアレイ内の各ディスクの信頼性に等しく依存するため、バックアップが非常に重要になります。

RAID 1

RAID 1は、2つ以上のデバイス間でデータをミラーリングする構成です。 アレイに書き込まれたものはすべて、グループ内の各デバイスに配置されます。 これは、各デバイスに利用可能なデータの完全なセットがあり、デバイスに障害が発生した場合に冗長性を提供することを意味します。 RAID 1アレイでは、アレイ内の1つのデバイスが正常に機能している限り、データにアクセスできます。 故障したドライブを交換することでアレイを再構築できます。その時点で、残りのデバイスを使用してデータを新しいデバイスにコピーし直します。

この構成にもいくつかのペナルティがあります。 RAID 0と同様に、理論上の読み取り速度は、個々のディスクの読み取り速度にディスクの数を掛けることによって計算できます。 ただし、書き込み操作の場合、理論上の最大パフォーマンスは、アレイ内で最も遅いデバイスのパフォーマンスになります。 これは、データ全体をアレイ内の各ディスクに書き込む必要があるためです。 さらに、アレイの総容量は最小のディスクの容量になります。 したがって、同じサイズの2つのデバイスを備えたRAID 1アレイは、1つのディスクの使用可能な容量を持ちます。 ディスクを追加すると、データの冗長コピーの数が増える可能性がありますが、使用可能な容量は増えません。

RAID 5

RAID 5には、前の2つのRAIDレベルのいくつかの機能がありますが、パフォーマンスプロファイルと欠点が異なります。 RAID 5では、データはRAID0アレイとほぼ同じ方法でディスク間でストライピングされます。 ただし、アレイ全体に書き込まれるデータのストライプごとに、エラー訂正とデータ再構築に使用できる数学的に計算された値であるパリティ情報がディスクの1つに書き込まれます。 データブロックの代わりに計算されたパリティブロックを受け取るディスクは、書き込まれる各ストライプで回転します。

これにはいくつかの重要な利点があります。 ストライピングを備えた他のアレイと同様に、読み取りパフォーマンスは、一度に複数のディスクから読み取ることができるという利点があります。 RAID 5アレイは、アレイ内の任意の1つのディスクの損失を処理します。 これが発生した場合、パリティブロックによりデータの完全な再構築が可能になります。 パリティが分散されているため(あまり一般的ではないRAIDレベルでは専用のパリティドライブが使用されます)、各ディスクにはバランスの取れた量のパリティ情報があります。 RAID 1アレイの容量は単一ディスクのサイズに制限されますが(すべてのディスクはデータの同一コピーを持ちます)、RAID 5パリティを使用すると、単一ディスクの価値だけを犠牲にして、あるレベルの冗長性を実現できます。スペース。 したがって、RAID 5アレイ内の4つの100Gドライブは、300Gの使用可能スペースを生成します(他の100Gは、分散パリティ情報によって占有されます)。

他のレベルと同様に、RAID5には考慮しなければならないいくつかの重大な欠点があります。 オンザフライのパリティ計算により、システムパフォーマンスが大幅に低下する可能性があります。 これは、各書き込み操作に影響を与える可能性があります。 ディスクに障害が発生し、アレイが劣化状態になると、読み取り操作に重大なペナルティが発生します(欠落しているデータは残りのディスクから計算する必要があります)。 さらに、故障したドライブを交換した後にアレイを修復する場合は、各ドライブを読み取り、CPUを使用して欠落データを計算し、欠落データを再構築する必要があります。 これにより、残りのドライブにストレスがかかり、場合によっては追加の障害が発生し、すべてのデータが失われる可能性があります。

RAID 6

RAID 6は、RAID 5と同様のアーキテクチャを使用しますが、ダブルパリティ情報を備えています。 これは、アレイが2つのディスクの障害に耐えることができることを意味します。 これは、障害が発生した後の集中的な再構築プロセス中に追加のディスク障害が発生する可能性が高くなるため、大きな利点です。 ストライピングを使用する他のRAIDレベルと同様に、読み取りパフォーマンスは一般的に良好です。 RAID 5の他のすべての利点は、RAID6にも存在します。

不利な点として、RAID 6は、追加のディスクに相当する容量で追加のダブルパリティを支払います。 これは、アレイの総容量が、関係するドライブの合計スペースから2台のドライブを引いたものであることを意味します。 RAID6のパリティデータを決定するための計算はRAID5よりも複雑であるため、RAID5よりも書き込みパフォーマンスが低下する可能性があります。 RAID 6には、RAID 5と同じ劣化の問題がいくつかありますが、追加のディスクに相当する冗長性により、再構築操作中に追加の障害によってデータが消去される可能性がなくなります。

RAID 10

RAID 10は、いくつかの異なる方法で実装できます。これは、その一般的な特性に影響を与えます。

  • ネストされたRAID1+ 0

従来、RAID 10はネストされたRAIDを指し、最初に2つ以上のRAID 1ミラーをセットアップし、次にそれらをコンポーネントとして使用して、それらの間にストライプRAID0アレイを構築します。 これは、この関係をより明確にするために、RAID 1+0と呼ばれることもあります。 この設計のため、RAID 1 + 0アレイを形成するには少なくとも4つのディスクが必要です(RAID 0は、それぞれ2つのデバイスで構成される2つのRAID 1アレイにまたがってストライピングされます)。

RAID 1 +0アレイはRAID0アレイの高性能特性を備えていますが、ストライプのコンポーネントごとに単一のディスクに依存する代わりに、ミラーリングされたアレイが使用され、冗長性を提供します。 このタイプの構成では、各RAID 1のディスクの少なくとも1つが使用可能である限り、ミラーリングされたRAID1セットのディスク障害を処理できます。 アレイ全体は、不均衡な方法でフォールトトレラントです。つまり、発生した場所に応じて、さまざまな数の障害を処理できます。

RAID 1 + 0は冗長性と高性能の両方を提供するため、必要なディスクの数が法外なものでない場合、これは通常非常に優れたオプションです。

  • mdadmのRAID10

Linuxの mdadm は独自のバージョンのRAID10を提供します。これは、RAID 1 + 0の精神と利点を引き継いでいますが、実際の実装をより柔軟に変更し、いくつかの追加の利点を提供します。

RAID 1 + 0と同様に、 mdadm RAID 10では、複数のコピーとストライピングデータが可能です。 ただし、デバイスはミラーリングされたペアの観点から配置されていません。 代わりに、管理者はアレイに書き込まれるコピーの数を決定します。 データはチャンク化され、アレイ全体に複数のコピーで書き込まれます。チャンクの各コピーが異なる物理デバイスに書き込まれるようにします。 最終的には、同じ数のコピーが存在しますが、配列は、基になるネストによってそれほど制約されません。

このRAID10の概念には、ネストされたRAID 1+0に比べていくつかの顕著な利点があります。 アレイをビルディングブロックとして使用することに依存しないため、奇数のディスクを使用でき、ディスクの最小数が少なくなります(必要なデバイスは3つだけです)。 維持するコピーの数も構成可能です。 単一のアレイをアドレス指定するだけで済み、1つのコンポーネントアレイだけでなく、アレイ内の任意のディスクに使用できるスペアを割り当てることができるため、管理が簡素化されます。

結論

サーバーに最適なRAIDレベルは、使用目的と目標によって大きく異なります。 ハードウェアによって課せられる総コストと制約も、意思決定プロセス中に大きな影響を与える可能性があります。

Linuxの使用について詳しく知るには mdadm RAIDアレイをセットアップするためのツールについては、Ubuntu16.04でのmdadmを使用したアレイの作成に関するガイドに従ってください。 その後、 Ubuntu 16.04 でmdadmアレイを管理する方法に関するガイドに従って、既存のアレイを管理する方法を学ぶことをお勧めします。