ドライブが完全にゼロ化されたことを確認するより速い方法はありますか?

ドライブが完全にゼロ化されたことを確認するより速い方法はありますか?

今後数か月で、多くのディスクをゼロクリアする必要があります。各ドライブを消去した後、ドライブが完全にゼロで埋められたことを簡単に確認する方法が必要です。

それぞれを 16 進エディタで開くこともできますが、これによって確認できるのは、特定の部分がゼロになっていることだけです。ドライブが大きくなるほど、ゼロ以外の文字が存在しないことが確実に確認されないため、これはますます無意味になります。

私は、見つけたいくつかのツールをテストするために、ベンチマークをいくつか実行することにしました。同じ 1 TB ディスクの消去を確認するために、各ツールを 3 回に分けて実行し、同じシステム負荷で夜間に実行しました。キャッシュに対処するために、各実行ではランダムな位置でツールを実行し、各実行の間に少なくとも 500 秒のスリープを入れました。

以下は、3 つのテストにわたる各ツールの平均実行であり、最も遅いものから最も速いものの順に並べられています。

私自身から:

time hexdump /dev/sda

0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
e8e0db6000

real    284m35.474s
user    223m4.261s
sys     2m49.729s

からゴードン・デイヴィソン:

time od /dev/sda

0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
16434066660000

real    148m34.707s
user    77m10.749s
sys     2m54.611s

からニール:

time cmp /dev/zero /dev/sda 

cmp: EOF on /dev/sda

real    137m55.505s
user    8m9.031s
sys     3m53.127s

からビアディ:

time badblocks -sv -t 0x00 /dev/sda

Checking blocks 0 to 976762583
Checking for bad blocks in read-only mode
Testing with pattern 0x00: done
Pass completed, 0 bad blocks found. (0/0/0 errors)

real    137m50.213s
user    5m19.287s
sys     4m49.803s

からヘネス:

time dd if=/dev/sda status=progress bs=4M | tr --squeeze-repeats "\000" "D"

1000156954624 bytes (1.0 TB, 931 GiB) copied, 8269.01 s, 121 MB/s
238467+1 records in
238467+1 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 8269.65 s, 121 MB/s
D
real    137m49.868s
user    27m5.841s
sys     28m3.609s

からボブ1 :

time iszero < /dev/sda

1000204886016 bytes processed
0 nonzero characters encountered.

real    137m49.400s
user    15m9.189s
sys     3m28.042s

テストしたツールの中で最も高速なものでも、137 分、つまり 2 時間 16 分で上限に達するようです。一方、ディスクの完全消去には平均 2 時間 30 分しかかかりません。

これが私がこの質問をするきっかけとなった。このようなツールは少なくとも半分ディスクから読み取るだけで、書き込む必要がない場合、ドライブを消去するのにかかる速度。

上記に代わる、より速い解決策は存在するでしょうか?

理想的な世界では、私が探している解決策は、ボブの C++ プログラムのように、ディスク全体を読み取り、見つかった非ゼロ文字を印刷することです。これにより、ディスク全体ではなく、非ゼロバイトを消去して選択することができます。ただし、ツールがディスクを非常に高速に読み取る場合、これは厳密な要件ではありません。


1. これは Bob によって書かれた C++ プログラムで、バッファ サイズが 4194304 (4 MiB) に増加され、次のようにコンパイルされています。

g++ -Wl,--stack,16777216 -O3 -march=native -o iszero iszero.cpp

答え1

磁気ハードディスクの読み取り速度と書き込み速度はほぼ同じです。テープ ドライブ、RAM、CD-/DVD-/BD-R、さらにはフロッピー ディスクでも同じです。回転メディアの場合、主にヘッド (または光学ドライブのレーザー アセンブリ) の下をデータが移動する速度によって決まります。読み取りと書き込みが同じ速度で行われない場合は、読み取りから書き込み、またはその逆に切り替えるためにメディアを回転させる (または回転を止める) 必要があります。

フラッシュ メモリでは、書き込みよりも読み取りの方が大幅に高速になります。

関連情報