Hard-Disk
為什麼 dd 需要太長時間?
我需要將一個磁碟複製到另一個磁碟。我嘗試使用下面的命令,在 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。
關於
rdsk
,sd(4)手冊頁說:此時,僅提供塊設備。原始設備尚未實施。
增加 dd 的緩衝區大小將為您提供更多的讀寫操作性能。現在所有磁碟都有硬體讀/寫緩衝區。但是如果你增加 dd 的緩衝區大小超過硬體緩衝區,它的性能將會下降,因為當第二個磁碟從它自己的硬體緩衝區寫入所有內容時,dd 將從第一個磁碟讀取到緩衝區。
bs
每次為不同的設備設置不同的值時,您都需要設置dd 命令的選項。