Dd
不設置 conv=f sync 是否意味著如果您關閉電腦,則副本可能不完整?
因此,據我所知, conv=fsync 意味著記憶體在 dd 退出之前已完全寫入。但這是否意味著 dd 退出時寫入不完整?就像我關閉電腦(在 dd 看似完成之後)文件可能不完整?
使用 dd 將所有零寫入硬碟驅動器怎麼樣?
dd conv=fsync
導致 dd 在退出之前刷新它正在寫入的文件的作業系統記憶體。通常,如果沒有此選項,則 dd 將在作業系統接受所有要寫入的數據後立即退出。如果您關閉作業系統,它將在關閉之前將內容刷新到磁碟並解除安裝文件系統。
因此,如果您正常關閉,它與使用 fsync 選項並沒有太大不同。但是如果你在沒有它的情況下執行 dd ,等待它完成,然後拔掉插頭,所有的賭注都沒有了。當然,即使使用 fsync 選項,如果您這樣做,事情可能不會順利,但至少 dd 的輸出會在磁碟上。
同樣,如果這是一個可移動驅動器,那麼如果您使用 fsync 然後彈出磁碟或不使用它並彈出磁碟,則不會有什麼不同,除非彈出不會花費很長時間,
dd conv=fsync
因為它會更少(沒有?)要刷新的緩衝區。但是,如果您將可移動磁碟拉出而不彈出,則不確定是否所有緩衝區都有機會被寫入。可能這裡最大的區別是 fsync 選項強制作業系統在您等待 dd (或彈出)完成時立即刷新緩衝區,如果沒有它,它們將在後台機會性地刷新,並且核心可能會延遲刷新它支持首先刷新的其他 I/O。
這裡的重點是核心會延遲一些寫入以支持其他更重要的 I/O(例如,讀取或對同一設備的其他寫入)。通過使用 fsync(或彈出),你告訴核心這個特定的 I/O 是最重要的,現在就完成它。
數據的來源在這裡無關緊要,只與數據寫入的位置和等待時間有關。