コンピューティングにおいて、エラー回復制御(ERC)(Western Digital:時間制限付きエラー回復(TLER)、Samsung / Hitachi:コマンド完了時間制限(CCTL ))は、ハードディスクの機能の一つで、システム管理者がドライブのファームウェアが読み取りまたは書き込みエラーからの回復に費やす時間を設定できるようにするものです。回復時間を制限することで、ハードウェアまたはソフトウェアRAID環境におけるエラー処理を改善できます。場合によっては、エラー処理をハードドライブで行うべきか、RAID実装で行うべきかで競合が発生し、本来であれば回避できたはずのドライブが使用不能と判断され、パフォーマンスが著しく低下することがあります。
最新のハードドライブは、内部でセクターを再マッピングしたり、その他の自己診断やリカバリを実行したりすることで、一部の読み書きエラーから回復する機能を備えています。この処理には数秒、あるいは(負荷が高い場合は)数分かかる場合があり、その間ドライブは応答しなくなります。ハードウェアRAIDコントローラとソフトウェアRAID実装は、数秒以内に応答しないドライブを認識し、信頼性が低いとマークして、使用を中止し、パリティデータからアレイを再構築するように設計されています。これは時間がかかる処理であり、パフォーマンスが低下します。また、結果として生じる負荷の増加により、さらに多くのドライブが故障すると、壊滅的な事態になる可能性があります。
ドライブ自体に本来的な信頼性があっても、不良セクタが存在する場合、TLERなどの機能は、検出されたエラーの修正に要する時間を制限し、アレイコントローラに操作の失敗を通知することで、ディスクが不必要に「故障」とマークされるのを防ぎます。これにより、アレイコントローラは、ドライブ全体を故障とマークするのではなく、対象となる限られたデータ量のみを復旧処理できます。
TLERや同様の機能は、実質的にドライブ上のエラー処理のパフォーマンスを制限し、問題が発生した場合にハードウェアRAIDコントローラやソフトウェアRAID実装がエラーを処理できるようにするものです。
一般的に、Raptor 、Caviar RE2、RE2-GP(RAID Edition)などのWestern Digitalのエンタープライズ向けドライブは、TLER読み取りが「有効」(7秒)で、TLER書き込みも「有効」(7秒)になっていますが、Caviar SE、SE16、GPなどのデスクトップ向けドライブは、TLER読み取りと書き込みが無効(0秒に設定)になっています。
RAIDアレイでは、ディスクの読み書きエラーからの復旧時間がRAID実装のタイムアウトしきい値を超えないようにするため、TLERを「有効」にしておくのが最適です。ドライブがタイムアウトした場合、ハードディスクをアレイに手動で再追加する必要があり、ハードディスクの再構築と再同期が必要になります。TLERを有効にすると、タイムアウト前にエラー訂正を中断し、データセグメントのみの障害を報告することで、この問題を回避できます。その結果、RAIDアレイの信頼性が向上します。
スタンドアロン構成では、TLERは無効にする必要があります。ドライブが冗長化されていないため、セグメントが障害状態として報告されると、手動による介入が増えるだけです。ハードウェアRAIDコントローラやソフトウェアRAID実装でディスクを破棄できない場合、通常の(TLERなしの)リカバリ機能が最も安定しています。
ソフトウェアRAID構成においてTLERが有効かどうかは、オペレーティングシステムによって異なります。例えば、FreeBSDではATA/CAMスタックがタイムアウトを制御し、タイムアウトが発生するたびに徐々にタイムアウト時間を長くするように設定されています。そのため、TLER非対応のデスクトップディスクがセクター読み取りへの応答を遅延させ始めた場合、FreeBSDはディスクがアレイから早期に除外されるのを防ぐために、タイムアウト時間を徐々に長くして読み取りを再試行します。
ZFSファイルシステムは、不良と報告されたセクターや読み取りに異常に時間がかかるセクター(TLER非対応ドライブなど)にデータを即座に書き込むように設計されています。これにより、ほとんどのドライブでは、不良セクターの即時セクター再マッピングが強制されます。
異なるハードウェアRAID コントローラの切断タイムアウト値はベンダーによって異なる場合があるため、TLER はコントローラがドライブのタイムアウトになる前にトリガーする必要があります。たとえば、3ware 9650SE はタイムアウトとして 20 秒を使用しますが[ 1 ]、IBM x シリーズで使用されているLSI Logicの場合は10 秒です[ 2 ] 。
Intel製サーバーマザーボードや最新のデスクトップマザーボードに搭載されている、広く普及しているIntel Matrix RAID / Intel Rapid Storage Technologyは、真のハードウェアRAIDコントローラーではなく、擬似ハードウェアコントローラーです。
Linux mdadm はドライブが復旧を完了するまで待機しますが、SCSI ディスク レイヤー (/sys/block/sd?/device/timeout) のデフォルトのコマンド タイムアウトは 30 秒です[ 3 ]。その後、ドライブのリセットを試み、それが失敗した場合はドライブをオフラインにします[ 4 ] 。
2006年のATA-8規格では、SCTエラー回復制御コマンドが定義されています。[ 5 ]このインターフェースを実装するハードドライブの場合、smartctlユーティリティ( smartmontoolsパッケージの一部)を使用して、エラー回復タイムアウトを変更できます。[ 6 ] 2018年にACS-4で、設定を再起動後も保持する機能が追加されました。これは現在smartctlでサポートされています。[ 7 ]-l scterc
smartctlユーティリティによるタイムアウト動作の制御は、一部のメーカーがデスクトップドライブからERCパラメータのサポートを削除したため、すべてのハードディスクドライブで機能するとは限りません。[ 8 ] [ 9 ]これは、より高価なRAID/エンタープライズモデルの販売を促進するためと言われています。smartctlのERCパッチを最初に作成したRichard Gregory氏は、Western Digitalが予告なしに新モデルをリリースしてERCサポートを撤回したと報告しています。[ 6 ]
Windowsでは、HDAT2プログラムがsmartctl(クロスプラットフォーム)に加えて利用可能です。[ 6 ]
SBC-4 では、ドライブがエラー回復を実行する方法を定義するために使用される読み取り/書き込みエラー回復モードページの RECOVERY TIME LIMIT フィールドについて説明しています。[ 10 ] sdparm プログラムでは、この設定を変更できます--set=RTL。[ 11 ]
WDTLER.EXEユーティリティを使用すると、Western DigitalハードドライブのTLERパラメータを有効または無効にできます。このユーティリティはDOS用に作成されています。このユーティリティは、コンピュータに接続されているすべての互換性のあるWestern Digitalハードディスクドライブで動作し、変更を加えます。変更は電源の再投入後も保持されます。Western Digitalは以前、FAQでこのツールについて言及していました。[ 12 ]
このユーティリティには、すべてのハードドライブのTLER設定の現在の状態を取得するTLERSCAN.BAT 、 TLERを有効にするTLER-ON.BAT 、TLERを無効にするTLER-OFF.BATの3つのバッチファイルが付属しています。付属のTLER-ON.BATは、TLERの読み取りおよび書き込み時間を7秒に設定します。WDTLER.EXEユーティリティをパラメータを指定して直接使用し、カスタムタイムアウトを設定することも可能です。-r# -w#
Western Digital社は、新しいドライブでWDTLER.EXEユーティリティを使用するとファームウェアが破損し、ディスクが使用できなくなる可能性があると主張しています。このユーティリティはWestern Digital社から提供されておらず、新しいドライブではTLER設定を変更することはできません。REディスクはRAIDアレイ専用であり、CaviarはRAID非対応です。このユーティリティは古いドライブでは引き続き動作します。
日立のカスタマーサービスは2009年に、ERCを変更するための機能ツール(CCTLと呼ばれる)があると述べている。[ 12 ]
Seagateは、TLERを含む多くのファームウェア設定を照会および変更できるopenSeaChestユーティリティを提供しています。TLERを設定するためにを使用できない場合は、関連するコマンドラインコマンドはおよびです。smartctl -l scterc,x,yopenSeaChest_Configure -d /dev/sg0 --sctReadTimeropenSeaChest_Configure -d /dev/sg0 --sctWriteTimer