Content addressable data storage and compression for semi-persistent
computer memory including providing a chunk of data that is a quantity of
input data; retrieving a memory block from semi-persistent computer
memory; searching for a segment of the chunk that matches the memory
block; and if a matching segment is found: discarding the matching
segment; providing a retrieval key for the memory block as a retrieval
key for the matching segment; identifying an unmatched portion of the
chunk that does not match the memory block; identifying a free memory
block of a file system; storing the unmatched portion semi-persistently
in the free memory block; and providing a retrieval key for the unmatched
portion.