DEV Community

Cover image for VDDK vs No VDDK: Why Your First MTV Migration Is Slow
Gaganpreet Singh
Gaganpreet Singh

Posted on

VDDK vs No VDDK: Why Your First MTV Migration Is Slow

My first migration from VMware to OpenShift Virtualization worked. It was also painfully slow: one 10 GiB Ubuntu VM took 1 hour 24 minutes.

Step Time
ImageConversion (virt-v2v) 23 min 26 s
DiskTransfer, about 2.8 MB/s 60 min 42 s
Total 1 h 24 min

At that rate a 500 GiB production disk would take more than two days. Here's why, and the fix.

The symptom

While the copy ran, the migration Pod's log said:

nbdkit: curl[4]: ...
virt-v2v monitoring: Progress update, completed 17 %
Enter fullscreen mode Exit fullscreen mode

nbdkit curl means the disk was being read over HTTPS through vCenter (port 443). That path works anywhere, but it's slow, and it puts the load on vCenter.

The cause

The vSphere provider had no vddkInitImage in its settings:

oc get provider vcenter-lab -n openshift-mtv -o jsonpath='{.spec.settings}'
Enter fullscreen mode Exit fullscreen mode

VDDK is VMware's Virtual Disk Development Kit, the same library backup products use. With it, MTV reads disk data straight from the ESXi host over NBD on port 902, without going through vCenter. Red Hat isn't allowed to redistribute VDDK, so MTV can't ship it. You download it from Broadcom and wrap it in a small container image yourself.

The fix: build the VDDK image

# on a machine with podman and access to your registry
mkdir -p ~/vddk
tar -xzf ~/VMware-vix-disklib-8.0.*.x86_64.tar.gz -C ~/vddk
cat > ~/vddk/Containerfile <<'EOT'
FROM registry.access.redhat.com/ubi9/ubi-minimal
USER 1001
COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib
RUN mkdir -p /opt
ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"]
EOT
podman build -t <REGISTRY>/openshift-mtv/vddk:8.0 ~/vddk
podman push <REGISTRY>/openshift-mtv/vddk:8.0

# point the provider at it
oc patch provider vcenter-lab -n openshift-mtv --type merge \
  -p '{"spec":{"settings":{"vddkInitImage":"<REGISTRY>/openshift-mtv/vddk:8.0"}}}'
Enter fullscreen mode Exit fullscreen mode

Before your first wave, check

  • The OpenShift nodes can reach every ESXi host on TCP 902. A quick test from a node: timeout 4 bash -c "</dev/tcp/<esxi>/902" && echo open
  • The provider shows the VDDK image and is Ready: oc get provider -n openshift-mtv
  • You've timed one test VM with VDDK, so your wave plan uses your own throughput number, not a guess.

Lesson

Build the VDDK image before wave 1. Without it, MTV still works, which is exactly why it's easy to miss until a production disk takes days.

The full chapter, with the provider setup and real output, is in the free Lab Manual. Next in this series: what actually survives a migration.

Top comments (0)