Re: ext4 no space left

Theodore Tso
2009-01-21T17:04:38Z

On Wed, Jan 21, 2009 at 04:18:35PM +0100, Victor Pelt wrote:
> i set the number mounted counter to 31, which forced fsck to run on
> the next reboot. I rebooted, fsck didn't show any erros, but i still
> got the no space left error when i tried to copy files to the
> partition.

OK, if a reboot didn't help, I'll bet I know what happened. E2fsprogs
changed the default default inode ratio, which means that number of
inodes being created is half what it was previously. If you do a "df
-i", you'll probably see that you have exhausted the number of inodes
in the filesystem.

The default inode ratio controlled by /etc/mke2fs.conf, and is
currently 16k. That is, it assumes the average size of files on the
filesystem is at least 16k. (It previously was 8k.) For large
filesystems, this is not a problem; I'm guessing that you have a small
root filesystem, and probably are using a hard-coded /dev partition,
so the large number of (zero-length) device files is throwing off the
average. If you recreate the filesystem with mke2fs -I 8192, it
should allow you to copy over all of your files in the root
filesystem.

Finally, note that we made this change for all ext2/3/4 filesystems,
so this is not unique to ext4; it's just that you reformatted your
root filesystem for the first time since upgrading to a newer
e2fsprogs with the changed default, and you ran into this problem. If
there are enough people who are using small root filesystems, maybe
we'll need to have some adjusted hueristics. Right now we have
"floppy" for filesystems less than 3 megs, "small" for filesystems
less than 512 megs, and every thing else is default. Maybe we need to
have a "medium" for filesystems smaller than 10 gigs, perhaps, and use
a default inode ratio of 8192 for medium-sized filesystems....

- Ted