Coda File System

Re: Coda Server Access Optimizations

From: Jan Harkes <>
Date: Thu, 27 Feb 2003 22:28:37 -0500
On Thu, Feb 27, 2003 at 06:15:54PM -0500, Brian White wrote:
> All the client/servers at site X (servers A, B, and C) can communicate over
> fast ethernet, as can the client/servers at site Y (servers D and E) but
> there is only a slow link between the two sites.
> When a client on site Y changes a file, does it try to
> a) push that change to all five servers 

If the 'observed' bandwidth of the link to the servers A,B, and C is
above the weak-connected threshold (about 64kB/s) the Coda client pushes
updates to all servers.

> b) push that change to both local servers (D and E) and let them deal with
>    propogating to the other site
> c) push that change to the closest server and let it deal with propogating
>    it to all the other servers

If the available bandwidth is insufficient, Coda stores writes locally
and in the background reintegrates with a single server, although it
typically tries to send updates to the server that appears to have the
best connectivity. When the reintegration completes, the client triggers
server-server resolution which propagates the update to all other

server-server resolution goes is several phases, where the chosen
resolution 'master' collects data from all other servers, computes the
recipe to resolve and redistributes the result. After that it validates
whether the resultion succeeded by copying back all versions and finally
marks the resolution as successful.

So in reality you are probably worse off by letting the servers resolve
over the slow link because the data is shuttled back and forth several

Typically servers that share the responsibility for a volume are located
at the same location. In your case you would either have 2 volume
storage groups, with some volumes on A/B/C and others on D/E. Clients at
site Y would typically be weakly connected to A/B/C and have strong
connectivity to D/E.

Received on 2003-02-27 22:30:03