Linux:ホームサーバーでのソフトウェアとRAID6の高速化

モスクワで0時間0分に何ができますか? お祝いテーブルに座って祝いますか? どんなに。 このお祝いの瞬間に、ホームサーバーでのソフトレードの生産性の調整に関する現在の研究を共有したいと思います。 理論をスキップして、主要な塩がある最後の段落をすぐに読むことができます。



RAID 6を選ぶ理由



ご存知のように、RAID-5は1つのほうきの死に耐えることができ、その死後-新しいハードドライブでのRAID回復が完了するまで、データは危険にさらされます-通常、大きなアレイの回復には最大70時間かかり、別のほうきは簡単に死ぬ可能性があります。

RAID-6は、2つのほうきの死に耐えることができます。 マイナスについて-RAID 5と比較しても、特に録音が遅くなるという一般に認められた意見。 まあ、それをチェックしてください。



なぜソフトトレードなのか?



鉄製の襲撃が必要なのは、バッテリーとオンボードキャッシュがある場合のみです。 その後、コントローラーはOSに直ちに応答し、ディスクへの書き込みが物理レベルで完了し、あらゆる種類のACIDデータベースが非常に迅速かつ安全に機能することを確認します。

他のケースでは、ソフトレイドと比較してボーナスはありませんが、いくつかの欠点のみがあります:

1)鉄は燃え尽きていますか? 新しいサーバー? 同じコントローラを購入するか、互換性を祈ってください。 同じドライブからのSoftradeはどこにでも行きます。

2)価格:-)実際、このため、バッテリーを手にした通常の襲撃はしませんでした:-)



さて、通常のマザーボード上にある「RAIDコントローラー」は決して使用しないでください。 オンボードBIOS(中央処理装置によって実行され、独自の処理装置はありません)により、OSをRAIDからロードするだけです。これは、有用性が終わり、マイナスのみが残る場所です。



いくつかのソフトトレードの神話について



1) 彼は貴重なプロセッサーをたくさん食べる

LinuxカーネルのRAIDドライバーのソースを片目で見ると、すべてがSSE2用に長い間最適化されていることがわかります。 また、SSE2を使用すると、プロセッサは最新のプロセッサの1コアで1クロックあたり16バイトからXORを読み取ることができ、すべてがメモリ交換の速度に依存します。 1つのコアの負荷のどれだけの割合が1Gb / sのストリームを生成するかを推定できます:-)しかし、多くのコアがあります:-)実際には、Opteron 165(1.8Ghz 2コア)では、速度はCPUにとどまりません。

2) バラバラになり、その後わさびを集めます。

何かが落ちた場合、それは鉄によるものです(たとえば、通常のネジは、あらゆる種類のバックグラウンドタスクを実行することを好む場合があります)。 タンブルダウンほうきの追加は簡単な操作で、自動的に行うこともできます。 ただし、これは平均して1年に1回行う必要があります。

mdadm / dev / md0 -a / dev / sde1

3) Softradeには西洋ワサビのモニタリングがあります

監視により、すべてが細かくカスタマイズ可能です。 たとえば、mdadm configでsoapを示すだけで十分で、アレイに何か問題が発生した場合にメールを送信します。 とても快適)



1つのほうきが脱落した場合の例を次に示します。

これは、XXXXXで実行されているmdadmから自動生成されたメールメッセージです。



DegradedArrayイベントがmdデバイス/ dev / md0で検出されました。



忠実にあなたなど



PS / proc / mdstatファイルには現在、次のものが含まれています。



性格:[raid6] [raid5] [raid4]

md0:アクティブraid6 sda1 [1] sdc1 [4] sdd1 [3] sde1 [2]

2929683456ブロックスーパー1.2レベル6、1024kチャンク、アルゴリズム2 [5/4] [_UUUU]



未使用のデバイス:なし
使用前にテストすることをお勧めします。

mdadm --monitor -1 -m myname@myisp.com / dev / md0 -t

4) Softradeのアレイの再構築速度は非常に遅い

デフォルト設定では、はい。 そして、記事の最後まで読んだ場合、最も遅いほうきの速度ですべてを再構築する方法を学びます:-)



ビットマップの役割について



Linuxベースのソフトトレードは、ビットマップという優れた機能をサポートしています。 ディスク上の変更されたブロックはそこにマークされており、何らかの理由でアレイから1つのディスクが落ちて、それを再び追加した場合、アレイの完全な再構築は必要ありません。 くそ便利。 RAID自体に保存することもできます-内部、または別のファイルで使用することもできますが、制限があります(たとえば、ファイルシステムのタイプ)。 内部ビットマップを作成しました。 そして無駄に。 以来、内部ビットマップの速度が低下します 録音中は常にほうきの頭をひきつけます。



速度を見てみましょう:



たとえば、速度は次のようにテストできます。

time sh -c "dd if = / dev / zero of = ddfile bs = 1M count = 5000"

time sh -c "dd if = ddfile of = / dev / null bs = 1M count = 5000"


5xWD 1TBのRAID-6の結果は次のとおりです。読み取り268MB / s、書き込み37MB / s。 彼らは肩をすくめて言います:さて、あなたは何が欲しいのですか? RAID-6は、すべてのディスクの更新されたチェックサムを計算するために以前に書き込まれた内容を読み取る必要があるため、書き込み時に速度が低下します。 また、このビットマップ...

アレイの再構築速度-約25MB / s-最大15時間のフルアレイ再構築。 ここに、あなたの悪夢があります。



問題は簡単に解決されます。



  1. Linux RAIDドライバーには、次のような便利なパラメーターがあります:stripe_cache_size

    デフォルト値は256です。低すぎる-書き込み速度が急激に低下します(判明したため)。 多くの場合の最適値は8192です。これは、1ディスクあたりのメモリブロック数です。 1ブロックは通常4kbです(プラットフォームによって異なります)。5ディスクアレイの場合、キャッシュには8192 * 4kb * 5 = 160MBがかかります。

    エコー8192> / sys /ブロック/ md0 / md / stripe_cache_size



    即座に行動を開始します。 現在、ほとんどの場合、ドライバーは書き込み前にディスクを読み取る必要がなく(特に線形記録の場合)、パフォーマンスが劇的に向上します。 再起動後、消えないように消えます-たとえば、ある種のブートに/etc/rc.localを追加します。



    アレイの再構築速度は現在66MB / s(これはすべてのディスクですぐに、アレイ全体で約5時間です)、読み取り速度は同じままですが、書き込み速度は130MB / s(37から)に増加しました。
  2. ビットマップを別のディスク(私の場合はシステムディスク)に転送します。 システムのほうきが死んだ場合-大丈夫、配列はビットマップなしで復元されます。

    再び録音するときに頭がひきつりなくなり、録音速度が165MB / sに上がります。

    mdadm -G / dev / md0 -b / var / md0_intent


そのため、10秒で書き込み速度を37 MB /秒から非常にまともな165 MB /秒に増やしました(4倍以上!!)。 これで、ネットワーク経由のSambaを介して、ファイルの書き込みと読み取りが95-100 MB / sになり、RAIDの低速のために計画されたサーバーのアップグレードは無期限に延期する必要があります-死んだOpteron 165のパフォーマンスはすべてのタスクに十分です:-)

明けましておめでとうございます:-)



PS。 注意! ルートの下で、冷静な頭の上だけを歩いてください!

PS。 困難な戦いの中で、2011年のHabréの最初の投稿はそれでも公開されました

PS。 インフィ








All Articles