aboutsummaryrefslogtreecommitdiff

carton

A content-addressable storage system, with a fuse-based VFS client.

This is very much a work in progress. The fuse-based VFS client in src/client/fs.rs is being rewritten to handle large files. Every file update needed to first load the entire file to memory before flushing it to the CAS. The goal now is to first copy the file out of the CAS, update it, then rewrite it to the CAS.

carton splits files using a content-defined chunking algorithm (FastCDC). These chunks of data are refered to as plain objects. Groups of plain objects can be retrieved or updated as a single file thanks to patches and anchors.

Plain objects, patches and anchors are all content-addressable and immutable.

On creation, each file gets an anchor, which is just a unique random blob of data. Patches are then created to define the anchor:

  • List which chunks are linked to the anchor, and in what order they were created,
  • Assign attributes to the anchor, such as name, size, mime type, ...