[lxc-devel] [PATCH v2] add support for qcow2

Dwight Engen dwight.engen at oracle.com
Thu May 15 12:45:26 UTC 2014


On Wed, 14 May 2014 19:59:11 +0000
Serge Hallyn <serge.hallyn at ubuntu.com> wrote:

> Quoting Dwight Engen (dwight.engen at oracle.com):
> > On Mon, 12 May 2014 18:02:28 +0000
> > Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
> > 
> > > qcow2 backing stores can be attached to a nbd block device using
> > > qemu-nbd.  This user-space process (pair) stays around for the
> > > duration of the device attachment.  Obviously we want it to go
> > > away when the container shuts down, but not before the filesystems
> > > have been cleanly unmounted.
> > > 
> > > The device attachment is done from the task which will become the
> > > container monitor before the container setup+init task is spawned.
> > > That task starts in a new pid namespace to ensure that the
> > > qemu-nbd process will be killed if need be.  It sets its parent
> > > death signal to sighup, and, on receiving sighup, attempts to do
> > > a clean qemu-device detach, then exits.  This should ensure that
> > > the device is detached if the qemu monitor crashes or exits.
> > > 
> > > It may be worth adding a delay before the qemu-nbd is detached,
> > > but my brief tests haven't seen any data corruption.
> > > 
> > > Only the parts required for running a qcow2-backed container are
> > > implemented here.  Create, destroy, and clone are not.  The first
> > > use of this that I imagine is for people to use downloaded
> > > qcow2-backed images (like ubuntu cloud images, or anything
> > > previously used with qemu).  I imagine people will want to
> > > create/clone/destroy out of band using qemu-img, but if I'm wrong
> > > about that we can implement the rest later.
> > > 
> > > Because attach_block_device() is done before the bdev is
> > > initialized, and bdev_init needs to know the nbd index so that it
> > > can mount the filesystem, we now need to pass the lxc_conf.
> > > 
> > > file_exists() is moved to utils.c so we can use it from bdev.c
> > > 
> > > The nbd attach/detach should lay the groundwork for trivial
> > > implementation of qed and raw images.
> > > 
> > > changelog (may 12): qcow: fix idx check at detach
> > 
> > Hey Serge, I had to check the code for how to use this so maybe we
> > should document somewhere what the rootfs line needs to look like
> > (ie. lxc.rootfs = qcow2:/path/to/diskimg:1).
> > 
> > Also, I used this against a .vdi image just fine, so maybe we
> > should be more generic than just qcow2 and call it qemu? Not sure
> > if qemu-nbd supports all the same image formats as qemu-img.
> 
> so,
> 
> nbd:/file[:partition]
> 
> ?

Sounds good to me.


More information about the lxc-devel mailing list