| Title: OpenBSD vmm and qcow2 derived disks
Author: Solène
Date: 27 August 2023
Tags: openbsd
Description: In this article, you will learn how to leverage a qcow2
feature enabling you many virtualization use case
# Introduction
Let me show you a very practical feature of qcow2 virtual disk format,
that is available in OpenBSD vmm, allowing you to easily create derived
disks from an original image (also called delta disks).
A derived disk image is a new storage file that will inherit all the
data from the original file, without modifying the original ever, it's
like stacking a new fresh disk on top of the previous one, but all the
changes are now written on the new one.
This allows interesting use cases such as using a golden image to
provide a base template, like a fresh OpenBSD install, or create a
temporary disks to try changes without harming to original file (and
without having to backup a potentially huge file).
This is NOT OpenBSD specific, it's a feature of the qcow2 format, so
while this guide is using OpenBSD as an example, this will work
wherever qcow2 can be used.
|
|
# Setup
First, you need to have a qcow2 file with something installed in it,
let's say you already have a virtual machine with its storage file
`/var/lib/vmm/alpine.qcow2`.
We will create a derived file `/var/lib/vmm/derived.qcow2` using the
`vmctl` command:
```console
# vmctl create -b /var/lib/vmm/alpine.qcow2 /var/lib/vmm/derived.qcow2
```
That's it! Now you have the new disk that already inherits all the
other file data without modifying it ever.
# Limitations
The derived disk will stop working if the original file is modified, so
once you make derived disks from a base image, you shouldn't modify the
base image.
However, it's possible to merge changes from a derived disk to the base
image using the `qemu-img` command:
|
|
# Conclusion
The derived images can be useful in some scenarios, if you have an
image and want to make some experimentation without making a full
backup, just use a derived disk. If you want to provide a golden image
as a start like an installed OS, this will work too.
One use case I had was with OpenKuBSD, I had a single OpenBSD install
as a base image, each VM had a derived disk as their root but removed
and recreated at every boot, but they also had a dedicated disk for
/home, this allows me to keep all the VMs clean, and I just have a
single system to manage. |