A disk is full but du shows little usage. Why?

Usually a deleted file is still held open by a process, so its blocks are not freed. Find it with:

bash lsof +L1 open files with link count 0

Restart or signal the process (or truncate via /proc/<pid/fd/<n). Other causes: inode exhaustion (df -i) or files hidden under a mount point.