CassaFS is a FUSE-based filesystem using the Apache Cassandra distributed database system as a backend
Currently, CassaFS is experimental, proof-of-concept software. It has not been tested thoroughly, and definitely has bugs in the implementation of some calls, although it now passes all of the Tuxera POSIX Test Suite tests. Do not use it in production environments, even if it looks like it might be working. You WILL lose data. Also, I reserve the right to change the underlying database structure at any time, without providing an upgrade path.
CassaFS is licenced under the Free Software Foundation's General Public Licence, version 3. This means it is free software.
The source code for CassaFS is here.
Debian/Ubuntu deb packages are available below. The package is architecture independent, but I've only been able to package python-thrift (a required dependency) for amd64 and i386, at this stage.
If, after all the warnings, you still want to try CassaFS out, here's a quickstart for Debian and Ubuntu users:
Add the following lines to your /etc/apt/sources.list:
deb http://www.apache.org/dist/cassandra/debian 11x main deb http://dwerryhouse.com/software/cassafs unstable main
Install cassafs and its prerequisites:
apt-get update apt-get install cassandra python-zookeeper zookeeper python-pycassa python-thrift python-fuse python-cassafs
If not already started, run Cassandra (make sure it's listening on 127.0.0.1:9160, which should be the default):
service cassandra start
Start Zookeeper (ensure that it's listening on port 2181):
/usr/share/zookeeper/bin/zkServer.sh start
Put the following in your /etc/fstab:
cassafs /mnt fuse allow_other,noauto,attr_timeout=0 0 0
Make the Cassandra filesystem:
mkcassafs 127.0.0.1:9160 CassaFS
Then mount the filesystem:
mount /mnt
Voila, it should now be working. You can copy files in, create directories, generally do most of the things you expect to be able to do with a POSIX-compliant filesystem (except for the small matter of those things that don't work yet).
When you fill up your Cassandra server, just throw more servers at it (fixing up the hardcoded ip address, of course, as noted above) and you'll be able to expand your filestore easily. There, your own personal - but incredibly unreliable - Dropbox.
CassaFS now passes all of the relevant Tuxera Posix Test Suite tests (that is, everything except for the chflags tests).
This does not mean that it's stable, however; there are definitely known bugs in the CassaFS handling of rename.
CassaFS now uses ZooKeeper to handle locking. Configuration file updated to handle this:
[main] servers=10.1.8.209:9160,10.1.8.210:9160 keyspace=CassaFS [zookeeper] servers=10.1.8.209:2181,10.1.8.210:2181
New support for a configuration file - default name is /etc/cassafs.conf. If you want to use a different file, then use the config option in fstab:
cassafs /mnt fuse allow_other,noauto,attr_timeout=0,config=/path/to/cassafs.conf 0 0
At this stage, the configuration file only takes two options: 'servers' (a comma-separated list of host:port entries for Cassandra servers), and 'keyspace', the keyspace where your filesystem data is stored. Example:
[main] servers=10.1.8.209:9160,10.1.8.210:9160 keyspace=CassaFS