GNU/Linux >> Linux の 問題 >  >> Linux

Linux ディスク上の単一の読み取り不能ブロックを簡単に修復するにはどうすればよいですか?

解決策 1:

以前は WD 用のディスク ファームウェアを作成していましたが、不良ブロックを再割り当てするファームウェアを作成したこともあります。

まず、ほとんどの不良ブロックは、書き込みではなく読み取りで検出されます。書き込みは盲目的に行われます。つまり、データはチェックされずに書き込まれます。したがって、書き込み時にメディアが不良である場合、ホストがそのセクターを読み取るまで、それを知ることはできません。正しいセクターを見つけるために書き込み時に読み取られるセクターの小さな部分 (セクター ヘッダー) があるため、セクター ヘッダーの読み取りでエラーが発生した場合、ドライブはセクターを再割り当てし、受信したデータを書き込みます。書き込みコマンドから。しかし、不良ブロックの大部分は読み取り時に検出されます。書き込みがセクターに成功したからといって、メディアが正常であることや、セクターが再割り当てされたことを意味するわけではありません。

次に、不良ブロックの再割り当て (再割り当てとも呼ばれます) について説明します。はい、通常、エラーが十分に悪い (つまり、ECC の失敗が十分に悪い) 場合、ドライブはセクターの再割り当てを試みますが、ドライブは ECC 修正後にデータを回復することができます。通常、これは自動的に行われます。唯一の例外は、ホストが以前にドライブに自動再割り当てを行わないように指示できた可能性があることですが、これが行われることはめったにありません。

では、ドライブが読み取りを行い、データを回復できない場合はどうなるでしょうか?何もない。エラーはホストに報告されますが、再割り当ては行われません。問題は、ドライブがセクターを再割り当てできることですが、新しく再割り当てされたセクターにどのデータを書き込むべきかがまったくわかりません。たとえば、一連のゼロを書き込んだだけで、セクターが再度読み取られた場合、データが無効であることを示すことなく、すべてのゼロが返されます。これは基本的にデータの破損と同じです。ドライブは、さまざまな理由 (たとえば、ドライブが新しい​​ホストに移動された場合など) により、ホストがエラーを追跡することを当てにできないため、最善のアクションは、データが失われる可能性がある場合は何もしないことです。

ただし、最新のドライブは、再割り当てできない場合、不良セクタの場所を保存します。再割り当てを待っている不良セクタの数は、SMART データで確認できます。再割り当てを待っている不良セクタの 1 つに書き込みが行われると、再割り当て後にドライブに書き込むための有効なデータがあるため、再割り当てが行われます。したがって、不良セクタに書き込むと再割り当てされると人々が言うとき、それは実際には話の半分にすぎません。ドライブは、自動的に再割り当てできないすべての不良セクタを検出できるように、最初に読み取る必要があります。したがって、ドライブ全体を書き込むことができ、SMART データは、再割り当てを待っている不良セクタがないことを示しますが、必ずしもすべての不良セクタをドライブから消去したわけではありません。したがって、本当にすべての不良セクタをドライブから消去したい場合は、最初にドライブ全体を読み取り、次にドライブ全体を書き込むのが最善の方法です (もちろん、これによりドライブ上の以前のデータはすべて破棄されます)。

再割り当てできない不良ブロックを処理する方法は他にもあります。ドライブが冗長 RAID 構成 (つまり、RAID 0 以外) の一部である場合、RAID ソフトウェアは、他のドライブから不良セクタのデータを自動的に回復し、それを再割り当てされたセクタに書き込む必要があります。 SCSI ディスクには、ブロックに書き込む有効なデータがない場合でも再割り当てを強制するためにホストが使用できる明示的な再割り当てブロック コマンドがありますが、その使用はかなり低レベルです。

解決策 2:

hdparm --write-sector <LBA> /dev/ice を試すことができます .

これを行う他の方法は知りません - LBA を手動でファイル システム ブロックに変換する必要があります (既に見つけたように)

解決策 3:

あなたがしなければならないことは次のとおりだと思います:

e2fsck -c /dev/hda1

/dev/hda1 が (マウントされていない) パーティションであると仮定します。または:

e2fsck -c -c /dev/hda1

(遅い)非破壊的な読み書きテストを実行します。まだアンマウントする必要があります。ただし、これで失われたデータの詳細が得られるとは思いません。

解決策 4:

マイケルはそれを正しく理解しており、ほとんどの場合、安価なドライブを交換するだけだと思います。ただし、バックアップがなく、ドライブから重要なデータを取得できない場合、または単にドライブを修復したい場合は、最高レベルでスピンライトを使用してみてください。

数年前に音を立て始めたラップトップドライブがありました。 Badblocks は、ドライブに 118 個ほどの不良ブロックがエンド ユーザーに表示されることを示しました。私はすでに SpinRite を持っていたので、新しいドライブを購入する前に試してみることにしました。ドライブでスピンライトを実行した後、badblocks は 0 個の不良ブロックを示し、ノイズは停止しました。それ以来、ドライブは 2 年以上機能していました。


Linux
  1. Linuxでディスクをパーティション分割する方法

  2. LinuxでGoogleドライブを使用する方法

  3. 単一のLinuxファイルシステムを暗号化する方法

  1. UNIX または Linux で USB ディスク ドライブをマウントする方法

  2. Linux ディスク ドライブのモデル番号を調べるには?

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

  1. Linuxでハードドライブを交換する方法

  2. Linuxでドライブをパーティション分割してフォーマットする方法

  3. Linuxでディスク容量を確認する方法