Il colpevole quasi certo: file cancellati ma ancora aperti. du conta i file che vede nel filesystem; df conta i blocchi occupati – e un file unlinked ma tenuto aperto da un processo occupa spazio invisibile a du. Il caso da manuale: cancelli un log gigante mentre il servizio ci scrive dentro, e lo spazio non si libera. La prova:
sudo lsof +L1elenca i file aperti con zero link: trova il processo, e un restart (o reload) del servizio libera i giga. La prevenzione: i log non si cancellano, si troncano (truncate -s 0 file.log) o meglio si ruotano con logrotate. Le altre cause della stessa scena: qualcosa montato sopra una cartella piena (i file sotto il mount esistono ma du non li vede: smonta e guarda), riserva root del 5% su ext4, e gli inode esauriti – che sono l'inganno opposto: spazio libero ma impossibile scrivere.