This is an automated email from the ASF dual-hosted git repository.

sureshanaparti pushed a commit to branch 4.22
in repository https://gitbox.apache.org/repos/asf/cloudstack-documentation.git


The following commit(s) were added to refs/heads/4.22 by this push:
     new cd7a44bc Add VDDK support in VMware to KVM migration (#640)
cd7a44bc is described below

commit cd7a44bcf2a79447f683ee104e9a0ba9f5661bde
Author: Harikrishna <[email protected]>
AuthorDate: Mon May 25 17:30:59 2026 +0530

    Add VDDK support in VMware to KVM migration (#640)
    
    * Add VDDK support in VMware to KVM migration
    
    * Refresh VMware import conversion storage screenshot
    
    * Address review comments
    
    Co-authored-by: Andrija Panic 
<[email protected]>
---
 .../import-vm-from-vmware-to-kvm-options.png       | Bin 356795 -> 53169 bytes
 .../importing_vmware_vms_into_kvm.rst              | 190 +++++++++++++++++++++
 2 files changed, 190 insertions(+)

diff --git a/source/_static/images/import-vm-from-vmware-to-kvm-options.png 
b/source/_static/images/import-vm-from-vmware-to-kvm-options.png
index 147776de..17578263 100644
Binary files a/source/_static/images/import-vm-from-vmware-to-kvm-options.png 
and b/source/_static/images/import-vm-from-vmware-to-kvm-options.png differ
diff --git 
a/source/adminguide/virtual_machines/importing_vmware_vms_into_kvm.rst 
b/source/adminguide/virtual_machines/importing_vmware_vms_into_kvm.rst
index 84843962..655b8e06 100644
--- a/source/adminguide/virtual_machines/importing_vmware_vms_into_kvm.rst
+++ b/source/adminguide/virtual_machines/importing_vmware_vms_into_kvm.rst
@@ -117,6 +117,196 @@ If you are hitting the following error when running 
ovftool, install the depende
         dnf install libnsl
 
 
+VDDK-based Optimized Conversion
+-------------------------------
+
+CloudStack supports an optimized VMware-to-KVM migration path using virt-v2v 
in vpx input mode combined with
+VMware's Virtual Disk Development Kit (VDDK). This method eliminates the OVF 
export phase entirely and streams
+disk blocks directly from the source hypervisor into the conversion pipeline, 
resulting in significantly faster
+migration times.
+
+The traditional OVF-based workflow operates in two sequential phases:
+
+1. Export the entire VM as OVF/VMDK files to temporary storage (full disk 
copy).
+2. Convert the local VMDK files using virt-v2v (second full disk read and 
write).
+
+The VDDK-based workflow replaces both phases with a single streaming pipeline:
+
+- virt-v2v connects directly to vCenter via ``vpx://``
+- Disk blocks are read on demand via VDDK (using nbdkit internally as the 
translation layer between the
+  VDDK API and virt-v2v's NBD block device interface)
+- Conversion and disk transfer happen concurrently
+- Only allocated blocks are transferred; zero-filled and sparse extents are 
skipped
+- No intermediate OVF or VMDK files are created
+
+This reduces disk I/O amplification, eliminates temporary staging storage, and 
shortens end-to-end migration time.
+
+.. note::
+
+   CloudStack does not distribute VDDK, operators must download it separately.
+   Along with the new VDDK-based conversion method the traditional OVF-based 
method remains supported for environments.
+   Operators can choose the conversion method on a per-migration basis in the 
UI import wizard.
+Host Prerequisites for VDDK-based Conversion
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To use VDDK-based migration, operators must prepare each KVM host that will 
run the conversion: install the conversion
+tools, install VDDK manually, configure libguestfs, and verify host 
connectivity to vCenter/ESXi.
+
+Example: prepare one KVM conversion host
+
+**Step 1: Install the conversion stack**
+
+Install the required conversion tools on the KVM host. Choose the appropriate 
command for your distribution:
+
+RHEL / Rocky / Alma Linux:
+
+::
+
+    dnf install -y epel-release
+    dnf config-manager --set-enabled crb
+    dnf install -y virt-v2v libguestfs-tools libguestfs-xfs qemu-img nbdkit
+
+Ubuntu:
+
+::
+
+    apt install -y \
+      virt-v2v \
+      libguestfs-tools \
+      libguestfs-xfs \
+      qemu-utils \
+      qemu-system-x86 \
+      libvirt-clients \
+      nbdkit
+
+**Step 2: Download and install VDDK**
+
+Download the VDDK tarball and extract it on the KVM host. The CloudStack agent 
will detect the VDDK library
+directory from the extracted package layout or it can also be configured 
explicitly via the ``vddk.lib.dir``
+property in ``/etc/cloudstack/agent/agent.properties``.
+
+::
+
+    mkdir -p /opt/vmware-vddk
+    tar -xf VMware-vix-disklib-9*.tar.gz -C /opt/vmware-vddk
+
+Expected layout after extraction::
+
+    /opt/vmware-vddk/vmware-vix-disklib-distrib/
+      lib64/
+      include/
+      bin64/
+
+**Step 3: Add EL9 compatibility symlink (when using VDDK 9)**
+
+On EL9 distributions, virt-v2v may expect ``libvixDiskLib.so.8``. Create this 
compatibility symlink:
+
+::
+
+    cd /opt/vmware-vddk/vmware-vix-disklib-distrib/lib64
+    ln -s libvixDiskLib.so.9 libvixDiskLib.so.8
+
+.. note:: This compatibility symlink is commonly required on RHEL 9, Rocky 
Linux 9, and Alma Linux 9.
+
+**Step 4: Verify host setup**
+
+::
+
+    ls /opt/vmware-vddk/vmware-vix-disklib-distrib/lib64/libvixDiskLib.so.8
+    virt-v2v --version
+    nbdkit --version
+
+**Step 5: Restart the CloudStack agent**
+
+Restart the CloudStack agent service so it detects the installed VDDK library 
and makes it available in the UI:
+
+::
+
+    systemctl restart cloudstack-agent
+
+After the agent restarts, verify that VDDK installation was detected by 
checking the host details in the CloudStack UI.
+
+**Step 6: Verify required network and firewall access**
+
+Allow the following ports through any firewall or network security controls 
between the KVM conversion host and the
+VMware endpoints:
+
+.. cssclass:: table-striped table-bordered table-hover
+
+==============================  ======  ==============================
+Target                          Port    Purpose
+==============================  ======  ==============================
+vCenter                         443     API / authentication
+ESXi hosts                      902     VDDK NFC disk transfer
+ESXi hosts                      443     VM metadata
+==============================  ======  ==============================
+
+Agent Properties for VDDK-based Conversion
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following properties can be configured in 
``/etc/cloudstack/agent/agent.properties`` on each KVM host to enable and tune 
the VDDK-based conversion.
+After editing this file, restart the CloudStack agent (``systemctl restart 
cloudstack-agent``).
+These values can also be passed in details parameters in importVm API as 
key-value pairs.
+
+.. cssclass:: table-striped table-bordered table-hover
+
++------------------------+----------------------------------------------------------------------+-------------------------------------------------------+
+| Property               | Description                                         
                 | Default / Example                                     |
++========================+======================================================================+=======================================================+
+| ``vddk.lib.dir``       | Path to the VDDK library directory on the KVM host. 
                 | ``/opt/vmware-vddk/vmware-vix-disklib-distrib``       |
+|                        | Passed to virt-v2v as ``-io vddk-libdir=<path>``.   
                 |                                                       |
++------------------------+----------------------------------------------------------------------+-------------------------------------------------------+
+| ``vddk.transports``    | Ordered VDDK transport preference.                  
                 | Example: ``nbd:nbdssl``                               |
+|                        | Passed as ``-io vddk-transports=<value>`` to 
virt-v2v.               |                                                       
|
++------------------------+----------------------------------------------------------------------+-------------------------------------------------------+
+| ``vddk.thumbprint``    | Optional vCenter SHA1 thumbprint.                   
                 | If unset, CloudStack computes it automatically on     |
+|                        | Passed as ``-io vddk-thumbprint=<value>`` to 
virt-v2v.               | the KVM host via ``openssl``.                         
|
++------------------------+----------------------------------------------------------------------+-------------------------------------------------------+
+
+Example configuration in ``/etc/cloudstack/agent/agent.properties``:
+
+::
+
+    # LIBGUESTFS backend to use for VMware to KVM conversion via VDDK 
(default: direct)
+    libguestfs.backend=direct
+
+    # Path to the VDDK library directory for VMware to KVM conversion via VDDK,
+    # passed to virt-v2v as -io vddk-libdir=<path>
+    vddk.lib.dir=/opt/vmware-vddk/vmware-vix-disklib-distrib
+
+    # Ordered VDDK transport preference for VMware to KVM conversion via VDDK, 
passed as
+    # -io vddk-transports=<value> to virt-v2v. Example: nbd:nbdssl
+    # vddk.transports=nbd:nbdssl
+
+    # Optional vCenter SHA1 thumbprint for VMware to KVM conversion via VDDK, 
passed as
+    # -io vddk-thumbprint=<value>. If unset, CloudStack computes it on the KVM 
host via openssl.
+    # vddk.thumbprint=
+
+
+Recommendations for Using VDDK-based Conversion
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**VM state before conversion**
+
+- **Windows VMs**: Must be powered off and gracefully shut down before 
conversion to ensure the filesystem is in a
+  clean state.
+
+**Use a single primary storage pool for direct conversion**
+
+When VDDK-based conversion is enabled, it is strongly recommended to configure 
the conversion to write directly
+to the destination primary storage pool (i.e., set *Convert to storage pool 
directly* to ``true`` in the import wizard).
+This eliminates the two-step process of the traditional OVF method, conversion 
to temporary storage followed by
+an import step, replacing it with a single streaming pipeline that writes 
converted QCOW2 disks directly to the
+destination primary storage.
+
+**Network placement for optimal disk transfer throughput**
+
+For best performance, place the KVM conversion host on the same high-bandwidth 
network as the source ESXi hosts.
+VDDK disk transfer uses VMware's NFC protocol on TCP port 902. ESXi routes NFC 
traffic to the conversion host based
+on standard IP routing, if the conversion host is reachable over a dedicated 
storage or migration network,
+ESXi will naturally select that VMkernel interface for disk transfer, keeping 
bulk data off the management network
+without requiring any special configuration in virt-v2v or CloudStack.
+
 Usage
 -----
 

Reply via email to