Linux

如何驗證我的硬碟是否已清零/擦除?

  • August 10, 2022

我曾經shred擦拭我的外部硬碟: sudo shred -vz /dev/sdb

我還應該補充一點,磁碟有 5 個壞扇區。

我想驗證磁碟是否已歸零,每個https://superuser.com/questions/1510233/is-there-a-faster-way-to-verify-that-a-drive-has-been-fully-zeroed

我不太熟悉dd,但我相信這些表明它已經歸零:

sudo dd if=/dev/sdb status=progress | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
5000916670976 bytes (5.0 TB, 4.5 TiB) copied, 45754 s, 109 MB/s
9767541167+0 records in
9767541167+0 records out
5000981077504 bytes (5.0 TB, 4.5 TiB) copied, 45756.7 s, 109 MB/s
48c61b35e00
sudo dd if=/dev/sdb status=progress | od | head
5000952267264 bytes (5.0 TB, 4.5 TiB) copied, 45739 s, 109 MB/s
9767541167+0 records in
9767541167+0 records out
5000981077504 bytes (5.0 TB, 4.5 TiB) copied, 45741.1 s, 109 MB/s
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
110614154657000

但是使用一個簡單cmp的顯示異常:

sudo cmp /dev/zero /dev/sdb
cmp: EOF on /dev/sdb after byte 5000981077504, in line 1

磁碟是否已歸零?

磁碟是否已歸零?

是的。命令的輸出dd顯示它已寫入 5000981077504 字節。您的cmp命令說它在 5000981077504 字節後到達 EOF(文件結尾),這是相同的。

請注意,這只適用於硬碟驅動器。對於固態設備,磨損均衡和過度配置空間等功能可能會導致某些數據未被擦除。此外,您的驅動器不得有任何損壞的扇區,因為它們不會被擦除。

請注意,cmp這對於此任務不是很有效。你會更好badblocks

badblocks -svt 0x00 /dev/sdb

badblocks(8),該-t選項可用於驗證磁碟上的模式。如果您沒有指定-w(write) 或-n(non-破壞性寫入),那麼它將假定模式已經存在:

  -t test_pattern
         Specify a test pattern to be read (and written) to disk  blocks.
         The  test_pattern  may  either  be a numeric value between 0 and
         ULONG_MAX-1 inclusive, or the  word  "random",  which  specifies
         that  the block should be filled with a random bit pattern.  For
         read/write (-w) and non-destructive (-n) modes, one or more test
         patterns  may  be specified by specifying the -t option for each
         test pattern desired.  For read-only mode only a single  pattern
         may  be specified and it may not be "random".  Read-only testing
         with a pattern assumes that the specified pattern has previously
         been  written to the disk - if not, large numbers of blocks will
         fail verification.  If multiple patterns are specified then  all
         blocks  will be tested with one pattern before proceeding to the
         next pattern.

此外,使用dd預設塊大小 (512) 也不是很有效。您可以通過指定bs=256k. 這導致它以 262,144 字節而不是 512 字節的塊傳輸數據,從而減少了需要發生的上下文切換的數量。根據系統的不同,您可以通過使用繞過頁面記憶體來加快速度。iflag=direct在某些情況下,這可以提高塊設備上的讀取性能。

引用自:https://unix.stackexchange.com/questions/713108