Skip to content

3. Usage and Limitation

Neal edited this page Nov 20, 2024 · 16 revisions

Limitations

Ubuntu/Debian

virt-v2v tool does not support Grub2 update. The following message will be shown during conversion process:

WARNING: could not determine a way to update the configuration of Grub2

Depending on GRUB2 boot up complexity and configuration, boot process would require to be fixed by OS recovery tools (SystemRescueCD or Ubuntu Live Recovery)

Windows

Windows is only compatible with virt-v2v style conversion, will refuse to use --custom or --fallback.

Usage

Choose your Transfer Style

The four styles of transferring the disks available through the default virt-v2v style in order of performance are:

  1. Hybrid - This will utilize the RbVmomi2 library to download the image via curl for the VM, then convert it locally. Once downloaded, virt-v2v will be used to convert the disks locally. This is usually the fastest method although requires extra disk space.
  2. VDDK Library - This utilizes the Virtual Disk Development Kit provided by VMWare to transfer the disks, and is almost always the fastest method available. This will occur when the --vddk /path/to/lib is defined.
  3. ESXi Direct SSH Transfer - This copies the disk directly through an SSH connection to the ESXi host, it is reasonably faster than vCenter API transfer. This will occur if the EOPTS(--esxi/--esxi_user/[--esxi_pass]) options are utilized. This cannot be used with the VDDK option and will refuse to continue if both parameters are present.
  4. vCenter API - This is the slowest option, as there are limitations for transferring through vCenter API's "download" function. Simply leave out any VDDK or ESXi specific options for this to occur.

There is also the Custom conversion option which does not use virt-v2v and will use the RbVmomi2 library to download the image, then use qemu-img to convert the image and virt-customize or guestfish to prepare the image for KVM basically. This is only really recommended as a fallback option for some failure in virt-v2v's conversion process.

Listing Datacenters or Clusters in vCenter

oneswap list datacenters

oneswap list clusters [--datacenter DCName]

Listing Virtual Machines in vCenter

oneswap list vms [--datacenter DCName [--cluster Cluster1]]

# Note: `--cluster` will only work here if `--datacenter` is also defined.

Converting VM's from vCenter to OpenNebula

    oneswap convert 'Virtual Machine Name' [--vddk /path/to/vddk-lib]

    oneswap convert 'Virtual Machine Name' (--hybrid | --custom)

For faster conversion speeds, you can use VDDK VMware library by using --vddk option and supplying the full path to the extracted VDDK library you have obtained from VMWare. You can use either the ESXi options or the VDDK option, but not both. This VDDK parameter also does not work with the custom conversion or hybrid method since they download the disk.

Hybrid and Custom conversion types can't be used together. Hybrid will use the RbVmomi2 library to download which uses cURL and can be faster for transferring but will use more disk space during the conversion. Custom is only recommended when virt-v2v style conversions fail and most likely will require extra manual work to get the virtual machine to operate properly, while also requiring more disk space.

Choosing a Datastore Target

The --datastore <DATASTORE_ID> parameter should be used to define which IMAGE datastore the virtual disks will be created in. Without defining this parameter, the default datastore ID 1 will be used since that is automatically created.

Choosing a Format

The --format (raw|qcow2) parameter can be used to define what the virtual disk will be converted to. It will default to qcow2.

Converting Network Interfaces

In each OpenNebula Virtual Network used for migration targets, create an attribute VCENTER_NETWORK_MATCH with the same name of the Network in vCenter, This will automatically assign each NIC of the migrated VM to the proper network when defining the --network <DEFAULT_ID> parameter.

VCENTER_NETWORK_MATCH=VMware Network

oneswap requires a default network to be defined for the network interfaces that do not have a valid match by using --network <DEFAULT_ID> option. For example:

oneswap convert 'Virtual Machine Name' $VOPTS --network 1

Omitting the network parameter will not generate any networks for the virtual machine and you will need to create them manually.

See the full list of Parameters for more information.