Dd

有時同步會卡在 dd

  • May 3, 2017

有時當我使用ddthensync或使用ddwithconv=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可以針對特定的文件系統。萬歲!

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