Dd
有時同步會卡在 dd
有時當我使用
dd
thensync
或使用dd
withconv=fsync
時,同步過程會卡住,但有時不會,輸入和輸出目標和配置完全相同。dd if=2016-03-18-raspbian-jessie-lite.img of=/dev/sdg conv=fsyn sync # freeze here
或者
dd if=2016-03-18-raspbian-jessie-lite.img of=/dev/sdg conv=fsync
我在 Ubuntu、Linux Mint(很久以前)等不同發行版上以及現在在 Gentoo 和 4 台不同的機器上都經歷過這種不一致的行為。
我發現自己經常處於這樣一種情況,
pv image_file | dd of=/dev/slow_usb_stick
即前幾百兆字節只是飛(到緩衝區),然後傳輸速度很慢。退出時dd
有整個緩衝區要刷新。然後我sync
為了移除棒,我必須再等幾分鐘,因為緩衝區很大並且設備很慢。所以也許這與耐心有關。我想緩衝區大小取決於可用記憶體。有時緩衝區可能非常大並且
sync
“卡住”,有時則不會。這是一個猜測。我觀察到的另一個現象:
sync
刷新所有緩衝區(即所有設備)。有幾次我想刪除 USB 記憶棒(在dd
它之後),被呼叫sync
這樣做,但同時我的硬碟正忙於大量寫入操作。硬碟驅動器的數據一直過快,以至於緩衝區無法清空。冷凍sync
與那時無關dd
。出於這個原因,我希望sync
可以針對特定設備並退出,而不管所有其他設備。編輯:
我的願望實現了。在 Ubuntu 16.04.2 LTS 中,我有
sync (GNU coreutils) 8.25
它可以針對特定的文件系統。萬歲!