.. Copyright 2011 OpenStack Foundation All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. .. _formats: 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 :command:`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.