オペレーティングシステムが故障したドライブに書き込もうとしないように、IOレイテンシと再試行をどのように減らすことができますか?
私はデモコンテンツのコピーを作成して顧客に貸し出し、通常のSATAデスクトップハードドライブに保存するシステムを持っています。 SASを介して複数のドライブを同時に接続し、スクリプトを使用してコンテンツをコピーします。
ドライブをレンタルしたため、一部のドライブが破損する可能性がありますが、破損しているかどうかはわかりません。次にドライブをコピー操作で再利用するときに、システムがそのドライブのIOを再試行すると、速度が遅くなります。異なるドライブ速度。場合によっては、破損したドライブを検出して削除するのに数時間かかることがあります。ドライブを取り外した後、残りのドライブは通常の速度で書き込みを開始しました。
不良ドライブの回復には興味がありません。他のすべての速度を遅くしないようにそれらを消去するだけです。
また、バッドブロックとsmartmontoolsも見て、書き込み前にドライブを事前にチェックすることも検討しています。
オペレーティングシステム:Ubuntu Linux(12.04lts)
答え1
以前はこの調整可能項目を使用したことがありませんが、調整したい場合があります。uh_timeout(エラー処理タイムアウト)ドライブの問題:
[root@localhost device]# cat /sys/block/sda/device/eh_timeout
10
[root@localhost device]#
上記の表示はsda
10秒に設定されています。 Red Hat Knowledgebaseから:
一部のストレージ構成(たとえば、LUNが多い構成)では、SCSIエラー処理コードが応答しないストレージデバイスに対してTEST UNIT READYなどのコマンドを実行するのに多くの時間を費やすことがあります。新しいsysfsパラメータeh_timeoutがSCSIデバイスオブジェクトに追加されました。これにより、SCSIエラー処理コードで使用されるTEST UNIT READYおよびREQUEST SENSEコマンドのタイムアウト値を構成できます。これにより、応答しないデバイスを確認するのにかかる時間が短縮されます。 eh_timeoutのデフォルト値は10秒で、この機能が追加される前に使用されたタイムアウト値でした。
答え2
/sys/block/<dev>/stat
興味のあるデバイスを監視して、10番目のパラメータ(io_ticks)を比較してください。
例えば、ticks = io_ticks - prev_ticks / seconds_deltatime / 10
これは、ディスク io が使用可能になるまでディスクが待機するのに費やした時間の割合です。
もちろん、100%に近づくのは確認する価値があり、本当に賢明にすべてのディスクの平均と比較して平均より高いディスクを選択することも価値があります。
よりブロックレベルの統計文書。
あるいは、ムニンのようなものを使ってグラフで描いてみてください。 Muninがしきい値(例:90%またはチャートに良い警告数で表示されるすべての項目)を超えると、警告が発生することがあります。
たとえば、/dev/sdiをチェックする必要があることを示す2つのMunin図を参照してください。この例では、/ dev / sdiが配列の一部である場合、配列全体が影響を受けます。
週間チャートを見ると、/dev/sdcも遅くなる可能性があります。
上記の/dev/sdiは破損していないことを追加する必要があります。これは遅いディスク(実際には誰かが企業用SATAディスクアレイに追加した緑色のディスク)にすぎず、アレイが遅くなります。実際の故障したディスクは、親指のように飛び出します。
全体的に時間があれば、おそらくスクリプトを使用します。ただし、迅速なソリューションが必要でサーバーに接続しやすい場合は、Muninはそのトリックを実行します。