EXT3 and large directories

Theodore Tso tytso at mit.edu
Thu Oct 5 17:02:29 UTC 2006

On Wed, Oct 04, 2006 at 06:43:22PM -0600, Andreas Dilger wrote:
> On Oct 04, 2006  16:33 -0500, Matt Dodson wrote:
> > I have an ext3 filesystem that has several directories and each
> > directory gets a large number of files inserted and then deleted over
> > time. The filesystem is basically used as a temp store before files are
> > processed. The issue is over time the directory scans get extremely slow
> > even if the directories are empty. I have noticed the directories can
> > range in size from 4k - 100M even when they are empty.  Is there a way
> > to fix this without recreating the directories or bringing the
> > filesystem offline? 
> No way to fix this w/o offline e2fsck -fD.  ext3 doesn't shrink directories
> when deleting files.

Well, if there isn't anyone else using the directory, you can also do
the following:

	mkdir foo.new
	mv foo/* foo.new
	rmdir foo
	mv foo.new foo

And of course, if you know the directory is empty, just do:

	rmdir foo
	mkdir foo

Historically this is a pretty common restriction in Unix filesystems.
If someone cared enough, it would be possible to change ext3/4 to
release directory blocks when they are empty, but no one has found it
important enough to create such a patch.

						- Ted

More information about the Ext3-users mailing list