Coda File System

Re: Server hangs

From: <jeremy_at_itassist.net.au>
Date: Sat, 29 Sep 2001 20:15:50 +1000 (EST)
>This one seems simple, you need to have an entry for the /vicepa
>partition in the /vice/db/vicetab file, and have an initially empty
>file
>called /vicepa/FTREEDB. I wonder why the setup scripts didn't do this
>for you. And if they did, the forward and reverse namelookups for your
>server didn't match and the server doesn't realize that soap is really
>the name of the server. Although, the server should still have been
>running and able to accept the rpc2 binding even without available
>partitions (useless but...).

This is possible.  The machine does not have a reverse lookup at all.  I
was hoping that wouldn't matter.

I went through and tried to track down all the coda files and deleted
them all, including /vice and /vicepa.  I then did a make install and 

/vice/db/vicetab now has this line in it:


soap   /vicepa   ftree   width=64,depth=3


I've included the complete transcript of an install, and the server
logs, just in case I have entered something very wrong. I apologise in
advance for the large message size.

For what it's worth, I also did the same procedure using partitions
instead of files and got the same result.  The only difference was that
the process load fell to 0.2 rather than holding steady at 6.















soap:/# vice-setup
Welcome to the Coda Server Setup script!

Setting up config files for a coda server.
Do you want the file /usr/local/etc/coda/server.conf created? [yes] 
What is the root directory for your coda server? [/vice] 
Setting up /vice.
Directories under /vice are set up.

Is this the master server, aka the SCM machine? (y/n) y

Setting up tokens for authentication.
The following token must be identical on all servers.
Enter a random token for update authentication : lalala
The following token must be identical on all servers.
Enter a random token for auth2 authentication : alalal
The following token must be identical on all servers.
Enter a random token for volutil authentication : bbbbbb
tokens done!

Setting up the file list for update client
Filelist for update ready.
/etc/services already has new services registered! Good.
/etc/services ready for Coda
Now installing files specific to the SCM...

Setting up servers file.
Enter an id for the SCM server. (hostname soap)
The serverid is a unique number between 0 and 255.
You should avoid 0, 127, and 255.
serverid: 1
done!
Initializing the VSGDB to contain the SCM as E0000100
/vice/db/VSGDB set up

Setting up ROOTVOLUME file
Enter the name of the rootvolume (< 32 chars) : ROOTVOLUME


Setting up users and groups for Coda

You need to give me a uid (not 0) and username (not root)
for a Coda System:Administrator member on this server,
(sort of a Coda super user)

Enter the uid of this user: 1001
Enter the username of this user: jeremy
An initial administrative user jeremy (id 1001)
with Coda password changeme now exists.

A server needs a small log disk partition, preferrably on a disk by
itself. It also needs a metadata partition of approx 4% of you filespace.

For trial purposes you may give oridnary files instead of raw
partitions. Keep all size small if you do this.
Production servers will want partitions for speed.

-------------------------------------------------------
WARNING: you are going to play with your partitions now.
verify all answers you give.
-------------------------------------------------------

WARNING: these choices are not easy to change once you are up and running.

Are you ready to set up RVM? [yes/no] yes

What is your log partition? log

The log size must be smaller than you log partition.  We
recommend not more than 30M log size, and 2M is a good choice.
What is your log size? (enter as e.g. '2M') 2M

What is your data partition (or file)? data

The data size must be approx 4% of you server file space.  We
have templates for servers of approx: 500M, 1G, 2.2G, 3.3G, 8G
(you can store less, but not more on such servers).
The corresponding data sizes are  22M, 44M, 90M, 130M, 315M.
Pick one of the defaults, otherwise I will bail out

What is the size of you data partition (or file)
[22M, 44M, 90M, 130M, 200M, 315M]: 22M

--------------------------------------------------------
WARNING: DATA and LOG partitions are about to be wiped.
--------------------------------------------------------

  --- log area: /vice/db/log, size 2M.
  --- data area: /vice/db/data, size 22M.

Proceed, and wipe out old data? [y/n] y


LOG file has been initialized!


Rdsinit will initialize data and log.
This takes a while.
rvm_initialize succeeded.
Going to initialize data file to zero, could take awhile.
done.
rds_zap_heap completed successfully.
rvm_terminate succeeded.

RVM setup is done!


Your server directories will hold the files (not directories).
You can currently only have one directory per disk partition.

Where shall we store your file data [/vicepa]? 
Shall I set up a vicetab entry for /vicepa (y/n) y
Select the maximum number of files for the server.
[256K, 1M, 2M, 16M]: 
256K

Server directory /vicepa is set up!

Congratulations: your configuration is ready...and now
to get going do the following:
 - start the auth2 server as: auth2
 - start rpc2portmap as: rpc2portmap
 - start updatesrv as: updatesrv
 - start updateclnt as:  updateclnt -h soap
 - start the fileserver: startserver &
 - wait until the server is up: tail -f /vice/srv/SrvLog
 - create your root volume: createvol_rep ROOTVOLUME E0000100 /vicepa
 - setup a client: venus-setup soap 20000
 - start venus: venus
 - enjoy Coda.
 - for more information see http://www.coda.cs.cmu.edu.
soap:/# auth2
soap:/#  rpc2portmap
soap:/# updatesrv
soap:/#  updateclnt -h soap
Creating /vice/spool
soap:/#  startserver -d 100 &
[1] 5127
soap:/# Setting debuglevel to 100

soap:/# cat /vice/srv/*
19:55:52 New SrvLog started at Sat Sep 29 19:55:52 2001

19:55:52 Resource limit on data size are set to -1

19:55:52 RvmType is Rvm
19:55:52 Main process doing a LWP_Init()
19:55:52 Main thread just did a RVM_SET_THREAD_DATA

19:55:52 Setting Rvm Truncate threshhold to 5.

Partition /vicepa: inodes in use: 0, total: 262144.
19:55:53 Partition /vicepa: 4562748K available (minfree=5%), 3715136K free.
19:55:53 The server (pid 5131) can be controlled using volutil commands
19:55:53 "volutil -help" will give you a list of these commands
19:55:53 If desperate,
		"kill -SIGWINCH 5131" will increase debugging level
19:55:53 	"kill -SIGUSR2 5131" will set debugging level to zero
19:55:53 	"kill -9 5131" will kill a runaway server
19:55:53 AL_Initialize($Header: /coda-src/coda/coda-src/al/al.h,v 1.3 1999/05/11 20:07:59 jaharkes Exp $)
19:55:53 Library version: '$Header: /coda-src/coda/coda-src/al/al.h,v 1.3 1999/05/11 20:07:59 jaharkes Exp $'	Header version: '$Header: /coda-src/coda/coda-src/al/al.h,v 1.3 1999/05/11 20:07:59 jaharkes Exp $'	
19:55:53 in AL_NameToId(System:Administrators)
19:55:53 in AL_NameToId(System:AnyUser)
19:55:53 Entering VInitVolumePackage(500, 500, 1)
dump_storage at InitVolumePackage
{
    already_initialized = 1;

    VolumeList = {
    VolHead VolumeList[0]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[1]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[2]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[3]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[4]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[5]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[6]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[7]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[8]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[9]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[10]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[11]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[12]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    VolHead VolumeList[13]:
		id = 0
		 parentid = 0
		type = 0
    VolumeData:
		smallvnodes = 0
		smallListSize = 0
		rec_smolist *smallVnodeList = (nil)

		largevnodes = 0
		largeListSize = 0
		VnodeDiskObject **largeVnodeList = (nil)


    }
	SmallVnodeFreeList = {
SmallVnodeFreeList[0]
SmallVnodeFreeList[1]
SmallVnodeFreeList[2]
    }
	LargeVnodeFreeList = {
LargeVnodeFreeList[0]
LargeVnodeFreeList[1]
    }
    SmallVnodeIndex = 511;
    LargeVnodeIndex = 127;
    MaxVolId = 1000000;
}
19:55:53 Entering ReleaseVolumeHeader
!=== snip, repeated for a page ===!
19:55:53 Entering ReleaseVolumeHeader
19:55:53 Entering VInitVnodes(vclass = 0, vnodes = 500)
19:55:53 Entering VInitVnodes(vclass = 1, vnodes = 500)
19:55:53 VInitVnodes: VnodeDiskObject = 112, SIZEOF_SMALLVNODE = 112
19:55:53 Checking VLDB...
19:55:53 VCheckVLDB:  could not open VLDB
19:55:53 VInitVolPackage: no VLDB! Please create a new one.
19:55:53 Entering S_VolSalvage (0, (null), 0, 1, 1, 0)
19:55:53 Vice file system salvager, version 3.0.
19:55:53 Entering VInitVolUtil
19:55:53 VInitVolUtil: getting exclusive locks
19:55:53 SanityCheckFreeLists: Checking RVM Vnode Free lists.
19:55:53 DestroyBadVolumes: Checking for destroyed volumes.
19:55:53 Entering VolHeaderByIndex for index 0
19:55:53 VolHeaderByIndex: bogus volume index 0 - maxid 0 (ok if volume was purged or deleted)
19:55:53 Entering SalvageFileSys (/vicepa, 0)
19:55:53 Salvaging file system partition /vicepa
19:55:53 Force salvage of all volumes on this partition
19:55:53 Entering GetInodeSummary (/tmp/salvage.inodes, 0)
19:55:53 Entering ListCodaInodes(/vicepa, /tmp/salvage.inodes, 0x0, 0)
19:55:53 Scanning inodes in directory /vicepa...
19:55:53 ListViceInodes returns success
19:55:53 entering qsort(0x81ae468, 0, 32, 0x8094374)
19:55:53 returned from qsort
19:55:53 about to malloc 0 bytes for inodeSummary
19:55:53 Leaving GetInodeSummary()
19:55:53 GetInodeSummary returns success
19:55:53 Entering GetVolumeSummary(0)
19:55:53 GetVolSummary: filesyspath = /vicepa nVolumes = 0
19:55:53 Entering VolHeaderByIndex for index 0
19:55:53 VolHeaderByIndex: bogus volume index 0 - maxid 0 (ok if volume was purged or deleted)
19:55:53 GetVolumeSummary: entering qsort for 0 volumes
19:55:53 SalvageFileSys completed on /vicepa
19:55:53 release_locks: released file server lock
19:55:53 release_locks: released volume utility lock
19:55:53 Leaving S_VolSalvage with rc = 0
19:55:53 Entering FSYNC_fsInit(), creating LWP
19:55:53 Attached 0 volumes; 0 volumes not attached
19:55:53 CheckVRDB: could not open VRDB
0x81ae548 : Cop Pending Manager

Date: Sat 09/29/2001

19:55:52 Starting new SrvLog file


--- This is the pid file
5131
---

soap:/# createvol_rep ROOTVOLUME E0000100 /vicepa
Getting initial version of /vice/vol/BigVolumeList.
V_BindToServer: binding to host soap.thesailorsarms.org
RPC2_NewBinding to server soap.thesailorsarms.org failed with RPC2_NOBINDING (F)awk: cannot open /vice/vol/BigVolumeList (No such file or directory)
awk: cannot open /vice/vol/BigVolumeList (No such file or directory)
Servers are (soap )
grep: /vice/vol/BigVolumeList: No such file or directory
V_BindToServer: binding to host soap.thesailorsarms.org
RPC2_NewBinding to server soap.thesailorsarms.org failed with RPC2_NOBINDING (F)cat: /tmp/vollist.5205: No such file or directory
Found no partitions for server soap.


-- 
I/O, I/O,
It's off to disk I go,
A bit or byte to read or write,
I/O, I/O, I/O...


Received on 2001-09-29 06:14:49