为什么硬链接文件后磁盘使用量并没有减少 6,728k?

为什么硬链接文件后磁盘使用量并没有减少 6,728k?

给定以下命令序列……

$ pwd
/data/backup/rsnapshot
$ sudo du -csk daily.{2,3}/ruminant
1195040 daily.2/ruminant
36712   daily.3/ruminant
1231752 total
$ ls -isk /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmunix \
          /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmlinux2
13344429 6728 /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmlinux2
16476851 6728 /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmunix
$ sudo ln -f /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmunix \
             /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmlinux2
$ ls -isk /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmunix \
          /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmlinux2
16476851 6728 /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmlinux2
16476851 6728 /data/backup/rsnapshot/daily.3/ruminant/home/andy/vmunix
$ sudo du -csk daily.{2,3}/ruminant
1195040 daily.2/ruminant
36712   daily.3/ruminant
1231752 total

...为什么在两个明显不同的文件硬链接在一起后,这两个目录的使用量仍为 1,231,752k?我本以为/data/backup/rsnapshot/daily.3/ruminant现在小了 6,728k。

ext3 文件系统挂载在/数据备份,Linux Debian 挤压主机。

我已经检查过lsof | grep deleted,这两个文件都没有被某个进程打开。

答案1

daily.2/ruminant可能仍然包含指向相同 inode(13344429)的链接,因此总大小并未减少,因为该目录中仍然分配有空间且在使用中。

几个相关点:

a) 如果您只运行,du -sk daily.3/ruminant那么您可能会看到总数的减少,因为(大概)目录中不再有指向该 inode 的链接daily.3

b)du按参数顺序计算 inode 数量,因此在第一个打印输出中,它将 inode 13344429 的使用权分配给daily.2而不是daily.3。因此,从 中删除链接daily.3(并将其保留在 中daily.2)不会导致在计算两者时空间减少,daily.{2,3}因为它仍然计入 中daily.2

相关内容