Hard-Disk

為什麼 dd 需要太長時間?

  • January 8, 2022

我需要將一個磁碟複製到另一個磁碟。我嘗試使用下面的命令,在 federo 中複製 1 TB 磁碟需要將近一天的時間。

dd if=/dev/sda of=/dev/sdb 

我已經在 Unix(HP-UX)系統上使用以下命令進行了相同的嘗試,並在幾個小時內完成

dd if=/dev/sda of=/dev/rdsk

我可以用來更快地從磁碟複製到磁碟的替代方法是什麼?

dd有許多(奇怪的)選項,請參閱dd(1)

您應該明確說明緩衝區大小,因此請嘗試

dd if=/dev/sda of=/dev/sdb bs=16M

IIRC,預設緩衝區大小僅為 512 字節。上面的命令將其設置為 16 兆字節。您可以嘗試一些更小的東西(例如bs=1M),但您應該使用比預設值更多的東西(尤其是在最近的具有 4Kbytes 扇區的磁碟硬體上,即Advanced Format)。我天真地推薦至少一兆字節的二的冪。

使用預設的 512 字節緩衝區大小,我猜(但我可能非常錯誤)硬體需要核心為每個 512 字節塊傳輸 4K。

關於rdsksd(4)手冊頁說:

此時,僅提供塊設備。原始設備尚未實施。

增加 dd 的緩衝區大小將為您提供更多的讀寫操作性能。現在所有磁碟都有硬體讀/寫緩衝區。但是如果你增加 dd 的緩衝區大小超過硬體緩衝區,它的性能將會下降,因為當第二個磁碟從它自己的硬體緩衝區寫入所有內容時,dd 將從第一個磁碟讀取到緩衝區。bs每次為不同的設備設置不同的值時,您都需要設置dd 命令的選項。

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