File-Copy
如何驗證文件副本是 reflink/CoW?
我正在玩 btrfs,它允許
cp --reflink
寫時複製。其他程序,例如lxc-clone
,也可以使用此功能。我的問題是,如何判斷一個文件是否是另一個文件的 CoW?就像硬連結一樣,我可以從 inode 編號中看出。
好問題。看起來目前沒有任何簡單的高級方法可以分辨。
一個問題是文件可能僅通過寫時複製共享部分數據。這稱為物理範圍,部分 或 全部物理範圍可以在 CoW 文件之間共享。
沒有什麼類似的(編輯:見我的其他答案)。inode
,當在文件之間進行比較時,會告訴您文件共享相同的物理範圍。低級別的答案是,您可以使用 . 文件中記錄的. 原則上,如果所有物理範圍都相同,則文件必須共享相同的底層儲存。
FS_IOC_FIEMAP
ioctl
Documentation/filesystems/fiemap.txt
很少有東西可以實現在更高級別查看此資訊的方法。我在這裡找到了一些 go 程式碼。顯然,該
filefrag
實用程序應該使用 -v 顯示範圍。此外,btrfs-debug-tree
顯示此資訊。但是我會謹慎行事,因為這些東西可能在野外幾乎沒有用於此目的,您可能會發現錯誤給出錯誤答案,因此請注意依賴這些數據來決定可能導致數據損壞的操作。
一些相關問題: