Mi servidor tiene un volumen de 130 GB adjunto.
Para verificar el espacio libre en el disco, lo ejecuto df -h -x tmpfs -x squashfs | grep -v /run/shared
y obtengo:
Filesystem Size Used Avail Use% Mounted on
udev 965M 0 965M 0% /dev
/dev/xvda1 128G 111G 13G 90% /
Sin embargo, cuando quiero conocer los detalles del uso del disco, al ejecutarlo ncdu
en el directorio raíz, obtengo:
. 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
Hay una diferencia de unos 27 GB con el espacio libre en disco devuelto por el comando anterior (111 GB).
¿De dónde viene esta diferencia?
Gracias.
Respuesta1
Esta pregunta surge con bastante frecuencia. La respuesta corta es du
utilizar df
diferentes métodos para obtener datos.
El sistema de archivos asigna bloques de disco en el sistema de archivos para registrar sus datos. Estos datos se denominan metadatos y no son visibles para la mayoría de los programas de nivel de usuario (como du). Ejemplos de metadatos son inodos, mapas de disco, bloques indirectos y superbloques.
ElduEl comando es un programa a nivel de usuario que no conoce los metadatos del sistema de archivos, mientras que df mira los mapas de asignación de discos del sistema de archivos y conoce los metadatos del sistema de archivos. dfobtiene estadísticas reales del sistema de archivos, mientras que du ve sólo una imagen parcial.