File-Copy

如何驗證文件副本是 reflink/CoW?

  • April 17, 2016

我正在玩 btrfs,它允許cp --reflink寫時複製。其他程序,例如lxc-clone,也可以使用此功能。我的問題是,如何判斷一個文件是否是另一個文件的 CoW?就像硬連結一樣,我可以從 inode 編號中看出。

好問題。看起來目前沒有任何簡單的高級方法可以分辨。

一個問題是文件可能僅通過寫時複製共享部分數據。這稱為物理範圍,部分 全部物理範圍可以在 CoW 文件之間共享。

沒有什麼類似的inode,當在文件之間進行比較時,會告訴您文件共享相同的物理範圍。(編輯:見我的其他答案)。

低級別的答案是,您可以使用 . 文件中記錄的. 原則上,如果所有物理範圍都相同,則文件必須共享相同的底層儲存。FS_IOC_FIEMAP ioctlDocumentation/filesystems/fiemap.txt

很少有東西可以實現在更高級別查看此資訊的方法。我在這裡找到了一些 go 程式碼。顯然,該filefrag實用程序應該使用 -v 顯示範圍。此外,btrfs-debug-tree顯示此資訊。

但是我會謹慎行事,因為這些東西可能在野外幾乎沒有用於此目的,您可能會發現錯誤給出錯誤答案,因此請注意依賴這些數據來決定可能導致數據損壞的操作。

一些相關問題:

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