openstack-manuals/doc/common/section_glance_cli_manage_images.xml
Tom Fifield 5a56e9f950 Add list of VIF models for vmware to image doc
As of Havana, VMWare can honor the hw_vif_model properly.

This patch adds the list of supported models so it is now
in line with other hypervisors.

Change-Id: I435b4cb440038a0c3e98685d81ac39251c0cf715
Closes-Bug: 1192639
2013-12-20 08:36:16 -06:00

432 lines
23 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<section 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="cli_manage_images">
<?dbhtml stop-chunking?>
<title>Manage images</title>
<para>The cloud operator assigns roles to users. Roles determine
who can upload and manage images. The operator might restrict
image upload and management to only cloud administrators or
operators.</para>
<para>You can upload images through the glance client or the Image Service API. You can also use
the nova client to list images, set, and delete image metadata, delete images, and take a
snapshot of a running instance to create an image. After you upload an image, you cannot
change it.</para>
<para>For details about image creation, see the <link
xlink:href="http://docs.openstack.org/image-guide/content/"
><citetitle>Virtual Machine Image
Guide</citetitle></link>.</para>
<section xml:id="glance-image-list">
<title>List or get details for images (glance)</title>
<procedure>
<step>
<para>To list the available images:</para>
<screen><prompt>$</prompt> <userinput>glance image-list</userinput>
<computeroutput>+--------------------------------------+---------------------------------+-------------+------------------+----------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+--------------------------------------+---------------------------------+-------------+------------------+----------+--------+
| 397e713c-b95b-4186-ad46-6126863ea0a9 | cirros-0.3.1-x86_64-uec | ami | ami | 25165824 | active |
| df430cc2-3406-4061-b635-a51c16e488ac | cirros-0.3.1-x86_64-uec-kernel | aki | aki | 4955792 | active |
| 3cf852bd-2332-48f4-9ae4-7d926d50945e | cirros-0.3.1-x86_64-uec-ramdisk | ari | ari | 3714968 | active |
| 7e5142af-1253-4634-bcc6-89482c5f2e8a | myCirrosImage | ami | ami | 14221312 | active |
+--------------------------------------+---------------------------------+-------------+------------------+----------+--------+</computeroutput></screen>
<para>You can use grep to filter the list, as
follows:</para>
<screen><prompt>$</prompt> <userinput>glance image-list | grep 'cirros'</userinput>
<computeroutput>| 397e713c-b95b-4186-ad46-6126863ea0a9 | cirros-0.3.1-x86_64-uec | ami | ami | 25165824 | active |
| df430cc2-3406-4061-b635-a51c16e488ac | cirros-0.3.1-x86_64-uec-kernel | aki | aki | 4955792 | active |
| 3cf852bd-2332-48f4-9ae4-7d926d50945e | cirros-0.3.1-x86_64-uec-ramdisk | ari | ari | 3714968 | active |</computeroutput></screen>
</step>
<step>
<para>To get image details, by name or ID:</para>
<screen><prompt>$</prompt> <userinput>glance image-show myCirrosImage</userinput>
<?db-font-size 45%?><computeroutput>+---------------------------------------+--------------------------------------+
| Property | Value |
+---------------------------------------+--------------------------------------+
| Property 'base_image_ref' | 397e713c-b95b-4186-ad46-6126863ea0a9 |
| Property 'image_location' | snapshot |
| Property 'image_state' | available |
| Property 'image_type' | snapshot |
| Property 'instance_type_ephemeral_gb' | 0 |
| Property 'instance_type_flavorid' | 2 |
| Property 'instance_type_id' | 5 |
| Property 'instance_type_memory_mb' | 2048 |
| Property 'instance_type_name' | m1.small |
| Property 'instance_type_root_gb' | 20 |
| Property 'instance_type_rxtx_factor' | 1 |
| Property 'instance_type_swap' | 0 |
| Property 'instance_type_vcpu_weight' | None |
| Property 'instance_type_vcpus' | 1 |
| Property 'instance_uuid' | 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 |
| Property 'kernel_id' | df430cc2-3406-4061-b635-a51c16e488ac |
| Property 'owner_id' | 66265572db174a7aa66eba661f58eb9e |
| Property 'ramdisk_id' | 3cf852bd-2332-48f4-9ae4-7d926d50945e |
| Property 'user_id' | 376744b5910b4b4da7d8e6cb483b06a8 |
| checksum | 8e4838effa1969ad591655d6485c7ba8 |
| container_format | ami |
| created_at | 2013-07-22T19:45:58 |
| deleted | False |
| disk_format | ami |
| id | 7e5142af-1253-4634-bcc6-89482c5f2e8a |
| is_public | False |
| min_disk | 0 |
| min_ram | 0 |
| name | myCirrosImage |
| owner | 66265572db174a7aa66eba661f58eb9e |
| protected | False |
| size | 14221312 |
| status | active |
| updated_at | 2013-07-22T19:46:42 |
+---------------------------------------+--------------------------------------+</computeroutput></screen>
<note><para>To store location metadata for images, which enables direct file
access for a client, update the
<filename>/etc/glance/glance.conf</filename>
file with the following statements:</para>
<para>
<itemizedlist>
<listitem>
<para><code>show_multiple_locations = True</code></para>
</listitem>
<listitem>
<para><code>filesystem_store_metadata_file
=
<replaceable>filePath</replaceable></code>,
where
<replaceable>filePath</replaceable>
points to a JSON file that defines
the mount point for OpenStack
images on your system and a unique
ID. For example:
<programlisting language="json">[{
"id": "b9d69795-5951-4cb0-bb5c-29491e1e2daf",
"mountpoint": "/var/lib/glance/images/"
}]</programlisting></para>
</listitem>
</itemizedlist>
</para>
<para>After you restart the Image Service, you can use the following syntax to view the image's location information:</para>
<screen><prompt>$</prompt> <userinput>glance --os-image-api-version=2 image-show <replaceable>imageID</replaceable></userinput></screen>
<para>For example:</para>
<screen><prompt>$</prompt> <userinput>glance --os-image-api-version=2 image-show 2d9bb53f-70ea-4066-a68b-67960eaae673</userinput></screen></note>
</step>
</procedure>
</section>
<section xml:id="glance_add_image">
<title>Create or update an image (glance)</title>
<procedure>
<step>
<para>To upload a CentOS 6.3 image in qcow2 format and
configure it for public access:</para>
<screen><prompt>$</prompt> <userinput>glance image-create --name centos63-image --disk-format=qcow2 \
--container-format=bare --is-public=True --file=./centos63.qcow2</userinput></screen>
</step>
<step>
<para>To update an image by name or ID:</para>
<para><screen><prompt>$</prompt> <userinput>glance image-update <replaceable>IMAGE</replaceable></userinput></screen></para>
<para>To modify image properties, use the following
optional arguments:</para>
<informaltable>
<col width="40%"/>
<col width="60%"/>
<tr>
<td><para><parameter>--name
<replaceable>NAME</replaceable></parameter></para></td>
<td><para>The name of the image.</para>
</td>
</tr>
<tr>
<td><para><parameter>--disk-format
<replaceable>DISK_FORMAT</replaceable></parameter></para></td>
<td><para>The disk format of the image.
Acceptable formats are ami, ari, aki,
vhd, vmdk, raw, qcow2, vdi, and
iso.</para>
</td>
</tr>
<tr>
<td><para><parameter>--container-format
<replaceable>CONTAINER_FORMAT</replaceable></parameter></para></td>
<td><para>The container format of the image.
Acceptable formats are ami, ari, aki,
bare, and ovf.</para>
</td>
</tr>
<tr>
<td><para><parameter>--owner
<replaceable>TENANT_ID</replaceable></parameter></para></td>
<td><para>The tenant who should own the
image.</para>
</td>
</tr>
<tr>
<td><para><parameter>--size
<replaceable>SIZE</replaceable></parameter></para></td>
<td><para>The size of image data, in
bytes.</para>
</td>
</tr>
<tr>
<td><para><parameter>--min-disk
<replaceable>DISK_GB</replaceable></parameter></para></td>
<td><para>The minimum size of disk needed to
boot image, in gigabytes.</para>
</td>
</tr>
<tr>
<td><para><parameter>--min-ram
<replaceable>DISK_RAM</replaceable></parameter></para></td>
<td><para>The minimum amount of ram needed to
boot image, in megabytes.</para>
</td>
</tr>
<tr>
<td><para><parameter>--location
<replaceable>IMAGE_URL</replaceable></parameter></para></td>
<td><para>The URL where the data for this
image resides. For example, if the
image data is stored in swift, you
could specify
<literal>swift://account:key@example.com/container/obj</literal>.</para>
</td>
</tr>
<tr>
<td><para><parameter>--file
<replaceable>FILE</replaceable></parameter></para></td>
<td><para>Local file that contains disk image
to be uploaded during update.
Alternatively, you can pass images to
the client through stdin.</para>
</td>
</tr>
<tr>
<td><para><parameter>--checksum
<replaceable>CHECKSUM</replaceable></parameter></para></td>
<td><para>Hash of image data to use for
verification.</para>
</td>
</tr>
<tr>
<td><para><parameter>--copy-from
<replaceable>IMAGE_URL</replaceable></parameter></para></td>
<td><para>Similar to
<parameter>--location</parameter>
in usage, but indicates that the
Image server should immediately copy
the data and store it in its
configured image store.</para>
</td>
</tr>
<tr>
<td><para><parameter>--is-public
[True|False]</parameter></para></td>
<td><para>Makes an image accessible to the
public.</para>
</td>
</tr>
<tr>
<td><para><parameter>--is-protected
[True|False]</parameter></para></td>
<td><para>Prevents an image from being
deleted.</para>
</td>
</tr>
<tr>
<td><para><parameter>--property
<replaceable>KEY</replaceable>=<replaceable>VALUE</replaceable></parameter></para></td>
<td><para>Arbitrary property to associate with
image. Can be used multiple
times.</para>
</td>
</tr>
<tr>
<td><para><parameter>--purge-props</parameter></para></td>
<td><para>Deletes all image properties that
are not explicitly set in the update
request. Otherwise, those properties
not referenced are preserved.</para>
</td>
</tr>
<tr>
<td><para><parameter>--human-readable</parameter></para></td>
<td><para>Prints image size in a
human-friendly format.</para>
</td>
</tr>
</informaltable>
</step>
<step>
<para>To annotate an image with a property that describes the <literal>disk_bus</literal>, <literal>cdrom_bus</literal>,
and <literal>vif_model</literal>:</para>
<screen><prompt>#</prompt> <userinput>glance image-update \
--property hw_disk_bus=scsi \
--property hw_cdrom_bus=ide \
--property hw_vif_model=e1000 \
f16-x86_64-openstack-sda</userinput></screen>
<para>Currently libvirt will determine the disk/cdrom/vif device models based on the
configured hypervisor type (<literal>libvirt_type</literal> in
<literal>/etc/nova/nova.conf</literal>). For the sake of optimal
performance, it will default to using virtio for both disk and VIF (NIC) models.
The downside of this approach is that it is not possible to run operating
systems that lack virtio drivers, for example, BSD, Solaris, old Linux, and old
Windows.</para>
<para>If you specify a disk or CD-ROM bus model that is not supported, see <xref
linkend="bus_models"/>. If you specify a VIF model that is not supported,
the instance fails to launch. See <xref linkend="vif_models"/>.</para>
</step>
</procedure>
<?hard-pagebreak?>
<para>The valid model values depend on the
<literal>libvirt_type</literal> setting, as shown in
the following tables:</para>
<table xml:id="bus_models" rules="all" width="50%">
<caption>Disk and CD-ROM bus model values</caption>
<col width="40%"/>
<col width="60%"/>
<thead>
<tr>
<th>libvirt_type setting</th>
<th>Supported model values</th>
</tr>
</thead>
<tbody>
<tr>
<td>qemu or kvm</td>
<td>
<para>
<itemizedlist>
<listitem>
<para>virtio</para>
</listitem>
<listitem>
<para>scsi</para>
</listitem>
<listitem>
<para>ide</para>
</listitem>
<listitem>
<para>virtio</para>
</listitem>
</itemizedlist>
</para>
</td>
</tr>
<tr>
<td>xen</td>
<td>
<itemizedlist>
<listitem>
<para>xen</para>
</listitem>
<listitem>
<para>ide</para>
</listitem>
</itemizedlist>
</td>
</tr>
</tbody>
</table>
<table xml:id="vif_models" rules="all" width="50%">
<caption>VIF model values</caption>
<col width="40%"/>
<col width="60%"/>
<thead>
<tr>
<th>libvirt_type setting</th>
<th>Supported model values</th>
</tr>
</thead>
<tbody>
<tr>
<td>qemu or kvm</td>
<td>
<para>
<itemizedlist>
<listitem>
<para>virtio</para>
</listitem>
<listitem>
<para>ne2k_pci</para>
</listitem>
<listitem>
<para>pcnet</para>
</listitem>
<listitem>
<para>rtl8139</para>
</listitem>
<listitem>
<para>e1000</para>
</listitem>
</itemizedlist>
</para>
</td>
</tr>
<tr>
<td>xen</td>
<td>
<itemizedlist>
<listitem>
<para>netfront</para>
</listitem>
<listitem>
<para>ne2k_pci</para>
</listitem>
<listitem>
<para>pcnet</para>
</listitem>
<listitem>
<para>rtl8139</para>
</listitem>
<listitem>
<para>e1000</para>
</listitem>
</itemizedlist>
</td>
</tr>
<tr>
<td>vmware</td>
<td>
<para>
<itemizedlist>
<listitem>
<para>VirtualE1000</para>
</listitem>
<listitem>
<para>VirtualPCNet32</para>
</listitem>
<listitem>
<para>VirtualVmxnet</para>
</listitem>
</itemizedlist>
</para>
</td>
</tr>
</tbody>
</table>
</section>
<xi:include href="section_nova_cli_manage_images.xml"/>
<section xml:id="troubleshoot">
<title>Troubleshoot image creation</title>
<itemizedlist>
<listitem>
<para>You cannot create a snapshot from an instance
that has an attached volume. Detach the volume,
create the image, and re-mount the volume.</para>
</listitem>
<listitem>
<para>Make sure the version of qemu you are using is
version 0.14 or greater. Older versions of qemu
result in an "<literal>unknown option
-s</literal>" error message in the
<filename>nova-compute.log</filename>.</para>
</listitem>
<listitem>
<para>Examine the
<filename>/var/log/nova-api.log</filename> and
<filename>/var/log/nova-compute.log</filename>
log files for error messages.</para>
</listitem>
</itemizedlist>
</section>
</section>