DEV Community

Cover image for Evaluating ZSvirt as a VMware Alternative: A PoC Guide from Deployment to Migration
ZSvirt
ZSvirt

Posted on

Evaluating ZSvirt as a VMware Alternative: A PoC Guide from Deployment to Migration

Over the past few weeks, we announced ZSvirt’s open-source release, shared the reasoning behind it, walked you through creating your first VM, broke down the architecture of the production-proven engine, and covered the full workflow of migrating VMs from VMware. Today, we zoom back out to the evaluation itself: when you’re seriously considering ZSvirt as a replacement for your current virtualization environment, where should you start validating?

When you’re looking for a VMware alternative, creating and booting a single VM only verifies the most basic compute path.

A complete evaluation also needs to cover the operations ecosystem that wraps around VMs: how hosts and clusters are managed, how storage and networking are attached, how permissions are assigned, how failed tasks are recovered, and how existing VMware workloads get migrated.

This post lays out a PoC path that you can actually execute in your environment. When you’re done, you should be able to answer one specific question:

Can ZSvirt take over our current virtualization environment given our hardware, network, storage, and workloads?

Before You Start: Define What You’re Replacing

“Replacing VMware” involves a whole set of infrastructure capabilities.

For teams running only a handful of VMs, the evaluation may center on the Linux and Windows workloads on their existing servers. For larger infrastructure teams, it also means cluster management, shared storage, distributed networking, access control, automation interfaces, high availability, and migration flows.

So a PoC can start by documenting your current environment.

At minimum, gather the following:

  • The number of vCenters, clusters, hosts, and VMs;
  • CPU architecture, generations, and your hardware retention plan;
  • Virtual disk sizes, snapshots, and sustained write patterns;
  • VLANs, address allocation, security policies, and external network dependencies;
  • Linux, Windows, and special OS versions;
  • How backup, monitoring, audit, and automation systems connect;
  • Workloads that can tolerate downtime, and those that need a shorter cutover window.

This checklist will determine the scope of everything that follows. Every VMware environment has a different resource structure and set of business dependencies, so the migration decision has to be made in the context of your actual situation.

Step 1: Stand Up the Minimal Resource Path

The most direct way to start evaluating ZSvirt is to stand up a minimal environment by following the first-VM deployment guide.

For testing, a single server can act as both the management node and a compute node. After the ISO install, create a datacenter and cluster in sequence, add hosts, data storage, image storage, a distributed switch and port groups, and finally create your first VM.

Once the VM is “Running”, keep checking that all the pieces cooperate:

  1. Can the host stay connected to the management node?
  2. Can images be uploaded and used to create VMs?
  3. Can virtual disks be created, attached, and deleted?
  4. Does the VM get the expected address?
  5. Are the gateway, external address, and DNS resolution working?
  6. Does the console open?
  7. Do shutdown, start, reboot, and delete operations leave clear task records?

Only after you confirm that the compute, storage, network, image, and VM paths all work should you move on to cluster and migration tests. That way, when something goes wrong later, you can tell faster whether the problem is platform configuration, infrastructure conditions, or the migration process.

Step 2: Verify Day-to-Day Operations

The long-term experience of a virtualization platform shows up in the day-to-day changes you make over years.

In your PoC environment, keep doing the following:

  • Expand a virtual disk;
  • Add and remove data disks;
  • Create, restore, and delete snapshots;
  • Modify a VM’s compute spec;
  • Adjust network configuration;
  • Migrate a VM to another host;
  • Simulate an operation failing halfway through;
  • Inspect the rollback and error messages of a failed task.

ZSvirt handles long-running operations with async tasks, stateless services, and a workflow engine. Take creating a VM: underneath, it may involve scheduling a compute node, preparing an image, creating disks, configuring networking, and generating the VM config. If any step fails, it can leave behind resources that were created but are no longer needed.

The workflow engine breaks such operations into executable, rollback-able steps. For more on these mechanisms, see ZSvirt Architecture Explained and the workflow engine design.

In your PoC, deliberately cause a controlled failure — for example, an unavailable storage path or wrong network parameters — and observe:

  • Which step the task stops at;
  • What error the UI and API return;
  • Whether completed steps are cleaned up;
  • Whether orphaned disks or leftover config are produced;
  • Whether you can re-run after fixing the issue.

This test shows you directly how the platform handles and recovers from abnormal situations.

Step 3: Validate Storage and Networking Separately

In a virtualization replacement project, storage and networking often decide the final stability and operational complexity.

Storage Validation

Seeing a storage type in the config page only means the platform offers that integration entry. Real validation should also include:

  • mporting images and creating VMs from them;
  • Creating and attaching system and data disks;
  • Snapshots and recovery;
  • Cross-host migration on shared storage;
  • State after a host or storage path failure;
  • Latency and throughput under typical workload;
  • Time required for backup and recovery.

If your production environment uses SAN, NFS, Ceph, or another storage system, test with the devices you plan to keep. Local disks are fine for standing up a minimal environment, but results there don’t directly represent how shared storage will behave.

Networking Validation

Pick a VLAN and address range close to production and verify:

  • Distributed switch and port group configuration;
  • DHCP or static address allocation;
  • Whether VLAN and physical switch config match;
  • Network connectivity after a VM migrates across hosts;
  • Where security rules apply and their effective scope;
  • The traffic path after a host or network component state change.

When a network fault occurs, administrators should be able to answer three questions: where traffic enters, where rules are enforced, and which layer to start troubleshooting from.

If the traffic path and rule locations are still unclear, the validation isn’t done yet.

Step 4: Verify Permissions, Auditing, and Automation

For environments managed by multiple people, in addition to the Web UI experience, verify permission boundaries, audit records, and automation APIs.

Create at least two kinds of test accounts:

  • A day-to-day operator with basic VM permissions;
  • An administrator who can manage hosts, storage, networking, and accounts.

Check what each account type can view and execute in both the UI and API, and confirm that denied operations leave a record.

Then run a minimal automation path through the API:

  1. Query hosts, storage, networking, and images;
  2. Create a VM;
  3. Query the async task status;
  4. Tag a resource;
  5. Read operation results and audit records;
  6. Deliberately submit a bad parameter and check the response.

ZSvirt provides RESTful/OpenAPI endpoints plus a Terraform provider and Go, Python, and Java SDKs. Your PoC should confirm that existing portals, scripts, ITSM, monitoring, or asset systems can reliably call these interfaces. For the capabilities and open-source scope, see Why We Open Sourced ZSvirt.

Step 5: Start Migration with a Single Non-Critical VM

Once the base platform validation is done, start testing VMware migration.

ZSvirt currently offers three common migration paths:

Migration path Best for What to validate
ZMigrate online migration Keeping the source VM running and cutting over in a planned window Full and incremental sync, network mapping, target validation, and final cutover
OVF import You already have a standard OVF/OVA export Virtual hardware config, disks, boot mode, and network adapters
VMDK image upload You already have the VMware virtual disk files Disk format, OS boot, drivers, and virtual NIC

For the full procedures, see ZSvirt Migration in Practice: Three Ways to Migrate VMs from VMware.

For the first test, avoid critical production systems — but also avoid a completely idle demo VM. A better candidate is a Linux or Windows VM that runs real services, has sustained disk writes, and can be rolled back.

A complete migration should at least record:

  • Initial data volume and sync duration;
  • Source VM load during incremental sync;
  • The final cutover window;
  • Target VM first boot time;
  • Whether IP, routing, and security policies are correct;
  • Application services, file system, and database consistency;
  • Retry and rollback options after a failed migration;
  • Final confirmation from the application owner.

Even after a migration task hits 100%, you still need to validate the business on the target platform and confirm your team can roll back in an abnormal situation.

A Suggested PoC Checklist

Before discussing production replacement, complete at least these ten tests:

  1. Deploy the ZSvirt management node from the ISO;
  2. Create a datacenter and cluster, and add hosts;
  3. Configure images, data storage, and virtual networking;
  4. Create and run both Linux and Windows VMs;
  5. Verify the console, address allocation, and external networking;
  6. Test disk attach, expansion, snapshots, and recovery;
  7. Migrate a VM across hosts on shared storage;
  8. Verify role permissions, operation records, and audit logs;
  9. Create a VM via the API and track the async task;
  10. Use ZMigrate to sync, validate, cut over, and rehearse rollback for one VMware VM. Every item should have a clear expected result, actual result, and owner. For failed items, also record where the logs are, how to recover, and whether the item blocks production migration.

How to Judge Your PoC Results

Different virtualization scenarios place different demands on a platform.

If you only need to manage one server and a few experimental VMs, a full cluster control plane may be more than you need. If your team already runs a Kubernetes-native infrastructure model, you may also want to compare Kubernetes-based virtualization options. If your environment depends on specific VMware plugins or proprietary integrations, you’ll need to validate the replacement path separately.

ZSvirt is for teams that want to keep an operations model centered on clusters, hosts, VMs, storage, and networking, while also needing open source, an open API, and a path to migrate from VMware.

After the PoC, form an internal conclusion around these questions:

  • Can the existing hardware keep being used;
  • Can critical workloads run stably;
  • Can operators understand and troubleshoot the platform’s behavior;
  • Can automation and external systems integrate;
  • Do the migration windows and rollback flows meet business requirements.

Once these validations are done, your team has a migration conclusion it can review internally, reproduce, and keep moving forward with.

Top comments (0)