ディスクを保留中の読み取り不能セクターのマップを解除するにはどうすればよいですか


10

smartdによると、読み取り不能な保留中のセクターがいくつかあるディスクがあります。ディスクにそれらを再マッピングさせ、smartdが文句を言わないようにする最も簡単な方法は何でしょうか?

今日、私はこれらの2つを毎時間受け取ります:

9月10日23:15:35 hylton 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
この問題はそれ自体で解決しました。ディスクの音が大きくなり始めたので、交換しました。
dkagedal

回答:


15

保留中の読み取り不可能なセクターとは、読み取りエラーを返し、最初の可能な機会にドライブが再マッピング用にマークしたセクターです。ただし、次の2つのいずれかが発生するまで、再マッピングを実行できません。

  1. セクターは正常に再読み取りされました
  2. セクターは書き直されます

それまでは、セクターは保留中のままです。したがって、これに対応する2つの対応する方法があります。

  1. 成功するまでセクターを再読しようとする
  2. そのセクターを新しいデータで上書きする

明らかに、(1)は非破壊的であるため、おそらく最初に試してみてください。ただし、ドライブが深刻な方法で故障し始めている場合は、不良領域から継続的に読み取りを行うと、故障が早くなる可能性があることに注意してください。 。保留中のセクターやその他のエラーが多く、ドライブ上のデータを気にする場合は、サービスを停止し、優れたツールddrescueを使用して、可能な限り多くのデータを回復することをお勧めします。次に、ドライブを廃棄します。

問題のセクターに不要なデータが含まれている場合、またはバックアップから復元できる場合は、そのセクターを上書きするのがおそらく最も早くて簡単なソリューションです。次に、ドライブの再割り当て済みおよび保留中のカウントを表示して、セクターが処理されたことを確認できます。

ファイルシステムでセクターが何に対応するかをどのようにして見つけますか?smartmontools Webサイト(こちら)で優れた記事を見つけましたが、それはかなり技術的であり、ext2 / 3/4およびreiserファイルシステムに固有のものです。

自分の(Mac)ドライブの1つで使用したより簡単な方法はfind / -xdev -type f -print0 | xargs -0 ...、システム上のすべてのファイルを読み取るために使用することです。これを実行する前に、保留中のカウントを書き留めてください。セクターがファイル内にある場合、ファイルの読み取りに使用したツール(md5sumなど)から、そのパスを示すエラーメッセージが表示されます。次に、このファイルが正常に読み取られるまで、このファイルだけを再度読み取ることに注意を向けることができます。頻繁に使用されるファイルで、数回再読み取りする必要がある場合、これで問題が解決することがよくあります。エラーが解消した場合、またはすべてのファイルの読み取りでエラーが発生しなかった場合は、保留中のカウントを確認して、減少しているかどうかを確認してください。ある場合は、問題を読んで解決しました。

複数回試行してもファイルを正常に読み取れない場合(例:20)、ファイルまたはファイル内のブロックを上書きして、ドライブがセクターを再割り当てできるようにする必要があります。(パーティションではなく)ファイルにddrescueを使用して、一時ファイルにコピーしてから再度コピーすることにより、1つのセクターだけを上書きできます。この時点でファイルを単に削除するのは悪い考えであることに注意してください。これは、不良セクターが空きリストに入れられ、見つけるのが困難になるためです。セクタがフリーリストに追加されるため、完全に上書きするのも悪いことです。既存のブロックを書き換える必要があります。のnotruncオプションは、ddこれを行う1つの方法です。

エラーが発生せず、保留中のカウントが減少しなかった場合、セクターはフリーリストにあるか、ファイルシステムインフラストラクチャ(inodeテーブルなど)の一部である必要があります。すべての空き領域をcat /dev/zero >tempfileで埋めてから、保留中の数を確認してください。それがダウンした場合、問題はフリーリストにあり、現在は解消されています。

セクターがインフラストラクチャ内にある場合、より深刻な問題が発生し、ディレクトリツリーを歩くだけでエラーが発生する可能性があります。この状況では、ドライブを再フォーマットし、必要に応じてオプションでddrescueを使用してデータを回復することが、唯一の賢明な解決策だと思います。

ドライブに非常に注意してください。セクターの再割り当ては炭鉱で非常に優れたカナリアであり、ドライブの故障を早期に警告する可能性があります。早期に行動を起こすことで、その後の壊滅的で非常に苦痛な地滑りを防ぐことができます。いくつかのセクターの再割り当ては、ドライブを破棄する必要があることを示すものではありません。最近のドライブはすべて、再割り当てを行う必要があります。ただし、ドライブがあまり古くない(1年未満)場合、または頻繁に新しい再割り当て(> 1 /月)が発生する場合は、できるだけ早く交換することをお勧めします。

それを証明するための経験的な証拠はありませんが、私の経験では、時々ディスク全体を読み取るかdd、RAWディスクを使用するか、を使用してすべてのファイルを読み取ることにより、ディスクの問題を軽減できると示唆していますfind。過去数年間に経験したほとんどすべてのディスクの問題は、めったに使用されないファイル、またはあまり使用されていないマシンで最初に発生しました。これは、セクターが頻繁に再読み取りされている場合、セクターが完全に読み取り不能になるまで待機するのではなく、そのセクターで軽微な問題を最初に検出したときにドライブに再割り当てする機会があるという点で、ヒューリスティックにも意味があります。ホストが何らかの方法で、読み取りまたは書き込みによって、またはSMARTテストの1つを実行することによってアクセスしない限り、ドライブはセクターに対して何も実行できません。

ディスク全体を読み取る、毎晩または毎週のcronジョブのアイデアを試してみたいと思います。現在、私は「貧乏人のRAID」を使用しています。この場合、マシンに2台目のハードドライブがあり、毎晩メインディスクをバックアップします。ある意味では、これは実際にはRAIDミラーリングよりも優れています。誤ってファイルを削除して削除した場合、バックアップディスクから昨日のバージョンをすぐに取得できるからです。一方、ハードウェアRAIDコントローラーは、ディスクの問題が発生したときに監視、報告、修正するために、バックグラウンドで多くの優れた作業を行っていると思います。私の現在のバックアップスクリプトはrsync、変更されていないデータのコピーを回避するために使用していますが、すべてのセクターを再読み取りする必要があることを考慮すると、すべてをコピーするか、毎週rawディスク全体を読み取る別のスクリプトを作成する方が良いでしょう。


2
バックアップを行う場合(内部ディスクへのrsyncはカウントされません;))、すべてのデータは(フル/増分バックアップスケジュールに応じて)特定の時間間隔で(再)読み取られます。RAIDまたはrsyncは、代替バックアップではありません。ところで、ハードウェアRAIDベンダーへの信頼が高すぎると私は信じています。;)
maxschlepzig

@maxschlepzig:その通りです。別のバックアップ体制も持っています。ただし、私の経験では、ドライブ障害によるデータ損失の可能性は、他のすべてのリスク(盗難、火災など)をはるかに上回っています。最近のハードドライブは信頼性が非常に低いので、私は今日、それらについて完全に偏執的です。したがって、私の2番目の内蔵ドライブは私の戦略の主要な部分です。
Neil Mayhew

使用dd if=/dev/sda ...しているディスクの内容を読み取り、再度読み取りましたが、セクターはまだ保留中ですが、なぜですか?
dmansfield 2014

@dmansfield、エラーが発生しなかった場合、理由はわかりません。スマート出力では生の値のみが正確であることに気付いたので、「調理済み」の値のみを表示している場合は、保留中のセクターがない可能性があります。
Neil Mayhew 2014


1
  1. データをバックアップする
  2. このデバイスをLVMグループから削除します
  3. dd if=/dev/zero of=/dev/sdc bs=4k-これにより、すべてのデータ消去されます/dev/sdc
  4. LVMグループに再度含める
  5. バックアップを復元する

3
0.バックアップを作成します。:-)
Steven D

しかし、これは保留中の読み取りエラーなので、すべてのセクターを読み取るだけで十分ではありませんか?
dkagedal 2010

1
@dkagedal:いいえ、HDのファームウェアは、この1つのセクターを読み取れないことをすでに検出しています。それはそれ自体を回復する方法がなく(おそらく、再試行して再試行し、ある時点で運が良ければ...できればデータが壊れて返されないことを期待して)、このSMARTエラーを設定します。しかし、ファームウェアがその特定のセクターへの書き込みを検出すると、このセクターを離れてマップし(そしてそれを使用しなくなります)、代わりにスペア(動作中の)セクターをこのアドレスにマップします。
maxschlepzig

@dkagedal:場合によっては、1つまたは2つの追加の読み取りでセクターが元に戻ります。それ以外の場合、何もそれを取り戻すことはありません。また、ドライブは、元のエラーの重大度に基づいてセクターを再マップするか、セクターを再利用するか、および書き込み後に正常に読み取ることができるかどうかを内部的に決定します。あなたが知ることができる唯一の方法は、ドライブの再割り当てされた数を見ることです。ドライブはかなり広範囲のチェックサムを使用してデータが読み取られたときに破損しないことを保証しているので、再割り当てされなかったセクターについて合理的に確信を持つことができます。
Neil Mayhew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.