Saving space for important root processes (and possible rescue actions) is one reason.
But there’s another. Ext3 is pretty good at avoiding filesystem fragmentation, but once you get above about 95% full, that behavior falls off the cliff, and suddenly filesystem performance becomes a mess. So leaving 5% reserved gives you a buffer against this.
Ext4 should be better at this, as explained by Linux filesystem developer/guru Theodore Ts’o:
If you set the reserved block count to
zero, it won’t affect performance much
except if you run for long periods of
time (with lots of file creates and
deletes) while the filesystem is
almost full (i.e., say above 95%), at
which point you’ll be subject to
fragmentation problems. Ext4’s
multi-block allocator is much more
fragmentation resistant, because it
tries much harder to find contiguous
blocks, so even if you don’t enable
the other ext4 features, you’ll see
better results simply mounting an ext3
filesystem using ext4 before the
filesystem gets completely full.
If you are just using the filesystem
for long-term archive, where files
aren’t changing very often (i.e., a
huge mp3 or video store), it obviously
If you allow others to log on to your system, via ssh, for example, having these 5% blocks reserved ensures external users cannot fill the disk. Even if you don’t allow others to log in to your system, the reserved blocks prevents programs not running as root from filling your disk.
The default of 5% is meant for system partitions. For example, if your disk space fills up, the system logs (
/var/log) and root’s mailbox (
/var/mail/root) can still receive important information. For a
/home or general data storage partition, there’s no need to leave any space for root. For special needs, you can change the user that gets the emergency space (
tune2fs -u 1234).
There’s another reason to not allow an ext filesystem to get full, which is fragmentation.