Linux
是否有任何文件系統為 CP 實現寫時複製機制?
我們已經看到作業系統在 fork 程序時執行 Copy on Write 優化。原因是大多數時間 fork 之前都是 exec,所以我們不想承擔頁面分配和不必要地從呼叫者地址空間複製數據的成本。
那麼在具有 ext4 或 xfs(日誌)文件系統的 linux 上執行 CP 時也會發生這種情況嗎?如果它沒有發生,那為什麼不呢?
要搜尋的關鍵字是
reflink
。它最近在 XFS 中實現。編輯:XFS 實現最初被標記為 EXPERIMENTAL。這個警告在核心版本 4.16 中被刪除,幾個月後我寫了上面的內容:-)。
從
cp
手冊頁:當 –reflink
$$ =always $$指定時,執行輕量級複製,其中數據塊僅在修改時才被複製。如果這不可能,則複製失敗,或者如果指定了 –reflink=auto,則回退到標準副本。
這適用於支持Copy-on-Write ( reflink ) 的文件系統,目前主要是 BTRFS。XFS reflink 實現正在開發中 $$ 1 $$$$ 2 $$.