web-dev-qa-db-ja.com

読み取り/書き込みを試行せずにext4ブロックを手動で不良としてマーク

私は10歳の320 Gb HDDを外付けドライブとして使用していて、その10年間ほとんど一緒に移動しました。言うまでもなく、それは数回の滝(稼働中の滝を含む)を超えて生き残り、いくつかの不良セクターを獲得しました。 [〜#〜] smart [〜#〜]セクターの再配置の警告だけでなく、実際に読み取りエラーが発生し始めたとき、 (一部のファイルにはddrescueを使用)。確かにこのドライブはもう信用できませんが、外付けドライブが機能している限り、それを使って一度コピーしていくつかの映画/ FLACを保持し、ラップトップのSSD + HDDの一部のスペースを解放したいと思います。自宅にバックアップを持っているか、簡単に再ダウンロードできるので、これらのファイルの一部またはすべてが失われてもかまいません。

問題は、このドライブをフォーマットしてそこにファイルのコピーを開始すると、約25%の場所で書き込みエラーが発生し、USBケーブルを抜く必要があります(^ Cでは不十分です)。badblocksでも同じことが起こります。読み取りおよび書き込みモード。 badblocks 'の "from"および "to"パラメータを少し遊んだ後、ドライブの90%以上は問題なく、基本的に3つの不良ブロック領域があることがわかりました。短いスクリプトと、ブロック番号を含むテキストファイルを取得しました(そうです、badblocksの_-b 4096_を忘れていませんでした)。しかし、_e2fsck -l badblocks.txt_を実行しても、まだハングします!とにかく、悪いマークを付けて忘れるだけでなく、それらの不良ブロックを読み取ろうとしているようです。これを回避する他の方法はありますか?または他のファイルシステム(FATについて考えましたが、_badblocks.txt_を_fsck.vfat_にフィードする方法がありません)?または、「良い」領域をカバーする4つの個別のパーティションがこの場合の最良のソリューションですか?

pdate:ケースをより明確にするためのmanからの引用

_man e2fsck_

_-i input_file Read a list of already existing known bad blocks. Badblocks will skip testing these blocks since they are known to be bad._

したがって、badblocksは、リストされたブロックをスキップすることを約束します(_badblocks.txt_!のすべての不審な範囲でハングしないため、スキップします)。

_man badblocks_

-l filename Add the block numbers listed in the file specified by filename to the list of bad blocks. The format of this file is the same as the one generated by the badblocks(8) program.

しかし、これらのブロックにアクセスすることはtryしないという約束はありません。しかし、なぜそれがそれらにアクセスしたいのでしょうか?

Note that the block numbers are based on the blocksize of the filesystem. Hence, badblocks(8) must be given the blocksize of the filesys‐ tem in order to obtain correct results. As a result, it is much simpler and safer to use the -c option to e2fsck, since it will assure that the correct parameters are passed to the badblocks program.

私は幸せでしょうが、それは最初の不良ブロックにかかっています。さらに、_-c_は_-l_と互換性がありません。したがって、ディスクをスキャンするか、手動で不良セクターにマークを付けます。しかし、なぜ後者のオプションを選択した場合でも、これらの「不良」と思われるセクターにアクセスしたいのですが、私の理解を超えています...

2
pazhosch

ディスクを不良ブロックする適切な方法は次のいずれかです:

Sudo e2fsck -fck /dev/sdc1#読み取り専用テスト

または

Sudo e2fsck -fcck /dev/sdc1#非破壊的な読み取り/書き込みテスト(推奨

-kは重要です。これは、以前の不良ブロックテーブルを保存し、新しい不良ブロックをそのテーブルに追加するためです。 -kを指定しないと、以前の不良ブロック情報がすべて失われます。

-fcckパラメータ...

   -f     Force checking even if the file system seems clean.

   -c     This option causes e2fsck to use badblocks(8) program  to  do  a
          read-only  scan  of  the device in order to find any bad blocks.
          If any bad blocks are found, they are added  to  the  bad  block
          inode  to  prevent them from being allocated to a file or direc‐
          tory.  If this option is specified twice,  then  the  bad  block
          scan will be done using a non-destructive read-write test.

   -k     When combined with the -c option, any existing bad blocks in the
          bad blocks list are preserved, and any new bad blocks  found  by
          running  badblocks(8)  will  be added to the existing bad blocks
          list.
3
heynnema