On Tue, Sep 01, 2026 at 11:09:56AM +0800, Huiba Li wrote:
> Hi all,
> 
> Gentle ping on this RFC from Aug 18.

Hi Huiba,
Sorry your RFC was not seen. Kevin is on vacation and I will take a look
in the meantime. Please CC [email protected] in future emails so it
comes to my attention.

Thanks!

Stefan

> 
> In short: overlaybd is an openly specified image format (CNCF-hosted;
> read-only blob stack + writable top, O(1) lookup regardless of chain
> depth) deployed at scale for container/VM image streaming. The RFC
> proposes an in-tree C block driver, starting with read-only support
> (index merge at open, raw + ZFile layers), writes handled by a
> qcow2/raw file on top.
> 
> I'd especially appreciate thoughts on the four questions in the RFC:
> 
>   1. Is a new in-tree format driver acceptable in principle?
>   2. Is read-only-first a reasonable initial scope (with iotests and a
>      docs/interop spec page)?
>   3. Remote blobs: compose over block/curl, or fetch in-driver?
>   4. CLI surface: point -drive at the OCI-style JSON config, or
>      per-layer options?
> 
> Question 1 is the main gate -- if in-principle feedback is easier to
> give than a full design review, that alone would help me decide
> whether to proceed with the first series.
> 
> Thanks,
> Huiba
> 
> 
> Huiba Li <[email protected]> 于2026年8月18日周二 17:38写道:
> >
> > Hi,
> >
> > I would like to propose adding a QEMU block driver for the
> > overlaybd image format, and I am looking for early feedback on
> > scope and design before sending patches.
> >
> > What overlaybd is
> > -----------------
> > Overlaybd is an open-source image format 
> > (https://containerd.github.io/overlaybd/)
> > hosted as a sub-project of containerd (CNCF graduated). A disk
> > image is a stack of read-only snapshot blobs plus a writable top
> > file, in a layout compatible with OCI image registries: a base
> > image is stored once and shared by every derivative image, and
> > data is fetched on demand rather than pulled in full before boot.
> >
> > Two properties distinguish it from qcow2/VHDX/VMDK-style chains:
> >
> >   * Lookup cost is O(1) in chain depth. At open time the per-file
> >     indices are merged into a single in-memory index (an
> >     extent-based log-structured merge tree), so a read never walks
> >     backing files, and per-file index caches do not multiply with
> >     snapshots.
> >
> >   * The merged index is small (about 300 KB average for 50+ GB
> >     images in our production data), and because extents are
> >     variable-length, writes land at 512-byte granularity with no
> >     cluster copy-on-write.
> >
> > The format is openly specified:
> >   https://github.com/containerd/overlaybd/tree/main/docs/specs/lsmt.md
> >   https://github.com/containerd/overlaybd/tree/main/docs/specs/zfile.md
> >
> > Reference implementation:
> >   https://github.com/containerd/overlaybd
> >
> > Overlaybd has been in production at Alibaba for years (Taobao,
> > Tmall, Alibaba Cloud, Function Compute) and is used by Azure AKS
> > Artifact Streaming, Databricks serverless compute, and several
> > microVM-based sandbox platforms. The design is documented in two
> > USENIX ATC papers (DADI, ATC'20; FaaSNet, ATC'21). I am one of the
> > overlaybd/DADI authors.
> >
> > Why a QEMU driver
> > -----------------
> > Today overlaybd images are served to VMs through a kernel blk dev
> > and a userspace daemon. That fits container workloads well, but
> > a native QEMU driver would let any QEMU-based stack (libvirt,
> > KubeVirt, OpenStack, plain qemu-system-*) boot overlaybd images
> > directly, with QEMU's usual amenities (backing files, block jobs,
> > throttling, migration) and no extra daemon on the host. This is
> > beneficial to agent sandboxes.
> >
> > Proposed implementation
> > -----------------------
> > A new block format driver, block/overlaybd.c, written in C from the
> > open spec (like the existing vmdk/vhdx drivers) rather than binding
> > the C++ reference implementation:
> >
> >   * v1: read-only support. Local layer files, index merge at open,
> >     raw and ZFile blobs (lz4/zstd are already optional QEMU
> >     dependencies). Writes can be served by a qcow2/raw file on top,
> >     exactly like booting a read-only backing image today.
> >   * v2: native writable layer, and lazy fetching of remote blobs —
> >     either composed over the existing curl driver or with a small
> >     built-in HTTP fetcher; guidance welcome.
> >
> > Questions
> > ---------
> >   1. Is a new in-tree format driver acceptable in principle, given
> >      the format is stable, openly specified, and deployed at scale?
> >   2. Is read-only-first a reasonable merge scope for the initial
> >      series (with iotests and a docs/interop/ spec page)?
> >   3. For remote blobs: compose over block/curl, or fetch in-driver
> >      with a local cache?
> >   4. CLI surface: point -drive at the OCI-style JSON image config
> >      (which lists the layer blobs), or expose per-layer options?
> >
> > I will write the iotests and the docs/interop format page, and add
> > myself to MAINTAINERS in the first series.
> >
> > Thanks for any comments,
> > Huiba Li
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to