Boa pergunta. Parece que atualmente não há maneiras fáceis de contar de alto nível.
Um problema é que um arquivo pode compartilhar apenas parte dos dados via Copy-on-Write. Isso é chamado de extensão física e algumas ou todas das extensões físicas podem ser compartilhadas entre arquivos CoW.
Não há nada análogo a um (Editar: veja minha outra resposta ). inode
que, quando comparado entre arquivos, informa que os arquivos compartilham as mesmas extensões físicas.
A resposta de baixo nível é que você pode perguntar ao kernel quais extensões físicas são usadas para o arquivo usando o FS_IOC_FIEMAP
ioctl
, que é documentado em Documentation/filesystems/fiemap.txt
. Em princípio, se todas as extensões físicas forem iguais, o arquivo deve estar compartilhando o mesmo armazenamento subjacente.
Poucas coisas implementam uma maneira de ver essas informações em um nível mais alto. Eu encontrei alguns go code aqui . Aparentemente, o utilitário filefrag
deve mostrar as extensões com -v. Além disso, btrfs-debug-tree
mostra esta informação.
Algumas perguntas relacionadas: