Disk and Container Formats

When adding an image to Glance, you must specify what the virtual machine image’s disk format and container format are. Disk and container formats are configurable on a per-deployment basis. This document intends to establish a global convention for what specific values of disk_format and container_format mean.

Disk Format

The disk format of a virtual machine image is the format of the underlying disk image. Virtual appliance vendors have different formats for laying out the information contained in a virtual machine disk image.

You can set your image’s disk format to one of the following:

  • raw

    This is an unstructured disk image format.

    The raw image format is the simplest one, and is natively supported by both KVM and Xen hypervisors. You can think of a raw image as being the bit-equivalent of a block device file, created as if somebody had copied, say, /dev/sda to a file using the dd command.

  • vhd

    This is the VHD (Virtual Hard Disk) disk format, a common disk format used by virtual machine monitors from VMware, Xen, Microsoft, VirtualBox, and others.

  • vhdx

    This is the VHDX format, an enhanced version of the vhd format. It has support for larger disk sizes and protection against data corruption during power failures.

  • vmdk

    The VMDK (Virtual Machine Disk) format is supported by many common virtual machine monitors, for example the VMware ESXi hypervisor.

  • vdi

    The VDI (Virtual Disk Image) format for image files is supported by the VirtualBox virtual machine monitor and the QEMU emulator.

  • iso

    The ISO format is a disk image formatted with the read-only ISO 9660 (also known as ECMA-119) filesystem commonly used for CDs and DVDs.

  • ploop

    A disk format supported and used by Virtuozzo to run OS Containers.

  • qcow2

    The QCOW2 (QEMU copy-on-write version 2) format is commonly used with the KVM hypervisor. It uses a sparse representation, so the image size is smaller than a raw format file of the same virtual disk. It can expand dynamically and supports Copy on Write.

The AKI/AMI/ARI format was the initial image format supported by Amazon EC2. The image consists of three files, each of which has its own specific disk_format identifier:

  • aki

    This indicates what is stored in Glance is an Amazon Kernel Image (AKI). It is a kernel file that the hypervisor will load initially to boot the image. For a Linux machine, this would be a vmlinuz file.

  • ari

    This indicates what is stored in Glance is an Amazon Ramdisk Image (ARI). It is an optional ramdisk file mounted at boot time. For a Linux machine, this would be an initrd file.

  • ami

    This indicates what is stored in Glance is an Amazon Machine Image (AMI). It is a virtual machine image in raw format.

Container Format

The container format refers to whether the virtual machine image is in a file format that also contains metadata about the actual virtual machine.

Note the following:

  1. Glance does not verify that the container_format image property accurately describes the image data payload.

  2. Do not assume that all OpenStack services can handle all the container formats defined by Glance.

    Consult the documentation for the service consuming your image to see what container formats the service supports.

You can set your image’s container format to one of the following:

  • bare

    This indicates there is no container or metadata envelope for the image.

  • ovf

OVF (Open Virtualization Format) is a packaging format for virtual machines, defined by the Distributed Management Task Force (DMTF) standards group. An OVF package contains one or more image files, a .ovf XML metadata file that contains information about the virtual machine, and possibly other files as well.

An OVF package can be distributed in different ways. For example, it could be distributed as a set of discrete files, or as a tar archive file with an .ova (open virtual appliance/application) extension.

  • aki

    This indicates what is stored in Glance is an Amazon kernel image.

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image.

  • ami

    This indicates what is stored in Glance is an Amazon machine image.

  • ova

    This indicates what is stored in Glance is an OVA tar archive file, that is, an OVF package contained in a single tar archive file.

  • docker

    This indicates what is stored in Glance is a Docker tar archive of the container filesystem.

  • compressed

    The exact format of the compressed file is not specified. It is the responsibility of the consuming service to analyze the data payload and determine the specific compression format. A particular OpenStack service may only support specific formats.

    You may assume that any OpenStack service that creates an image with a ‘compressed’ container format will be able to consume that image.

    Consult the documentation for the service that will consume your image for details.