Pertanyaan bagus. Sepertinya saat ini tidak ada cara tingkat tinggi yang mudah untuk diceritakan.
Satu masalah adalah bahwa file hanya dapat membagikan sebagian data melalui Copy-on-Write. Ini disebut batas fisik, dan beberapa atau semua luasan fisik dapat dibagi antara file Kontrak Karya.
Tidak ada yang analog dengan inode
yang, jika dibandingkan antara file, akan memberi tahu Anda bahwa file memiliki luasan fisik yang sama. (Edit: lihat jawaban saya yang lain ).
Jawaban level rendah adalah bahwa Anda dapat menanyakan kernel mana ekstensi fisik yang digunakan untuk file yang menggunakan , yang didokumentasikan . Pada prinsipnya, jika semua luasan fisik adalah sama, maka file tersebut harus berbagi penyimpanan dasar yang sama.FS_IOC_FIEMAP
ioctl
Documentation/filesystems/fiemap.txt
Beberapa hal menerapkan cara untuk melihat informasi ini di tingkat yang lebih tinggi. Saya menemukan beberapa kode go di sini . Rupanya filefrag
utilitas seharusnya menunjukkan luasan dengan -v. Selain itu, btrfs-debug-tree
tunjukkan informasi ini.
Saya akan berhati-hati, karena hal-hal ini mungkin memiliki sedikit kegunaan di alam liar untuk tujuan ini, Anda dapat menemukan bug memberikan jawaban yang salah, jadi berhati-hatilah mengandalkan data ini untuk memutuskan operasi yang dapat menyebabkan korupsi data.
Beberapa pertanyaan terkait:
btrfs-debug-tree
daftar luasan pada nama file yang diberikan?Lebih jauh ke jawaban saya sebelumnya , saya baru saja merilis
fienode
yang menghitung hash SHA1 dari luasan fisik file dan dapat digunakan untuk menemukan beberapa salinan reflink (identik). Waspadalah, ada peringatan (lihat dokumentasi ). BTRFS memutuskan untuk mengubah sebagian, tetapi tidak semua, dari luasan fisik salinan refink yang saya buat tanpa provokasi atau peringatan, menyebabkan nilai berubah.sumber