ホームサーバーに5x1Tb WD Green HDDのmdadm RAID-6があります。読み取り速度は十分すぎる-ddで268 Mb/s。ただし、書き込み速度はわずか37.1 Mb/sです。 (どちらも48Gbファイルでddを介してテストされ、RAMサイズは1Gb、テストで使用されるブロックサイズは8kbです)
書き込み速度が非常に遅い理由を教えてください。それを改善する方法はありますか?書き込み中のCPU使用率はわずか25%(つまり、Opteron 165の1コアの半分)です。ビジネスに重要なデータはなく、サーバーはUPSでバックアップされています。
mdstat:
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
助言がありますか?
ライトバック、バリア、nobhなどは役に立ちませんでした。 DD blocksize = 1M、8Mは何も変更しませんでした。 mdadmは物理的にセクターを読み取ってパリティを計算するように見えますが、それは重要ではありませんが...正しいですか?
更新:ストライプキャッシュの変更後の速度低下は、実際にはテスト中に1台のHDDが故障した可能性が高いため、ニース:-D
解決済み:ストライプキャッシュを増やして外部ビットマップに切り替えた後、速度は160 Mb/s書き込み、260 Mb/s読み取りです。 :-D
/ sys/block/mdX/md/stripe_cache_sizeを調整しようとしましたか?
このフォーラムの投稿 (ノルウェー語、申し訳ありません)によると、「このパラメーターの調整は、ディスクが多くなり、システムが高速になるほど重要です」:
私のシステムでは、値8192を使用して最高のパフォーマンスが得られます。デフォルト値の256を使用すると、書き込みパフォーマンスは66%低下します。
比較のために彼の速度を引用:
ディスク:mdadm RAID6(-n 512)の8xSeagate 2TB LP(5900RPM)(stripe_size_cache = 8192)。
CPU:Intel X3430(4x2.4GHz、8GB DDR3 ECC RAM)
速度:387 MB/sの順次書き込み、704 MB/sの順次読み取り、669秒あたりのランダムシーク。
私のホームサーバーには、RAID 5を使用して、ほぼ同じディスクがあります。
ディスク:RAID 5で4x1.5TB WD Green(stripe_size_cache = 256-デフォルト)
CPU:Intel i7 920(2.66 GHz、6 GB RAM)
速度:60 MB/sの順次書き込み、138 MB/sの順次読み取り(Bonnie ++に準拠)
したがって、順次書き込みパフォーマンスは読み取りパフォーマンスの約50%のようです。
期待されるパフォーマンスについては、 Linux Raid Wiki はRAID 5について述べています:
読み取りはRAID-0の読み取りとほぼ同様で、書き込みはかなり高価です(データベース操作などで正しいパリティ情報を計算できるようにするために、書き込みの前に読み取りが必要です)か、RAID-1に類似しています書き込み(より大きな順次書き込みが実行され、パリティが書き込み対象の他のブロックから直接計算できる場合)。
RAID 6について:
読み取りパフォーマンスはRAID-5と似ていますが、書き込みパフォーマンスはさらに劣ります。
試してみる
echo 32768 > /sys/block/md0/md/stripe_cache_size
そしてチェック;)