We have been running UW-IMAP on top of GFS for almost 2 years now at UVM, running both mbox and mbx formatted mailboxes. It is a 6-node cluster, with 3 lock managers running in failover (not distributed) mode. The 6 mail nodes are attached to a switched SAN, and the storage is provided by an IBM DS4800.

This is not a recommended config, obviously (and MRC has reminded us of this :-) However, when we still had a single-system running UW-IMAP, we decided to give the cluster a try, which would hopefully provide better scalability while still providing a single-system image - preventing us from having to touch 15,000+ desktop systems spread across the state.

To make this work, we had to make a few small changes to the UW-IMAP code base. The INBOX directory (/var/spool/mail) and c-client lockfile location (/tmp) had to be moved to a GFS-shared filesystem, and into a directory hash. Spool files were hashed by username (mine is /var/spool/mail/j/t/jtl), c-client lockfiles were hashed by the LSB of the inode number (so lockfile .fe06.7bcdf3 gets put in /gfs/tmp/f/3/.fe06.7bcdf3). The hashing reduces directory lock contention, which can make GFS perform worse than a single system with local filesystems.

We also had to write a simple daemon to listen for the "kiss of death" used to break locks on older connected imapds. Basically, the c-client lockfile also includes the node ID, and if c-client wants to KOD someone on another node, a UDP packet gets sent to that node, received on that node by a daemon, who sends the KOD locally. The daemon is affectionately named "dkod".

We're still running it, so we've had some level of success, but it is not problem-free. Occasionally, we see imapds that have deadlocked, for reasons that we can't explain. The problem exhibits itself to the user as a mailbox that can't be opened read-write. However, we've *never* seen corruption of mailboxes under GFS (and we DID see that occasionally on the old single-system.)

In the beginning, there were bugs in GFS that we tickled with our particular config, but Sistina (now RedHat) has fixed the problems that we've run into. A good piece of advice is: don't create very large (1TB) filesystems, because they can take days to fsck. We haven't had to fsck in over a year, but in the first months of running it when we had some bad hardware and a filesystem with minor corruption, we had to take some filesystems down for hours while it was fsck'd. Sometimes we were better off moving all the data we could off the filesystem and creating a new filesystem in its place. Again, that hasn't happened in over a year.

Overall, we're mostly happy with it at this point, although it would have been nice to avoid the first few months of pain that we had due to bugs in the filesystem.

We'd be happy to share code if anyone's interested.

Jim

Erik Kangas wrote:
Hello?

As a next step to the discussion of UW Imap on NFS, has anyone played
with UW IMAP on GFS (RedHat Global File System -
http://www.redhat.com/en_us/USA/home/solutions/gfs/) in an environment
where multiple IMAP machines are sharing the files.

From what I have read, GFS should take care of all the locking and
synchronization across a large number of attached machines without any
problem. Specifically, the file system appears and behaves like a local
file system. However, GFS is relatively new and not specifically
supported by most SAN vendors.

If anyone has any experience setting up a SAN with GFS with load
balanced UW IMAP servers using a folder format that depends on the
NFS-averse file system operations (i.e. mbx) please let us all know what
you have seen.

Thank you,

-Erik Kangas
http://LuxSci.com
_______________________________________________
Imap-uw mailing list
[email protected]
https://mailman1.u.washington.edu/mailman/listinfo/imap-uw
_______________________________________________
Imap-uw mailing list
[email protected]
https://mailman1.u.washington.edu/mailman/listinfo/imap-uw

Reply via email to