Meu servidor possui um volume de 130 GB conectado.
Para verificar o espaço livre do disco, executo df -h -x tmpfs -x squashfs | grep -v /run/shared
e obtenho:
Filesystem Size Used Avail Use% Mounted on
udev 965M 0 965M 0% /dev
/dev/xvda1 128G 111G 13G 90% /
No entanto, quando desejo os detalhes do uso do disco, executando ncdu
no diretório raiz, recebo:
. 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
Há uma diferença de cerca de 27 GB com o espaço livre em disco retornado pelo comando anterior (111 GB).
De onde vem essa diferença?
Obrigado.
Responder1
Esta questão surge com bastante frequência. A resposta curta é du
usar df
métodos diferentes para obter dados.
O sistema de arquivos aloca blocos de disco no sistema de arquivos para registrar seus dados. Esses dados são chamados de metadados que não são visíveis para a maioria dos programas de nível de usuário (como o du). Exemplos de metadados são inodes, mapas de disco, blocos indiretos e superblocos.
Ovocêcomando é um programa de nível de usuário que não reconhece os metadados do sistema de arquivos, enquanto df analisa os mapas de alocação de disco do sistema de arquivos e reconhece os metadados do sistema de arquivos. dfobtém estatísticas verdadeiras do sistema de arquivos, enquanto du vê apenas uma imagem parcial.