6.13. Exporting and Importing Virtual Machines and Templates

Note

The export storage domain is deprecated. Storage data domains can be unattached from a data center and imported to another data center in the same environment, or in a different environment. Virtual machines, floating virtual disks, and templates can then be uploaded from the imported storage domain to the attached data center. See the Importing Existing Storage Domains section in the Red Hat Virtualization Administration Guide for information on importing storage domains.

You can export virtual machines and templates from, and import them to, data centers in the same or different Red Hat Virtualization environment. You can export or import virtual machines by using an export domain, a data domain, or by using a Red Hat Virtualization host.

When you export or import a virtual machine or template, properties including basic details such as the name and description, resource allocation, and high availability settings of that virtual machine or template are preserved.

The permissions and user roles of virtual machines and templates are included in the OVF files, so that when a storage domain is detached from one data center and attached to another, the virtual machines and templates can be imported with their original permissions and user roles. In order for permissions to be registered successfully, the users and roles related to the permissions of the virtual machines or templates must exist in the data center before the registration process.

You can also use the V2V feature to import virtual machines from other virtualization providers, such as RHEL 5 Xen or VMware, or import Windows virtual machines. V2V converts virtual machines so that they can be hosted by Red Hat Virtualization. For more information on installing and using V2V, see Converting Virtual Machines from Other Hypervisors to KVM with virt-v2v.

Important

Virtual machines must be shut down before being exported or imported.

6.13.1. Exporting a Virtual Machine to the Export Domain

Export a virtual machine to the export domain so that it can be imported into a different data center. Before you begin, the export domain must be attached to the data center that contains the virtual machine to be exported.

Warning

The virtual machine must be shut down before being exported.

Exporting a Virtual Machine to the Export Domain

  1. Click ComputeVirtual Machines and select a virtual machine.
  2. Click More Actions ( moreactions ), then click Export to Export Domain.
  3. Optionally, select the following check boxes in the Export Virtual Machine window:

    • Force Override: overrides existing images of the virtual machine on the export domain.
    • Collapse Snapshots: creates a single export volume per disk. This option removes snapshot restore points and includes the template in a template-based virtual machine, and removes any dependencies a virtual machine has on a template. For a virtual machine that is dependent on a template, either select this option, export the template with the virtual machine, or make sure the template exists in the destination data center.

      Note

      When you create a virtual machine from a template by clicking ComputeTemplates and clicking New VM, you wll see two storage allocation options in the Storage Allocation section in the Resource Allocation tab:

      • If Clone is selected, the virtual machine is not dependent on the template. The template does not have to exist in the destination data center.
      • If Thin is selected, the virtual machine is dependent on the template, so the template must exist in the destination data center or be exported with the virtual machine. Alternatively, select the Collapse Snapshots check box to collapse the template disk and virtual disk into a single disk.

      To check which option was selected, click a virtual machine’s name and click the General tab in the details view.

  4. Click OK.

The export of the virtual machine begins. The virtual machine displays in ComputeVirtual Machines with an Image Locked status while it is exported. Depending on the size of your virtual machine hard disk images, and your storage hardware, this can take up to an hour. Click the Events tab to view progress. When complete, the virtual machine has been exported to the export domain and displays in the VM Import tab of the export domain’s details view.

6.13.2. Exporting a Virtual Machine to a Data Domain

You can export a virtual machine to a data domain to do any of the following:

  • Migrate the virtual machine or its clone to another data center.
  • Store a clone of the virtual machine as a backup.
Warning

You cannot export a running virtual machine. Shut down the virtual machine before exporting it.

Prerequisite

The data domain is attached to a data center.

Procedure

  1. Click ComputeVirtual Machines and select a virtual machine.
  2. Click the Disks tab.
  3. Select all disks belonging to the virtual machine.
  4. Click More Actions ( moreactions ), then click Move.
  5. Under Target, select the domain.
  6. Click OK.

The disks migrate to the new domain.

Note

When you move a disk from one type of data domain another, the disk format changes accordingly. For example, if the disk is on an NFS data domain, and it is in sparse format, then if you move the disk to an iSCSI domain its format changes to preallocated. This is different from using an export domain, because an export domain is NFS.

6.13.3. Importing a Virtual Machine from the Export Domain

You have a virtual machine on an export domain. Before the virtual machine can be imported to a new data center, the export domain must be attached to the destination data center.

Importing a Virtual Machine into the Destination Data Center

  1. Click StorageDomains and select the export domain. The export domain must have a status of Active.
  2. Click the export domain’s name to go to the details view.
  3. Click the VM Import tab to list the available virtual machines to import.
  4. Select one or more virtual machines to import and click Import.
  5. Select the Target Cluster.
  6. Select the Collapse Snapshots check box to remove snapshot restore points and include templates in template-based virtual machines.
  7. Click the virtual machine to be imported and click on the Disks sub-tab. From this tab, you can use the Allocation Policy and Storage Domain drop-down lists to select whether the disk used by the virtual machine will be thinly provisioned or preallocated, and can also select the storage domain on which the disk will be stored. An icon is also displayed to indicate which of the disks to be imported acts as the boot disk for that virtual machine.
  8. Click OK to import the virtual machines.

    The Import Virtual Machine Conflict window opens if the virtual machine exists in the virtualized environment.

    Choose one of the following radio buttons:

    • Don’t import
    • Import as cloned and enter a unique name for the virtual machine in the New Name field.
  9. Optionally select the Apply to all check box to import all duplicated virtual machines with the same suffix, and then enter a suffix in the Suffix to add to the cloned VMs field.
  10. Click OK.
Important

During a single import operation, you can only import virtual machines that share the same architecture. If any of the virtual machines to be imported have a different architecture to that of the other virtual machines to be imported, a warning will display and you will be prompted to change your selection so that only virtual machines with the same architecture will be imported.

6.13.4. Importing a Virtual Machine from a VMware Provider

Import virtual machines from a VMware vCenter provider to your Red Hat Virtualization environment. You can import from a VMware provider by entering its details in the Import Virtual Machine(s) window during each import operation, or you can add the VMware provider as an external provider, and select the preconfigured provider during import operations. To add an external provider, see Adding a VMware Instance as a Virtual Machine Provider.

Red Hat Virtualization uses V2V to import VMware virtual machines. For OVA files, the only disk format Red Hat Virtualization supports is VMDK.

The virt-v2v package must be installed on at least one host (referred to in this procedure as the proxy host). The virt-v2v package is available by default on Red Hat Virtualization Hosts (RHVH) and is installed on Red Hat Enterprise Linux hosts as a dependency of VDSM when added to the Red Hat Virtualization environment. Red Hat Enterprise Linux hosts must be Red Hat Enterprise Linux 7.2 or later.

Note

The virt-v2v package is not available on the ppc64le architecture and these hosts cannot be used as proxy hosts.

Warning

The virtual machine must be shut down before being imported. Starting the virtual machine through VMware during the import process can result in data corruption.

Important

An import operation can only include virtual machines that share the same architecture. If any virtual machine to be imported has a different architecture, a warning will display and you will be prompted to change your selection to include only virtual machines with the same architecture.

Note

If the import fails, refer to the relevant log file in /var/log/vdsm/import/ and to /var/log/vdsm/vdsm.log on the proxy host for details.

Importing a Virtual Machine from VMware

  1. Click ComputeVirtual Machines.
  2. Click More Actions ( moreactions ), then click Import to open the Import Virtual Machine(s) window.
  3. Select VMware from the Source list.
  4. If you have configured a VMware provider as an external provider, select it from the External Provider list. Verify that the provider credentials are correct. If you did not specify a destination data center or proxy host when configuring the external provider, select those options now.
  5. If you have not configured a VMware provider, or want to import from a new VMware provider, provide the following details:

    1. Select from the list the Data Center in which the virtual machine will be available.
    2. Enter the IP address or fully qualified domain name of the VMware vCenter instance in the vCenter field.
    3. Enter the IP address or fully qualified domain name of the host from which the virtual machines will be imported in the ESXi field.
    4. Enter the name of the data center and the cluster in which the specified ESXi host resides in the Data Center field.
    5. If you have exchanged the SSL certificate between the ESXi host and the Manager, leave Verify server’s SSL certificate checked to verify the ESXi host’s certificate. If not, uncheck the option.
    6. Enter the Username and Password for the VMware vCenter instance. The user must have access to the VMware data center and ESXi host on which the virtual machines reside.
    7. Select a host in the chosen data center with virt-v2v installed to serve as the Proxy Host during virtual machine import operations. This host must also be able to connect to the network of the VMware vCenter external provider.
  6. Click Load to list the virtual machines on the VMware provider that can be imported.
  7. Select one or more virtual machines from the Virtual Machines on Source list, and use the arrows to move them to the Virtual Machines to Import list. Click Next.

    Note

    If a virtual machine’s network device uses the driver type e1000 or rtl8139, the virtual machine will use the same driver type after it has been imported to Red Hat Virtualization.

    If required, you can change the driver type to VirtIO manually after the import. To change the driver type after a virtual machine has been imported, see Section 5.2.2, “Editing a Network Interface”. If the network device uses driver types other than e1000 or rtl8139, the driver type is changed to VirtIO automatically during the import. The Attach VirtIO-drivers option allows the VirtIO drivers to be injected to the imported virtual machine files so that when the driver is changed to VirtIO, the device will be properly detected by the operating system.

  8. Select the Cluster in which the virtual machines will reside.
  9. Select a CPU Profile for the virtual machines.
  10. Select the Collapse Snapshots check box to remove snapshot restore points and include templates in template-based virtual machines.
  11. Select the Clone check box to change the virtual machine name and MAC addresses, and clone all disks, removing all snapshots. If a virtual machine appears with a warning symbol beside its name or has a tick in the VM in System column, you must clone the virtual machine and change its name.
  12. Click on each virtual machine to be imported and click on the Disks sub-tab. Use the Allocation Policy and Storage Domain lists to select whether the disk used by the virtual machine will be thinly provisioned or preallocated, and select the storage domain on which the disk will be stored. An icon is also displayed to indicate which of the disks to be imported acts as the boot disk for that virtual machine.
  13. If you selected the Clone check box, change the name of the virtual machine in the General sub-tab.
  14. Click OK to import the virtual machines.

The CPU type of the virtual machine must be the same as the CPU type of the cluster into which it is being imported. To view the cluster’s CPU Type in the Administration Portal:

  1. Click ComputeClusters.
  2. Select a cluster.
  3. Click Edit.
  4. Click the General tab.

If the CPU type of the virtual machine is different, configure the imported virtual machine’s CPU type:

  1. Click ComputeVirtual Machines.
  2. Select the virtual machine.
  3. Click Edit.
  4. Click the System tab.
  5. Click the Advanced Parameters arrow.
  6. Specify the Custom CPU Type and click OK.

6.13.5. Exporting a Virtual Machine to a Host

You can export a virtual machine to a specific path or mounted NFS shared storage on a host in the Red Hat Virtualization data center. The export will produce an Open Virtual Appliance (OVA) package.

Warning

The virtual machine must be shut down before being exported.

Exporting a Virtual Machine to a Host

  1. Click ComputeVirtual Machines and select a virtual machine.
  2. Click More Actions ( moreactions ), then click Export to OVA.
  3. Select the host from the Host drop-down list.
  4. Enter the absolute path to the export directory in the Directory field, including the trailing slash. For example: /images2/ova/
  5. Optionally change the default name of the file in the Name field.
  6. Click OK

The status of the export can be viewed in the Events tab.

6.13.6. Importing a Virtual Machine from a Host

Import an Open Virtual Appliance (OVA) file into your Red Hat Virtualization environment. You can import the file from any Red Hat Virtualization Host in the data center.

Important

Currently, only Red Hat Virtualization and VMware OVAs can be imported. KVM and Xen are not supported.

The import process uses virt-v2v. Only virtual machines running operating systems compatible with virt-v2v can be successfully imported. For a current list of compatible operating systems, see https://access.redhat.com/articles/1351473.

Importing an OVA File

  1. Copy the OVA file to a host in your cluster, in a file system location such as var/tmp.

    Note

    The location can be a local directory or a remote nfs mount, as long as it has sufficient space and is accessible to the qemu user (UID 36).

  2. Ensure that the OVA file has permissions allowing read/write access to the qemu user (UID 36) and the kvm group (GID 36):

    # chown 36:36 path_to_OVA_file/file.OVA
  3. Click ComputeVirtual Machines.
  4. Click More Actions ( moreactions ), then click Import to open the Import Virtual Machine(s) window.

    1. Select Virtual Appliance (OVA) from the Source list.
    2. Select a host from the Host list.
    3. In the Path field, specify the absolute path of the OVA file.
    4. Click Load to list the virtual machine to be imported.
    5. Select the virtual machine from the Virtual Machines on Source list, and use the arrows to move it to the Virtual Machines to Import list.
  5. Click Next.

    1. Select the Storage Domain for the virtual machine.
    2. Select the Target Cluster where the virtual machines will reside.
    3. Select the CPU Profile for the virtual machines.
    4. Select the Allocation Policy for the virtual machines.
    5. Optionally, select the Attach VirtIO-Drivers check box and select the appropriate image on the list to add VirtIO drivers.
    6. Select the Allocation Policy for the virtual machines.
    7. Select the virtual machine, and on the General tab select the Operating System.
    8. On the Network Interfaces tab, select the Network Name and Profile Name.
    9. Click the Disks tab to view the Alias, Virtual Size, and Actual Size of the virtual machine.
  6. Click OK to import the virtual machines.

6.13.7. Importing a Virtual Machine from a RHEL 5 Xen Host

Import virtual machines from Xen on Red Hat Enterprise Linux 5 to your Red Hat Virtualization environment. Red Hat Virtualization uses V2V to import QCOW2 or raw virtual machine disk formats.

The virt-v2v package must be installed on at least one host (referred to in this procedure as the proxy host). The virt-v2v package is available by default on Red Hat Virtualization Hosts (RHVH) and is installed on Red Hat Enterprise Linux hosts as a dependency of VDSM when added to the Red Hat Virtualization environment. Red Hat Enterprise Linux hosts must be Red Hat Enterprise Linux 7.2 or later.

Warning

If you are importing a Windows virtual machine from a RHEL 5 Xen host and you are using VirtIO devices, install the VirtIO drivers before importing the virtual machine. If the drivers are not installed, the virtual machine may not boot after import.

The VirtIO drivers can be installed from the virtio-win.iso or the RHV-toolsSetup_version.iso. See Section 3.3.2, “Installing the Guest Agents, Tools, and Drivers on Windows” for details.

If you are not using VirtIO drivers, review the configuration of the virutal machine before first boot to ensure that VirtIO devices are not being used.

Note

The virt-v2v package is not available on the ppc64le architecture and these hosts cannot be used as proxy hosts.

Important

An import operation can only include virtual machines that share the same architecture. If any virtual machine to be imported has a different architecture, a warning will display and you will be prompted to change your selection to include only virtual machines with the same architecture.

Note

If the import fails, refer to the relevant log file in /var/log/vdsm/import/ and to /var/log/vdsm/vdsm.log on the proxy host for details.

Importing a Virtual Machine from RHEL 5 Xen

  1. Shut down the virtual machine. Starting the virtual machine through Xen during the import process can result in data corruption.
  2. Enable public key authentication between the proxy host and the RHEL 5 Xen host:

    1. Log in to the proxy host and generate SSH keys for the vdsm user.

      # sudo -u vdsm ssh-keygen
    2. Copy the vdsm user’s public key to the RHEL 5 Xen host.

      # sudo -u vdsm ssh-copy-id root@xenhost.example.com
    3. Log in to the RHEL 5 Xen host to verify that the login works correctly.

      # sudo -u vdsm ssh root@xenhost.example.com
  3. Log in to the Administration Portal.
  4. Click ComputeVirtual Machines.
  5. Click More Actions ( moreactions ), then click Import to open the Import Virtual Machine(s) window.
  6. Select the Data Center that contains the proxy host.
  7. Select XEN (via RHEL) from the Source drop-down list.
  8. Optionally, select a RHEL 5 Xen External Provider from the drop-down list. The URI will be pre-filled with the correct URI. See Adding a RHEL 5 Xen Host as a Virtual Machine Provider in the Administration Guide for more information.
  9. Enter the URI of the RHEL 5 Xen host. The required format is pre-filled; you must replace <hostname> with the host name of the RHEL 5 Xen host.
  10. Select the proxy host from the Proxy Host drop-down list.
  11. Click Load to list the virtual machines on the RHEL 5 Xen host that can be imported.
  12. Select one or more virtual machines from the Virtual Machines on Source list, and use the arrows to move them to the Virtual Machines to Import list.

    Note

    Due to current limitations, Xen virtual machines with block devices do not appear in the Virtual Machines on Source list. They must be imported manually. See Importing a Block-Based Virtual Machine from a RHEL 5 Xen Host.

  13. Click Next.
  14. Select the Cluster in which the virtual machines will reside.
  15. Select a CPU Profile for the virtual machines.
  16. Use the Allocation Policy and Storage Domain lists to select whether the disk used by the virtual machine will be thinly provisioned or preallocated, and select the storage domain on which the disk will be stored.

    Note

    The target storage domain must be a file-based domain. Due to current limitations, specifying a block-based domain causes the V2V operation to fail.

  17. If a virtual machine appears with a warning symbol beside its name, or has a tick in the VM in System column, select the Clone check box to clone the virtual machine.

    Note

    Cloning a virtual machine changes its name and MAC addresses and clones all of its disks, removing all snapshots.

  18. Click OK to import the virtual machines.

The CPU type of the virtual machine must be the same as the CPU type of the cluster into which it is being imported. To view the cluster’s CPU Type in the Administration Portal:

  1. Click ComputeClusters.
  2. Select a cluster.
  3. Click Edit.
  4. Click the General tab.

If the CPU type of the virtual machine is different, configure the imported virtual machine’s CPU type:

  1. Click ComputeVirtual Machines.
  2. Select the virtual machine.
  3. Click Edit.
  4. Click the System tab.
  5. Click the Advanced Parameters arrow.
  6. Specify the Custom CPU Type and click OK.

Importing a Block-Based Virtual Machine from a RHEL 5 Xen Host

  1. Enable public key authentication between the proxy host and the RHEL 5 Xen host:

    1. Log in to the proxy host and generate SSH keys for the vdsm user.

      # sudo -u vdsm ssh-keygen
    2. Copy the vdsm user’s public key to the RHEL 5 Xen host.

      # sudo -u vdsm ssh-copy-id root@xenhost.example.com
    3. Log in to the RHEL 5 Xen host to verify that the login works correctly.

      # sudo -u vdsm ssh root@xenhost.example.com
  2. Attach an export domain. See Attaching an Existing Export Domain to a Data Center in the Administration Guide for details.
  3. On the proxy host, copy the virtual machine from the RHEL 5 Xen host:

    # virt-v2v-copy-to-local -ic xen+ssh://root@xenhost.example.com vmname
  4. Convert the virtual machine to libvirt XML and move the file to your export domain:

    # virt-v2v -i libvirtxml vmname.xml -o rhev -of raw -os storage.example.com:/exportdomain
  5. In the Administration Portal, click StorageDomains, click the export domain’s name, and click the VM Import tab in the details view to verify that the virtual machine is in your export domain.
  6. Import the virtual machine into the destination data domain. See Section 6.13.3, “Importing a Virtual Machine from the Export Domain” for details.

6.13.8. Importing a Virtual Machine from a KVM Host

Import virtual machines from KVM to your Red Hat Virtualization environment. Red Hat Virtualization converts KVM virtual machines to the correct format before they are imported. You must enable public key authentication between the KVM host and at least one host in the destination data center (this host is referred to in the following procedure as the proxy host).

Warning

The virtual machine must be shut down before being imported. Starting the virtual machine through KVM during the import process can result in data corruption.

Important

An import operation can only include virtual machines that share the same architecture. If any virtual machine to be imported has a different architecture, a warning will display and you will be prompted to change your selection to include only virtual machines with the same architecture.

Note

If the import fails, refer to the relevant log file in /var/log/vdsm/import/ and to /var/log/vdsm/vdsm.log on the proxy host for details.

Importing a Virtual Machine from KVM

  1. Enable public key authentication between the proxy host and the KVM host:

    1. Log in to the proxy host and generate SSH keys for the vdsm user.

      # sudo -u vdsm ssh-keygen
    2. Copy the vdsm user’s public key to the KVM host. The proxy host’s known_hosts file will also be updated to include the host key of the KVM host.

      # sudo -u vdsm ssh-copy-id root@kvmhost.example.com
    3. Log in to the KVM host to verify that the login works correctly.

      # sudo -u vdsm ssh root@kvmhost.example.com
  2. Log in to the Administration Portal.
  3. Click ComputeVirtual Machines.
  4. Click More Actions ( moreactions ), then click Import to open the Import Virtual Machine(s) window.
  5. Select the Data Center that contains the proxy host.
  6. Select KVM (via Libvirt) from the Source drop-down list.
  7. Optionally, select a KVM provider External Provider from the drop-down list. The URI will be pre-filled with the correct URI. See Adding a KVM Host as a Virtual Machine Provider in the Administration Guide for more information.
  8. Enter the URI of the KVM host in the following format:

    qemu+ssh://root@kvmhost.example.com/system
  9. Keep the Requires Authentication check box selected.
  10. Enter root in the Username field.
  11. Enter the Password of the KVM host’s root user.
  12. Select the Proxy Host from the drop-down list.
  13. Click Load to list the virtual machines on the KVM host that can be imported.
  14. Select one or more virtual machines from the Virtual Machines on Source list, and use the arrows to move them to the Virtual Machines to Import list.
  15. Click Next.
  16. Select the Cluster in which the virtual machines will reside.
  17. Select a CPU Profile for the virtual machines.
  18. Optionally, select the Collapse Snapshots check box to remove snapshot restore points and include templates in template-based virtual machines.
  19. Optionally, select the Clone check box to change the virtual machine name and MAC addresses, and clone all disks, removing all snapshots. If a virtual machine appears with a warning symbol beside its name or has a tick in the VM in System column, you must clone the virtual machine and change its name.
  20. Click on each virtual machine to be imported and click on the Disks sub-tab. Use the Allocation Policy and Storage Domain lists to select whether the disk used by the virtual machine will be thin provisioned or preallocated, and select the storage domain on which the disk will be stored. An icon is also displayed to indicate which of the disks to be imported acts as the boot disk for that virtual machine. See Virtual Disk Storage Allocation Policies in the Technical Reference for more information.

    Note

    The target storage domain must be a file-based domain. Due to current limitations, specifying a block-based domain causes the operation to fail.

  21. If you selected the Clone check box, change the name of the virtual machine in the General tab.
  22. Click OK to import the virtual machines.

The CPU type of the virtual machine must be the same as the CPU type of the cluster into which it is being imported. To view the cluster’s CPU Type in the Administration Portal:

  1. Click ComputeClusters.
  2. Select a cluster.
  3. Click Edit.
  4. Click the General tab.

If the CPU type of the virtual machine is different, configure the imported virtual machine’s CPU type:

  1. Click ComputeVirtual Machines.
  2. Select the virtual machine.
  3. Click Edit.
  4. Click the System tab.
  5. Click the Advanced Parameters arrow.
  6. Specify the Custom CPU Type and click OK.

6.13.9. Importing a Red Hat KVM Guest Image

You can import a Red Hat-provided KVM virtual machine image. This image is a virtual machine snapshot with a preconfigured instance of Red Hat Enterprise Linux installed.

You can configure this image with the cloud-init tool, and use it to provision new virtual machines. This eliminates the need to install and configure the operating system and provides virtual machines that are ready for use.

Importing a Red Hat KVM Guest Image

  1. Download the most recent KVM virtual machine image from the Download Red Hat Enterprise Linux list, in the Product Software tab.
  2. Upload the virtual machine image using the Manager or the REST API. See Uploading a Disk Image to a Storage Domain in the Administration Guide.
  3. Create a new virtual machine and attach the uploaded disk image to it. See Section 2.1, “Creating a Virtual Machine”.
  4. Optionally, use cloud-init to configure the virtual machine. See Section 7.8, “Using Cloud-Init to Automate the Configuration of Virtual Machines” for details.
  5. Optionally, create a template from the virtual machine. You can generate new virtual machines from this template. See Chapter 7, Templates for information about creating templates and generating virtual machines from templates.