RAIDの用語と概念の紹介

前書き

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

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

RAIDとは?

RAIDは、IndependentDisksのRedundantArraysの略です。 異なるパターンのドライブを組み合わせることにより、管理者は、個々のドライブで提供されるドライブのコレクションよりも優れたパフォーマンスまたは冗長性を実現できます。 RAIDは、未加工のドライブまたはパーティションとファイルシステム層の間の層として実装されます。

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

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

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

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

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

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

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

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

ハードウェアRAID

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

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

  • Performance:正規のハードウェアRAIDコントローラーは、基盤となるディスクを管理するためにCPUサイクルを消費する必要はありません。 これは、接続されているストレージデバイスの管理にオーバーヘッドがないことを意味します。 また、高品質のコントローラーは広範なキャッシュを提供し、パフォーマンスに大きな影響を与える可能性があります。

  • Abstracting away complexity:RAIDコントローラーを使用するもう1つの利点は、オペレーティングシステムから基盤となるディスク配置を抽象化することです。 ハードウェアRAIDは、ドライブのグループ全体をストレージの単一の論理ユニットとして提示できます。 オペレーティングシステムは、RAIDの配置を理解する必要はありません。単一のデバイスであるかのように配列とインターフェイスすることができます。

  • Availability at boot:アレイは完全にソフトウェアの外部で管理されるため、ブート時に使用可能になり、ルートファイルシステム自体をRAIDアレイに簡単にインストールできます。

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

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

  • High cost:高品質のハードウェアRAIDコントローラーはかなり高価になる傾向があります。

ソフトウェアRAID

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

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

  • Flexibility:RAIDはオペレーティングシステム内で管理されるため、ハードウェアを再構成することなく、実行中のシステムから、使用可能なストレージから簡単に構成できます。 LinuxソフトウェアRAIDは特に柔軟性が高く、さまざまな種類のRAID構成が可能です。

  • Open source:LinuxやFreeBSDなどのオープンソースオペレーティングシステム用のソフトウェアRAID実装もオープンソースです。 RAIDの実装は非表示ではなく、簡単に読み取って他のシステムに実装できます。 たとえば、Ubuntuマシンで作成されたRAIDアレイは、後で簡単にCentOSサーバーにインポートできます。 ソフトウェアの違いにより、データにアクセスできなくなる可能性はほとんどありません。

  • No additional costs:ソフトウェアRAIDは特別なハードウェアを必要としないため、サーバーやワークステーションに追加のコストを追加しません。

ソフトウェアRAIDの短所は次のとおりです。

  • Implementation-specific:ソフトウェアRAIDは特定のハードウェアに関連付けられていませんが、RAIDの特定のソフトウェア実装に関連付けられる傾向があります。 Linuxはmdadmを使用しますが、FreeBSDはGEOMベースのRAIDを使用し、Windowsには独自のバージョンのソフトウェアRAIDがあります。 場合によっては、オープンソースの実装を移植したり読み取ったりすることもできますが、フォーマット自体は他のソフトウェアRAID実装と互換性がない可能性があります。

  • Performance overhead:歴史的に、ソフトウェアRAIDは追加のオーバーヘッドを作成することで批判されてきました。 アレイを管理するには、CPUサイクルとメモリが必要です。これは、他の目的に使用できます。 ただし、最新のハードウェアでのmdadmのような実装は、これらの懸念を大幅に打ち消します。 CPUオーバーヘッドは最小限であり、ほとんどの場合重要ではありません。

ハードウェア支援ソフトウェアRAID(フェイクRAID)

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

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

  • Multi-operating system support:RAIDはアーリーブート中に起動され、オペレーティングシステムに渡されるため、複数のオペレーティングシステムが同じアレイを使用できます。これは、ソフトウェアRAIDでは使用できない場合があります。

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

  • Limited RAID support:通常、RAID0またはRAID1のみが使用可能です。

  • Requires specific hardware:ハードウェアRAIDと同様に、ハードウェア支援ソフトウェアRAIDは、それを作成および管理するために使用されるハードウェアに関連付けられています。 この問題は、マザーボードに含まれる場合はさらに問題になります。RAIDコントローラの障害は、マザーボード全体を交換してデータに再度アクセスする必要があることを意味するためです。

  • Performance overhead:ソフトウェアRAIDと同様に、RAIDの管理専用のCPUはありません。 処理は、オペレーティングシステムの他の部分と共有する必要があります。

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

用語

いくつかの一般的な概念に精通していると、RAIDをよりよく理解するのに役立ちます。 以下に、一般的な用語を紹介します。

  • RAID level:アレイのRAIDレベルは、コンポーネントストレージデバイスに課せられた関係を指します。 ドライブはさまざまな方法で構成できるため、データの冗長性とパフォーマンス特性が異なります。 詳細については、RAID levelsのセクションを参照してください。

  • Striping:ストライピングは、アレイへの書き込みを複数の基になるディスクに分割するプロセスです。 この戦略は、さまざまなRAIDレベルで使用されます(詳細については、next sectionを参照してください)。 データがアレイ全体にストライピングされると、データはチャンクに分割され、各チャンクは少なくとも1つの基盤デバイスに書き込まれます。

  • Chunk Size:データをストライピングする場合、チャンクサイズは各チャンクに含まれるデータの量を定義します。 予想されるI / O特性に一致するようにチャンクサイズを調整すると、アレイの相対的なパフォーマンスに影響を与える可能性があります。

  • Parity:パリティは、配列に書き込まれたデータブロックから情報を計算することによって実装されるデータ整合性メカニズムです。 ドライブに障害が発生した場合、パリティ情報を使用してデータを再構築できます。 計算されたパリティは、計算されたデータとは別のデバイスに配置され、ほとんどの構成では、パフォーマンスと冗長性を向上させるために利用可能なドライブに分散されます。

  • Degraded Arrays:冗長性のあるアレイは、データを失うことなく、さまざまなタイプのドライブ障害に見舞われる可能性があります。 アレイがデバイスを失ったがまだ動作可能である場合、それは劣化モードにあると言われます。 故障したハードウェアを交換すると、劣化したアレイを完全に動作可能な状態に再構築できますが、その間にパフォーマンスが低下する可能性があります。

  • Resilvering:再シルバー化、または再同期は、劣化したアレイを再構築するために使用される用語です。 RAID構成と障害の影響に応じて、これは、アレイ内の既存のファイルからデータをコピーするか、パリティ情報を評価してデータを計算することにより行われます。

  • Nested Arrays:RAIDアレイのグループを組み合わせてより大きなアレイにすることができます。 これは通常、2つ以上の異なるRAIDレベルの機能を利用するために行われます。 通常、冗長性のあるアレイ(RAID 1またはRAID 5など)は、パフォーマンスを向上させるためにRAID 0アレイを作成するためのコンポーネントとして使用されます。

  • Span:残念ながら、配列について説明する場合、スパンにはいくつかの異なる意味があります。

    • 特定のコンテキストでは、「スパン」とは、2つ以上のディスクをエンドツーエンドで結合し、それらを1つの論理デバイスとして提示することを意味しますが、パフォーマンスや冗長性は向上しません。 これは、Linuxのmdadm実装を処理する場合の線形配置とも呼ばれます。

    • 「スパン」とは、RAID 10などのネストされたRAIDレベルを議論するときに結合されて次の層を形成するアレイの下層を指すこともあります。

  • Scrubbing:スクラブ、つまりチェックは、配列内のすべてのブロックを読み取って、整合性エラーがないことを確認するプロセスです。 これにより、ストレージデバイス間でデータが同じであることが保証され、特に再構築などの機密性の高い手順中にサイレントエラーが破損を引き起こす可能性のある状況が防止されます。

RAIDレベル

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

RAID 0

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

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

RAID 1

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

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

RAID 5

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

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

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

RAID 6

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

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

RAID 10

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

  • ネストされたRAID1 + 0

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

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

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

  • mdadmのRAID10

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

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

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

結論

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

Linuxのmdadmツールを使用してRAIDアレイをセットアップする方法の詳細については、creating arrays with mdadm on Ubuntu 16.04に関するガイドに従ってください。 その後、how to manage mdadm arrays on Ubuntu 16.04に関するガイドに従って、既存のアレイを管理する方法を学ぶことをお勧めします。