Working with images: Difference between revisions
(updating links) |
(Marked this version for translation) |
||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
<translate> | <translate> | ||
<!--T:1--> | |||
''Parent page: [[Cloud]]'' | ''Parent page: [[Cloud]]'' | ||
<!--T:2--> | |||
Images are files which contain the contents of a virtual disk. Often Images contain a base operating system used to create a volume or an ephemeral disk from which a virtual machine boots. An ephemeral disk is a virtual disk file which resides on the host (or hypervisor) where the virtual machine runs. Ephemeral disk files are destroyed when a VM is destroyed, in contrast to [[Working_with_volumes|volumes]]. Images are portable in that they can be downloaded from the cloud, used to create a virtual machine using virtual box or similar on your laptop, and uploaded to another cloud and used to create a new virtual machine. This is not the case with volumes or ephemeral disks. Images come in a variety of formats. Some commonly encountered formats are, raw, qcow2, vmdk, and vdi. | Images are files which contain the contents of a virtual disk. Often Images contain a base operating system used to create a volume or an ephemeral disk from which a virtual machine boots. An ephemeral disk is a virtual disk file which resides on the host (or hypervisor) where the virtual machine runs. Ephemeral disk files are destroyed when a VM is destroyed, in contrast to [[Working_with_volumes|volumes]]. Images are portable in that they can be downloaded from the cloud, used to create a virtual machine using virtual box or similar on your laptop, and uploaded to another cloud and used to create a new virtual machine. This is not the case with volumes or ephemeral disks. Images come in a variety of formats. Some commonly encountered formats are, raw, qcow2, vmdk, and vdi. | ||
<!--T:3--> | |||
If sharing your virtual machine images, be sure to remove sensitive information such as public/private keys, configuration files containing passwords, etc. If uploading an image created from a virtual box virtual machine to our clouds, it must have cloud-init installed and configured correctly (see openstack docs on [https://docs.openstack.org/image-guide/create-images-manually.html creating images manually] for more details). | If sharing your virtual machine images, be sure to remove sensitive information such as public/private keys, configuration files containing passwords, etc. If uploading an image created from a virtual box virtual machine to our clouds, it must have cloud-init installed and configured correctly (see openstack docs on [https://docs.openstack.org/image-guide/create-images-manually.html creating images manually] for more details). | ||
<!--T:4--> | |||
For a list of images provided by our staff, see [[Cloud resources#Images| images]]. | For a list of images provided by our staff, see [[Cloud resources#Images| images]]. | ||
=Creating an Image from a VM= | =Creating an Image from a VM= <!--T:5--> | ||
The procedure for creating an image of a VM depends on whether it is booting from a volume (typically "p" flavors), or from an ephemeral disk (typically "c" flavors). | The procedure for creating an image of a VM depends on whether it is booting from a volume (typically "p" flavors), or from an ephemeral disk (typically "c" flavors). | ||
==If booting from an ephemeral disk== | ==If booting from an ephemeral disk== <!--T:6--> | ||
the [[OpenStack Command Line Clients]] can be used with the command: | the [[OpenStack Command Line Clients]] can be used with the command: | ||
{{Command| openstack server image create <server-name>}} | {{Command| openstack server image create <server-name>}} | ||
where <code><server-name></code> should be replaced with the name of your server. This action will only include the VM's root drive (e.g. /dev/vda) in the image. Ephemeral drives and non-boot attached volumes will not be included in the image, so additional measures should be taken to preserve this data. In addition, if the VM is writing to disk while the image is being created the filesystem may be captured in an inconsistent state. We recommend the VM be shut off (not deleted) before an image is created from it. | where <code><server-name></code> should be replaced with the name of your server. This action will only include the VM's root drive (e.g. /dev/vda) in the image. Ephemeral drives and non-boot attached volumes will not be included in the image, so additional measures should be taken to preserve this data. In addition, if the VM is writing to disk while the image is being created the filesystem may be captured in an inconsistent state. We recommend the VM be shut off (not deleted) before an image is created from it. | ||
==If booting from a volume== | ==If booting from a volume== <!--T:7--> | ||
see [[Working_with_volumes#Creating_an_image_from_a_volume|Creating an Image from a Volume]] | see [[Working_with_volumes#Creating_an_image_from_a_volume|Creating an Image from a Volume]] | ||
=Sharing an image with another project= | =Sharing an image with another project= <!--T:8--> | ||
Sharing an image with another project is a two-step process. | Sharing an image with another project is a two-step process. | ||
<!--T:9--> | |||
# A member of the project owning the image must share it with a second project. | # A member of the project owning the image must share it with a second project. | ||
# A member of the second project must accept the newly shared image. | # A member of the second project must accept the newly shared image. | ||
<!--T:10--> | |||
To share an image a member in the project owning the image uses the [[OpenStack Command Line Clients|OpenStack]] command below. | To share an image a member in the project owning the image uses the [[OpenStack Command Line Clients|OpenStack]] command below. | ||
<source lang="console"> | <source lang="console"> | ||
Line 38: | Line 44: | ||
<code><IMAGE_ID></code> is the ID of the image to be shared, and <code><MEMBER_ID></code> is the ID of the project to share it with. | <code><IMAGE_ID></code> is the ID of the image to be shared, and <code><MEMBER_ID></code> is the ID of the project to share it with. | ||
<!--T:11--> | |||
To accept the shared image a member in the second project uses the [[OpenStack_Command_Line_Clients#Separate_Command-line_interfaces|OpenStack]] command below. | To accept the shared image a member in the second project uses the [[OpenStack_Command_Line_Clients#Separate_Command-line_interfaces|OpenStack]] command below. | ||
<source lang="console"> | <source lang="console"> | ||
Line 50: | Line 57: | ||
<!--T:12--> | |||
To check the status of image membership use the following command. | To check the status of image membership use the following command. | ||
<source lang="console"> | <source lang="console"> | ||
Line 60: | Line 68: | ||
</source> | </source> | ||
=Downloading an Image= | =Downloading an Image= <!--T:13--> | ||
The first step is to install the OpenStack client and download the OpenStack RC file and source it (see [[OpenStack Command Line Clients]]). | The first step is to install the OpenStack client and download the OpenStack RC file and source it (see [[OpenStack Command Line Clients]]). | ||
The OpenStack client can list the available images on your OpenStack project with | The OpenStack client can list the available images on your OpenStack project with | ||
Line 66: | Line 74: | ||
producing something like: | producing something like: | ||
+--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | <!--T:14--> | ||
+--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | |||
| ID | Name | Disk Format | Container Format | Size | Status | | | ID | Name | Disk Format | Container Format | Size | Status | | ||
+--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | +--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | ||
Line 83: | Line 92: | ||
+--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | +--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | ||
<!--T:15--> | |||
You may need an additional option(s), such as <code>--long</code>, to see all the columns above depending on the version of the client you are using. | You may need an additional option(s), such as <code>--long</code>, to see all the columns above depending on the version of the client you are using. | ||
<!--T:16--> | |||
You can then download a particular image with | You can then download a particular image with | ||
{{Command|openstack image save --file ./<file-name-for-image>.<format> <ID>}} | {{Command|openstack image save --file ./<file-name-for-image>.<format> <ID>}} | ||
where <format> matches the value in the ''Disk format'' column and <ID> matches the value in the ''ID'' column. | where <format> matches the value in the ''Disk format'' column and <ID> matches the value in the ''ID'' column. | ||
=Uploading an Image= | =Uploading an Image= <!--T:17--> | ||
The first step is to install the OpenStack client and download the OpenStack RC file and source it (see [[OpenStack Command Line Clients]]). | The first step is to install the OpenStack client and download the OpenStack RC file and source it (see [[OpenStack Command Line Clients]]). | ||
Then run the command | Then run the command | ||
{{Command|openstack image create --file <path-to-local-file-image> --disk-format <format> <new-image-name>}} | {{Command|openstack image create --file <path-to-local-file-image> --disk-format <format> <new-image-name>}} | ||
<!--T:18--> | |||
where | where | ||
* <path-to-local-file-image> is the path to the file containing the image you wish to upload from your local machine, | * <path-to-local-file-image> is the path to the file containing the image you wish to upload from your local machine, | ||
Line 99: | Line 111: | ||
* <new-image-name> is the name of the image as it appears on the OpenStack dashboard. | * <new-image-name> is the name of the image as it appears on the OpenStack dashboard. | ||
=Creating a VirtualBox VM from a Cloud Image= | =Creating a VirtualBox VM from a Cloud Image= <!--T:19--> | ||
[https://www.virtualbox.org/ VirtualBox] is a software package which allows you to create and run virtual machines on your desktop or laptop. It can be run on many different operating systems (Windows, Linux, Mac) and the virtual machines it creates may run one of many different operating systems. | [https://www.virtualbox.org/ VirtualBox] is a software package which allows you to create and run virtual machines on your desktop or laptop. It can be run on many different operating systems (Windows, Linux, Mac) and the virtual machines it creates may run one of many different operating systems. | ||
<!--T:20--> | |||
To use a QCOW2 image downloaded from an OpenStack cloud, as shown above, with VirtualBox you will need to convert the image in the qcow2 format to the vmdk format. This can be done with the <code>qemu-img</code> tool. This can be installed with something like | To use a QCOW2 image downloaded from an OpenStack cloud, as shown above, with VirtualBox you will need to convert the image in the qcow2 format to the vmdk format. This can be done with the <code>qemu-img</code> tool. This can be installed with something like | ||
{{Command|sudo apt-get install qemu-utils}} | {{Command|sudo apt-get install qemu-utils}} | ||
Line 108: | Line 121: | ||
You can then create a new virtual machine and attach the vmdk image to it (see [http://techathlon.com/how-to-run-a-vmdk-file-in-oracle-virtualbox/ how to run a vmdk file in virtualbox] for detailed instructions on this). | You can then create a new virtual machine and attach the vmdk image to it (see [http://techathlon.com/how-to-run-a-vmdk-file-in-oracle-virtualbox/ how to run a vmdk file in virtualbox] for detailed instructions on this). | ||
<!--T:21--> | |||
[[Category:CC-Cloud]] | [[Category:CC-Cloud]] | ||
</translate> | </translate> |
Revision as of 20:26, 7 November 2022
Parent page: Cloud
Images are files which contain the contents of a virtual disk. Often Images contain a base operating system used to create a volume or an ephemeral disk from which a virtual machine boots. An ephemeral disk is a virtual disk file which resides on the host (or hypervisor) where the virtual machine runs. Ephemeral disk files are destroyed when a VM is destroyed, in contrast to volumes. Images are portable in that they can be downloaded from the cloud, used to create a virtual machine using virtual box or similar on your laptop, and uploaded to another cloud and used to create a new virtual machine. This is not the case with volumes or ephemeral disks. Images come in a variety of formats. Some commonly encountered formats are, raw, qcow2, vmdk, and vdi.
If sharing your virtual machine images, be sure to remove sensitive information such as public/private keys, configuration files containing passwords, etc. If uploading an image created from a virtual box virtual machine to our clouds, it must have cloud-init installed and configured correctly (see openstack docs on creating images manually for more details).
For a list of images provided by our staff, see images.
Creating an Image from a VM
The procedure for creating an image of a VM depends on whether it is booting from a volume (typically "p" flavors), or from an ephemeral disk (typically "c" flavors).
If booting from an ephemeral disk
the OpenStack Command Line Clients can be used with the command:
[name@server ~]$ openstack server image create <server-name>
where <server-name>
should be replaced with the name of your server. This action will only include the VM's root drive (e.g. /dev/vda) in the image. Ephemeral drives and non-boot attached volumes will not be included in the image, so additional measures should be taken to preserve this data. In addition, if the VM is writing to disk while the image is being created the filesystem may be captured in an inconsistent state. We recommend the VM be shut off (not deleted) before an image is created from it.
If booting from a volume
see Creating an Image from a Volume
Sharing an image with another project
Sharing an image with another project is a two-step process.
- A member of the project owning the image must share it with a second project.
- A member of the second project must accept the newly shared image.
To share an image a member in the project owning the image uses the OpenStack command below.
[name@server]$ glance member-create <IMAGE_ID> <MEMBER_ID>
+------------+-------------+---------+
| Image ID | Member ID | Status |
+------------+-------------+---------+
| <IMAGE_ID> | <MEMBER_ID> | pending |
+------------+-------------+---------+
where
<IMAGE_ID>
is the ID of the image to be shared, and <MEMBER_ID>
is the ID of the project to share it with.
To accept the shared image a member in the second project uses the OpenStack command below.
[name@server]$ glance member-update <IMAGE_ID> <MEMBER_ID> <MEMBER_STATUS>
+------------+-------------+----------+
| Image ID | Member ID | Status |
+------------+-------------+----------+
| <IMAGE_ID> | <MEMBER_ID> | accepted |
+------------+-------------+----------+
where <IMAGE_ID>
is ID of the image to update, <MEMBER_ID>
is the ID of the second project, and <MEMBER_STATUS>
is the new status of the image. Valid Values for status are accepted
, rejected
, and pending
. The image will then be available for use and appear in the OpenStack dashboard's list of images in the second project.
To check the status of image membership use the following command.
[name@server]$ glance member-list --image-id <IMAGE_ID>
+------------+-------------+----------+
| Image ID | Member ID | Status |
+------------+-------------+----------+
| <IMAGE_ID> | <MEMBER_ID> | accepted |
+------------+-------------+----------+
Downloading an Image
The first step is to install the OpenStack client and download the OpenStack RC file and source it (see OpenStack Command Line Clients). The OpenStack client can list the available images on your OpenStack project with
[name@server ~]$ openstack image list
producing something like:
+--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+ | 982761b2-c77b-4852-8ae3-bf98b32b8894 | Hadoop-2.2.4 | qcow2 | bare | 10253107200 | active | | b7bd3033-9836-406d-a8f2-2e91978026b4 | hadoopmaster | qcow2 | bare | 3493527552 | active | | 2c751755-854d-49c3-af82-d501e51e7159 | hadoopmaster-active | qcow2 | bare | 13134004224 | active | | c41012f4-ed82-4478-a81f-5efb96a31b1a | hadoopmaster-old | qcow2 | bare | 3493527552 | active | | 78e61a3f-b546-441a-b476-a7077b04ca36 | hadoopslave | qcow2 | bare | 3490971648 | active | | 516845c3-b256-4c6d-a2cb-e31e822c7e34 | hadoopslave1-active | qcow2 | bare | 8345026560 | active | | 1546bd86-5314-4fce-9576-e2f6930dad30 | hadoopslave1-old | qcow2 | bare | 3490971648 | active | | baf78e8d-8288-4854-a66b-812cdf3ccbca | TestVM | qcow2 | bare | 13167616 | active | | 2faf97d7-5b0b-44ce-8024-3bef5a634570 | test_ubuntu_initial | qcow2 | bare | 1799487488 | active | | 308b6614-396a-4360-9c33-4e86f41ea0ec | trusty | qcow2 | bare | 256180736 | active | | 9b3c3fda-2aca-43b5-a3e7-662a94f5e7fb | Ubuntu_14.04_Trusty-amd64-20150708 | qcow2 | bare | 257884672 | active | | f93e66cf-fec1-4460-8fc7-506e716fbf30 | ucernvm-prod.1.18-10 | raw | bare | 20971520 | active | +--------------------------------------+---------------------------------------+-------------+------------------+-------------+--------+
You may need an additional option(s), such as --long
, to see all the columns above depending on the version of the client you are using.
You can then download a particular image with
[name@server ~]$ openstack image save --file ./<file-name-for-image>.<format> <ID>
where <format> matches the value in the Disk format column and <ID> matches the value in the ID column.
Uploading an Image
The first step is to install the OpenStack client and download the OpenStack RC file and source it (see OpenStack Command Line Clients). Then run the command
[name@server ~]$ openstack image create --file <path-to-local-file-image> --disk-format <format> <new-image-name>
where
- <path-to-local-file-image> is the path to the file containing the image you wish to upload from your local machine,
- <format> is the disk format; if not specified, the raw format is assumed, which is incorrect since it can cause issues when using the image in OpenStack,
- <new-image-name> is the name of the image as it appears on the OpenStack dashboard.
Creating a VirtualBox VM from a Cloud Image
VirtualBox is a software package which allows you to create and run virtual machines on your desktop or laptop. It can be run on many different operating systems (Windows, Linux, Mac) and the virtual machines it creates may run one of many different operating systems.
To use a QCOW2 image downloaded from an OpenStack cloud, as shown above, with VirtualBox you will need to convert the image in the qcow2 format to the vmdk format. This can be done with the qemu-img
tool. This can be installed with something like
[name@server ~]$ sudo apt-get install qemu-utils
(previously the package was called qemu-img
) then do the conversion with
[name@server ~]$ qemu-img convert -f qcow2 vdisk.qcow2 -O vmdk vdisk.vmdk
You can then create a new virtual machine and attach the vmdk image to it (see how to run a vmdk file in virtualbox for detailed instructions on this).