Fedora 41 (6.11.10-300.fc41.x86_64) XFS
Create loopback image
$ fallocate -l 1.2G lodisk.imgCreate loopback device
sudo losetup -f lodisk.imgCreate XFS on the device
sudo mkfs.xfs /dev/loop1Create 1GB file on the device
sudo dd if=/dev/random of=/mnt/tmp/file1 bs=1M count=1024dfで空き容量を確認しておく
$ df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 1.2G 1.1G 63M 95% /mnt/tmp$ ln /mnt/tmp/file1 /mnt/tmp/file2file1とfile2は同じinode番号
$ ls -lih /mnt/tmp
total 2.0G
131 -rw-r--r--. 2 ori root 1.0G Dec 5 10:31 file1
131 -rw-r--r--. 2 ori root 1.0G Dec 5 10:31 file2$ df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 1.2G 1.1G 63M 95% /mnt/tmp空き容量はないけどreflink copyは成功する
$ cp --reflink /mnt/tmp/file1 /mnt/tmp/file3Reflink copyはinodeは別
$ ls -lih /mnt/tmp
total 3.0G
131 -rw-r--r--. 2 ori root 1.0G Dec 5 10:31 file1
131 -rw-r--r--. 2 ori root 1.0G Dec 5 10:31 file2
132 -rw-r--r--. 1 ori ori 1.0G Dec 5 10:33 file3dfで見たときの空き容量は変わらない
$ df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 1.2G 1.1G 63M 95% /mnt/tmp普通にduすると、hardlinkはカウントされない
$ du -csh /mnt/tmp/*
1.0G /mnt/tmp/file1
1.0G /mnt/tmp/file3
2.0G totalduに -l をつけるとhardlinkもカウントされる
$ du -l -csh /mnt/tmp/*
1.0G /mnt/tmp/file1
1.0G /mnt/tmp/file2
1.0G /mnt/tmp/file3
3.0G total