InterMezzo 1.0 KML and Expect Protocols

The InterMezzo filesystem keeps sets of files on multiple hosts synchronized. It sits on top of the native filesystems on each host and keeps track of updates to the filesystems in such a way that it can synchronize the changes between multiple hosts. In this document we describe the architectures and protocols that InterMezzo uses to keep files synchronized.

This description is in its very early stages...

Coherence and Granularity

InterMezzo guarantees only very loose coherence between the filesystems. Files are only ever handled as complete units, changes are not propagated until the file is closed for writing, and changes on one system are not necessarily reflected on another immediately. In InterMezzo 1.0 whole filesystems are replicated and only one host may have the write lock for that filesystem at any one time.

Presto

Presto is the kernel module for InterMezzo. It implements the various operations associated with the InterMezzo file system under VFS and creates pseudo devices for communication with Lento.

Lento

Lento is a user-space daemon which handles file transfers and other caching issues on behalf of presto. There is one Lento per mounted InterMezzo file system.

The KML File

There is one KML file per mounted InterMezzo filesystem. The KML file is contains records of changes to the filesystem, and taken as a whole the KML file can provide a script for building a replica of the whole filesystem.

The KML file is a series of binary records, each of which represents a single modification to the filesystem. Each record is self-contained in that it does not have references to other records, a property which makes the records easy to move around. The records are of variable length, and the length of the record is stored at the beginning and end of each record to facilitate moving forward or backward through the file. A complete description of the allowed KML record formats doesn't exist yet.

The Expect File

There is one Expect file per mounted InterMezzo filesystem. The Expect file contains information about how this host is synchronized with the other hosts by holding pointers into this and other hosts' KML files. This information is stored in the filesystem so that it will be persistent across reboots.

The Expect file has four pieces of information for each remote host.

Legal Transformations of the KML and Expect Files

In order to maintain consistency, only certain kinds of transformations to the KML and Expect files are allowed, and generally they have to be done together using transactions to make sure the system remains in a coherent state.

Scenarios

Here we show how the above system components act in concert to keep filesystems coherent.


Steve Karmesin
Last modified: Thu Apr 27 16:41:44 MDT 2000
$Id: KML-Expect.html,v 1.1 2000/04/27 22:43:16 karmesin Exp $