Answers:
好问题。看起来目前没有任何简单的高级方法可以说出来。
一个问题是文件只能通过“写时复制”共享部分数据。这称为物理范围,并且某些 或 所有物理范围可以在CoW文件之间共享。
(编辑:请参阅我的其他答案)。inode
当在文件之间进行比较时,没有什么比这可以告诉您文件共享相同的物理范围。
低层次的答案是,你可以问哪个物理盘使用用于该文件的内核,这是中记录。原则上,如果所有物理盘区都相同,则文件必须共享相同的基础存储。FS_IOC_FIEMAP
ioctl
Documentation/filesystems/fiemap.txt
几乎没有什么东西可以实现在更高层次上查看此信息的方法。我在这里找到了一些go代码。显然,该filefrag
实用程序应该使用-v显示范围。另外,btrfs-debug-tree
显示此信息。
但是,我要谨慎行事,因为这些事情在野外用途很少,您可能会找到错误的错误答案,因此请提防依靠此数据来决定可能导致数据损坏的操作。
一些相关的问题:
btrfs-debug-tree
它列出给定文件名上的扩展区?