web-dev-qa-db-ja.com

mdのraid10、f2を説明する

私はさまざまなRAIDのほとんどがどのように機能するかを知っています。しかし、Linuxソフトウェアraidの調査中に、推奨される raid10、f2 モードに出くわしました。 2枚または3枚のディスクでどのように機能するのか、私にはよくわかりません。誰かが私にそれを説明できますか?それともそれを説明する本当に良い記事を私に指摘しますか?

14
xenoterracide

実際、私は Wikipedia が実際のドキュメントよりも説明していると思います。これが記事のテキストです。

linuxカーネルソフトウェアRAIDドライバー(「マルチデバイス」の場合はmdと呼ばれます)は、クラシックRAID 1 + 0アレイを構築するために使用できますが、(バージョン2.6.9以降)興味深い拡張機能を備えた単一レベル[4]としても使用できます[ 5]。各チャンクがkウェイストライプアレイでn回繰り返される標準の「ニア」レイアウトは、標準のRAID-10配置と同等ですが、nでkを分割する必要はありません。たとえば、2、3、4ドライブのn2レイアウトは次のようになります。

2 drives         3 drives            4 drives
--------         ----------        --------------
A1  A1           A1  A1  A2        A1  A1  A2  A2
A2  A2           A2  A3  A3        A3  A3  A4  A4
A3  A3           A4  A4  A5        A5  A5  A6  A6
A4  A4           A5  A6  A6        A7  A7  A8  A8
..  ..           ..  ..  ..        ..  ..  ..  ..

4ドライブの例は標準のRAID-1 + 0アレイと同じですが、3ドライブの例はRAID-1Eのソフトウェア実装です。 2ドライブの例は同等のRAID 1です。ドライバは、すべてのドライブがfセクションに分割される「far」レイアウトもサポートします。すべてのチャンクは各セクションで繰り返されますが、1つのデバイスによってオフセットされます。たとえば、2および3ドライブアレイのf2レイアウトは次のようになります。

2 drives             3 drives
--------             --------------
A1  A2               A1   A2   A3
A3  A4               A4   A5   A6
A5  A6               A7   A8   A9
..  ..               ..   ..   ..
A2  A1               A3   A1   A2
A4  A3               A6   A4   A5
A6  A5               A9   A7   A8
..  ..               ..   ..   ..

これは、ミラーリングされたアレイのストライピングパフォーマンス用に設計されています。 RAID-0の場合のように、順次読み取りはストライプ化できます。ランダム読み取りの方がいくらか高速であり(ディスクの外側セクターがより高速で、平均シーク時間が短いため、おそらく10〜20%)、順次書き込みとランダム書き込みはほぼ同じパフォーマンスです。他のミラー化されたレイドに。レイアウトは、読み取りより書き込みの頻度が高いシステムでうまく機能します。これは、多くのシステムで非常に一般的な状況です。各ドライブの最初の1/fは、標準のRAID-0アレイです。したがって、2つのドライブのみのミラーリングされたセットでストライピングパフォーマンスを得ることができます。 nearオプションとfarオプションの両方を同時に使用できます。各セクションのチャンクは、n個のデバイスによってオフセットされます。たとえば、n2 f2レイアウトは2×2 =各セクターの4つのコピーを格納するため、少なくとも4つのドライブが必要です。

A1  A1  A2  A2        A1  A1  A2  A2  A3
A3  A3  A4  A4        A3  A4  A4  A5  A5
A5  A5  A6  A6        A6  A6  A7  A7  A8
A7  A7  A8  A8        A8  A9  A9  A10 A10
..  ..  ..  ..        ..  ..  ..  ..  ..
A2  A2  A1  A1        A2  A3  A1  A1  A2
A4  A4  A3  A3        A5  A5  A3  A4  A4
A6  A6  A5  A5        A7  A8  A6  A6  A7
A8  A8  A7  A7        A10 A10 A8  A9  A9
..  ..  ..  ..        ..  ..  ..  ..  ..

Linux 2.6.18以降、ドライバーは各ストライプがo回繰り返されるオフセットレイアウトもサポートします。たとえば、2および3ドライブアレイのo2レイアウトは次のようにレイアウトされます。

2 drives       3 drives
--------       --------
A1  A2         A1  A2  A3
A2  A1         A3  A1  A2
A3  A4         A4  A5  A6
A4  A3         A6  A4  A5
A5  A6         A7  A8  A9
A6  A5         A9  A7  A8
..  ..         ..  ..  ..

注:kはドライブの数、n#、f#およびo#はmdadm --layoutオプションのパラメーターです。 Linuxは、mdドライバー(0、1、4、5、6)を使用して他の標準RAID構成を作成することもできます。

17
xenoterracide

私が読んだものから、f2RAID10アレイは各ブロックの少なくとも2つのコピーを保持し、それらは互いに遠く離れて格納されます。

これは、manページの関連セクションです。

mdadm(8)

-p、-layout =このオプションは、raid5およびraid10配列のデータレイアウトの詳細を構成します
...
最後に、RAID10のレイアウトオプションは、「n」、「o」、または「p」のいずれかで、その後に小さな数字が続きます。デフォルトは「n2」です。

nは「近い」コピーを示します。 1つのデータブロックの複数のコピーは、異なるデバイスで同様のオフセットにあります。

o「オフセット」コピーを通知します。チャンクがストライプ内で複製されるのではなく、ストライプ全体が複製されますが、1つのデバイスによってローテーションされるため、重複するブロックは異なるデバイス上にあります。したがって、ブロックの後続のコピーは次のドライブにあり、さらに1チャンク下にあります。

fは 'far'のコピーを通知します(複数のコピーには非常に異なるオフセットがあります)。 「near」と「far」の詳細については、md(4)を参照してください。

md(4)

RAID10は、RAID1とRAID0の組み合わせを提供し、RAID1 + 0とも呼ばれます。すべてのデータブロックは何度か複製され、結果のデータブロックのコレクションは複数のドライブに分散されます。 RAID10アレイを構成する場合、必要な各データブロックのレプリカの数(通常は2)と、レプリカを「近い」、「オフセット」、または「遠い」のいずれにするかを指定する必要があります。 (「オフセット」レイアウトは2.6.18からのみ利用可能であることに注意してください)。

'near'レプリカを選択すると、特定のチャンクの複数のコピーがアレイのストライプ全体に連続して配置されるため、データブロックは、2つの隣接するデバイスで同じオフセットにある可能性があります。

far」レプリカを選択すると、特定のチャンクの複数のコピーが互いにかなり離れて配置されます。すべてのデータブロックの最初のコピーは、すべてのドライブの最初の部分にRAID0方式でストライプ化され、次にすべてのブロックの次のコピーは、すべてのドライブの後のセクションにストライプ化され、常に特定のブロックのすべてのコピーが確実に別のドライブ。

far」の配置では、RAID0アレイと同等の順次読み取りパフォーマンスが得られますが、書き込みパフォーマンスが低下します。

「オフセット」レプリカが選択されると、特定のチャンクの複数のコピーが、連続したドライブと連続したオフセットに配置されます。事実上、各ストライプは複製され、コピーは1つのデバイスによってオフセットされます。これにより、適切に大きなチャンクサイズが使用されているが、書き込みをそれほど必要としない場合、「far」と同様の読み取り特性が得られます。

RAID10アレイのデバイスの数は、各データブロックのレプリカの数の倍数である必要はありません。これらのデバイスには、少なくともレプリカと同じ数のデバイスが必要です。

たとえば、5つのデバイスと2つのレプリカでアレイを作成すると、デバイスの2.5に相当するスペースが利用可能になり、すべてのブロックが2つの異なるデバイスに格納されます。

6
Zoredache

それは興味深く、十分に説明されています。ただし、プレーンなRAID1には、少なくともLinuxソフトウェアRAIDでは、複数のリーダーを非常に優れたパフォーマンスで並行して維持できる機能もあります。

データは任意の1つのデバイスから読み取られます。ドライバーは、パフォーマンスを最大化するために、すべてのデバイスに読み取り要求を分散しようとします。
[...]理論的には、NディスクRAID1を使用すると、N個の順次スレッドがすべてのディスクから読み取ることができます。 (man 4 md、RAID1セクション)

RAID10は、近いレイアウトで、この動作に適しているようです(RAID0のようなシングルスレッドI/Oではなく、マルチスレッドI/Oを高速化します)。 4ディスクのn2f2は、4ディスクのRAID1に似ています。

4つのディスクを持つn2レイアウトは両方を実行します:1つのスレッドの読み取りパフォーマンスを2倍にし、2つのスレッドの読み取りパフォーマンスを4倍にします(Linux md RAID10スケジューラが適切に実装されている場合、1つのスレッドはペアで読み取り、もう1つのスレッドは読み取ります他のペア)。

すべてはあなたが必要とするものに依存します!まだベンチマークはしていません。

2
alphanet