OpenShift Migration Toolkit for Virtualization with FlashArray

Red Hat

Audience
Public
Technology Integrations
Linux
Source Type
Documentation

This document provides a deep dive into Everpure's integration with Red Hat Migration Toolkit for Virtualization.

Everpure and Red Hat have collaborated extensively to optimize the migration process from VMware environments to OpenShift using the Migration Toolkit for Virtualization (MTV). MTV leverages the forklift project to accelerate migrations from virtualization platforms to KubeVirt. This whitepaper describes the strategic rationale, decision framework, technical architecture, step-by-step migration workflow, and Day 2 operations for organizations managing this transition.

For further reading and reference refer to the following documentation.

This document provides a technical deep dive into the migration process, focusing on:

  • End-to-end migration architecture
  • Execution workflows using MTV
  • Performance optimization using FlashArray offload capabilities
  • Measured migration outcomes from lab validation

The goal is to enable predictable, scalable, and efficient migration while preserving existing storage investments on FlashArray.

Migration Objective and Scope

The objective of this migration is to transition virtual machine workloads from VMware vSphere to Red Hat OpenShift Virtualization while preserving the existing Everpure FlashArray storage investment and maintaining data availability throughout the transition.

  • Migration of VM workloads from ESXi to KubeVirt on worker nodes
  • iSCSI, NVMe/TCP, and Fibre Channel transport validation
  • Forklift (MTV) with Everpure XCopy Offload
  • VMware and OpenShift coexistence
  • Day 2 operations (monitoring, DR, backup, scaling)

Role of Everpure in Accelerating Migration

  • VMware and OpenShift share the same FlashArray
  • Enables hardware-assisted data movement using XCopy offload (VMFS)
  • Enables full offload of the migration to the array with volume copy (vVols and RDMs)

  • Eliminates dependency on host-based data transfer (VDDK bottlenecks)
  • Reduces CPU, memory, and network utilization during migration
  • Provides consistent storage performance across source and target environments
  • Portworx creates volumes via FlashArray API
  • Portworx maps them to OpenShift nodes
  • Portworx presents storage via multipath

Key Outcomes and Performance Highlights

  • Significant reduction in migration time using FlashArray offload
  • Improved scalability for VM migrations
  • Consistent performance across different VM sizes and storage types
  • Reduced infrastructure overhead during migration execution

Migration Architecture Overview

This section describes the complete technical architecture of the migration — the source VMware environment, the target OpenShift Virtualization platform, the FlashArray storage integration, the migration tooling, and the end-to-end data flow.

Source Environment: VMware vSphere

The source environment is a standard VMware vSphere deployment in which ESXi hosts run virtual machine workloads under vCenter management. Storage is provided by Everpure FlashArray, accessed by ESXi hosts via iSCSI or Fibre Channel. Datastores are configured as VMFS or vVols, both backed directly by FlashArray volumes. Currently the xcopy and vol copy offload is a SCSI and Block only integration.

vCenter as the Migration Source

MTV connects to vCenter as the source provider. It uses the vCenter inventory API to discover VMs, their disk configurations, network port group assignments, and datastore mappings. When XCopy Offload is configured, Forklift also retrieves the FlashArray volume identifiers corresponding to the VMware datastores, enabling it to issue the correct XCOPY commands to FlashArray.

Target Platform: OpenShift Virtualization

OpenShift Virtualization extends Red Hat OpenShift with KubeVirt to enable virtual machines to run as Kubernetes-native workloads. VMs are defined as Kubernetes Custom Resources (VirtualMachine objects) and scheduled alongside containerised pods on RHCOS worker nodes.

KubeVirt and the virt-launcher Architecture

Each running VM in OpenShift Virtualization is backed by a virt-launcher pod on the worker node. This pod runs a QEMU/KVM process that provides hardware-accelerated virtualisation. From the Kubernetes scheduler's perspective, a VM is a pod with specific resource requests — it is scheduled, monitored, evicted, and rescheduled using the same mechanisms as any other Kubernetes workload.

RHCOS Worker Nodes and MachineConfig

All OpenShift worker nodes run RHCOS (Red Hat CoreOS), an immutable operating system managed by the Machine Config Operator (MCO). Direct OS modifications are not persistent — all configuration must be applied via MachineConfig objects, which the MCO applies via a controlled rolling reboot process.

This is the key difference from VMware ESXi host configuration. In VMware, a storage administrator configures iSCSI initiators or FC HBAs directly on each host. In OpenShift, the equivalent configuration is declared in a MachineConfig manifest and applied automatically to all worker nodes in the pool.

VMware Concept OpenShift Equivalent Configuration Mechanism
ESXi iSCSI software initiator iscsid.service on RHCOS MachineConfig — 99-worker-iscsi-pure
ESXi NVMe/TCP VMkernel port nvme-tcp kernel module on RHCOS MachineConfig — 99-worker-nvme-tcp-pure
FC HBA driver on ESXi FC HBA driver auto-loaded by RHCOS kernel MachineConfig — multipath.conf + udev rules
VMkernel multipath dm-multipath on RHCOS MachineConfig — multipathd.service enabled

Storage Architecture: FlashArray Integration

FlashArray serves as the unified storage backend for both environments simultaneously throughout the migration. Storage integration operates at two levels: the management plane (Portworx communicates with the FlashArray REST API for volume lifecycle operations) and the data plane (worker nodes connect via iSCSI, NVMe/TCP, or FC for block I/O).

Management Plane: Portworx with FlashArray REST API

  • Portworx connects to FlashArray using an API token stored in the px-pure-secret Kubernetes Secret.
  • When a PVC is created, Portworx calls the FlashArray REST API to provision a new volume of the requested size.
  • Portworx automatically creates a host object on FlashArray for each worker node, using the node's IQN, NQN, or WWPN as the identity, and adds the host to the managed host group.
  • When a PVC is deleted, Portworx disconnects and deprovisions the FlashArray volume via the REST API.

Data Plane: Worker Node with FlashArray SAN Transport

  • The data plane connection depends on the chosen SAN transport. All three transports result in the same logical device at the Portworx layer — a dm-multipath block device — but differ in how the connection is established and verified.

Migration Tooling: Migration Toolkit for Virtualization (MTV / Forklift)

Forklift orchestrates VM migrations through a set of Kubernetes Custom Resources (CRs). Each migration is defined declaratively — the engineer creates YAML manifests describing the source, the target, and the mapping between them, then applies them to the cluster. Forklift's controller reads these CRs and executes the migration.

Component Function/Description
Provider Defines the vCenter source connection (URL + credentials)
NetworkMap Maps VMware port groups to OpenShift networks
StorageMap Maps VMware datastores to OpenShift StorageClasses (+ XCopy config)
Plan Selects VMs to migrate and references NetworkMap + StorageMap
Migration Triggers execution of a Plan

XCopy Offload vs. VDDK: Architecture Difference

Characteristic Standard VDDK path XCopy Offload path
Data movement ESXi → network → OpenShift worker node FlashArray internal clone (SCSI XCOPY command)
Network traffic Full disk content (e.g., 300 GB for a 500 GB VM) Metadata only — under 1 MB regardless of disk size
Worker CPU usage High — read, transfer, and write all on worker Minimal — XCOPY offloaded to FlashArray controller
VDDK image required Yes, for VDDK-based migration flows Not required for storage-offload-based paths if VDDK is not being used
StorageMap config Standard destination storage mapping Includes offload plugin configuration such as offloadPlugin.vsphereXcopyConfig
Disk provisioning mode Can affect transfer characteristics Offload path is less dependent on host-side transfer mechanics
RDM support Needs workload-specific validation Needs workload-specific validation

Test Environment and Lab Setup

Infrastructure Overview (Compute, Network, Storage)

Layer Everpure Engineering Lab
VMware hosts 4x Cisco UCS-B200-M6 (bare-metal ESXi)
OpenShift workers 4x Cisco UCS-B200-M6 (bare-metal RHCOS)
Storage FlashArray//XL and FlashArray//X
Transport (validated) iSCSI and SCSI-FC
Migration tooling Forklift + XCopy Offload Forklift + Vol Copy Offload
OpenShift version 4.19.11
Portworx PX-CSI

VMware Source Configuration

Component Specification
vCenter version 8.0.3, build 24022515
ESXi version 8.0.3, build 24674464
Host hardware 3x Cisco UCS-B200-M6
CPU per host 48 CPUs — Intel Xeon E5-2650 v4 @ 2.20 GHz
Memory per host 383.89 GB
Storage NICs 2x 25 Gb/s per host
Datastore types tested VMFS, vVols and RDMs (both backed by FlashArray)

OpenShift Cluster Configuration

Component Specification
OpenShift version 4.19.11
Kubernetes version Aligned with OCP 4.19
Worker hardware 4 x Cisco UCS-B200-M6
Worker CPU 48 CPUs — Intel Xeon E5-2650 v4 @ 2.20 GHz
Worker memory 383.89 GB
Worker storage NICs 2x 25 Gb/s
Worker OS RHCOS (immutable)
Forklift Migration Toolkit for Virtualization 2.9.5

FlashArray Configuration

Component Engineering Lab
Model FlashArray//XL and FlashArray//X
Purity version 6.10.3
Management network 2 x 1 Gb/s per controller
Data network 2 x 25 Gb/s iSCSI per controller
Host objects (OpenShift) ocp-workers — managed by Portworx
Datastores VMFS and vVol datastores for test VMs
API user for Portworx px-portworx — Storage Admin role

Network Topology and Connectivity

SCSI-FC

Figure 1. A system architecture diagram for SCSI-FC, showing connections from vSphere (UCS) and OpenShift (UCS) to Fabric InterconA system architecture diagram for SCSI-FC, showing connections from vSphere (UCS) and OpenShift (UCS) to Fabric Interconnects, then to a Cisco MDS Switch, and finally to FlashArray//XL.

iSCSI

Figure 2. A diagram illustrating an iSCSI storage architecture. It shows vSphere (UCS) and OpenShift (UCS) connecting to Fabric InA diagram illustrating an iSCSI storage architecture. It shows vSphere (UCS) and OpenShift (UCS) connecting to Fabric Interconnects, which then connect to Cisco Nexus and Arista Switches. Finally, these switches connect to FlashArray//X.

Test Workload Profiles

Three VM profiles were used in the engineering lab migration testing. Each profile exercises different aspects of the migration tooling — disk count, disk size, OS type, and data density. All test VMs were created by cloning from pre-built base images using standard VMware cloning operations.

Profile CPUs Memory Disks Total Disk Size Data Used Data Generation
Windows Server 2025 8 16 GB 1x 100 GB 100 GB 50 GB ~25 GB random (dd), ~6 GB apps, ~19 GB OS
Multi-Disk Rocky Linux 10 1 2 GB 3x 16 GB 48 GB 21 GB ~8 GB random per data disk
Large-Disk Rocky Linux 10 2 8 GB 1x 500 GB 500 GB 305 GB ~300 GB random data (dd)

Random data was generated using:

dd if=/dev/urandom of=/mnt/disk1/random_file.img bs=1G count=<N>

For shared RDM testing, 6 instances of the Large-Disk Linux VM were deployed with two 1 TB shared RDM volumes configured in physical compatibility mode with multi-writer sharing — representing a clustered application with shared storage.

Shared RDM configuration Specification
RDM volumes 2x 1 TB
Sharing mode Multi-writer
Compatibility mode Physical
Data used per RDM ~700 GB random data
VMs sharing the RDMs 6x Large-Disk Linux VMs