Назад | Перейти на главную страницу

Почему после жесткого связывания файла использование диска не уменьшилось на 6728 КБ?

Учитывая эту последовательность команд…

$ 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 752 КБ после того, как два явно разных файла жестко связаны друг с другом? Я ожидал /data/backup/rsnapshot/daily.3/ruminant теперь будет на 6728 тыс. меньше.

файловая система ext3 смонтирована в /резервное копирование данных, Linux Debian сжатый хост.

Я проверил с lsof | grep deleted что ни один из файлов не поддерживается каким-либо процессом.

daily.2/ruminant может по-прежнему содержать ссылки на один и тот же индексный дескриптор (13344429), поэтому общий размер не уменьшился, поскольку пространство все еще выделено и используется в этом каталоге.

Пара связанных моментов:

а) Если бы вы только бежали du -sk daily.3/ruminant тогда вы, вероятно, увидите сокращение общего количества, поскольку (предположительно) больше нет ссылок на этот индекс в daily.3 каталог.

б) du считает inodes по мере их поступления в порядке аргументов, поэтому в первой распечатке он назначил использование inode 13344429 для daily.2 скорее, чем daily.3. Поэтому удаление ссылки из daily.3 (и оставив это в daily.2) не приведет к уменьшению пространства при подсчете обоих daily.{2,3} поскольку это все еще учитывается daily.2.