Skip to content
/ cqlfs Public

Experimental Fuse FS which uses Cassandra as the store

License

Notifications You must be signed in to change notification settings

hkroger/cqlfs

Repository files navigation

cqlfs

Experimental Fuse FS which uses Cassandra as the store. Works with OSX Fuse installed with homebrew. PR to support more operating systems and setups are gladly accepted.

Build

$ cmake .
$ make

Initialize Cassandra store

Currently it's hardcoded to use keyspace cqlfs and connect to 127.0.0.1.

$ cqlsh < schema.cql
$ cqlsh < bootstrap.cql 

Mount device

$ ./cqlfs /mnt/blah

TODO

These are in no particular order.

  • Figure out reasonable caching scheme (invalidate caches using some queue? Kafka?)
  • Test multi-threading properly
  • Add tests
  • Add performance tests
  • Test mounting from several places and see how that works.
  • Configuration options for keyspace name, hosts, etc.
  • Support stats (disk used, disk free, etc.)
  • File handle support
  • Error handling
  • CQL consistency handling
  • Speedup writes
    • Support write caching
    • Make writes even more asynchronous
  • Access control

FAQ

Q: Why does this exist?
A: Mainly to experiment with Fuse and to create a naive implementation of FS that uses Cassandra. It has been a topic for long in the cassandra user mailing list and this is there to just test how it can be done.

Q: What is it good for?
A: That is still to be seen.

Q: Why C++?
A: It seemed like a good idea because of native linking and stuff. In retrospect, this wasn't a smartest move because certain things are a bit more painful in C++ than in Java/Scala for example.

Q: Is it fast?
A: Actually it's the slowest FS I have seen in my life. See TODO.

Q: Can I put it in production?
A: Well, you can. If you are crazy.

About

Experimental Fuse FS which uses Cassandra as the store

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages