Piで使用する古いハードドライブを準備しています。ただし、不良セクタは36を超える(Avoceしきい値)。だから、どのセクターが影響を受けたかを調べるために走ってbadblocks
ファイルに保存しました。
ファイルには、デフォルトで改行で区切られた影響を受けるすべてのセクタのリストが含まれます。
mkfs.ext4
このアドレスにデータブロックを割り当てないように、今この情報をどのように使用しますか?
答え1
だから間違いを犯しました。まず、 -c オプションで mkfs.ext4 を使用する代わりに、badblocks コマンドを使用してハードドライブの不良セクタを検索しました。
唯一の問題は、約2日ほどかかったため、検索を繰り返したくないということです。
ディスクリプタファイルsdaを指すコマンドを実行したため、今持っている情報はセクタ(LBAアドレス)のようです。
セクタがほぼ同じ位置にあるため、2つのパーティションを計算して作成できます。
- しかし、分割せずに単一のパーティションを作成する方が良いです。
-そんな狡猾な人はいますか?たとえば、ブロックサイズが4Kのパーティションを作成する場合は、コマンドに必要な情報の種類を特定します。誰でも私を助けることができればいいでしょう!
いくつかの問題:
- 情報を変換するとき、パーティション開始アドレスとパーティションブロックサイズはどのように関連しますか?
答え2
私は今それを自分で見つけました。デフォルトでは、パーティションではなく/ dev / sdaなどのデバイスを指すときは、ブロックサイズ1k(1024)が使用されます。
パーティション(開始アドレスと終了アドレスを含む)の代わりにデバイスを指すmke2fsを実行すると、MBRは記録されず、MBRは上書きされます。
$ sudo dd if=/dev/sda bs=512 count=1 | hexdump -C
1+0レコードの1+0レコード
コピー済み
512バイト(512B)、0.00240179秒、213kB / s
00000000 00 00 00 00 00 00 00 00 00 00 0.0 ....
*
00000200
だから、アドレスを4で割って、4kブロック1つに1kブロックが4つあることを覚えれば、簡単にアドレスを計算できます。その後、ファイルを作成し、新しく作成されたファイルを使用してmke2fsを実行して、不良ブロックを隔離できます。次のようになります。mke2fs
-f ext4 -l badblocks_file /dev/sdX