Coda File System

Re: coda with very large servers

From: Jan Harkes <>
Date: Thu, 11 Oct 2001 11:14:43 -0400
On Wed, Oct 10, 2001 at 10:02:19PM -0700, Zachary Denison wrote:
> drive, where I store users mail directories.  What I
> would like to do is setup these three machines as CODA
> servers with replication, so each one is an exact
> mirror of the other 2.  Is this what happens under
> replication?  I hope so, because this is what I want. 
> Anyway I want to store these in geographically
> disparate locations.  At each location I want to have
> CODA clients, which run the mail delivery software.

Won't work.

Coda uses a write-all, read-one replication stragegy. So the Coda
clients in each location will try to store new mail in all servers at
the same time.

So you could just as well have all servers in one location, in which
case you probably wouldn't consider delivering email from a remote
location. This just shows that Coda is not the right solution for your

> the administration manual, it seems to imply that the
> maximum size of the RVM log partition is 130 Megs,

RVM is both a log and a data partition, the log really doesn't have to
be that big at all, somewhere between 2 and 8 MB is plenty. It's the
data segment that is important, this is memory mapped, so the limit is
pretty much defined by the operating system and is typically between 2
and 3 GB.

The RVM data contains all the metadata and directory contents, which is
typically around 5% of the actual size of the associated filedata. So
there is a limit to how much data (actually how many files) a server
process can possibly handle, which we _assume_ to be around 50GB.
Ofcourse it is possible to some extent to run multiple Coda server
processes on one machine, but that is administratively more difficult
and you'd be living out of swap, as 10 processes would easily need about
20GB of swapspace. This kind of VM load is typically not handled very
well, so you'll not only get hit by obscure Coda bugs, but also obscure
Linux VM bugs ;)

So why do you want replication? To ease the load of many users popping
their email, or to provide failover when one of the sites disappears
from the face of the earth?

For the user case it should be possible to use a static load-balancing
trick where each server only deals with a 1/3rd subset of all users. If
the group is large enough each server should be getting a similar number
of users at any given time. Each mail delivery process can accept
anything, but forward specific users to the right server, f.i. depending
on the md5 hash of the username % 3.

For failover, it just depends how synchronized it need to be. Any good
synchronization will require a lot of traffic between the 3 servers.
Effectively the total user load such a setup can handle would be less
than any single machine would be able to.

Received on 2001-10-11 11:14:51