Optimizing VM Migration Performance with Everpure

Red Hat

Audience
Public
Technology Integrations
Linux
Source Type
Documentation

This page provides a detailed technical examination of the two available migration data paths: standard VDDK and Everpure XCopy Offload. It covers their architecture, resource profiles, enablement procedures, and scaling characteristics. Understanding both paths is essential for planning migration windows and capacity requirements.

Traditional Migration Path (VDDK-Based Data Copy)

The standard Forklift migration path uses VMware's Virtual Disk Development Kit (VDDK) to read VM disk data from the source datastore. VDDK is a set of libraries provided by VMware that allows third-party tools to read and write VMDK disk images directly from VMFS or vVol datastores.

Resource VDDK Impact Bottleneck Threshold
Host CPU High — VDDK process on ESXi consumes CPU proportional to read throughput. ESXi host CPU saturation limits parallel migrations.
Source NIC High — full disk content transferred over management or storage network. 10 Gb/s NIC saturates at ~1.2 GB/s — a 500 GB disk takes ~7 min at line rate (typically longer due to overhead).
Worker NIC High — conversion pod receives and writes full disk content. Worker NIC bandwidth shared with application traffic.
Worker CPU Moderate — disk decompression and write operations. CPU contention with other pods on the worker node.
Migration time scaling Linear with disk data volume. Larger disks = proportionally longer migration times.
Concurrent VM limit 20 (Forklift default) — each concurrent migration consumes dedicated NIC and CPU resources. Increasing concurrency above 20 requires careful validation.

XCopy Offload Architecture and Enablement

XCopy Offload replaces the network-intensive VDDK copy with a FlashArray-native data movement operation. The SCSI EXTENDED COPY (XCOPY) command instructs the FlashArray to clone the source volume to a target location internally. Both operations execute within the array's controller, with no host-side data movement

Why XCopy Migration Time is Independent of Disk Size

The key insight behind XCopy performance is that FlashArray uses a redirect-on-write (RoW) clone mechanism. When the XCOPY command is issued, FlashArray creates a new volume that shares metadata pointers to the same underlying data blocks as the source volume — no physical data is moved immediately. The new volume is immediately accessible and bootable. Background destage operations write any modified blocks over time, but this is transparent to the accessing host.

From Forklift's perspective, the migration is complete as soon as the target volume is accessible — which happens after the metadata clone operation, not after all data blocks are physically copied. This is why a 500 GB disk migrates in approximately the same time as a 16 GB disk: the critical path is the metadata operation, not the data volume.

XCopy Enablement and StorageMap Configuration

# Step 1: Enable XCopy feature flag on Forklift controller
oc patch forkliftcontrollers.forklift.konveyor.io forklift-controller \
--type merge \
-p '{"spec": {"feature_copy_offload": "true"}}' \
-n openshift-mtv
# Step 2: StorageMap must include offloadPlugin section
# This is what activates XCopy for migrations using this StorageMap
offloadPlugin:
vsphereXcopyConfig:
secretRef: pure-storage-creds # FlashArray API token secret
storageVendorProduct: pureFlashArray
# Step 3: Provider spec must NOT include vddkInitImage
# Presence of vddkInitImage overrides XCopy and forces VDDK path

Impact on CPU, Network, and Migration Time

# The resource savings from XCopy Offload have two practical implications beyond faster migration times. First, production workloads on the ESXi hosts and OpenShift worker nodes experience less interference during migrations — VDDK migrations compete for NIC and CPU resources with running VMs, while XCopy migrations do not. Second, the reduced network load means migrations can be run during business hours without impacting application performance, rather than being restricted to maintenance windows.
Resource VDDK Impact XCopy Offload Impact Reduction
ESXi host CPU High — VDDK process scales with throughput Negligible — XCOPY is a REST API call ~95%
Source network (ESXi) Full disk data volume over NFC/management <1 MB metadata only ~99%
Worker node CPU Moderate — decompression and write Minimal — volume mount only ~80%
Worker NIC Full disk data received < 1 MB control traffic ~99%
FlashArray controller Read IOPS for VDDK reads Clone metadata operation (~ms) Net lower load
Migration window (500 GB) ~85 minutes ~5 minutes 94%
Migration window (1 TB RDM) ~8 hours ~5 minutes 98%
Provisioning mode impact Small variance across modes No impact — all modes identical N/A

Scaling Behavior for Batch Migrations

Understanding how migration performance scales with batch size is critical for planning migration waves. The two methods scale differently because their bottlenecks are in different layers.

VDDK Scaling

VDDK batch migrations scale approximately linearly with the number of VMs because the bottleneck is host resources — NIC bandwidth and CPU on both ESXi hosts and OpenShift worker nodes. Increasing the batch size beyond the Forklift concurrency limit (default 20) does not increase parallel throughput; it creates a queue. VMs beyond the first 20 wait for migration slots, and total wall-clock time scales proportionally.

XCopy Offload Scaling

XCopy batch migrations scale differently because the bottleneck shifts to FlashArray controller resources — specifically, the number of concurrent clone operations the controller can process. FlashArray controllers are highly parallelised and designed for concurrent operations. In lab testing, batches of 20 VMs migrated in 11 minutes 35 seconds using XCopy, compared to 32 minutes 23 seconds for VDDK — a 64% improvement at batch scale, on top of the single-VM improvement.

Batch Size VMFS / VDDK VMFS / XCopy vVols / VDDK vVols / Vol Copy
1 VM 15m 07s 4m 07s 11m 10s 4m 24s
20 VMs 32m 23s 11m 35s 1h 08m 50s 7m 21s
100 VMs 2h 19m 51s 53m 05s 5h 24m 40s 45m 30s