Skip to content

Components

go-volumes is a set of dependency-free Go modules (standard library only, CGO_ENABLED=0) layered around one small block-device contract:

Module Import path Layer What it does
interface github.com/go-volumes/interface contract The block-device Device contract (ReadAt/WriteAt/Size/Sync/Close) every layer reads and writes through — decoupling where the bytes live from the format on top.
pool github.com/go-volumes/pool pool Copy-on-write pooled volume manager: volumes, immutable snapshots, writable clones, sparse raw export/import. Pluggable Backing.
s3 github.com/go-volumes/s3 backing S3-backed block store satisfying pool's Backing — run a pool on object storage. From-scratch AWS Signature V4, no SDK.
oci github.com/go-volumes/oci backing Freeze a volume into an immutable, content-addressed OCI artifact (chunk-deduped) and re-open it as a read-only backing.

Planned follow-ups: multi-device pooling / RAID, online volume grow/shrink, and free-bitmap allocation (the current pool allocator is a linear scan).