blob: 04d827bdd5e3d00a00d1e473adb0e03079ccd75c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 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, ...
|