Разница между дисковым пространством тома и использованием диска, возвращаемая ncdu

Разница между дисковым пространством тома и использованием диска, возвращаемая ncdu

К моему серверу подключен том объемом 130 ГБ.

Чтобы проверить свободное место на диске, я запускаю df -h -x tmpfs -x squashfs | grep -v /run/sharedи получаю:

Filesystem      Size  Used Avail Use% Mounted on
udev            965M     0  965M   0% /dev
/dev/xvda1      128G  111G   13G  90% /

Однако, когда я хочу получить подробную информацию об использовании диска, запустив команду ncduв корневом каталоге, я получаю:

.  55,7 GiB [######### ] /home                                                                                                                           
.  24,0 GiB [####      ] /var
.   2,4 GiB [          ] /usr
    1,0 GiB [          ]  swapfile
  598,6 MiB [          ] /lib
   63,0 MiB [          ] /boot
    9,4 MiB [          ] /sbin
    9,1 MiB [          ] /bin
.   8,1 MiB [          ] /etc
.   4,3 MiB [          ] /tmp
.   2,7 MiB [          ] /run
!  24,0 KiB [          ] /root
!  16,0 KiB [          ] /lost+found
    4,0 KiB [          ] /lib64
e   4,0 KiB [          ] /opt
e   4,0 KiB [          ] /mnt
e   4,0 KiB [          ] /media
!   4,0 KiB [          ] /gandi
.   0,0   B [          ] /proc
.   0,0   B [          ] /sys
    0,0   B [          ] /dev
@   0,0   B [          ]  initrd.img.old
@   0,0   B [          ]  initrd.img
@   0,0   B [          ]  vmlinuz.old
@   0,0   B [          ]  vmlinuz
e   0,0   B [          ] /srv

Разница составляет около 27 ГБ по сравнению со свободным местом на диске, возвращенным предыдущей командой (111 ГБ).

Откуда взялась эта разница?

Спасибо.

решение1

Этот вопрос возникает довольно часто. Короткий ответ — duи dfиспользовать разные методы для получения данных.

Файловая система выделяет дисковые блоки в файловой системе для записи своих данных. Эти данные называются метаданными, которые не видны большинству программ уровня пользователя (таких как du). Примерами метаданных являются inodes, disk maps, indirect blocks и superblocks.

Theдуcommand — это программа пользовательского уровня, которая не знает метаданных файловой системы, в то время как df просматривает карты распределения дискового пространства файловой системы и знает метаданные файловой системы. дфполучает истинную статистику файловой системы, тогда как du видит только частичную картину.

Связанный контент