Coda File System

Re: Assertion failed mounting a resotored volume

From: <jaharkes_at_cs.cmu.edu>
Date: Thu, 08 Apr 1999 20:29:40 -0400
troybenj_at_scl.ameslab.gov said:
| I'm in the process of re-initializing Coda after installing new 9GB
| disks on the servers, and upgrading to coda-5.2 with kerberos enabled.

| I made dump files of the volumes I wanted to keep, and attemtped to
| restore them today. 

| Since the restore documentation isn't quite clear, (it refers to a
| 'restorevolumes' script, which I couldn't find anywhere), I used
| 'createvol_rep' to create the volume  home.troybenj on both servers. I
| then purged the home.troybenj.1 volume on the second server, and
| restored the dump file to a volume named home.troybenj.1 with correct
| ID for the volume I just purged (2000002, I think)

AFAIK backup volumes are read-only volumes without version vectors, and
therefore cannot be used to replace rw-volumes of a replicated group.
I am actually intrigued that it `partially worked' at all. Maybe the 
differences are not that big.

Our current recovery strategy is as follows:

** When still having part of a replicated group.

Get the following information about all lost replicas, from /vice/vol/
BigVolumelist and /vice/vol/VRList.

volumename	(with the correct .n extension)
groupid		(aka. the replicated volume id from the VRList)
rw-volid	(rw-volume id, the underlying read-write volume id,
	    	second column in BigVolumeList, strip the initial 'I')

Reinitialize the lost server, start the server and when it writes 
`fileserver started' to the log, isolate it using
'filcon isolate -s <server>'

Recreate all volumes using 'volutil create_rep', using the previously
gathered information for the arguments.

Remove the isolation 'filcon clear -s <server>'.

Using a client, resolve the missing files back to the reinitialized 
server.
---
As you can see we normally leave at least one server of a replicated 
group in the `old state'. Do a full resolve, and then upgrade the last 
server.

** When all replicas are lost.

Here we need to go to the backup tapes. After (re)initializing the 
servers, and creating empty volumes. We restore the backup into a
new volume and mount it in the Coda tree.

Then using f.i. cpio, we copy the data from the readonly backup volume
into the new replicated volume.

Last time I used the following script to copy all files and mountpoints
from a (subtree) of one volume into a new volume. It doesn't handle ACLs.

=========================================================
#!/bin/sh
newvolume=/coda/project/releases
echo "Copying files from $PWD to $newvolume"
volmunge -f . | cpio -pVmd $newvolume
echo "Moving mountpoints from $PWD to $newvolume"
for mtpt in `volmunge -m .`
do
  volname=`cfs lv $mtpt | grep named | sed 's/.*"\(.*\)"$/\1/'`
  echo $volname
# cfs rmm $mtpt
  cfs mkm $newvolume/$mtpt $volname
done
=========================================================

But it could be that you don't need the mountpoints step when coming 
from a backup volume, they are not traversed, and show up as 
`copy-able symlinks'.

Jan
Received on 1999-04-08 20:30:42