mdのraid10、f2を説明する


14

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

回答:


17

実際、ウィキペディアは実際のドキュメントよりもそれをよく説明していると思います。これが記事のテキストです。

LinuxカーネルソフトウェアRAIDドライバー(「マルチデバイス」のmdと呼ばれる)は、クラシックRAID 1 + 0アレイの構築に使用できますが、(バージョン2.6.9以降)いくつかの興味深い拡張機能を備えた単一レベルとしても使用できます[4] 5]。各チャンクがk-wayストライプ配列で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構成を作成することもできます。


6

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

以下に、manページの関連セクションを示します。

mdadm(8)

-p、--layout =このオプションは、RAID5のデータレイアウトの細かい詳細、及びRAID10アレイを構成
...
最後に、RAID10のレイアウトオプションは、小さな続いまたは「P」「O」、「N」の一つであります数。デフォルトは「n2」です。

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

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

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

md(4)

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

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

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

' far '配列は、RAID0アレイと同等のシーケンシャル読み取りパフォーマンスを提供できますが、書き込みパフォーマンスが低下します。

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

RAID10アレイのデバイスの数は、各データブロックのレプリカの数の倍数である必要はなく、少なくともレプリカと同じ数のデバイスが必要であることに注意してください。

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


オフセットが進むべき方法のように聞こえます
...-xenoterracide

ウィキペディアのより視覚的な説明はより明確だと思うので...ここに投稿しました。
xenoterracide

2

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

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

近いレイアウトでは、RAID10のように見え、この動作により適しています(RAID0のようなシングルスレッドI / Oではなく、マルチスレッドI / Oを加速します)。4つのディスクを備えたn2f2は、4つのディスクを備えたRAID1と同様です。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.