Coda File System

Re: newbie question

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Tue, 18 Nov 2003 15:53:48 -0500
On Tue, Nov 18, 2003 at 04:45:33PM -0300, Lucas wrote:
> Thanks Jan, I already realized that...
> But this is the error message on the client side (although server is
> running properly and volume 'volumen' is created):
> 
> # cfs mkm /coda/server1.domain.com/lucas volumen
> /coda/server1.domain.com: No such file or directory

Ehh, let's walk through the steps,

Client receives request for server1.domain.com.
Client resolves this to an ip-address.
Client connects to Coda server at this address.
Client asks which volume should be mounted as the root of the tree,
  server responds with 'volumen'.
Client asks where the volume 'volumen' is located.
Server responds with 'at this ip-address' (should be address of the server).

Client connects to server that is hosting the volume, gets the top-level
directory in the volume and mounts that as a directory at
    /coda/server1.domain.com

If your client does not have a directory at server1.domain.com that
means that something in this sequence went wrong. Now we don't really
know what is wrong, but there should be enough clues to figure this out.

- If "clog username_at_server1.domain.com" works, then the initial
  resolution is probably ok as we use the identical code to map the
  realm name to a (set of) ip-address(es).

- If volume creation worked, the server is probably running, so the
  second step is most likely fine as well.

- You could start 'codacon' in a separate console or xterm on the client
  before you start venus. It will show a lot of 'what venus is doing'
  stuff and should give a reasonable indication how far we're getting.

example. I just started a clean client and did ls /coda/coda.cs.cmu.edu,
this is what came up,

    $ codacon
    codacon: bind to localhost failed, venus not running?
    NewConnectFS marais.coda.cs.cmu.edu ( 15:36:36 )
    NewConnection marais.coda.cs.cmu.edu ( 15:36:36 )
    BackProbe marais.coda.cs.cmu.edu ( 15:36:36 )
    GetRootVolume @coda.cs.cmu.edu ( 15:36:37 )

 We just connected to one of the three Coda rootservers. And asked for
 the name of the rootvolume at coda.cs.cmu.edu.

    NewConnectFS verdi.coda.cs.cmu.edu ( 15:36:37 )
    NewConnection verdi.coda.cs.cmu.edu ( 15:36:37 )
    BackProbe verdi.coda.cs.cmu.edu ( 15:36:37 )
    GetVolumeInfo vmm:root_at_coda.cs.cmu.edu ( 15:36:37 )

 A connection to another rootserver is made and we get the 'volume
 replication information' for the rootvolume. This tells us things like
 how many replicas we have and what their identifiers are. The name of
 the rootvolume is 'vmm:root'.

    GetVolumeInfo 3338666117_at_coda.cs.cmu.edu ( 15:36:37 )

 Getting information for one of the replicas, this information will
 contain things like which server (ip-address) will be hosting the
 replica.

    NewConnectFS mozart.coda.cs.cmu.edu ( 15:36:37 )
    NewConnection mozart.coda.cs.cmu.edu ( 15:36:37 )
    BackProbe mozart.coda.cs.cmu.edu ( 15:36:37 )
    GetVolumeInfo 3372220546_at_coda.cs.cmu.edu ( 15:36:37 )
    GetVolumeInfo 3707764869_at_coda.cs.cmu.edu ( 15:36:37 )

  Getting information of the other two volume replicas.

    NewConnectFS marais.coda.cs.cmu.edu ( 15:36:37 )
    BackProbe marais.coda.cs.cmu.edu ( 15:36:37 )
    NewConnectFS verdi.coda.cs.cmu.edu ( 15:36:37 )
    BackProbe verdi.coda.cs.cmu.edu ( 15:36:37 )
    NewConnectFS mozart.coda.cs.cmu.edu ( 15:36:37 )
    BackProbe mozart.coda.cs.cmu.edu ( 15:36:37 )

  Set up connections to the 3 replicas.

    GetAttr coda.cs.cmu.edu ( 15:36:37 )
    Fetch coda.cs.cmu.edu [2] ( 15:36:37 )
    fetching (coda.cs.cmu.edu) 100% ( 15:36:37 )

  Fetched the attributes and data of the top level directory.

Now depending on how far your client is getting several things could be
wrong. We're either getting the wrong rootvolume name and the server
doesn't know anything about which replicas are available.

Or the server doesn't really know it's own IP-address is and gives wrong
information when we ask it about the location of the volume replica.
This often happens when /etc/hosts contains an entry similar to
'127.0.0.1 server1.domain.com' and as a result the server thinks it's
ip-address is 127.0.0.1. However when the client sees this it will try
to connect over the loopback interface to a server that is ofcourse not
running on the client.

There is also a command called 'getvolinfo' (installed on the server)
this contains the 'get volume location information' code and can be used
to check if it makes any sense.

    # getvolinfo verdi.coda.cs.cmu.edu vmm:root
    RPC2 connection to verdi.coda.cs.cmu.edu:2432 successful.
    Returned volume information for vmm:root
	    VolumeId 7f00049a
	    Replicated volume (type 3)
    ...
	    ServerCount 3
	    Replica0 id c7000085, Server0 128.2.191.192
	    Replica1 id c9000082, Server1 128.2.209.199
	    Replica2 id dd000085, Server2 128.2.222.111

Jan
Received on 2003-11-18 15:56:22