Synchronization

sync 和 fsfreeze 在產生一致的磁碟數據方面有何不同?

  • February 12, 2021

在執行的 linux 機器上,文件系統中的記憶體內容應該寫入磁碟。

fsfreeze 停止對文件系統的新訪問並在磁碟上創建一個穩定的映像。

因此,似乎使用任一命令都可以在發出命令時實現數據的“穩定磁碟”表示。

顯然,fsfreeze, 被描述為 - 另外 - 暫停進一步的“新訪問”。

現在這個問題尋求資訊,如果為了獲得一致的磁碟映像(即,用於備份磁碟文件系統數據的備份),使用同步和 fsfreeze 之間是否有任何區別。

我假設要回答這個問題,可能有必要考慮使用的文件系統,因為不同的文件系統有不同的方式來確保(或不)中間狀態被原子地送出到磁碟。

個人測試表明,fsfreeze文件btrfs系統確實總是以無響應的控制台結束,需要硬重置。另一方面,同步並沒有(沒有諷刺意味)凍結系統。

因此,似乎使用任一命令都可以在發出命令時實現數據的“穩定磁碟”表示。

是的,但在sync這種情況下,“穩定的磁碟”狀態可能非常短暫——在sync發出之後所做的任何更改都可能使文件系統再次不一致。

fsfreeze使用FIFREEZE沒有超時。正如您所發現的,這可能會導致系統凍結,因為在受影響的文件系統上無法進行任何寫入——並且寫入是在多種情況下發出的(例如,寫入您的 shell 的歷史記錄)。有一個緊急解凍組合鍵, SysRq``j,您可以使用它(除非它已被禁用)。

關鍵FIFREEZE在於,當它生效時,您可以讀取凍結文件系統下的儲存並建構儲存的一致映像——數據和元數據完全同步的映像。

只有,並且在sync完成時飛行中的更改sync將在磁碟上完成,但是複制底層儲存不一定會產生一致的圖像,因為後續寫入可能已經開始觸及儲存。複製這樣的圖像應該允許您檢索您關心的所有數據,並且在許多情況下,任何部分寫入的更改都不會阻止文件系統恢復;但是您不能保證圖像可以按原樣使用,無需修復,即使在記錄、日誌或寫時復製文件系統上也是如此。

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