User Tools

Site Tools


howto:no_space_left_on_device

If you have been using your eeepc for a long time with the default unionfs configuration, you may experience a rather odd problem:

All of a sudden you get errors when writing to the hard disk. If you open a terminal and enter df (for displaying the free space left), everything looks ok:

/home/user> df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                 1454700    814852    565952  60% /
/dev/sda1              1454700    814852    565952  60% /
unionfs                1454700    814852    565952  60% /
tmpfs                   254164        12    254152   1% /dev/shm
tmpfs                   131072        28    131044   1% /tmp

Note that the drive is only used to 60%, so there should be quite a lot of available space. But if you try to create a new file or directory, e.g.

mkdir grmpf

you get the error “no space left on device”.

If you are not familiar with the ext2 file system, you will probably have no clue at all how this could be (to be honest, I only found out by searching the forums — dummzeuch 2008/07/25 14:20)

Apart from the actual free space on a partition there is another resource that can get used up: inodes

These are used to write directory entries and other administrative stuff and there is only a limited number of them created when an ext2 file system is made.

You can find out how many you have left, by entering df -i in the terminal:

/home/user> df
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
rootfs                185088  156222   28866   85% /
/dev/sda1             185088  156222   28866   85% /
unionfs               185088  156222   28866   85% /
tmpfs                  63541       8   63533    1% /dev/shm
tmpfs                  63541      25   63516    1% /tmp''

If your IUse% is near 100, you found the problem.

So, how could this happen? UnionFS uses special files ”.wh.something” to mark files that have been deleted but cannot really be deleted because they reside on the readonly part of the file system (that is /dev/sda1). Each of these files is only 0 bytes in size, but it uses one inode. If very many of these files have been created, the file system might run out of inodes, thus the error message.

When searching for these files, booting into the rescue console, I found lots of them in /mnt-user/var/tmp (you need to use ls -a to see them). I deleted them, rebooted and everything was back to normal.

I think that this is a bug in unionfs, because all these were temporary files created on the user partition, so why not just delete the files without marking them as deleted?

howto/no_space_left_on_device.txt · Last modified: 2008/11/02 18:19 by dummzeuch