rustor
provides a library and binary tools to create storage systems
ObjectStore
-- the top level request handler. Manages data flow to fill reuestsObject
-- sort of a meta-class that has the data and its metadataObjKey
-- a unique identifier for anObject
, including uuid, hash, and sizeKeyGen
-- generatesObjKey
sPlacer
-- decides how to break up the data for anObject
and select available blocks fromFreeList
FreeList
-- tracks available blocksManifest
-- a selection of blocks that store the data of anObject
KeyStore
-- stores and retrievesObjKey
s and their associatedManifest
by uuidBlockStore
-- interfaces with aBlockDevice
s to read and write data
ObjectStore
receivesPUT <object>
requestObjectStore
asksKeyGen
to createObjKey
for object -- uuid, hash, and sizeObjectStore
asksFreeList
to allocate space for the objectFreeList
providesManifest
toObjectStore
ObjectStore
asksBlockStore
to write object blocks according toManifest
BlockStore
writes data toBlockDevice
ObjectStore
asksKeyStore
to storeObjKey
andManifest
ObjectStore
returns uuid to requester
ObjectStore
receivesGET <uuid>
requestObjectStore
asksKeyStore
to retrieveObjKey
andManifest
ObjectStore
asksBlockStore
to retrieve object blocks according toManifest
BlockStore
accessesBlockDevice
to read dataObjectStore
returnsObject
to requester
ObjectStore
receivesDELETE <uuid>
requestObjectStore
asksKeyStore
to retrieveObjKey
includingManifest
ObjectStore
asksFreeList
to release blocks according toManifest
-
ObjectStore
asksBlockStore
to zero blocks according toManifest
-
Blockstore
writes zeros toBlockDevice
[ ] Add free list B-tree
- Transition Keystore to a database backing