Skip to content

Exposing object storage to clients #2333

@cgwalters

Description

@cgwalters

See coreos/rpm-ostree#5386 (comment)

The default overlay driver is a "layer store", it doesn't identify individual files. When zstd:chunked is enabled, files can be identified by their individual sha256 digest and also deduplicated across layers.

However, in neither case is the underlying storage model exposed to higher levels at all to what can be reached from podman|buildah build or really even Go clients AFAIK.

An object store as a socket API

Imagine that inside a default podman build there was something like a socket /run/objectstore that speaks DBus|varlink|whatever and has just two core primitives:

(queue bikeshed for $digest; fsverity or full-file sha256|sha512 etc)

  • Put an object by $digest (any space limitations would be restricted based on any limits in place for writing to the layer)
  • Link an object named by $digest into a specific place in the target filesystem tree (and gracefully returns an ENOENT equivalent if the object isn't present)

The latter operation is the key one - it would operate underneath the overlayfs mount, and that would allow avoiding copying and re-checksumming.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions