%20%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E9%80%94%E4%B8%AD%E3%81%AE%E4%B8%8D%E8%89%AF%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
回復不可能な不良ブロックを持つ HDD があります。HDD は Raid-0 アレイの一部です。何らかの方法で不良ブロックにアクセスすると、HDD がハングします。HDD の全容量が 500,000,000,000 バイトで、不良ブロックが 100,000,000,000 - 100,000,004,096 バイト (8 LBA) の範囲にあると仮定します。ddまたはddrescue不良ブロックにアクセスせずに、この HDD を別の HDD またはイメージ ファイルにクローンできますか? 必要なのは、バイト 0 - 99,999,999,999、次に 4096 バイトのゼロ、次にバイト 100,000,004,097 - 500,000,000,000 です。
ありがとう!
答え1
今日これを実行しました。うまくいくことを願っています。約 30 個の不良ブロックがある状態で、複製 (ディスクのバックアップ) に問題がありました。最初に行ったのは、通常の Filezilla を使用してすべての正常なデータをバックアップすることです。1 つの大きなファイルが正しくコピーされていないことに気付きました (途中で停止し、転送を再開します)。幸い、同じファイルの以前のバックアップがあります。ディスクを複製するには、次の手順を使用してディスク上の不良ブロックを見つける必要がありました。
まず、HD情報を使用して問題のあるディスクを見つけますfdisk -l
2番目に、ディスクが/dev/sdb次にコマンドを実行する必要があります 不良ブロック -v /dev/sdbドライブ上の不良ブロックがすべてリストされます。幸い、いくつかあります。不良ブロックが見つからない場合は、ドライブのブロックは正常であり、他の原因を見つける必要があります。私のブロックサイズは512なので、DDを実行するにはそのデフォルトの数値を使用します。
3番目に、各ブロックのサイズは512なので、bs=512に設定します。
いつものようにDDを定期的に実行するたびに、エラーが発生した後のデータが破損します。そこで、ページで説明されているパラメータを使用します。https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html「故障したディスクの場合」の部分を検索します。
dd if=/dev/sdb of=/dev/sda bs=512 conv=noerror,sync iflag=fullblock
しばらく時間がかかりました。不良ブロックに遭遇するたびに、故障したドライブを叩くような音がします。ブロックごとにコピーしますが、すべての不良ブロックで同じ音がします。音が鳴った回数は、別の不良ブロックが見つかり、ディスプレイにエラーメッセージが表示されるためです。'conv=エラーなし、同期'不正な読み取りをNULで埋めるのに対し、'iflag=フルブロック'短い読み取りに対応しますが、最後までデータを同期させます。破損はまったくなく、問題のあるブロックをコピーせず、空の NUL で埋めるだけです。
DD によるコピーが完了したら、過去のバックアップから Filezilla を戻して不良ファイルを置き換えたところ、すべて正常に動作しました。故障したドライブをバックアップしようとしている他の方にも、この情報が役立つことを願っています。
注: 私の不良ブロックは互いにかなり接近していました。一度に 4 ブロックほどがグループになって不良として検出されました。ブロックがディスク全体に散らばっている場合は、複数のファイルが影響を受ける可能性があります。幸い、私のケースでは、大きな 4 GB のデータベース ファイルだけが影響を受けました。
答え2
おそらく、これは dd でも実行できるでしょうが、私は WinHex (物理デバイスを選択) を使用して問題を解決しました。WinHex は、ディスクの任意の部分をイメージに複製し、それらを連結することができます。