Dd
硬碟映像文件校驗和與設備校驗和不匹配
我有一個
660297728
帶有 MD5 雜湊的字節硬碟圖像f5a9d398e974617108d26c1654fe7bcb
:root@T42# ls -l image -rw-rw-r-- 1 noc noc 660297728 Sep 29 19:00 image root@T42# md5sum image f5a9d398e974617108d26c1654fe7bcb image
現在,如果我
dd
將此圖像文件到/dev/sdb
磁碟並檢查磁碟的 MD5 雜湊,則它與圖像文件的 MD5 雜湊不同:root@T42# dd if=image of=/dev/sdb bs=512 1289644+0 records in 1289644+0 records out 660297728 bytes (660 MB) copied, 1006.38 s, 656 kB/s root@T42# md5sum /dev/sdb f6152942a228a21a48c731f143600999 /dev/sdb
什麼可能導致這種行為?
究竟是
/dev/sdb
660297728 字節大嗎?(blockdev --getsize64 /dev/sdb
)。如果不是,校驗和自然會不同。用於cmp image /dev/sdb
詳細找出差異所在。如果它說EOF on image
,它是相同的。
也許 /dev/sdb 上的磁碟已被 udisks 或作業系統的其他程序修改(例如自動掛載)。
編輯: 也許圖像是分區的圖像,而不是整個硬碟的圖像。
您可以將您的磁碟與 fdisk 進行比較:
fidsk -l /dev/sdb
和
fdisk -l /path/to/image
查看塊的數量(及其大小),它可能只對應一個分區。
在 /dev/sdb 上的相關分區上重試 md5sum:md5sum /dev/sdbx(x 是分區號)
並與您的圖像的 md5 進行比較
編輯2:
660297728 bytes (660 MB)
當您完成 dd 時,您的源 HDD 的大小為:dd if=/dev/sda of=/path/to/image
所以圖像具有與整個源硬碟相同的大小:
660297728 bytes
如果您對源 HDD 和圖像進行 md5sum,則它必須相同。
將映像複製到新 HDD 時,您可以:
dd if=image of=/dev/sdb
但 sdb 的大小為 1 TB,因此:
- 第一個
660297728 bytes
是dd寫的- 下一個
440 MB
尚未寫入,dd之前的數據相同,可能是一些零或其他。如果你對整個 sdb 做 md5sum,你將包括
440 MB
未寫入的,結果與 image 的 md5sum 不同。如果要對新磁碟進行 md5sum,請執行以下操作:
dd if=/dev/sdb bs=512 count=660297728 | md5sum.
結果必須相同。