Smartdによると、読み取り不可能なセクターが保留されているディスクがあります。ディスクにそれらを再マップさせ、smartdが文句を言うのを防ぐ最も簡単な方法は何でしょうか?
今日、私はこれらの2つを毎時間受け取ります:
9月10日23:15:35hylton smartd [3353]:デバイス:/ dev/sdc、1現在読み取り不可能な(保留中の)セクター
システムは、Ubuntu Linux 9.10(ジャンティ)を実行するx86システムです。ディスクはLVMグループの一部です。これは、smartctlがディスクを識別する方法です。
モデルファミリ:Western Digital Caviar第2世代シリアルATAファミリ デバイスモデル:WDC WD5000AAKS-00TMA0 シリアル番号:WD-WCAPW4207483 ファームウェアバージョン:12.01C01 ユーザー容量:500,107,862,016バイト
保留中の読み取り不可能なセクターとは、読み取りエラーを返し、ドライブが最初の可能な機会に再マッピングするようにマークしたセクターです。ただし、次の2つのいずれかが発生するまで、再マッピングを実行できません。
それまで、このセクターは保留中のままです。したがって、これに対処するための2つの対応する方法があります。
明らかに、(1)は非破壊的であるため、おそらく最初に試してください。ドライブが深刻な方法で故障し始めた場合、不良領域から継続的に読み取りを行うと、故障がはるかに早くなることに注意してください。 。保留中のセクターやその他のエラーがたくさんあり、ドライブ上のデータが気になる場合は、ドライブを停止し、優れたツール ddrescue を使用してできるだけ多くのデータを回復することをお勧めします。次に、ドライブを破棄します。
問題のセクターに不要なデータが含まれている場合、またはバックアップから復元できる場合は、そのセクターを上書きするのがおそらく最も早くて簡単なソリューションです。次に、ドライブの再割り当ておよび保留中のカウントを表示して、セクターが処理されたことを確認できます。
ファイルシステムでセクターが何に対応するかをどのように見つけますか? smartmontoolsWebサイト here で優れた記事を見つけましたが、かなり技術的でext2/3 /に固有です。 4およびreiserファイルシステム。
私が自分の(Mac)ドライブの1つで使用したより簡単なアプローチは、find / -xdev -type f -print0 | xargs -0 ...
を使用してシステム上のすべてのファイルを読み取ることです。これを実行する前に、保留中のカウントをメモしてください。セクターがファイル内にある場合、ファイルの読み取りに使用したツール(例:md5sum)から、そのパスを示すエラーメッセージが表示されます。次に、このファイルが正常に読み取られるまで、このファイルだけを再度読み取ることに注意を向けることができます。頻繁に使用されるファイルで、数回再読み取りする必要がある場合は、これで問題が解決することがよくあります。エラーが解消された場合、またはすべてのファイルの読み取りでエラーが発生しなかった場合は、保留中のカウントをチェックして、減少しているかどうかを確認してください。ある場合は、読むことで問題は解決しました。
複数回試行してもファイルを正常に読み取れない場合(例:20)、ドライブがセクターを再割り当てできるように、ファイルまたはファイル内のブロックを上書きする必要があります。 (パーティションではなく)ファイルにddrescueを使用して、一時ファイルにコピーしてから再度コピーすることにより、1つのセクターのみを上書きできます。この時点でファイルを単に削除するのは悪い考えであることに注意してください。これは、不良セクターが空きリストに入れられ、見つけるのが困難になるためです。セクタがフリーリストに追加されるため、完全に上書きするのも悪いことです。既存のブロックを書き換える必要があります。 notrunc
のdd
オプションは、これを行う1つの方法です。
エラーが発生せず、保留中のカウントが減少しなかった場合、セクターはフリーリストに含まれているか、ファイルシステムインフラストラクチャの一部(iノードテーブルなど)に含まれている必要があります。すべての空き領域をcat /dev/zero >tempfile
でいっぱいにしてから、保留中の数を確認できます。それがダウンした場合、問題はフリーリストにあり、現在は解消されています。
セクターがインフラストラクチャ内にある場合、より深刻な問題が発生し、ディレクトリツリーを歩くだけでエラーが発生する可能性があります。この状況では、唯一の賢明な解決策は、ドライブを再フォーマットすることであり、必要に応じてddrescueを使用してデータを回復することだと思います。
ドライブを注意深く監視してください。セクターの再割り当ては非常に優れています 炭鉱のカナリア 、ドライブが故障していることを早期に警告する可能性があります。早期の行動を取ることにより、後の壊滅的で非常に痛みを伴う地滑りを防ぐことができます。いくつかのセクターの再割り当ては、ドライブを破棄する必要があることを示すものではありません。最近のドライブはすべて、再割り当てを行う必要があります。ただし、ドライブがそれほど古くない場合(<1年)、または新しい再割り当てが頻繁に発生する場合(> 1 /月)は、できるだけ早く交換することをお勧めします。
それを証明するための経験的な証拠はありませんが、私の経験では、ディスク全体のdd
を使用するか、すべてのファイルをfind
。過去数年間に私が経験したほとんどすべてのディスクの問題は、めったに使用されないファイル、またはあまり使用されていないマシンで最初に発生しました。これは、セクターが頻繁に再読み取りされる場合、セクターが完全に読み取り不能になるまで待機するのではなく、そのセクターで軽微な問題を最初に検出したときに、ドライブに再割り当てする機会があるという点で、発見的にも意味があります。ホストが何らかの方法で、読み取りまたは書き込みによって、またはSMARTテストのいずれかを実行することによって)アクセスした場合を除いて、ドライブはセクターに対して何も実行できません。
ディスク全体を読み取る夜間または毎週のcronジョブのアイデアを試してみたいと思います。現在、私は「貧乏人のRAID」を使用しています。このRAIDでは、マシンに2台目のハードドライブがあり、毎晩メインディスクをバックアップします。いくつかの点で、これは実際にはRAIDミラーリングよりも優れています。なぜなら、誤ってファイルを間違えて削除した場合、バックアップディスクから昨日のバージョンをすぐに取得できるからです。一方、ハードウェアRAIDコントローラーは、ディスクの問題が発生したときに、それらを監視、報告、および修正するために、バックグラウンドで多くの優れた作業を行うと思います。現在のバックアップスクリプトはrsync
を使用して、変更されていないデータのコピーを回避していますが、すべてのセクターを再読み取りする必要があることを考慮すると、すべてをコピーするか、全体を読み取る別のスクリプトを作成する方が良いでしょう。毎週生のディスク。
dd if=/dev/zero of=/dev/sdc bs=4k
-これはすべてのデータを消去 on /dev/sdc
Western Digitalサイト から入手可能なDOS(ブート可能CD)ソフトウェア用のData Lifeguard Diagnosticを使用します。