searching for "snapshot" in *.java shows a bunch of code for supporting snapshots via hard links.
(this works b/c SSTables are immutable, once created.)
this used to be more complete but when we dropped the JDK7 requirement we just removed the code that we couldn't do in JDK6 and hard link support was one of those.
So what you would need to do here is:
- create a hard link method (using Runtime.exec("ln") on linux / os x I imagine)
- add a JMX hook to invoke this on the data files (this is where looking at the old codebase might help); ColumnFamilyStoreMBean.forceFlush is an example of an "Action" jmx interface. using jconsole to interact with JMX stuff is explained here: http://wiki.apache.org/cassandra/MemtableThresholds
- add something to list the snapshots available via JMX
- optionally make this all per-Table instead of per-database