lunes, 4 de noviembre de 2013

Tamaños diferentes ejecutando df y du en linux

Hola amigos blogueros, el día de hoy estaba revisando unos procesos de sincronización remotos y me di cuenta que los tamaños eran diferentes por lo que comencé a buscar un ¿porqué?.

Lo primero fue usar el comando du -sh /directorio para ir viendo la diferencia en los tamaños de las carpetas y una de ellas en particular marcaba una gran diferencia de 80 Gb que no lo "sumaba" el du, buscando la razón encontré un post que despejó mis dudas y que lo comparto.


Disco lleno en linux! Diferencias entre df y du

Resulta que ambos comandos, reportan de diferente forma el espacio utilizado en el disco, y para demostrar esto y entenderlo de mejor forma, lo veremos con un ejemplo, acompañados de otro comando amigo el lsof.

Si utilizamos el comando du, de la siguiente forma:


# du -sh /

el -sh significa que queremos el gran total ( s: sumarizar) y que utilice letras para definir los tamaños, MB, GB, etc.

obtenemos el siguiente resultado:

13G /

Luego utilizando el comando df, supuestamente para realizar el mismo cálculo, podríamos utilizar lo siguiente:

df -h /

el -h significa que queremos que utilice letras para definir los tamaños, MB, GB, etc.

para lo que obtendríamos un resultado como este:

Filesystem Size Used Avail Use% Mounted on
/dev/sda3   64G  30G   32G  49% /

y llegamos entonces al punto! según du tenemos 13G utilizados en nuestro disco y el df nos dice que estamos utilizando 30GB! pregunto entonces donde se encuentran los 17GB que no están en el disco según el du? Bueno resulta que el “open file descriptor” es el causante de esta diferencia en resultados, ya que el df toma en cuenta los archivos abiertos y el du realiza sus cálculos sobre los archivos almacenados en cada una de las carpetas recursivamente.

Es ahora donde el “lsof” entra en juego para ayudarnos a saber qué pasa con ese crecimiento en el espacio de disco utilizado. Al ejecutar el comando de la siguiente forma:

lsof -R | more

Obtenemos un resultado como el siguiente:

COMMAND PID PPID USER FD TYPE DEVICE SIZE NODE NAME
init 1 0 root cwd DIR 8,3 4096 2 /
init 1 0 root rtd DIR 8,3 4096 2 /
init 1 0 root txt REG 8,3 32652 7028751 /sbin/init
init 1 0 root mem REG 0,0 0 [heap] (stat: No such file or directory)
init 1 0 root mem REG 8,3 9592 7260587 /lib/tls/i686/cmov/libdl-2.3.6.so
init 1 0 root mem REG 8,3 1241392 7260584 /lib/tls/i686/cmov/libc-2.3.6.so
init 1 0 root mem REG 8,3 79368 7258210 /lib/libselinux.so.1
init 1 0 root mem REG 8,3 219824 7258211 /lib/libsepol.so.1
init 1 0 root mem REG 8,3 88164 7258114 /lib/ld-2.3.6.s

utilicé el “-R” para que me listara el proceso padre y así identificar quien está utilizando dichos archivos. Con ello podemos llegar de una mejor forma a detectar ese crecimiento “fantasma”.

Como ejemplo practico podríamos hacer lo siguiente.........


Hasta mi próximo post y no se olviden de dejar sus comentarios o enviarme un tweet a: @Danny_Obando.

No hay comentarios:

Publicar un comentario