web-dev-qa-db-ja.com

RAID1はLinux mdadmでパフォーマンスを向上させますか?

私は安い2ベイを持っていますNAS 2TB HDDです。ディスク障害に強いために、2台目の2TB HDDを購入し、Linux mdadmでRAID1にそれを置くことを考えています。ファイルシステムはext4です。

これにより、NASのパフォーマンスが向上または低下しますか?読み取りまたは書き込みパフォーマンスについてはどうですか?

このオンラインについて多くの意見があるようですが、コンセンサスはありません。

ありがとう。

編集:

だから、私はすでに3つの異なる答えを持っています。「かなり速い」、「気づかない」、「パフォーマンスが低下するでしょう」です。 (私は主に読み取りパフォーマンスに興味があります。)ウィキペディアは「読み取りパフォーマンスはコピー数の線形倍数としておおむね上がる可能性がある」と述べています。どちらですか?

編集2:

MD1のマンページを含む、RAID1の読み取りパフォーマンスの向上をサポートする証拠が増えていることがわかりました。

変更はすべてのデバイスに並行して書き込まれます。データは任意の1つのデバイスから読み取られます。ドライバーは、パフォーマンスを最大化するために、すべてのデバイスに読み取り要求を分散しようとします。

MDのRAID10と--layout=f2は、RAID0の読み取りパフォーマンスでRAID1の冗長性を提供し、2台のドライブでのみ使用できます。ただし、シーケンシャル書き込みでは両方のドライブがドライブの離れた部分の間を行き来するため、書き込みパフォーマンスは低下します。 man md 詳細については。

26
Jesse

はい。RAID1のLinux実装では、2つの個別のディスク読み取り操作が同時に実行される限り、ディスク読み取り操作が2倍高速化されます。つまり、1つの10 GBファイルの読み取りは、単一のディスクよりもRAID1の方が速くはありませんが、2つの異なる10 GBファイル*の読み取りは速くなります。

それを実証するには、ddを使用してデータを読み取るだけです。何かを実行する前に、sync && echo 3 > /proc/sys/vm/drop_cachesを使用してディスク読み取りキャッシュをクリアします。そうでない場合、hdparmは超高速読み取りを要求します。

単一ファイル:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

2つのファイル:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

10 GBのデータの読み取りには65秒かかりましたが、10 GB + 10 GB = 20 GBのデータの読み取りには合計で68.7秒かかりました。つまり、複数のディスク読み取りはRAID1から大きなメリットをもたらしますLinuxの場合。 skip=$COUNTの部分は非常に重要です。 2番目のプロセスは、10 GBのオフセットから10 GBのデータを読み取ります。

Jaredの回答と http://www.unicom.com/node/459 に関するsshのコメントは間違っています。そこからのベンチマークは、ディスク読み取りがRAID1の恩恵を受けないことを証明しています。ただし、テストは、一度に2つの個別の読み取りを実行しないbonnie ++ベンチマークツールを使用して実行されました。著者は、bonnie ++はRAIDアレイのベンチマークに使用できないと明示的に述べています( readmeを参照 )。

39
Nowaker

はい、読み取りパフォーマンスが向上し、冗長性が得られます。ファイルが両方のHDDにあるので、2つの異なるHDDから同時にファイルの一部を読み取ることができるので、簡単に想像できます。

したがって、理論的には、RAIDコントローラーが正しく機能すれば、O(n)のスピードアップが得られます。

5
  • man 4 mdの状態:"…ドライバーによって実行される読み取りバランシングは、RAID1のパフォーマンスプロファイルをRAID0と同じにしないことに注意してください;入力の単一のストリーム加速されません(たとえば単一のdd)、but複数の順次ストリームまたはランダムなワークロードは複数のスピンドルを使用します理論的には、NディスクRAID1を使用すると、N個の順次スレッドがすべてのディスクから読み取ることができます… "

  • それを補うために実際には、典型的な2 HDDソフトウェアRAIDセットアップで観察されているiostat出力に基づいて、なしのバランスがあります。実際、これはmdadmのオプション--write-mostlyが常にオンになっているように見えます。

4
poige

いいえ、mdadm RAID1からの読み取り中はメリットはありません。少し前にこれについて自問していました。

dstatはディスクの使用状況を示し、bwm-ngは、個別のmdadm RAIDメンバーでの読み取り/書き込みの使用状況を表示できるため、特にこの場合に特に役立ちます。押すだけ n (次へ)数回、インターフェース統計からディスク統計に切り替わります。次に、最大値に切り替えます t 各ディスクからの最大読み取り/書き込みを確認します。以下が表示されます。

RAID1ボリュームbwm-ngに書き込みを行うと、2つの書き込みが行われ、同時に2つのディスクに書き込まれます。 RAID1ボリュームbwm-ngから読み取ると、単一のドライブ(アレイメンバー)から読み取ることが示されます。

3
TooMeeK