<?xml version="1.0" encoding="UTF-8"?>
<chapter xmlns="http://docbook.org/ns/docbook"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  version="5.0"
  xml:id="ch_introduction">
    <title>Introduction</title>
    <para>An OpenStack Compute cloud is not very useful unless you have virtual machine images
        (which some people call "virtual appliances"). This guide describes how to obtain, create,
        and modify virtual machine images that are compatible with OpenStack.</para>
    <para>To keep things brief, we'll sometimes use the term "image" instead of "virtual machine
        image".</para>
        <para>What is a virtual machine image?</para>
        <para>A virtual machine image is a single file which contains a virtual disk that has a
            bootable operating system installed on it.</para>
    <para>Virtual machine images come in different formats, some of which are described below. In a
        later chapter, we'll describe how to convert between formats.</para>
        <variablelist>
            <varlistentry>
            <term>Raw</term>
            <listitem><para>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,
                <filename>/dev/sda</filename> to a file using the
                <command>dd</command> command. <note>
                    <para>We don't recommend creating raw images by dd'ing
                        block device files, we discuss how to create raw
                        images later.</para>
                </note></para></listitem>
        </varlistentry>
        <varlistentry>
            <term>qcow2</term>
            <listitem><para>The <link xlink:href="http://en.wikibooks.org/wiki/QEMU/Images">qcow2</link> (QEMU
                copy-on-write version 2) format is commonly used with the KVM hypervisor. It has some
                additional features over the raw format, such as:<itemizedlist>
                    <listitem>
                        <para>Using sparse representation, so the image size is smaller</para>
                    </listitem>
                    <listitem>
                        <para>Support for snapshots</para>
                    </listitem>
                </itemizedlist></para>
            <para>Because qcow2 is sparse, it's often faster to convert a raw image to qcow2 and upload
                it then to upload the raw file.</para>
            <para>
                <note>
                    <para>Because raw images don't support snapshots, OpenStack Compute will
                        automatically convert raw image files to qcow2 as needed.</para>
                </note>
            </para></listitem>
        </varlistentry>
        <varlistentry>
            <term>AMI/AKI/ARI</term>
            <listitem><para>The <link
                xlink:href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html"
                >AMI/AKI/ARI </link>format was the initial image
                format supported by Amazon EC2. The image consists of
                three files:<itemizedlist>
                        <listitem><para>AMI (Amazon Machine Image):</para>
                            <para>This is a virtual machine image in raw
                                format, as described above.</para>
                        </listitem>
                    <listitem>
                        <para>AKI (Amazon Kernel Image)</para>
                            <para>A kernel file that the hypervisor will
                                load initially to boot the image. For a
                                Linux machine, this would be a
                                <emphasis>vmlinuz</emphasis> file.
                            </para>
                        </listitem>
                     <listitem>
                        <para>ARI (Amazon Ramdisk Image)</para>
                            <para>An optional ramdisk file mounted at boot
                                time. For a Linux machine, this would be
                                an <emphasis>initrd</emphasis>
                                file.</para>
                        </listitem>
                </itemizedlist></para></listitem>
        </varlistentry>
        <varlistentry>
            <term>UEC tarball</term>
            <listitem><para>A UEC (Ubuntu Enterprise Cloud) tarball is a gzipped tarfile that contains an AMI
                file, AKI file, and ARI file.<note>
                    <para>Ubuntu Enterprise Cloud refers to a discontinued Eucalyptus-based Ubuntu cloud
                        solution that has been replaced by the OpenStack-based Ubuntu Cloud
                        Infrastructure.</para>
                </note></para></listitem>
        </varlistentry>
        <varlistentry>
            <term>VMDK</term>
            <listitem><para>VMware's ESXi hypervisor uses the <link
                xlink:href="http://www.vmware.com/technical-resources/interfaces/vmdk.html"
                >VMDK</link> (Virtual Machine Disk) format for images.</para></listitem>
        </varlistentry>
        <varlistentry>
            <term>VDI</term>
            <listitem><para>VirtualBox uses the <link
                xlink:href="https://forums.virtualbox.org/viewtopic.php?t=8046">VDI</link> (Virtual
                Disk Image) format for image files. None of the OpenStack Compute hypervisors support
                VDI directly, so you will need to convert these files to a different format to use them
                with OpenStack.</para></listitem>
        </varlistentry>
        <varlistentry>
            <term>VHD</term>
            <listitem><para>Microsoft Hyper-V uses the VHD (Virtual Hard Disk) format for images.</para></listitem>
        </varlistentry>
        <varlistentry>
            <term>VHDX</term>
            <listitem><para>The version of Hyper-V that ships with Microsoft Server 2012 uses the newer <link
                xlink:href="http://technet.microsoft.com/en-us/library/hh831446.aspx">VHDX</link>
                format, which has some additional features over VHD such as support for larger disk
                sizes and protection against data corruption during power failures.</para></listitem>
        </varlistentry>
        <varlistentry>
            <term>OVF</term>
            <listitem><para><link xlink:href="http://www.dmtf.org/standards/ovf">OVF</link> (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.</para>
            <para>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.</para>
            <para>OpenStack Compute does not currently have support for OVF packages, so you will need
                to extract the image file(s) from an OVF package if you wish to use it with
                OpenStack.</para></listitem>
        </varlistentry>
        <varlistentry>
            <term>ISO</term>
            <listitem><para>The <link
                xlink:href="http://www.ecma-international.org/publications/standards/Ecma-119.htm"
                >ISO</link> format is a disk image formatted with the read-only ISO 9660 (also known
                as ECMA-119) filesystem commonly used for CDs and DVDs. While we don't normally think of
                ISO as a virtual machine image format, since ISOs contain bootable filesystems with an
                installed operating system, you can treat them the same as you treat other virtual machine
                image files.</para></listitem>
        </varlistentry></variablelist>
    <xi:include href="section_glance_image-formats.xml"/>
    <xi:include href="section_glance-image-metadata.xml"/>
</chapter>