A Practical Look at QEMU and libvirt Block Layer Primitives ----------------------------------------------------------- QEMU is an open source machine emulator and virtualizer (most commonly used with Xen or KVM linux kernel module). In this talk, we'll focus on QEMU's block subsystem, which forms the foundation for some of the essential virtualization storage features -- live disk sychronization, incremental backups, QCOW2 disk image chains, and point-in-time snapshots to name a few. These features are driven by an underlying set of block primitives, which are typically exposed to users via an external virtualization API, such as libvirt. We'll walk-through some of these primitives, discuss their invocation -- either directly using QEMU Machine Protocol (QMP) interface or the libvirt's shell interface (`virsh`). We'll also understand how some of them could be combined to perform specific useful operations, e.g. live disk backups; how live storage migration is achieved via a combination of QEMU's built-in Network Block Device server plus the live disk synchronization mechanism. Higher-level cloud infrastructure such as OpenStack (its Compute project) call into this QEMU block layer via libvirt APIs.