Sistemas

El disco que se llenaba solo

Cuando df y du no se ponen de acuerdo: espacio fantasma bajo un punto de montaje, y cómo mirar el disco real con un contenedor efímero.

El disco que se llenaba solo

Pasé una tarde entera mirando un servidor que decía tener el disco lleno… y que tenía menos de seis gigas de ficheros reales. df aseguraba que todo estaba ocupado; du no encontraba la mitad. Esta es la historia del misterio y del truco que lo resolvió.

Los síntomas

  • df -h decía: 100% ocupado, cero disponible.
  • du -sh /home sumaba menos de la mitad del disco.
  • Las bases de datos empezaban a fallar porque no podían escribir.
  • Y lo mejor: ningún fichero grande, ninguna carpeta sospechosa, ninguna explicación visible.

Cuando df y du no se ponen de acuerdo, algo muy concreto pasa. No es magia: es que algo está escondiendo ficheros a las herramientas.

Las tres causas clásicas

1. Ficheros borrados que un proceso aún tiene abiertos

Un proceso escribe en un fichero, alguien lo borra, y el proceso sigue escribiendo. El fichero no aparece en ningún sitio, pero ocupa espacio hasta que el proceso muere.

2. Montajes que tapan carpetas

Si hay datos escritos en /home/datos y después montan un disco encima de /home/datos, esos datos no los ve nadie — pero ocupan espacio igualmente.

3. Sistemas de ficheros con la contabilidad rota

Raramente, el sistema de ficheros mismo pierde la cuenta de lo que hay. Toca fsck offline.

El truco: mirar sin los montajes

Mi caso era el número 2, con trampa. El espacio fantasma vivía bajo un punto de montaje de un servicio que descarga contenido continuamente. Cuando el montaje está activo, nada se ve; cuando cae, los datos aparecen. Y yo no podía usar sudo, así que miré el disco con un contenedor Docker efímero:

docker run --rm -i -v /home:/hosthome:ro node:22-slim sh -s <<'EOF'
du -xsh /hosthome/fabricante/mnt/* 2>/dev/null
find /hosthome -xdev -type f -printf "%s\n" | awk '{s+=$1} END {print s/1073741824" GB"}'
EOF

El contenedor no tiene mis montajes de usuario: ve el disco tal como es. Allí aparecieron los gigas que du no encontraba.

La resolución

  • El servicio culpable: desactivado.
  • El espacio: recuperado, de cero libres a quince gigas.
  • Y un vigilante de discos (el de la nota anterior) para que no vuelva a pasar desapercibido.

La lección que me quedo: las herramientas de disco asumen un mundo sin montajes. Cuando las cifras no cuadran, no discutas con du: busca qué hay debajo.