You would think that disk free space and disk usage would be very easy but there are things like sparse files that may report being much larger than they are. Also, is slack space being reported or not. This can make a large difference if you have many very small files. A file only 10 bytes will take up more space.
If a program has a large file open that you have deleted, the inode won't be deleted until the program quits. Suppose you performed an upgrade of a lot of packages. There are programs running that may have old library versions open that were replaced.
If you are using the ext2 or ext3 filesystem, 10 to 15% of the drive may be reserved for root. If this is a partition without any system directories such as /var,/bin/,/lib, etc. then you don't need this reserved space.
You might try
- Rebooting to release any deleted files that a program still has open.
- Check the files system for errors
- Run "tune2fs" to release the space reserved for root if there aren't any system directories on the partition.
- Even if there are system drives, if you have a very large drive, you could reduce the amount of reserved space to 1%.