ディスク全体のDD復元

ディスク全体のDD復元

私のハードドライブを以前のランダムデータで上書きしていますdd

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512

これは2TBアレイで、私のMacBook(Linuxを実行している)は約3.7MB / sの速度でのみデータを書き込むことができます。自宅のデスクトップが20MB/sの速度で書くのがわかるので、とても悲しいことです。今夜家に着いたら、ddここで走るのをやめ、家に持ち帰り、より強力な機械で一晩の進歩を遂げることができるかどうかを確認したいと思います。

進捗状況を監視するために単純なループを使用してきました。

while true; do kill -USR1 $PID ; sleep 10 ; done

出力は次のとおりです。

464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s

dd自宅でパスを復元した場合は、どのように再起動できますか?このパラメータを知っていますが、seekレコード番号またはバイト数のどれを指すべきですか?

答え1

@don_crisstiがすでに述べたように、seek=回復にのみ使用してください。

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512 seek=464938971

GNU ddバイト単位のルックアップもサポートされているため、ブロックサイズに関係なく正確に回復できます。

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=1M \
   seek=238048755782 oflag=seek_bytes

/dev/urandom.

より速い選択肢を探している場合は、cryptsetup plainOpen任意のキーを使用してゼロにすることができ、はるかに/dev/urandom高速(AES-NIなし)または最大速度で実行することもできます(AES-NIを使用)。

shred -n 1ユースケースに十分な場合は、擬似乱数データを使用することもできます。shred非常に遅いコンピュータでもディスク全体の速度を利用できるはずです。

答え2

単にディスクをランダムにするのではなく、コピーしたい人のための通知です。それcommon):これを使ってskip=BLOCKS始めることができます。読む所定の位置に置いてseek=BLOCKS開始書く正しい位置にあります。どちらのオプションもバイトではなくブロックを使用します。中断/再始動の場合に備えて、ブロックを複数削除することをお勧めします。bs大量のデータを継続的に読み取るとパフォーマンスが向上するため、通常は値を512以上に上げることをお勧めします。

あなたの場合は、実際に渡す必要があるブロック値ですseek。おそらくbs速度を向上させることができるかどうかを確認するために調整を試みる必要があります。スピードが/dev/randomかなり速くなければならないからです(エントロピーが使えないときの擬似ランダムと非ブロック)。

答え3

ディスクを複製します。

拡張これこのスレッドで答えたのは、ディスク全体を複製して復元する方法です。

この例は、5400rpm回転ドライブから特定のシステムのSSDにコピーするように最適化されています。 gdd代表するGNU dd

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' bs=4M status=progress
247426187264 bytes (247 GB, 230 GiB) copied, 2082 s, 119 MB/s
59012+0 records in
59011+0 records out
247510073344 bytes (248 GB, 231 GiB) copied, 2082.92 s, 119 MB/s

次の 2 つの方法のいずれかでこの操作を復元できます。

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=59011 skip=59011 \
status=progress

または:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=247510073344 skip=247510073344 \
oflag=seek_bytes iflag=skip_bytes \
status=progress

59011最初の例では、使用して使用しない理由は、中断する前にチャンクサイズレコードがどれだけ完全にコピーされるため59012です。59011(録音してください)。

答え4

可能であれば

#ddrescue from to logfile
ddrescue /dev/sda /dev/sdb logfile

ログファイルを遠ざけてください。 ctrl-cまたは他のキーを押す必要がある場合、ddrescueは独自のログファイルを読み取り、自動的に回復します。また、単にすべてを最初にコピーしてログファイルから回復することができるので、別のものに「戻ってもっと頑張ろう」と指示することができます。

関連情報