使用dd和md5sum工具檢查硬碟

使用dd和md5sum工具檢查硬碟

我買了新的外接 USB 3.0 硬碟WD Elements 2 TB並決定
使用來檢查它DD,md5和工具。

首先我將所有硬碟清除:

root@yurko-laptop:/home/yurko-laptop# dd if=/dev/zero of=/dev/sdb bs=16M
dd: запись «/dev/sdb»: На устройстве кончилось место
119232+0 записей считано
119231+0 записей написано
скопировано 2000365289472 байта (2,0 TB), 91532,5 c, 21,9 MB/c

之後我嘗試計算它的 md5 和。
然而當我使用命令我收到有關讀取錯誤的訊息:

root@yurko-laptop:/home/yurko-laptop# head -c 2000365289472 /dev/sdb | md5sum
head: ошибка чтения «/dev/sdb»: Ошибка ввода/вывода
5132d3021b8570c6009877dfd132631f  -

我之前對 USB 記憶棒執行過此過程,並且沒有任何錯誤或警告。

而且,md5和/dev/sdb和的結果/dev/zero不同:

yurko-laptop@yurko-laptop:~$ head -c 2000365289472 /dev/zero | md5sum
2635e14edab6b044de7d63dd9a242273  -

主要想法是硬碟歸零後md5和結果必須相同。

這是否意味著這個硬碟壞了或這種方法在這種情況下沒有用?


更新:

在我的例子中fdisk -l /dev/sdb,扇區大小為 512 位元組:

root@yurko-laptop:/home/yurko-laptop# fdisk -l /dev/sdb

Disk /dev/sdb: 2000.4 GB, 2000365289472 bytes
255 heads, 63 sectors/track, 243197 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table
root@yurko-laptop:/home/yurko-laptop#

所以:

總共 2000365289472 位元組 / 512 磁區大小 = 總共 3906963456 個磁區,
(20 * 1024 * 1024) 位元組 / 512 個磁區, (20 * 1024 * 1024) 位元組 / 512 個磁區大小 = 40960
個磁區,6306 個磁區個要跳過的扇區。

我將驅動器的最後 20 MB 清除並再次檢查 md5 和,
但它與之前計算的結果相同。也許有一些
具體的方法命令內容如下/dev/sdb

root@yurko-laptop:/home/yurko-laptop# dd if=/dev/zero of=/dev/sdb seek=3906922496
dd: запись в «/dev/sdb»: На устройстве кончилось место
40961+0 записей считано
40960+0 записей написано
скопировано 20971520 байт (21 MB), 4,05176 c, 5,2 MB/c
root@yurko-laptop:/home/yurko-laptop# head -c 2000365289472 /dev/sdb | md5sum
head: ошибка чтения «/dev/sdb»: Ошибка ввода/вывода
5132d3021b8570c6009877dfd132631f  -
root@yurko-laptop:/home/yurko-laptop#

同樣,對於 USB 記憶棒來說,它是有效的。

當我嘗試使用時智慧控制,我發現這個硬碟不支援SMART技術:

root@yurko-laptop:/# smartctl -a -d scsi /dev/sdb
smartctl 5.40 2010-07-12 r3124 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Device: WD       Elements 10B8    Version: 1007
Serial number: WX21AB3Y5219    
Device type: disk
Local Time is: Sun Aug 17 14:42:49 2014 EEST
Device does not support SMART

Error Counter logging not supported
No self-tests have been logged
root@yurko-laptop:/# 

儘管如此,我從這次調查中得​​到了很大的滿足。

答案1

一個問題是您的硬碟不一定適合完整的 16MB 區塊,因此最後一個(假設磁碟機的 15MB)是來自工廠或某些 Windows 格式化垃圾的隨機數據,這會產生不同的 md5。

/dev/zero 中沒有任何 md5 資訊!它是虛擬的。首先檢查邏輯/實體磁區大小是多少!

 sudo fdisk -l /dev/sdb

對於新驅動器,它應該是 4096。 因此這意味著您可以用 4096 個零塊(塊大小)完全填充驅動器,因此:

dd if=/dev/zero of=/dev/sdb bs=4096 conv=notrunc,noerror & pid=$!
kill -USR1 $pidnumer

您可以省略“conv=notrunc,noerror & pid=$!”部分; Kill -USR1 $pidnumer 顯示歸零進度。 conv 和 noerror 只是確保嘗試每個區塊,並且在出現錯誤時(錯誤顯示在終端中)繼續歸零。更多的 @

man dd

您也可以嘗試透過計算有多少磁區以及需要跳過多少磁區來嘗試將磁碟機的最後 20M 清除(檢查 fdisk -l 以了解磁碟大小(以位元組為單位))。總計 2,000,000,000,000 位元組/4096=488281250 個磁區。 20,000,768 位元組 /4096=4883 個磁區 488281250-4883=488276367 個要找的區

 dd if=/dev/zero of=/dev/sdb bs=4096 seek=488276367 conv=notrunc,noerror & pid=$!

然後再次檢查 md5 如果存在輸入/輸出錯誤 dd 無論如何都會顯示它。更好的硬碟測試工具是 smartmontools

smartctl -a /dev/sdb 找出重新分配的磁區、重新指派的磁區數、離線不可修正的磁區、掛起的磁區。和錯誤日誌。上述任何值都是壞消息,並且會使硬碟進入保固期。您也可以嘗試 bonnie++ 例如在 USB 磁碟上建立一個分割區(無論是什麼類型),格式化它並將其安裝到例如 /dev/sdb1

bonnie++ -u root -d /mnt/sdb1 -n 10:100000000:100:4096 -x 3 -m 5gb

並檢查 bonnie 的結果以及 /var/log/syslog 和其他日誌是否有輸入輸出錯誤。

相關內容