私はcp --reflink
書き込み中にコピーを許可するbtrfsを使用しています。lxc-clone
この機能は。私の質問は、ファイルが他のファイルのCoWであるかどうかをどうやって知ることができますか?ハードリンクと同様に、inode番号で知ることができます。
ベストアンサー1
良い質問。簡単で高レベルでわかる方法はないようです。
1つの問題は、ファイルが書き込み中にコピーを介してデータの一部のみを共有できることです。これを物理的範囲といい、一部 または みんなCoWファイル間で物理的な範囲の一部を共有できます。
。 (編集:参照私の他の答え)。inode
ファイルを比較すると、ファイルが同じ物理範囲を共有していることを知らせることはありません
低レベルの答えは、次を使用してカーネルファイルにどの物理範囲が使用されているかを尋ねることができます。FS_IOC_FIEMAP
ioctl
今すぐに記録Documentation/filesystems/fiemap.txt
。原則として、すべての物理スコープが同じ場合、ファイルは同じプライマリストレージを共有する必要があります。
より高いレベルでこの情報を表示する方法を実装することはほとんどありません。私は少し見つけました。ここにコードを入力してください。確かにfilefrag
ユーティリティーは -v を使用して範囲を表示する必要があります。また、btrfs-debug-tree
この情報を表示します。
しかし、これらのことは実際にはあまり使われないかもしれないので注意を払う間違いを犯します。したがって、誤った回答を提供するエラーが見つかる可能性があるため、このデータに依存してデータにつながる可能性がある操作について決定を下すときに注意してください。腐敗。
いくつかの関連質問: