Ubuntuで不良ブロックの再試行/待機時間を削減する


10

障害が発生したドライブにOSが継続的に書き込みを試行しないように、IO待機時間と再試行時間を削減するにはどうすればよいですか?

私は、通常のSATAデスクトップハードドライブに顧客に貸し出されるデモコンテンツのコピーを作成するために使用するシステムを持っています。SASを介して一度に多くのドライブを接続し、スクリプトを使用してコンテンツをドライブにコピーします。

ドライブが貸し出されているため、一部が破損して戻ってくることがありますが、それらが破損していることはわかりません。そのため、次にそのドライブがコピー操作で再利用されると、システムがそのドライブへのIOを再試行するときに他のドライブの速度が低下します。場合によっては、不良ドライブに気づいて削除するまでに数時間かかることがあります。ドライブを取り外すと、残りのドライブは通常の速度で書き込みを開始します。

不良ドライブを回復する必要はありません。私はそれらを取り除き、他のすべてを遅くしないようにする必要があります。

私はbadblocksとsmartmontoolsについても調査しており、書き込みを始める前にドライブの事前チェックを書き込むことを検討しています。

OS:Ubuntu Linux(12.04 lts)


udisks/を介したSMARTデータのチェックの何が問題になっていsmartmonctlますか?ここでは、古典的なXY問題だと考えています。
ディアハンター

2
おかげで、私はsmartmonctlをさらに研究します。私の経験では、最後の出荷中に不良セクターが発生した場合、SMARTステータスはドライブがまだ良好であることを示し、コピー中のランダムな部分まで正常に機能し、その後クロールまで減速し、他のドライブにも影響を与えます削除されます。
ライアンソレンセン2014

質問は直接の回答を受け取っていないため、Linuxでそれが可能かどうかはわかりません。どうすればIO待機時間と再試行時間を削減できますか?
imz-Ivan Zakharyaschev 2014

@ imz--IvanZakharyaschev unix.stackexchange.com/a/147304/25985ただし、カーネルはこれらのエラーをログに記録するため、問題が発生する前に障害のあるディスクをキャッチするだけで、システムログをスキャンできます。一定間隔。
goldilocks 14

@golもっと早くキャッ​​チしたい場合はどうなりますか?待つことなく、神様はIO操作がブロック解除してからエラーを報告するまでの時間を知っていますか?(実際、エラーのあるディスクからデータを保存しようとしていますが、私の問題も同様です。これらの「誤った」セクターに実行すると、大幅な遅延が発生します。...おそらく、私はアドバイスに従って、 SMARTテストからの情報をフィードして、SMART ddrescueによって報告されたセクターにも触れないようにします。)
imz-Ivan Zakharyaschev '29

回答:


7

以前にこの調整パラメータを使用したことはありませんが、問題のドライブのeh_timeout(エラー処理タイムアウト)を調整したい場合があります。

[root@localhost device]# cat /sys/block/sda/device/eh_timeout
10
[root@localhost device]# 

上記はsda10秒に設定されています。Red Hatナレッジベースから:

特定のストレージ構成(たとえば、多くのLUNを含む構成)では、SCSIエラー処理コードが、応答のないストレージデバイスに対してTEST UNIT READYなどのコマンドを発行するのに長い時間を費やす場合があります。SCSIデバイスオブジェクトに新しいsysfsパラメータeh_timeoutが追加されました。これにより、SCSIエラー処理コードで使用されるTEST UNIT READYコマンドとREQUEST SENSEコマンドのタイムアウト値を設定できます。これにより、これらの応答しないデバイスのチェックに費やされる時間が短縮されます。eh_timeoutのデフォルト値は10秒です。これは、この機能を追加する前に使用されたタイムアウト値でした。


私は今これをチェックしています。Ubuntuにはeh_timeoutがありませんが、タイムアウトファイルが同じである可能性があります。Ubuntuのデフォルト値は30秒​​です。5秒に短縮して報告します。
Ryan Sorensen 2014

1
好奇心から、あなたの結果はどうでしたか?
Bratchley 2014

12.04でタイムアウトフラグを設定しても、何も実行されないようでした。今週末にeh_timeout(およびタイムアウト)があるため、テストシステムを14.04にアップグレードすることを計画しています。
Ryan Sorensen 2014

@RyanSorensen、このパラメータが機能するかどうかを確認する機会を得ましたか?
Nat

変更することはできませんでしたが、目前のタスクを達成するeh_timeoutために変更timeoutすることができました。
GuitarPicker

2

/sys/block/<dev>/stat関心のあるデバイスを監視し、10番目のパラメーター(io_ticks)を比較します。

例えば、 ticks = io_ticks - prev_ticks / seconds_deltatime / 10

これは、ディスクがディスクIOの待機に費やした使用可能な時間の割合です。

100%に近い値はもちろん確認する価値があります。そうでない場合は、本当に賢くなり、それをすべてのディスクの平均と比較して、平均を超えるディスクを選択します。

ブロックレイヤー統計のドキュメントを参照してください。

それ以外の場合は、Muninのようなものを使用してグラフ化します。Muninがしきい値(90%など)を上回った場合や、グラフで示されているものが適切なアラート値である場合にアラートを出すことができます。

たとえば、/ dev / sdiで確認する必要があることを示す次の2つのMuninグラフを参照してください。この例では、/ dev / sdiが配列の一部である場合、それが原因で配列全体が影響を受けます。

デバイスあたりのディスク使用率-日別

デバイスあたりのディスク使用率-週ごと

週のグラフを見ると、/ dev / sdcも遅い可能性があることがわかります。

上記の/ dev / sdiが壊れていないことを追加する必要があります。それは、低速ディスク(実際には、エンタープライズグレードのSATAディスクのアレイに誰かが追加した緑色のディスク)であり、アレイの速度が低下しました。実際に障害が発生したディスクは、親指のように突き出ます。

要約すると、時間があればスクリプトを使用するでしょうが、簡単な解決策が必要でサーバーへの接続が簡単な場合は、Muninが簡単でした。


ありがとう!Linuxのio統計に関する情報は本当に新しいものであり、そのような状況では(私にとって)役立つと思われます。
imz-Ivan Zakharyaschev 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.