Get cyrus-imap folder size without "du" tool

Bron Gondwana brong at fastmail.fm
Fri Apr 2 08:59:10 EDT 2010


On Thu, Apr 01, 2010 at 01:54:47PM -0700, Andrew Morgan wrote:
> On Thu, 1 Apr 2010, Adam Tauno Williams wrote:
> 
> > On Thu, 2010-04-01 at 19:13 +0200, David Touzeau wrote:
> >> Joe Vieira wrote:
> >>> if they are all on one partition and nothing else is on that you could
> >>> just use df ....
> >>> On Thu, 2010-04-01 at 10:28 -0400, David Touzeau wrote:
> >>>> This problem occurs when you have more than 50Go mailboxes
> >>>> If you launch a "du -h -s /var/spool/cyrus/mail" the server load is on
> >>>> top and I/O is at 100% for a long time.
> >>>> Is somebody have a tips to get the size status of all maiboxes without
> >>>> using du tool even no quota is specified ?
> >> Thanks for the reply but the directory is not in a partition it is
> >> stored on the master disk with the system.
> >
> > "du" is essentially useless for Cyrus anyway since duplicate supression
> > and delayed expunge make "used disk space" kind of vague.
> >
> > If you just request the info for a mailbox it contains the mailboxes
> > size -
> >
> > sardine.mormail.com> info user.adam
> > {user.adam}:
> >  condstore: true
> >  duplicatedeliver: false
> >  lastpop:
> >  lastupdate:  1-Apr-2010 16:00:49 -0400
> >  partition: default
> >  pop3newuidl: true
> >  sharedseen: false
> >  size: 4276713
> >
> > But I can't figure out how cyradm acquires that "size" value.  Every
> > script I see walks the mailbox and accumulates the message sizes, yet
> > cyradm seems to now instantly.   Is size available via an annotation?
> 
> Those values are all annotations.  The annotation you want is:
> 
>    /vendor/cmu/cyrus-imapd/size

Ok - two things:

1) that appears to only be the size of the folder itself, not subfolders
   - so you'll still need to walk the mailbox tree.
2) it's very inefficient!  It reads all the mailbox records and adds
   together the individual sizes anyway.  There's a quota_mailbox_used
   field in the mailbox header which would be quicker.

Basically, it won't gain you anything over just implementing the tree
walk yourself in disk IO. It will save some network IO, but that's all.

Anyway, the quota system works fine.  Just give each user a quota bigger
than your disk and use it for the used value!

Bron.


More information about the Info-cyrus mailing list