RAID0 (ハードウェアと md の両方) は LVM よりも遅いですか?

RAID0 (ハードウェアと md の両方) は LVM よりも遅いですか?

分散ファイルシステムを構築する際に、ノードのベンチマークを行っています。ファイルは多数のノードに分散され、複製されるため、ノード自体には raid0 を使用しています。ただし、パフォーマンスの数値がおかしいので、StackOverflow コミュニティが原因を解明する手助けをしてくれるかどうか知りたいです。ベンチマーク ツールとして fio を使用していますが、バージョン 1.38 は機能しなかったため、バージョン 1.59 または 1.60 を使用する必要がありました。

これが私の fio 構成ファイルです:

[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900

[file]
filesize=16-8k/8M-512M
size=1GiB

ソフトウェア RAID を使用した raid0 の場合、次の結果が得られました (重要な部分のみ抜粋)。

  read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
  write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec

ソフトウェア RAID を使用した RAID1 では、次の結果が得られました。

  read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
  write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec

単一ディスクのパフォーマンスは依然として RAID0 のパフォーマンスを上回ります。

  read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
  write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec

4k エクステントを持つ 4 つのディスクに渡ってストライプ化された LVM:

  read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
  write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec

ハードウェア RAID0 (HighPoint RocketRaid 2470)

  read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
  write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec

上記の最初の 4 つの結果は、マザーボードの SATA コントローラのみで実行されていることに注意してください。ただし、RocketRaid カードに移行した後、ソフトウェア RAID で結果を再現しました。これらは 1 TB の SATA ドライブです。マルチスレッド テストを実行しても、ほぼ同じ結果が得られました。RAID0 がこのように遅くなる理由はあるのでしょうか。RAID0 は、単一ドライブまたは RAID1 よりも優れたランダム I/O パフォーマンスを発揮すると考えていました。


フォローアップ: Scalable Informatics の Joe (いい人です、彼の製品を買ってください!) からの提案に基づいて、より深いキューとよりランダムなブロック サイズを使用するようにテストを変更しました。

[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8

[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900

そして最終結果は、HighPoint RocketRaid 2740 カードがダメだということだ。

  • シングルディスクパフォ​​ーマンス(SuperMicro マザーボード SATA):読み取り 43.2 mb/s、書き込み 42.6 mb/s
  • MD Raid 0 (RocketRAID を HBA として使用、ドライバーのロードの有無にかかわらず): 読み取り 53.1 mb/s、書き込み 54.1 mb/s
  • RocketRaid Raid 0: 読み取り 29.4 mb/s、書き込み 29.2 mb/s
  • MD RAID 0 (マザーボード SATA): 読み取り 58.0 mb/s、書き込み 58.3 mb/s

RocketRaid カードに接続した場合のパフォーマンスは全体的に低下しました。

この質問は未解決のままにしておきます。テストのために今後 1 ~ 2 週間以内に新しい RAID カードを入手する予定で、単一ディスクのパフォーマンス以上のものを得るための最適化のヒントをまだ探しているのですが、十分な回答が得られていないようです。

答え1

書き込みまたは読み取りデータが単一のディスクにホットスポットしているストライプサイズの問題が発生している可能性があります。ソフトウェア RAID の使い方詳細については、次の出力を見て確認することができます。iostat

線形アクセス パフォーマンスを確認する場合は、ベンチマークに「hdparm -t」または dd を使用してみてください。これにより、単一のディスクのパフォーマンスの約 2 倍のパフォーマンス数値が表示されます。

答え2

ランダム I/O では、単一ドライブや RAID1 よりも優れたパフォーマンスを発揮すると思いました。

いいえ、ランダムに検索するブロックがストライプ サイズより大きい場合、速度は 1 つのドライブとほぼ同じになります。それでも、1 つのドライブよりも悪い結果になる理由が説明できません。

からウィキペディア

ファイルのコピーやビデオの再生など、ストライプサイズよりも大きい読み取りと書き込みの場合、ディスクは各ディスクの同じ位置を探します。アレイのシーク時間は単一のドライブのシーク時間と同じになります。データベース アクセスなど、ストライプ サイズよりも小さい読み取りと書き込みの場合、ドライブは独立してシークできます。

関連情報