フルコピーと記録中にコピー「コピー」を制御するcp
オプションがあることを知っています。--reflink
ls
btrfsでファイルが他のファイルといくつかのリポジトリを共有するか(記録中のコピーの意味で)確認するために(または他のコマンド)を使用できますか?
編集:@StéphaneChazelasが私に指摘しましたがfilefrag
失敗しました。
root@void:/tmp/mount# mount | tail -1
/tmp/back on /tmp/mount type btrfs (rw,relatime,space_cache)
root@void:/tmp/mount# df -h | tail -1
/dev/loop0 32M 13M 20M 38% /tmp/mount
root@void:/tmp/mount# ls -lh
total 8.0M
-rw-r--r-- 1 root root 8.0M Jan 19 08:43 one
root@void:/tmp/mount# cp --reflink=always one two
root@void:/tmp/mount# sync
root@void:/tmp/mount# ls -lh
total 16M
-rw-r--r-- 1 root root 8.0M Jan 19 08:43 one
-rw-r--r-- 1 root root 8.0M Jan 19 08:45 two
root@void:/tmp/mount# df -h | tail -1
/dev/loop0 32M 13M 20M 38% /tmp/mount
root@void:/tmp/mount# filefrag -kvx one
Filesystem type is: 9123683e
File size of one is 8388608 (8192 blocks of 1024 bytes)
FIEMAP failed with unknown flags 2
one: FIBMAP unsupported
root@void:/tmp/mount# uname -a
Linux void 4.1.7+ #817 PREEMPT Sat Sep 19 15:25:36 BST 2015 armv6l GNU/Linux
ベストアンサー1
アップデート(2021年1月):@bitinerantのコメントをご覧ください。"btrfs-debug-treeは廃止されました。btrfs inform-internal dump-treeを使用してください。"
コマンドで見つける方法がわかりませんls
。でも本当に欲しいなら使えますbtrfs-progs/btrfs-デバッグ-ツリー。
そして引用リンク=常に、ファイルは共通データブロックを共有します。この共通データブロック(拡張とも呼ばれる)への参照数が1を超えています。
まず、ファイル1とファイル2のobjectidを見つける必要があります。
#./btrfs-debug-tree /dev/xvdc (Check under FS_TREE) <snip> item 8 key (256 DIR_INDEX 4) itemoff 15842 itemsize 33 location key (259 INODE_ITEM 0) type FILE namelen 3 datalen 0 name: one item 9 key (256 DIR_INDEX 5) itemoff 15809 itemsize 33 location key (260 INODE_ITEM 0) type FILE namelen 3 datalen 0 name: two </snip>
上から我々はそれを見ることができます259(1)そして260(2)。
今、その参照を見つけます。範囲木から。次のコマンドは、2つのファイル間で共有されるデータブロックを探します。
# ./btrfs-debug-tree /dev/xvdc | grep -A2 "refs 2" extent refs 2 gen 9 flags DATA extent data backref root 5 objectid 260 offset 0 count 1 extent data backref root 5 objectid 259 offset 0 count 1
ボーナス:別の参照を作成してください。
# cp --reflink=always one three
参照数が1ずつ増加することを確認してください。
# ./btrfs-debug-tree /dev/xvdc | grep -A3 "refs 3"
extent refs 3 gen 9 flags DATA
extent data backref root 5 objectid 260 offset 0 count 1
extent data backref root 5 objectid 261 offset 0 count 1
extent data backref root 5 objectid 259 offset 0 count 1
このデータブロックは、objectid が指す 3 つのファイル間で共有されます。259,260,261。