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


26

2TB HDDを搭載した安価な2ベイNASがあります。ディスク障害に対して堅牢にするために、2台目の2TB HDDを購入し、Linux mdadmでRAID1に入れることを考えています。ファイルシステムはext4です。

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

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

ありがとう。

編集:

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

編集2:

MDのマンページを含むRAID1の読み取りパフォーマンスの向上をサポートする証拠が見つかりました。

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

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


2
書き込み; 少し遅くなります。読み取り; かなり速い。私が理解したことから、書き込みの違いはほぼゼロですが、読み取りはかなり顕著です。
Sirex

sirexの言うことは..肉眼ではパフォーマンスの違いに気付かないでしょう。
ピョートルクラ


1
私は1つの部分を見逃しています:NASへのアクセスがどれくらい速いか。1つのディスクがすでにネットワーク接続を満たしている場合、内部速度を上げてもあまり役に立ちません。
ヘネス

回答:


39

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

それを示すために、でいくつかのデータを読んでください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秒かかりました。つまり、Linux上のRAID1から複数のディスク読み取りが大幅に向上します。skip=$COUNT一部は非常に重要です。2番目のプロセスは、10 GBのオフセットから10 GBのデータを読み取ります。

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


5

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

したがって、理論的には、RAIDコントローラーが適切に機能すれば、O(n)の高速化を実現できます。


5
mdadmはソフトウェアRAIDであるため、実際には「RAIDコントローラー」はありませんが、複数の読み取りを並列に実行する場合、読み取りブーストが良好になります。詳細はこちらをご覧ください:freebsdwiki.net/index.php/...
Shadok

1
実際には、Linux Software MD raidからの読み取りのパフォーマンスは低下します。unicom.com/node/459を参照してください(このテストでは、読み取り速度が77 MB / sから74 MB / sに低下しました)。
ssh

2
@ssh unicom.com/node/459はまったく間違っています。bonnie ++は、readmeに明示的に記載されているRAIDミラーのテストには使用できません。詳細については私の答えをご覧ください。superuser.com/a/757264/68978
Nowaker

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

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


3

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

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

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

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