Penguin

Coda is an Advanced NetworkFileSystem developed as a research project by the team which wrote AFS. Coda extends the FileSystem for DisconnectedOperation.

Some of AFS' developers noticed that caching lets it work quite well for a while in the face of loss of the connection except for issues when writes occur. Coda was to allow for scenarios like allowing a laptop with a WLAN connection wandering in and out of range to seamlessly synchronize all files (and notify the user of conflicts). The project was quite a success.

A former developer of Coda started Intermezzo as a simpler implementation with the goal of making Intermezzo as fast as a local FileSystem.

Coda is supported well in the 2.6 Kernel series and appears to be under active development. Currently it seems to be the only option for a FileSystem with support for DisconnectedOperation until OpenAFS supports this as well. As of May 2005 the website is horribly out of date, with many pages dating back to 2000 or earlier, however the mailing list is active and is the current authoritative source of documentation.


My experiences with setting up Coda

Be wary of the documentation on the coda site, most of it is out of date enough to be horribly misleading. In mozilla use "View > Page Info" to check the modification date on any documentation you are interested in using, if it's older than a year or so, pretend it was 404 and completely ignore it!

I started with sarge machines running 2.6. Apparently 2.4 requires patching your kernel. The coda version in the 2.6 kernel tree is up to date, and, as an added bonus is usually compiled as a module by most kernels shipped by vendors.

One of the best sources of up to date information other than the mailing list appears to be http://telemann.coda.cs.cmu.edu/news.html, and the mirrors pages http://www.coda.cs.cmu.edu/mirrors.html

I used the debian repositories to retrieve coda. Once again, be careful that you're not retrieving something that's horribly out of date. The repositories are mentioned in the above news list.

The Server

Coda's implementation is pretty simple. There is a daemon that runs on the server called "vice". Vice stores all your data and talks to the clients.

On your server I used:

 apt-get install coda-server

Then setup vice with:

 vice-setup

It'll prompt you for a series of questions. Think carefully about how you answer them. Information about this part of the setup is in the manual. This section doesn't seem to have changed much since it was written.

vice-setup should start the server, and everything should be running on the server.

The Client

The client requires a kernel module to run. This kernel module is very simple, mostly just forwarding requests for data to userspace, and therefore is very small and reliable. The main "brains" are in a userspace process.

If you don't have the module compiled, no matter, just go add the module to your config, build it and install it, and load it. You shouldn't even need to reboot.

I installed it as:

 apt-get install coda-client

This has some excellent packages which ask you all the questions you need to get your client up and running. You should now be able to

 cd /coda/realmname
 ls

and see what files are on your file server (that is to say probably none). You'll need to login to access your files. the default username is the one you gave when you setup the vice server, the default password is "changeme".

 clog username@realmname

You can then verify that your login worked ok with:

 ctokens

This will list all the authentication tokens you currently possess. You should probably set your password to be something other than changeme with:

 cpasswd username@realmname

Now you should be able to create directories under /coda/realmname/. You might want to create new users with the "user administration" tool:

 ua cu

This will prompt you for all the information you need to create a new user.

Problems, pitfalls and notes:

  • Be aware that the information you are probably looking at is out of date to the point of being misleading. Just go with it yourself.
  • There are two scripts "vice-setup" and "venus-setup" that setup the server and the client respectively. The Debian packages automatically run "venus setup" for you.
  • There are human readable log files in /usr/coda/etc/ for everyone except debian where it's in /var/log/coda/
  • RPC2 errors are often because the client and the server can't agree on what IP address each other is using. Check your forward and reverse DNS for problems.
  • rpc2ping can be used to test connectivity of the client to the server.
  • I've not yet got this working under gentoo, I don't yet know why.
  • Everything is probably much much nice if you use kerberos for authentication.

CategoryFileSystem
CategoryNetworkFileSystem