Coda File System

Re: Replication Server doesn't work...

From: Jan Harkes <>
Date: Thu, 14 Dec 2000 11:06:39 -0500
On Tue, Dec 12, 2000 at 03:32:48PM -0500, sejo pan wrote:
> Hi there,
> I have been trying to setup a second coda server (non-SCM) so that
> it can take over to serve the clients when the SCM fails.
> 1. Is this possible at all?

It is not really taking over, Coda uses write-all/read-one replication.
So if you have all your volumes replicated on both servers and one
server fails, the data is still available. When one of the replicas is
out of date after a temporary server failure, the differences are
detected by the client who is comparing a version stamp (vector) on the
files. The client then triggers server-server resolution to bring both
replicas back in sync.

> 2. How exactly should I do it?  I used vice-setup on the SCM server and
> the second server, no error messages. Then I used venus-setup on the
> client (gave it both names of the servers), no error messages. But any 
> change made by the client only appears on the SCM server (/vicepa).
> The other non-SCM server doen'st sync up with the SCM server (its
> /vicepa always contain a zero-sized FTREEDB).

We don't handle extending a replication group yet, so new volumes will
have to be created, all data needs to be copied, and the new replicated
root needs to be made the default.

Add an entry to /vice/db/VSGDB with both servernames:

    E0000102 scm non-scm

Then create doubly replicated volumes (creation is always done on the scm):

    createvol_rep rep_root E0000102
    createvol_rep rep_home E0000102
    createvol_rep rep_user E0000102

Mount the new doubly replicated volumes,

    cfs mkm /coda/rep-root rep_root
    cfs mkm /coda/rep-root/home rep_home
    cfs mkm /coda/rep-root/home/user rep_user

and copy any existing data from the current tree into the new volumes.

Then change /vice/db/ROOTVOLUME to contain the name of the new
replicated root volume, reinitialize all clients and... done.

    echo rep_root > /vice/db/ROOTVOLUME

on the clients:
    touch /usr/coda/venus.cache/INIT
    /etc/rc.d/init.d/venus.init stop
    /etc/rc.d/init.d/venus.init start

Received on 2000-12-14 11:06:45