Sistemes

El disc que s'omplia sol

Quan df i du no es posen d''acord: espai fantasma sota un punt de muntatge,

2 min de lectura

Vaig passar una tarda sencilla mirant un servidor que deia tenir el disc ple... i que tenia menys de sis gigas de fitxers reals. df (l'eina que diu quant espai lliure queda a cada disc) assegurava que tot estava ocupat; du (la que suma el que pesen els fitxers) no trobava la meitat. Aquesta és la història del misteri i del truc que el va resoldre.

Els símptomes

  • df -h deia: 100% ocupat, zero disponible.
  • du -sh /home sumava molt menys de la meitat del disc.
  • Les bases de dades començaven a fallar perquè no podien escriure.
  • I el millor: cap fitxer gran, cap carpeta sospitosa, cap explicació visible.

Quan df i du no es posen d'acord, alguna cosa molt concreta passa. No és màgia: alguna cosa està amagant fitxers a les eines.

Les tres causes clàssiques

1. Fitxers esborrats que un procés encara té oberts

Un procés (un programa en marxa) escriu a un fitxer, algú l'esborra, i el procés continua escrivint. El fitxer no apareix enlloc, però ocupa espai fins que el procés mor.

2. Muntatges que tapen carpetes

Un muntatge és connectar un disc a una carpeta del sistema. Si hi ha dades escrites a /home/dades i després munten un disc a sobre, aquelles dades no les veu ningú — com un calaix que queda darrere d'un armari nou — però ocupen espai igualment.

3. Sistemes de fitxers amb la comptabilitat trencada

Rarament, el sistema de fitxers mateix perd el compte del que hi ha. Toca fsck (l'eina que revisa i repara), amb el disc desmuntat.

El truc: mirar sense els muntatges

El meu cas era el número 2, amb trampa. L'espai fantasma vivia sota el punt de muntatge d'un servei que descarrega contingut contínuament. Amb el muntatge actiu, res no es veu; quan cau, les dades apareixen. I jo no podia fer sudo (executar ordres com a administrador), així que vaig mirar el disc amb un contenidor Docker efímer (un mini-entorn que s'arrenca, fa la feina i desapareix):

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 contenidor no té els meus muntatges d'usuari: veu el disc tal com és. Allà van aparèixer els gigas que du no trobava.

La resolució

  • El servei culpable: desactivat.
  • L'espai: recuperat, de zero lliures a quinze gigas.
  • I un vigilant de disc que avisi quan s'ompli (el de Un vigilant de disc amb cron) perquè no em torni a passar desapercebut.

La lliçó que em quedo: les eines de disc assumeixen un món sense muntatges. Quan les xifres no quadren, no discuteixis amb du: busca què hi ha a sota.