私は2005年のビンテージサーバー(デュアル3GHz Xeon、256MBキャッシュを備えたLSI53C1030T RAID/SCSIコントローラー、8GB RAM)を持っており、それをいくつかの軽いVMストレージデューティーに転用しています。
最初の試みは、4x300GBドライブをハードウェアRAID5に配置し、次にOpenfilerのLVMとiSCSIをその上にインストールすることでした。その結果、読み取り速度に非常に一貫性がなくなり(20MB /秒から2GB /秒ですが、おそらくキャッシュされます)、ひどいが一貫した8MB /秒の書き込みになりました。これらの結果はすべて、ローカルddとネットワークを介した実際の大きなファイル転送の両方で測定され、どちらも同様の結果をもたらしました。
よく読んだ後、前述のLSIコントローラーはハードウェアRAIDにはあまり適していないことがわかったので、4x300GBドライブを備えたチャネルのRAID機能をオフにし、mdadmソフトウェアRAIDを使用してRAIDアレイを作成し、LVMを上に配置しましたそれ。さらにテストを行ったところ、結果は改善されました(20MB /秒の書き込み)が、それでもかなりひどいものです。私は別の日を費やして、パーティションの調整、チャンク、ストライプ幅、ストライドサイズの最適化、ext4オプション、さまざまなジャーナリングオプションなどを試してみましたが、目に見える改善はあまりありませんでした。
私が行った別の実験は、/ dev/md0と/ dev/mapper/vg0-lv0(これは単にmd0全体のマッピングでした)でhdparm -tT
を実行し、LVMを通過するときに2倍の速度低下が発生しました。 LVMは速度のペナルティをもたらす可能性があることを読みましたが、速度を半分に下げることは受け入れられません。
これはどれも意味がなかったので、私は基本に戻り、単一のドライブに単一のパーティションを作成し、LVM、RAIDはなく、単なる古いSCSI320を作成し、いくつかのテストを実行しました。複数の実行と複数のプログラムで、読み取りが最大75MB /秒、書き込みが最大55MB /秒でした。
では、1台のドライブで75MB /秒の読み取りと55MB /秒の書き込みを実行できる場合、そのうち3台のRAID5(ハードウェアまたはソフトウェア!)がこのような恐ろしい速度になるのはなぜですか?私は何が間違っているのですか?他に何を試すべきですか?
更新1:実験を続けていると、ディスクの1つがパーティション化されたくない場合があることに気付きました。 partedとfdiskは、パーティションを実際に書き出すことを単に拒否します。そこで、他のすべてのディスクで同じコマンドを試して、システム上の問題がないことを確認しました。その1つのディスクだけに分離されているように見えました。 smartctl
のヘルステストを実行しましたが、すべて正常にチェックアウトされました。 dmesg
は、ドライブに何か問題がある可能性があることを示す唯一の情報源でしたが、かなり不可解で特に役立つメッセージはありませんでした。まったくの好奇心から、ドライブを取り出して再起動し、LVMを使用せずにext4を搭載したソフトウェアRAID5に対してこれまでに行ったすべてのことをやり直しました。最初の試行では、新しいパーティションに64kBブロックの4.2GBファイルをddダンプしてテストしたときに、5つのドライブアレイに対して200MB /秒の読み取りと120MB /秒の書き込みが行われました(その間にさらに2つの300GBドライブが見つかりました)。どうやら、ドライブは完全に死んではいないものの、特に協力的ではなく、方程式から外れると、すべてがはるかに良く実行されました。
RAIDレベルに関係なく、8MB /秒が正しく感じられませんでした。
明日:LVMでテストし、ハードウェアRAIDに戻るかもしれません。
RAID5は、書き込みパフォーマンスが悪いことで有名です。これは、特定のディスクへのすべての書き込みでパリティブロックを更新する必要があるためです。したがって、すべての書き込みでは、アレイ内の他のすべてのディスクからの読み取り+パリティの計算が必要であり、パリティの計算が行われ、その特定のブロックのために保持されます。
これは、単一のブロックを書き込むだけの場合と比較して、長い時間がかかります。
高速書き込みが必要な場合は、RAID1やRAID10などのミラー構成が適しています。