From: Olaf Hering <olaf@aepfle.de>
To: Andreas Dilger <adilger@dilger.ca>
Cc: linux-ext4@vger.kernel.org
Subject: Re: ext3_dx_add_entry complains about Directory index full
Date: Thu, 5 Feb 2015 10:19:33 +0100 [thread overview]
Message-ID: <20150205091933.GA32546@aepfle.de> (raw)
In-Reply-To: <D7ACB97A-5960-4D68-868A-7547B36160C4@dilger.ca>
On Wed, Feb 04, Andreas Dilger wrote:
> On Feb 4, 2015, at 6:52 AM, Olaf Hering <olaf@aepfle.de> wrote:
> > On Wed, Feb 04, Andreas Dilger wrote:
> >
> >> How many files/subdirs in this directory? The old ext3 limit was 32000
> >> subdirs, which the dir_index fixed, but the new limit is 65000 subdirs
> >> without "dir_index" enabled.
> >
> > See below:
> >
> >>> # for t in d f l ; do echo "type $t: `find /media/BACKUP_OLH_500G/ -xdev -type $t | wc -l`" ; done
> >>> type d: 1051396
> >>> type f: 20824894
> >>> type l: 6876
>
> Is "BACKUP_OLH_500G" a single large directory with 1M directories and
> 20M files in it? In that case, you are hitting the limits for the
> current ext4 directory size with 20M+ entries.
Its organized in subdirs named hourly.{0..23} daily.{0.6} weekly.{0..3}
monthly.{0..11}.
> Finding the largest directories with something like:
>
> find /media/BACKUP_OLH_500G -type d -size +10M -ls
>
> would tell us how big your directories actually are. The fsstats data
> will also tell you what the min/max/avg filename length is, which may
> also be a factor.
There is no output from this find command for large directories.
> > Block size: 1024
>
> AH! This is the root of your problem. Formatting with 1024-byte
> blocks means that the two-level directory hash tree can only hold
> about 128^2 * (1024 / filename_length * 3 / 4) entries, maybe 500k
> entries or less if the names are long.
>
> This wouldn't be the default for a 500GB filesystem, but maybe you
> picked that to optimize space usage of small files a bit? Definitely
> 1KB blocksize is not optimal for performance, and 4KB is much better.
Yes, I used 1024 blocksize to not waste space for the many small files.
I wonder what other filesystem would be able to cope? Does xfs or btrfs
do any better for these kind of data?
Thanks for the feedback!
Olaf
next prev parent reply other threads:[~2015-02-05 9:19 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-04 9:04 ext3_dx_add_entry complains about Directory index full Olaf Hering
2015-02-04 10:52 ` Andreas Dilger
2015-02-04 13:52 ` Olaf Hering
2015-02-04 16:30 ` Olaf Hering
2015-02-04 21:32 ` Andreas Dilger
2015-02-05 9:19 ` Olaf Hering [this message]
2015-02-06 6:52 ` Andreas Dilger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150205091933.GA32546@aepfle.de \
--to=olaf@aepfle.de \
--cc=adilger@dilger.ca \
--cc=linux-ext4@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox