<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ZSvirt</title>
    <description>The latest articles on DEV Community by ZSvirt (@zsvirt_community).</description>
    <link>https://dev.to/zsvirt_community</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3996235%2Fc68553ef-de15-4b8d-b0ec-2160e2041cc6.png</url>
      <title>DEV Community: ZSvirt</title>
      <link>https://dev.to/zsvirt_community</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zsvirt_community"/>
    <language>en</language>
    <item>
      <title>Evaluating ZSvirt as a VMware Alternative: A PoC Guide from Deployment to Migration</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:19:12 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/evaluating-zsvirt-as-a-vmware-alternative-a-poc-guide-from-deployment-to-migration-3cf9</link>
      <guid>https://dev.to/zsvirt_community/evaluating-zsvirt-as-a-vmware-alternative-a-poc-guide-from-deployment-to-migration-3cf9</guid>
      <description>&lt;p&gt;&lt;em&gt;Over the past few weeks, we announced &lt;a href="https://github.com/zsvirt/zsvirt/" rel="noopener noreferrer"&gt;ZSvirt&lt;/a&gt;’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 &lt;a href="https://zsvort.io" rel="noopener noreferrer"&gt;ZSvirt&lt;/a&gt; as a replacement for your current virtualization environment, where should you start validating?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you’re looking for a VMware alternative, creating and booting a single VM only verifies the most basic compute path.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can ZSvirt take over our current virtualization environment given our hardware, network, storage, and workloads?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Before You Start: Define What You’re Replacing
&lt;/h2&gt;

&lt;p&gt;“Replacing VMware” involves a whole set of infrastructure capabilities.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;So a PoC can start by documenting your current environment.&lt;/p&gt;

&lt;p&gt;At minimum, gather the following:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Stand Up the Minimal Resource Path
&lt;/h2&gt;

&lt;p&gt;The most direct way to start evaluating ZSvirt is to stand up a minimal environment by following the &lt;a href="https://zsvirt.io/blog/zsvirt-quickstart-deploy-your-first-vm" rel="noopener noreferrer"&gt;first-VM deployment guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Once the VM is “Running”, keep checking that all the pieces cooperate:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can the host stay connected to the management node?&lt;/li&gt;
&lt;li&gt;Can images be uploaded and used to create VMs?&lt;/li&gt;
&lt;li&gt;Can virtual disks be created, attached, and deleted?&lt;/li&gt;
&lt;li&gt;Does the VM get the expected address?&lt;/li&gt;
&lt;li&gt;Are the gateway, external address, and DNS resolution working?&lt;/li&gt;
&lt;li&gt;Does the console open?&lt;/li&gt;
&lt;li&gt;Do shutdown, start, reboot, and delete operations leave clear task records?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Verify Day-to-Day Operations
&lt;/h2&gt;

&lt;p&gt;The long-term experience of a virtualization platform shows up in the day-to-day changes you make over years.&lt;/p&gt;

&lt;p&gt;In your PoC environment, keep doing the following:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The workflow engine breaks such operations into executable, rollback-able steps. For more on these mechanisms, see &lt;a href="https://zsvirt.io/blog/zsvirt-architecture" rel="noopener noreferrer"&gt;ZSvirt Architecture&lt;/a&gt; Explained and the &lt;a href="https://zsvirt.io/blog/workflow-engine" rel="noopener noreferrer"&gt;workflow engine design&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In your PoC, deliberately cause a controlled failure — for example, an unavailable storage path or wrong network parameters — and observe:&lt;/p&gt;

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

&lt;p&gt;This test shows you directly how the platform handles and recovers from abnormal situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Validate Storage and Networking Separately
&lt;/h2&gt;

&lt;p&gt;In a virtualization replacement project, storage and networking often decide the final stability and operational complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Storage Validation
&lt;/h3&gt;

&lt;p&gt;Seeing a storage type in the config page only means the platform offers that integration entry. Real validation should also include:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Networking Validation
&lt;/h3&gt;

&lt;p&gt;Pick a VLAN and address range close to production and verify:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;If the traffic path and rule locations are still unclear, the validation isn’t done yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Verify Permissions, Auditing, and Automation
&lt;/h2&gt;

&lt;p&gt;For environments managed by multiple people, in addition to the Web UI experience, verify permission boundaries, audit records, and automation APIs.&lt;/p&gt;

&lt;p&gt;Create at least two kinds of test accounts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A day-to-day operator with basic VM permissions;&lt;/li&gt;
&lt;li&gt;An administrator who can manage hosts, storage, networking, and accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check what each account type can view and execute in both the UI and API, and confirm that denied operations leave a record.&lt;/p&gt;

&lt;p&gt;Then run a minimal automation path through the API:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Query hosts, storage, networking, and images;&lt;/li&gt;
&lt;li&gt;Create a VM;&lt;/li&gt;
&lt;li&gt;Query the async task status;&lt;/li&gt;
&lt;li&gt;Tag a resource;&lt;/li&gt;
&lt;li&gt;Read operation results and audit records;&lt;/li&gt;
&lt;li&gt;Deliberately submit a bad parameter and check the response.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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 &lt;a href="https://zsvirt.io/blog/why-we-open-sourced-zsvirt" rel="noopener noreferrer"&gt;Why We Open Sourced ZSvirt&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Start Migration with a Single Non-Critical VM
&lt;/h2&gt;

&lt;p&gt;Once the base platform validation is done, start testing VMware migration.&lt;/p&gt;

&lt;p&gt;ZSvirt currently offers three common migration paths:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Migration path&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;What to validate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ZMigrate online migration&lt;/td&gt;
&lt;td&gt;Keeping the source VM running and cutting over in a planned window&lt;/td&gt;
&lt;td&gt;Full and incremental sync, network mapping, target validation, and final cutover&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OVF import&lt;/td&gt;
&lt;td&gt;You already have a standard OVF/OVA export&lt;/td&gt;
&lt;td&gt;Virtual hardware config, disks, boot mode, and network adapters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VMDK image upload&lt;/td&gt;
&lt;td&gt;You already have the VMware virtual disk files&lt;/td&gt;
&lt;td&gt;Disk format, OS boot, drivers, and virtual NIC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the full procedures, see &lt;a href="https://zsvirt.io/blog/zmigrate-workflow-walkthrough" rel="noopener noreferrer"&gt;ZSvirt Migration in Practice: Three Ways to Migrate VMs from VMware&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;A complete migration should at least record:&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Suggested PoC Checklist
&lt;/h2&gt;

&lt;p&gt;Before discussing production replacement, complete at least these ten tests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deploy the ZSvirt management node from the ISO;&lt;/li&gt;
&lt;li&gt;Create a datacenter and cluster, and add hosts;&lt;/li&gt;
&lt;li&gt;Configure images, data storage, and virtual networking;&lt;/li&gt;
&lt;li&gt;Create and run both Linux and Windows VMs;&lt;/li&gt;
&lt;li&gt;Verify the console, address allocation, and external networking;&lt;/li&gt;
&lt;li&gt;Test disk attach, expansion, snapshots, and recovery;&lt;/li&gt;
&lt;li&gt;Migrate a VM across hosts on shared storage;&lt;/li&gt;
&lt;li&gt;Verify role permissions, operation records, and audit logs;&lt;/li&gt;
&lt;li&gt;Create a VM via the API and track the async task;&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Judge Your PoC Results
&lt;/h2&gt;

&lt;p&gt;Different virtualization scenarios place different demands on a platform.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;After the PoC, form an internal conclusion around these questions:&lt;/p&gt;

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

&lt;p&gt;Once these validations are done, your team has a migration conclusion it can review internally, reproduce, and keep moving forward with.&lt;/p&gt;

</description>
      <category>virtualmachine</category>
      <category>poc</category>
      <category>vmware</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>VirtWatch Weekly 001: ZSvirt Core IaaS Engine Goes Open Source, VMware Explore 2026 Kicks Off, Proxmox VE 8 Reaches EOL</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Wed, 02 Sep 2026 06:57:34 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/virtwatch-weekly-001-zsvirt-core-iaas-engine-goes-open-source-vmware-explore-2026-kicks-off-5ela</link>
      <guid>https://dev.to/zsvirt_community/virtwatch-weekly-001-zsvirt-core-iaas-engine-goes-open-source-vmware-explore-2026-kicks-off-5ela</guid>
      <description>&lt;h1&gt;
  
  
  Virtualization Watch — Issue 001
&lt;/h1&gt;

&lt;p&gt;August 31, 2026 · Weekly · Coverage window: 8/26–8/31 (with August backfill)&lt;/p&gt;

&lt;h2&gt;
  
  
  From the Editor
&lt;/h2&gt;

&lt;p&gt;Issue 001 goes to print at the confluence of several timelines: two weeks ago (August 14), this publication's producer ZSvirt fully open-sourced its core IaaS engine, and this week it launched the Storytellers program aimed at creators — a "house matter" we'd like to explain to readers first; today (August 31), VMware Explore 2026 opens in Las Vegas, where Broadcom-era VMware will tell the "private AI cloud" story for another year; on the same day, Proxmox VE 8 officially reaches end of life, closing the book on one of the most widely deployed generations in the open-source camp. The enterprise giant's annual show and the community distribution's version transition each turn a new page on the same Monday.&lt;/p&gt;

&lt;p&gt;Over the past two weeks, vCenter's CVE-2026-59310 escalated from a "just-patched" advisory into an in-the-wild attack campaign spanning 47 countries — a reminder that security debt on the management plane always gets called in at the least convenient moment. Meanwhile in the community, vphone-cli — a tool that boots a virtual iPhone with a single command — hit the Hacker News front page, as virtualization keeps breaking out in small, elegant ways.&lt;/p&gt;

&lt;p&gt;This week we chase no hype, only verified facts and sources. On to the stories.&lt;/p&gt;

&lt;h2&gt;
  
  
  In This Issue
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ZSvirt's Core IaaS Engine Goes Open Source (GPL-3.0)
&lt;/h3&gt;

&lt;p&gt;On August 14, ZSvirt imported the full source code of its main repository to GitHub (&lt;code&gt;ZSvirt/zsvirt&lt;/code&gt;) and open-sourced it under the GPL-3.0 license. It's a "core IaaS engine and cloud infrastructure foundation": the repo includes complete modules for compute, storage, network, identity, image, console, and portal; the primary languages are Java (78.2%) and Groovy (19.4%); and the repository topic tags span KVM, Proxmox, VMware/vSphere and more — positioning it directly against mainstream virtualization management stacks.&lt;/p&gt;

&lt;p&gt;A little over two weeks after open-sourcing, the repository has gained &lt;strong&gt;1.5k Stars, 290 Forks, and 103 Watches&lt;/strong&gt;. There is no formal Release yet — it's in the "full code public, release cadence yet to start" phase, suitable for readers who want to follow the architecture and source code early by watching the repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk4dcvj4tkxs6k4ekmjgp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk4dcvj4tkxs6k4ekmjgp.png" alt="ZSvirt Repo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alongside the open-source release, the community operations side has kicked off the &lt;strong&gt;"ZSvirt Storytellers — Phase 1: YouTube Challenge"&lt;/strong&gt; (published August 28 in GitHub Discussion &lt;a href="https://github.com/ZSvirt/zsvirt/discussions/8" rel="noopener noreferrer"&gt;#8&lt;/a&gt;): record one ZSvirt-themed YouTube video and earn rewards tiered by views — $100 for ≥500 views, $150 for ≥1,000 views, $200 for ≥2,000 views, plus a +$20 bonus for the first creator from each region; limited to 20 participants, with submissions due September 28 and settlement on September 30. The baseline requirement is to fully demonstrate "from ISO install to dashboard up and running"; there are three optional advanced directions: comparison with Proxmox/VMware, migrating existing VMs from VMware/Proxmox, and a snapshot create-break-restore drill. One video per person; view inflation disqualifies entries. Interested readers can sign up directly at Discussion #8.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fultx9mqisonl9otbjs8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fultx9mqisonl9otbjs8c.png" alt="ZSvirt Storytellers YouTube Challenge details" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/ZSvirt/zsvirt" rel="noopener noreferrer"&gt;GitHub: ZSvirt/zsvirt&lt;/a&gt; · &lt;a href="https://github.com/ZSvirt/zsvirt/discussions/8" rel="noopener noreferrer"&gt;Discussion #8: ZSvirt Storytellers — Phase 1: YouTube Challenge&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  VMware Explore 2026 Opens Today in Las Vegas (8/31–9/3)
&lt;/h3&gt;

&lt;p&gt;VMware's annual conference, Explore 2026, opens today at the Venetian in Las Vegas for a four-day run. Based on Broadcom's official disclosure and VMware's pre-show blog posts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scale&lt;/strong&gt;: more than 400 breakout sessions, plus Hands-on Labs and certification courses;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keynote&lt;/strong&gt;: the opening keynote is "Shaping the Future of Private AI Cloud and Agentic Innovation" (session PLE1837LV, 4:00 PM Pacific on 8/31), led by Ram Velaga, president of Broadcom's Infrastructure Software Group, joined by Paul Turner, VP of Products for the VCF division, and Purnima Padmanabhan, GM of the Tanzu division — private AI cloud and agentic applications are the definitive through-line of this show. The general session is open only to Full Event Pass holders on a first-come, first-served basis, with overflow simulcasts at The Hub and Bellini 2103;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Certification incentive&lt;/strong&gt;: the Full Event Pass includes a VCAP exam voucher — a real subsidy for anyone pursuing certifications;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global tour&lt;/strong&gt;: after Las Vegas, Explore on Tour heads to Mumbai (9/29–30), Singapore (10/1–2), Frankfurt (10/13–14), Tokyo (10/20–21), London (11/18–19), and Washington (12/8), wrapping up in Sydney on March 3–4, 2027.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will keep tracking VCF (VMware Cloud Foundation) releases and product announcements during the show and consolidate them in the next issue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8p5rw5bbhj2nbdzfya8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8p5rw5bbhj2nbdzfya8u.png" alt="Broadcom's official press release: VMware Explore 2026" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://investors.broadcom.com/news-releases/news-release-details/vmware-explore-2026-brings-technical-sessions-labs-and-certs-it" rel="noopener noreferrer"&gt;Broadcom IR: VMware Explore 2026 press release&lt;/a&gt; · &lt;a href="https://www.vmware.com/explore" rel="noopener noreferrer"&gt;VMware Explore 2026 official site&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Proxmox VE 8 Reaches End of Life Today
&lt;/h3&gt;

&lt;p&gt;Also on August 31, Proxmox VE 8 reaches the end of its official lifecycle. This generation, based on Debian 12 (Bookworm), was released in June 2023 and has been the workhorse platform for countless home labs and SMBs. Per Proxmox's official support matrix, VE 8 support ends in August 2026 — today. Nodes still running 8.x should already be seeing the EOL banner in their web management UI.&lt;/p&gt;

&lt;p&gt;The upgrade path isn't complicated, but both official and community guidance stress "check first, then act":&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm backups are in place (PBS or offline copies);&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;pve8to9&lt;/code&gt; checker on every 8.x node, clearing blocking items one by one;&lt;/li&gt;
&lt;li&gt;Follow the official upgrade documentation to roll each node up to VE 9 (based on Debian 13) — for clusters, upgrade standby nodes first, migrate workloads, then upgrade primary nodes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Virtualization Howto's Brandon Lee reminded readers in his August 19 guide: don't treat EOL as a countdown to immediate downtime, but don't keep putting it off either — after EOL there are no more security updates, and the exposure surface only grows over time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnyqpr84j8yif7kzd46ui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnyqpr84j8yif7kzd46ui.png" alt="Virtualization Howto: What to do before PVE 8 EOL" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://www.virtualizationhowto.com/2026/08/still-running-proxmox-ve-8-heres-what-you-need-to-do-before-end-of-life/" rel="noopener noreferrer"&gt;Virtualization Howto upgrade guide&lt;/a&gt; · &lt;a href="https://pve.proxmox.com/wiki/FAQ" rel="noopener noreferrer"&gt;Proxmox VE lifecycle&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Product &amp;amp; Version News
&lt;/h2&gt;

&lt;h3&gt;
  
  
  QEMU 11.1.1 / 11.0.4 / 10.0.13 Released on Three Lines in Sync (8/26)
&lt;/h3&gt;

&lt;p&gt;On August 26, QEMU shipped maintenance releases for three stable branches in sync: 11.1.1, 11.0.4, and 10.0.13 — all fix-oriented point releases, with source packages up on qemu.org signed with GPG. Shipping three lines on the same day is uncommon in QEMU's release history; distributions and cloud platforms running multiple concurrent versions should check their changelogs and assess whether to adopt them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3lo8n2c9vz5qa9abg7pi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3lo8n2c9vz5qa9abg7pi.png" alt="QEMU official download page" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.qemu.org/download/" rel="noopener noreferrer"&gt;QEMU official download page&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Nutanix FY2026 Q4 Earnings: ARR $2.55B, Up 16% YoY (8/26)
&lt;/h3&gt;

&lt;p&gt;Nutanix reported its fiscal Q4 (quarter ended July 31) and full-year FY2026 results: Q4 ARR of $2.55 billion (+16% YoY), quarterly revenue of $757.1 million (+16%), non-GAAP operating margin of 26.2% (up 790 basis points YoY), and free cash flow of $277.6 million; more than 3,000 net-new customers added during the year. CEO Rajiv Ramaswami called out new or deepened partnerships with AMD, Lenovo, NetApp, and NVIDIA, with AI and external storage support as key platform investment areas. With Broadcom's channel policy tightening, Nutanix's report is one of the most direct footnotes to the "VMware replacement" narrative.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvtwmu35olp0rks7parw7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvtwmu35olp0rks7parw7.png" alt="Nutanix FY26 Q4 earnings press release" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://ir.nutanix.com/news-releases/news-release-details/nutanix-reports-fourth-quarter-and-fiscal-2026-financial-results/" rel="noopener noreferrer"&gt;Nutanix IR press release&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Backfill
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proxmox VE 9.2 debuts official Arm64 support (8/5)&lt;/strong&gt;: in early August, Proxmox announced PVE officially landing on 64-bit ARM, delivered on VE 9.2, bringing ARM servers and edge devices into the official support matrix. The announcement was still pinned on r/Proxmox this week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VirtualBox 7.2.16 (mid-August)&lt;/strong&gt;: Oracle shipped a 7.2-series maintenance update fixing multiple guest and network-stack issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VMware Workstation 26H1 / Fusion 26H1 GA&lt;/strong&gt;: r/vmware's pinned announcement this week shows both desktop virtualization products reached GA with the 26H1 releases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sources: &lt;a href="https://www.proxmox.com/en/about/company-details/press-releases" rel="noopener noreferrer"&gt;Proxmox press release list&lt;/a&gt; · &lt;a href="https://www.reddit.com/r/vmware/top/?t=week" rel="noopener noreferrer"&gt;r/vmware pinned announcement&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Buzz
&lt;/h2&gt;

&lt;h3&gt;
  
  
  HN Front Page: Boot a Virtual iPhone with One Command (vphone-cli, 406 points / 111 comments)
&lt;/h3&gt;

&lt;p&gt;This week's hottest virtualization-related post on Hacker News is "Boot a Virtual iPhone via Apple's Virtualization.framework": the open-source project vphone-cli uses the iOS kernel Apple ships in PCC (Private Cloud Compute)/cloudOS images, combined with the iOS userland and patches, to boot a "virtual iPhone" on Apple Silicon Macs via direct virtualization. The technical consensus in the HN thread: this isn't a Corellium-style emulator — it's real virtualization, and apps can easily tell it apart from a real device. Commenters also remind: don't pick Japan or the EU region during setup (the VM can't pass third-party app-store compliance checks). The repo has reached 9.7k Stars and 1.3k Forks, primarily in Swift.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcsv6r5c1robgs7m3so5t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcsv6r5c1robgs7m3so5t.png" alt="HN discussion page" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://news.ycombinator.com/item?id=49485267" rel="noopener noreferrer"&gt;Hacker News discussion&lt;/a&gt; · &lt;a href="https://github.com/Lakr233/vphone-cli" rel="noopener noreferrer"&gt;GitHub: Lakr233/vphone-cli&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Reddit This Week
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;r/Proxmox&lt;/strong&gt;: the pinned post is indeed "Proxmox VE now available for 64-bit ARM (arm64)!" (551 votes / 119 comments) — community enthusiasm for ARM support exceeded expectations, with discussion focused on ARM server form factors beyond the Raspberry Pi and how to obtain images;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;r/vmware&lt;/strong&gt;: the VMSA-2026-0006 patch discussion thread (88 votes / 148 comments) has effectively become the "patch exchange center," with upgrade ordering and VCF-environment considerations as the main topics; two hands-on threads also ranked high — 100 GbE NIC tuning (a ConnectX-6 Dx only reaching 43 Gbit/s) and vCPU:pCPU oversubscription ratios.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvu9784ts8inb5qoj8f7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvu9784ts8inb5qoj8f7b.png" alt="r/Proxmox weekly hot posts" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://www.reddit.com/r/Proxmox/top/?t=week" rel="noopener noreferrer"&gt;r/Proxmox weekly top&lt;/a&gt; · &lt;a href="https://www.reddit.com/r/vmware/top/?t=week" rel="noopener noreferrer"&gt;r/vmware weekly top&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Advisories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tracking VMSA-2026-0006: Timeline of CVE-2026-59310 Exploitation
&lt;/h3&gt;

&lt;p&gt;On July 29, Broadcom published VMSA-2026-0006 (updated to .2 on August 19), fixing five vulnerabilities across ESX / vCenter / Workstation / Fusion. Two of the vCenter flaws are both CVSS 9.8:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-59310&lt;/strong&gt;: a directory-traversal vulnerability in the vCenter Syslog service that can be used for unauthenticated remote code execution;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-59309&lt;/strong&gt;: an authentication-bypass vulnerability in VMware Directory Service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In-the-wild exploitation&lt;/strong&gt;: German incident-response firm QUIRSO confirmed the attacks began on August 3 — just five days after disclosure. As of its August 10 report, 361 distinct victim IPs had been recorded across 47 countries, with Germany (55), the United States (41), Turkey (38), Iran (26), and France (25) accounting for about half. The attack chain: directory traversal to write and execute arbitrary code → plant cron jobs → launch the open-source reverse-shell framework reverse_ssh to establish outbound C2, bypassing defenses focused on inbound detection. The Cloud Security Alliance's analysis note points out that because vCenter is the control plane of the entire virtualization environment, compromise means control over all managed hosts, VMs, and snapshots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ransomware follow-up&lt;/strong&gt;: The Hacker News reports that some attackers deployed Babuk-derived ransomware (.babyk) on compromised vCenters. QUIRSO attributes the campaign to Chinese-language-context attackers with "medium confidence" (based on Chinese traces in scripts, tool reuse, and UTC+8 operating rhythms). We'd note: attribution carries uncertainty, and 361 victim IPs do not equal 361 organizations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remediation advice&lt;/strong&gt;: the CVE has been added to CISA's KEV catalog. Broadcom confirms there is no workaround — the only effective option is to upgrade to fixed versions: vCenter 9.1.0.0300, 9.0.2.0100, or 8.0 U3k/U2f. Security teams can prioritize hunting for: anomalous cron jobs, outbound reverse_ssh connections, and abnormal Syslog-service writes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftik2sjal8gd19686184a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftik2sjal8gd19686184a.png" alt="Broadcom VMSA-2026-0006 advisory" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faen9md5qe38akl36jjto.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faen9md5qe38akl36jjto.png" alt="The Hacker News report" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/SecurityAdvisories/0/38017" rel="noopener noreferrer"&gt;Broadcom VMSA-2026-0006&lt;/a&gt; · &lt;a href="https://thehackernews.com/2026/08/suspected-china-nexus-actor-exploits.html" rel="noopener noreferrer"&gt;The Hacker News&lt;/a&gt; · &lt;a href="https://labs.cloudsecurityalliance.org/research/csa-research-note-vmware-vcenter-cve-2026-59310-exploitation/" rel="noopener noreferrer"&gt;CSA research note&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools &amp;amp; Good Reads
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;vphone-cli&lt;/strong&gt;: boot iOS on Apple Silicon via virtualization with one command — this week's most talked-about open-source project (see Community Buzz);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ixui&lt;/strong&gt;: a pre-alpha Incus web UI — "Proxmox's skin, ESXi's bones," with hand-written React components, a cluster-aware instance tree, and a working SPICE console; fine for tinkering, not for production;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Virtualization Howto's PVE 8 EOL guide&lt;/strong&gt;: the pre-EOL checklist and pve8to9 usage essentials;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LWN: multikernel patch series&lt;/strong&gt;: a proposal to run multiple Linux kernels simultaneously on one bare-metal machine hit the HN hot list, adding a new variable to the old "kernel-level isolation vs. virtualization" debate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/Lakr233/vphone-cli" rel="noopener noreferrer"&gt;GitHub: vphone-cli&lt;/a&gt; · &lt;a href="https://github.com/xlmnxp/ixui" rel="noopener noreferrer"&gt;GitHub: ixui&lt;/a&gt; · &lt;a href="https://www.virtualizationhowto.com/2026/08/still-running-proxmox-ve-8-heres-what-you-need-to-do-before-end-of-life/" rel="noopener noreferrer"&gt;Virtualization Howto&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Number of the Week
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;47&lt;/strong&gt; — the number of countries hit by the in-the-wild exploitation of CVE-2026-59310 (per QUIRSO's August 10 report, 361 victim IPs). Only five days separated patch release from weaponization: the management-plane patch window is narrowing to days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Issue Preview
&lt;/h2&gt;

&lt;p&gt;A recap of announcements from VMware Explore 2026 (VCF version developments, private-AI-cloud products), feedback on Proxmox VE 9 upgrades, and more voices from the community frontline. See you next issue.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About this publication&lt;/strong&gt;: Virtualization Watch (VirtWatch Weekly) is a virtualization industry weekly produced by the ZSvirt community, published every Sunday, covering product news, security advisories, and community discussion across global virtualization and cloud infrastructure. It is compiled with AI-cluster assistance; every fact is linked to its source; we aim for balanced viewpoints and welcome corrections. Visit &lt;a href="https://zsvirt.io" rel="noopener noreferrer"&gt;zsvirt.io&lt;/a&gt; for past issues and the video edition.&lt;/p&gt;

</description>
      <category>virtualmachine</category>
      <category>cloudcomputing</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Introduces three ways to migrate VMs with ZSvirt — ZMigrate online migration, OVF import, and VMDK image upload — with a full hands-on walkthrough of ZMigrate from download and deployment through to a successful cutover.</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Thu, 27 Aug 2026 08:37:42 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/introduces-three-ways-to-migrate-vms-with-zsvirt-zmigrate-online-migration-ovf-import-and-vmdk-1g3n</link>
      <guid>https://dev.to/zsvirt_community/introduces-three-ways-to-migrate-vms-with-zsvirt-zmigrate-online-migration-ovf-import-and-vmdk-1g3n</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30" class="crayons-story__hidden-navigation-link"&gt;ZSvirt Migration in Practice: Three Ways to Migrate VMs from VMware&lt;/a&gt;
    &lt;div class="crayons-article__cover crayons-article__cover__image__feed"&gt;
      &lt;iframe src="https://www.youtube.com/embed/yhoKjwNN_l0" title="ZSvirt Migration in Practice: Three Ways to Migrate VMs from VMware"&gt;&lt;/iframe&gt;
    &lt;/div&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/zsvirt_community" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3996235%2Fc68553ef-de15-4b8d-b0ec-2160e2041cc6.png" alt="zsvirt_community profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/zsvirt_community" class="crayons-story__secondary fw-medium m:hidden"&gt;
              ZSvirt
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                ZSvirt
                
                
              
              &lt;div id="story-author-preview-content-4502294" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/zsvirt_community" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3996235%2Fc68553ef-de15-4b8d-b0ec-2160e2041cc6.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;ZSvirt&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 27&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30" id="article-link-4502294"&gt;
          ZSvirt Migration in Practice: Three Ways to Migrate VMs from VMware
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cloudnative"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cloudnative&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/virtualmachine"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;virtualmachine&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vmware"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vmware&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cloudcomputing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cloudcomputing&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            10 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>ZSvirt Migration in Practice: Three Ways to Migrate VMs from VMware</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Thu, 27 Aug 2026 07:39:19 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30</link>
      <guid>https://dev.to/zsvirt_community/zsvirt-migration-in-practice-three-ways-to-migrate-vms-from-vmware-3g30</guid>
      <description>&lt;p&gt;&lt;em&gt;Over the past few days, we announced ZSvirt’s open-source release, shared the reasoning behind that decision, walked you through creating your first VM, and broke down the architecture of the production-proven engine. In this final post of the series, we turn our attention to migration — how to move your existing VMware VMs into ZSvirt smoothly.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;VM migration is an unavoidable part of building or replacing a virtualization platform. ZSvirt offers a complete migration capability matrix, with three ways to migrate depending on your migration scale, business continuity requirements, and data shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ZMigrate migration service&lt;/strong&gt;: an online migration option. Deploy the migration service and a data gateway to connect directly to source platforms such as VMware vSphere, fully syncing each VM's OS and data to the target platform. It supports incremental sync, test-VM verification, and smooth cutover — a good fit for batch migration and scenarios with high business-continuity requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import a VM&lt;/strong&gt;: an offline import option. Export the source VM as an OVF template (OVF, VMDK, and MF files), then on the target platform use "New VM &amp;gt; Import VM" to upload the template files and complete the import. Suited to a small number of VMs where a brief outage for export is acceptable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload a VMDK image&lt;/strong&gt;: a disk-level migration option. Simply upload the VM's VMDK disk file as a platform image (automatically converted to qcow2/raw), then create a VM from that image. It's the lightest option, suited to scenarios that only need the disk data migrated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To help you choose, here's a quick comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;ZMigrate migration service&lt;/th&gt;
&lt;th&gt;Import VM (OVF)&lt;/th&gt;
&lt;th&gt;Upload VMDK image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Approach&lt;/td&gt;
&lt;td&gt;Online sync + cutover&lt;/td&gt;
&lt;td&gt;Offline export/import&lt;/td&gt;
&lt;td&gt;Offline disk upload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business downtime&lt;/td&gt;
&lt;td&gt;Short (cutover window only)&lt;/td&gt;
&lt;td&gt;Longer (VM must be off during export)&lt;/td&gt;
&lt;td&gt;Longer (VM must be off during copy)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration preserved&lt;/td&gt;
&lt;td&gt;Fully preserved; can clone network config/MAC&lt;/td&gt;
&lt;td&gt;Based on the OVF descriptor&lt;/td&gt;
&lt;td&gt;Not preserved; reconfigure needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;Batch migration&lt;/td&gt;
&lt;td&gt;A few VMs&lt;/td&gt;
&lt;td&gt;A few VMs, disk data only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prerequisites&lt;/td&gt;
&lt;td&gt;Deploy migration service, data gateway, VDDK&lt;/td&gt;
&lt;td&gt;Export the OVF template&lt;/td&gt;
&lt;td&gt;Prepare the VMDK disk file&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let's walk through each of the three approaches below.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. ZMigrate Migration Service
&lt;/h2&gt;

&lt;p&gt;ZMigrate is ZSvirt's online migration service. Its core idea is "sync first, cut over later": while a migration task runs, the source VM keeps serving traffic as usual and its data is continuously synced to the target platform, until a cutover window switches the business over and downtime is compressed to the absolute minimum.&lt;/p&gt;

&lt;p&gt;Before you can use ZMigrate, you first need to install the migration service. Go to "Operations &amp;gt; Migration Service" to see the full workflow guide plus the basic and configuration info. The whole migration workflow can be summarized in six steps: &lt;strong&gt;download the installer from the official website → deploy ZMigrate → upload VDDK → add a data gateway → create the source platform → create the migration task&lt;/strong&gt;, followed by the data sync and cutover stages.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1 Download the Installer from the Official Website
&lt;/h3&gt;

&lt;p&gt;The migration journey starts on the official website. Go to the ZSvirt Resource Center, find ZMigrate for ZSvirt under the "Migration Tools" category, and download the installer for the version you need. The open-source version requires no license — download and go. Just confirm that the platform already has image storage configured, and that the image store has enough free space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fas1hdc0m5squ1wtztqtd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fas1hdc0m5squ1wtztqtd.png" alt="Download the ZMigrate installer from the official website" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the installer is downloaded, you can start deploying it in the platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Deploy ZMigrate
&lt;/h3&gt;

&lt;p&gt;Deploying the migration service takes two steps: upload the installer package, then install.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload the package&lt;/strong&gt;: On the migration service page, click "Upload". Both URL and local upload are supported, and you need to specify a storage path for the package and its extracted files. Make sure this directory has enough free space, and avoid system directories such as &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/dev&lt;/code&gt;, &lt;code&gt;/proc&lt;/code&gt;, &lt;code&gt;/sys&lt;/code&gt;, &lt;code&gt;/usr/bin&lt;/code&gt;, &lt;code&gt;/bin&lt;/code&gt;, and &lt;code&gt;/opt&lt;/code&gt; — otherwise the install may fail or the server may behave abnormally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;: After the upload finishes, click "Install" and choose an appropriate spec based on your needs. Key configuration items include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Datacenter / Running location&lt;/strong&gt;: ZMigrate is deployed as a VM-based data gateway; choose its datacenter and running location;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU / Memory&lt;/strong&gt;: 8 vCPU / 8 GB by default; the number of CPUs directly affects migration concurrency;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage location / Disk&lt;/strong&gt;: 100 GB system disk by default; specify a storage pool when the storage location is distributed storage;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration network / IPv4 address&lt;/strong&gt;: specify a distributed port group as the migration network; it must be reachable from both the source and target platform networks. When DHCP is enabled on the network, an IP is assigned automatically; otherwise specify one manually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Confirm and click OK; deployment of the migration service begins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fia1d9s2069c0hw9wgs6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fia1d9s2069c0hw9wgs6j.png" alt="Deploy the ZMigrate service" width="799" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deployment takes about 5–10 minutes. The page shows a "Deploying" status, so just wait.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fira1w7j0bdokw5loruhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fira1w7j0bdokw5loruhv.png" alt="ZMigrate deploying" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1.3 Upload VDDK
&lt;/h3&gt;

&lt;p&gt;If the source platform is VMware, you also need to upload the VDDK (Virtual Disk Development Kit) package. ZMigrate reads disk data from VMware source VMs through the VDDK interface — an essential part of the VMware migration path. Click "Upload" on the migration service page and upload your prepared VDDK archive; the system loads it automatically once the upload succeeds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F17gtottozcgy0jnkb2v4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F17gtottozcgy0jnkb2v4.png" alt="Upload VDDK" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1.4 Add a Data Gateway
&lt;/h3&gt;

&lt;p&gt;A data gateway is the relay between the source and target platforms and plays the key role in data transfer. It usually runs as a VM in the platform to provide gateway services, and you need to make sure it has network connectivity to the source platform, the target platform, and the migration service.&lt;/p&gt;

&lt;p&gt;When you deploy ZMigrate, the platform creates a default data gateway. If you need to migrate VMs in batches, you can create additional data gateways to increase migration concurrency.&lt;/p&gt;

&lt;p&gt;In the navigation bar, go to "Operations &amp;gt; Migration Resources &amp;gt; Data Gateways" and click "Add Data Gateway". There are two ways to add one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a new VM&lt;/strong&gt;: the platform creates a VM to act as the data gateway. Key settings include:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Datacenter / Running location&lt;/strong&gt;: choose the datacenter and running location for the VM;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU / Memory&lt;/strong&gt;: 8 vCPU / 8 GB by default; adjust based on migration concurrency needs;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage location / Disk&lt;/strong&gt;: 100 GB system disk by default;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network / IPv4 address&lt;/strong&gt;: specify a distributed port group; it must be reachable from the source and target platform networks. When DHCP is enabled, an IP is assigned automatically; otherwise specify one manually. When IP address management is enabled, a manually specified address must be within the selected network segment.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Existing IP&lt;/strong&gt;: if you already have a gateway VM, just enter its IP address. Once connected, the system automatically fetches the host name; click "Test" to check reachability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv7c3pyglilecp5q19hqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv7c3pyglilecp5q19hqd.png" alt="Add a data gateway" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Confirm and click OK; the data gateway is created.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.5 Create the Source Platform
&lt;/h3&gt;

&lt;p&gt;The source platform is the business platform to be migrated. When adding it, configure the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: set a name for the source platform;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data gateway&lt;/strong&gt;: select a created data gateway, or directly enter a new gateway IP address;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform type&lt;/strong&gt;: VMware;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vCenter/ESXi address&lt;/strong&gt;: enter the VMware environment address;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username / Password&lt;/strong&gt;: enter login credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After filling these in, click "Test" to run a connectivity check. Once the source platform and data gateway are both ready, you can start creating a migration task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4wqlky6iquiab6fx7r2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4wqlky6iquiab6fx7r2h.png" alt="Create the source platform" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creation, the source platform list shows the platform type, vCenter/ESXi address, associated data gateway, and connection status. A "Connected" status means the source platform is successfully integrated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2iqnidu2w356skd22l8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2iqnidu2w356skd22l8u.png" alt="Source platform list" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1.6 Create a Migration Task
&lt;/h3&gt;

&lt;p&gt;Creating a migration task has two steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 1&lt;/strong&gt;: select the source platform and tick the source VMs you want to migrate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 2&lt;/strong&gt;: configure the parameters of the migrated VMs — target datacenter, cluster, host, storage location, bus type, CPU mode, target network port group, and more — then fill in the cutover settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9xbz450mohb7537c254t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9xbz450mohb7537c254t.png" alt="Create migration task: step 1" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2t6wfan1kk6onbgoh1i6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2t6wfan1kk6onbgoh1i6.png" alt="Create migration task: step 2 VM configuration" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cutover is the key step in the whole migration flow — once data sync completes, it stops the business on the old platform and smoothly switches it over to the new one. The cutover settings offer several practical options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cut over immediately&lt;/strong&gt;: automatically cut over once the initial data sync completes;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a rollback snapshot&lt;/strong&gt;: create a snapshot of the target VM before cutover so you can roll back if anything goes wrong;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power off the source VM automatically&lt;/strong&gt;: shut down the source VM before cutover to avoid IP conflicts;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install VMTools automatically&lt;/strong&gt;: install VMTools automatically after the OS conversion completes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F632eoh33c2yly6x8c58b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F632eoh33c2yly6x8c58b.png" alt="Create migration task: step 2 cutover settings" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Confirm and click OK; the migration task is created and its status enters "Syncing".&lt;/p&gt;

&lt;h3&gt;
  
  
  1.7 Sync and Cutover
&lt;/h3&gt;

&lt;p&gt;After the task is created, the system automatically syncs the source VM's data to the target platform. You can see the task status "Syncing" in the task list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6j1p11275cvngs95rpto.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6j1p11275cvngs95rpto.png" alt="Migration task syncing" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the status changes to "Ready for cutover", the data sync phase is complete and the flow enters the final cutover stage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjh9fdgzsvb32cs6sca2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjh9fdgzsvb32cs6sca2j.png" alt="Migration task ready for cutover" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click "Cut Over", read and confirm the risk notice, and the cutover begins, switching the VM's business to the target platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8fdchpqr8dhr7n957nt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8fdchpqr8dhr7n957nt.png" alt="Cutover confirmation" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a successful cutover, you can see that the VM from the original VMware platform has been migrated to this platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7d421f0w3aj69mwbua3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7d421f0w3aj69mwbua3v.png" alt="Cutover successful" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Importing a VM (OVF)
&lt;/h2&gt;

&lt;p&gt;If you only have a few VMs to migrate and the business can tolerate a short outage for export, you can skip ZMigrate and migrate by importing an OVF template instead. The overall idea: export the VM as an OVF template on the source platform, then upload and import it on the target platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Export the OVF template&lt;/strong&gt;. On the source platform (such as VMware vSphere), shut down the target VM and export it as an OVF template. You usually end up with three kinds of files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OVF file&lt;/strong&gt;: the VM's descriptor file that defines its hardware configuration;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VMDK file&lt;/strong&gt;: the VM's disk data file;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MF file&lt;/strong&gt;: the manifest file used to verify file integrity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Import on the target platform&lt;/strong&gt;. In the navigation bar, right-click the target cluster, host, or image, click "New VM", and choose "Import VM" as the creation method:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33x2eknlfaccmt76kt32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33x2eknlfaccmt76kt32.png" alt="Choose the import VM method" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then complete two parts of the configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Upload info&lt;/strong&gt;: choose an image store (used to temporarily hold the uploaded template files and deleted automatically once the VM is created), set the template type to OVF, and upload the OVF, VMDK, and MF files in order. Note that the VMDK file must match the configuration defined in the OVF file, including the number and content of the files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Basic info&lt;/strong&gt;: set the VM name, group, running location (host or cluster), and storage location (auto-allocated if not set); optionally configure high availability, VM/disk encryption, and whether to power on the VM automatically after import.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6kno7roz4zk0bv1a1wek.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6kno7roz4zk0bv1a1wek.png" alt="Import VM configuration" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Confirm and click OK; the VM import completes. After import, it's recommended to install VMTools so some of the VM's configurations take effect.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Uploading a VMDK Image
&lt;/h2&gt;

&lt;p&gt;Besides OVF template import, there's an even more direct approach: upload only the VM's disk files. If you already have the VM's VMDK disk file (for example, exported from VMware), you can upload it as an image to the image server, and the platform handles the format conversion automatically — uploaded to an ImageStore server, it's converted to qcow2; uploaded to a Ceph server, it's converted to raw. Then create a VM from that image and the migration is done.&lt;/p&gt;

&lt;p&gt;The steps are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the main menu, go to "Resource Center &amp;gt; Cloud Resource Pools &amp;gt; Compute Configuration &amp;gt; Images", open the image page, and click "Add Image".&lt;/li&gt;
&lt;li&gt;Configure it with these points in mind:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Image type&lt;/strong&gt;: choose system image;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image format&lt;/strong&gt;: choose vmdk;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform / VirtIO&lt;/strong&gt;: choose the platform type based on the OS inside the image, and decide whether to enable VirtIO (when enabled, the guest OS loads VirtIO disk and NIC drivers for better performance; for a few older OSes that don't support VirtIO, you can leave it disabled);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS / CPU architecture / BIOS mode&lt;/strong&gt;: choose settings that match the image; the BIOS mode must match how the image was packaged (Legacy or UEFI), otherwise the VM may not work properly;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image server&lt;/strong&gt;: choose a created image server;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image path&lt;/strong&gt;: supports URL (HTTP/HTTPS, FTP, SFTP) or local file upload; ImageStore servers support resumable uploads.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3k6ietnrb2yxihy3k3r2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3k6ietnrb2yxihy3k3r2.png" alt="Add a VMDK image" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm and click OK; wait for the image upload and format conversion to complete.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the upload, you can open the image details page and check the image's MD5 value to verify integrity (note: VMDK uploads go through format conversion, so the MD5 value can't be used as an integrity check afterward). Then use the image to "Create VM", configuring CPU, memory, network, and other parameters as needed — once the VM is created, the migration is complete. Installing VMTools is recommended here as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Conclusion
&lt;/h2&gt;

&lt;p&gt;There's no absolute winner among the three migration methods — it all depends on your scenario: batch migration where business can't stop, choose ZMigrate; a few VMs that can tolerate a brief outage for export, choose OVF import; only disk files and you want to recover data quickly, choose VMDK image upload.&lt;/p&gt;

&lt;p&gt;If you're planning a migration from VMware to ZSvirt, we suggest running through the full flow with one or two non-critical VMs first, getting familiar with the rhythm of sync, testing, and cutover, and then rolling out in batches. If you run into issues during migration, feel free to reach out to the ZSvirt open-source community for more details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkqbulkq5woa9xfhu9k1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkqbulkq5woa9xfhu9k1.png" alt="Three Ways to Migrate VMs from VMware" width="800" height="893"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issue reports&lt;/strong&gt;: &lt;a href="https://github.com/zsvirt/zsvirt/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community discussions&lt;/strong&gt;: &lt;a href="https://github.com/ZSvirt/zsvirt/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social media&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://youtube.com/@ZSvirt" rel="noopener noreferrer"&gt;https://youtube.com/@ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/zsvirt-community/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/zsvirt-community/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X/Twitter: &lt;a href="https://x.com/ZSvirt" rel="noopener noreferrer"&gt;https://x.com/ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Email: &lt;a href="//community@zsvirt.io"&gt;community@zsvirt.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discord: &lt;a href="https://discord.gg/KHsw63z9xA" rel="noopener noreferrer"&gt;https://discord.gg/KHsw63z9xA&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloudnative</category>
      <category>virtualmachine</category>
      <category>vmware</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>ZSvirt Architecture Explained: How a Production-Proven Virtualization Engine Is Built</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Thu, 20 Aug 2026 15:55:00 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/zsvirt-architecture-explained-how-a-production-proven-virtualization-engine-is-built-3hhn</link>
      <guid>https://dev.to/zsvirt_community/zsvirt-architecture-explained-how-a-production-proven-virtualization-engine-is-built-3hhn</guid>
      <description>&lt;p&gt;&lt;em&gt;Over the past three days, we announced ZSvirt's open-source release, shared the reasoning behind that decision, and walked you through creating your first VM. Today, we're zooming in on the engine itself — not a blueprint for a new project, but a real architecture that has been running in production for years.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In an enterprise virtualization environment, the real challenge has never been just "can you create a VM." A mature virtualization engine has to face far more complex production problems: how to manage large numbers of physical servers uniformly, how to coordinate compute, storage, and network resources, how to recover automatically when a task fails, how to keep scaling as demand grows, and how to let different kinds of infrastructure capabilities plug in.&lt;/p&gt;

&lt;p&gt;ZSvirt is built on the open-source ZSphere architecture. Its core value isn't just offering VM lifecycle management — it inherits a virtualization control architecture that has been validated in production. It lowers complexity through unified resource abstraction, ensures reliable task execution through async mechanisms and workflows, supports growth in resource scale through a message bus and modular design, and adapts to different infrastructure environments through a plugin architecture.&lt;/p&gt;

&lt;p&gt;From an architectural standpoint, ZSvirt can be summed up in three keywords: ease of use, stability and performance, and extensibility and openness.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Ease of Use: Unified Abstraction That Hides Underlying Complexity
&lt;/h2&gt;

&lt;p&gt;The underlying resources in a virtualization environment are highly complex. Compute nodes, storage pools, image repositories, physical networks, virtual switching, VMs, virtual disks, and snapshots — there are many dependencies between all of them. If you exposed that complexity directly to users and operators, the system would become hard to manage and hard to maintain over the long term.&lt;/p&gt;

&lt;p&gt;The first thing ZSvirt's architecture solves is resource abstraction. It unifies the underlying infrastructure into standard resource objects — compute resources, storage resources, network resources, image resources, and VM resources. What users see in the UI or API is a clean resource model, not a scattering of low-level commands, config files, and host states.&lt;/p&gt;

&lt;p&gt;Take creating a VM as an example. On the surface it looks like a single operation, but underneath it involves many steps: choosing an appropriate compute node, checking CPU and memory resources, preparing an image, creating a virtual disk, connecting to a virtual network, generating the VM configuration, and finally launching the instance on the target compute node. ZSvirt wraps all of these steps into a unified backend flow. Users don't need to care about each step — they just operate on the VM as a resource object.&lt;/p&gt;

&lt;p&gt;This unified abstraction also makes operations simpler. Onboarding resources, syncing node state, querying VM state, mounting storage, configuring networks, and deploying and upgrading agents can all be done through a single management entry point. For users, ZSvirt is not a collection of scattered tools but a complete virtualization control engine — one that converges complex infrastructure relationships into a unified model, wraps multi-step resource operations into standard flows, and hides underlying differences behind a consistent management interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Stability and Performance: An Async, Stateless, and Lock-Free Architecture for Production-Grade Operation
&lt;/h2&gt;

&lt;p&gt;Many operations in a virtualization system are long-running tasks. Creating a VM, migrating a VM, taking a snapshot, attaching a disk, expanding storage, and configuring networks can all involve multiple components and long execution times. If the management node handled these tasks in a synchronous, blocking way, a single slow operation could easily drag down the responsiveness of the whole system.&lt;/p&gt;

&lt;p&gt;ZSvirt is designed to be fully async. Services inside the management node collaborate through asynchronous messages, tasks within a service are organized through async methods, and the management node communicates with compute, storage, and network components asynchronously as well. As a result, a long-running virtualization task never blocks the entire management process, and the system can handle a large number of resource operations at the same time. The async mechanism not only improves throughput, but also gives task execution more room for fault tolerance.&lt;/p&gt;

&lt;p&gt;Another key design for stability is stateless services. Management services avoid relying on local state wherever possible, keeping critical state in the database, task contexts, and resource state records instead. That way, when a management node restarts, fails over, or scales out, the system won't become unrecoverable because some node's local state was lost. This matters a lot in production, because maintenance, upgrades, and crash recovery of the management service all need to minimize impact on business VMs.&lt;/p&gt;

&lt;p&gt;Behind stateless services lies routing design such as a consistent hash ring. The system routes requests to a relatively fixed processing path based on the resource identifier, so that related operations on the same resource are dispatched and handled stably. For example, start, stop, migrate, and reboot operations on the same VM need to be ordered, while operations on different VMs can run in parallel. This reduces the need for shared state between management nodes and lowers the risk of concurrency conflicts.&lt;/p&gt;

&lt;p&gt;For service organization, ZSvirt follows an in-process microservice approach. VM management, storage management, network management, image management, identity and authentication, and other capabilities are split into separate service modules, but they run inside a single unified management process and collaborate through a message mechanism. This keeps module boundaries clear without mixing all the logic together, while avoiding the heavy complexity of multi-process deployment. For a virtualization management system, that's a design that balances stability and engineering efficiency.&lt;/p&gt;

&lt;p&gt;The workflow engine solves the problem of reliable execution of complex tasks. Virtualization operations are rarely done in one step — they're made up of many stages. For example, when creating a VM, the virtual disk may already have been created when the network configuration step fails. Without workflows and rollback, the system could be left with orphaned disks, inconsistent configs, or half-finished states. ZSvirt uses workflows to break complex operations into executable steps, each with clear execution logic and failure-handling logic. When a step fails, the system can roll back or clean up along the flow, reducing leftover inconsistent state.&lt;/p&gt;

&lt;p&gt;From a performance perspective, the fully async architecture, stateless services, and lock-free design are the three defining traits of ZSvirt. The system doesn't rely on a sea of locks for safety — it manages concurrency through message routing, resource ownership, and task queues. Operations on the same resource are processed in order; operations on different resources run in parallel whenever possible. This raises overall throughput and keeps behavior more predictable under large-scale concurrency.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Extensibility and Openness: A Message Bus and Plugins That Adapt to Scale and Difference
&lt;/h2&gt;

&lt;p&gt;As virtualization scale grows, the number of resources the system manages increases quickly: more compute nodes, more VMs, more virtual disks, more network configurations, and more concurrent tasks. At the same time, different enterprises have very different infrastructure environments — some use local storage, others shared or distributed storage; some networks are VLAN-based, others need more complex virtual network models; and different customers have different requirements for security, monitoring, backup, and image management.&lt;/p&gt;

&lt;p&gt;ZSvirt's extensibility starts with the message bus. Management services communicate through a message bus instead of calling each other directly. This decouples the services, keeping VM management, storage management, network management, image management, and identity and authentication logically independent. Each service focuses on its own resource domain and collaborates with others through messaging.&lt;/p&gt;

&lt;p&gt;ZSvirt also offers extensibility through a plugin architecture. Compute, storage, network, security, and monitoring capabilities can be extended as modules or plugins. The upper layer keeps a unified resource model and operation interface, while the lower layer can adapt to different implementations. For example, storage appears to the upper layer as virtual disks and storage pools, but underneath it can connect to different kinds of storage systems; networking appears as virtual networks and address configuration, but underneath it can adapt to different network schemes based on the environment.&lt;/p&gt;

&lt;p&gt;The value of the plugin architecture is that it keeps the core system stable while allowing peripheral capabilities to evolve continuously. That matters especially for a virtualization engine like ZSvirt, because infrastructure environments keep changing — new hardware, new storage solutions, new networking modes, and new security capabilities keep appearing. Only an architecture that is open enough can keep adapting to different production environments.&lt;/p&gt;

&lt;p&gt;Openness is also reflected at the API layer. Through standardized interfaces, ZSvirt can integrate with monitoring systems, operations tools, resource management systems, and automation tooling. So ZSvirt isn't just a standalone virtualization management product — it can also serve as the virtualization capability foundation within an enterprise's broader infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. In Conclusion
&lt;/h2&gt;

&lt;p&gt;This architecture is not a blueprint drawn up for a new project — it's the result of the same engine running for years across more than 1,000 production environments. Today it's fully open as ZSvirt. Every mechanism described above — the message bus, the async framework, the workflow engine, consistent hashing, the agent layer — you can find the corresponding implementation in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issue reports&lt;/strong&gt;: &lt;a href="https://github.com/zsvirt/zsvirt/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community discussions&lt;/strong&gt;: &lt;a href="https://github.com/ZSvirt/zsvirt/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social media&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://youtube.com/@ZSvirt" rel="noopener noreferrer"&gt;https://youtube.com/@ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/zsvirt-community/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/zsvirt-community/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X/Twitter: &lt;a href="https://x.com/ZSvirt" rel="noopener noreferrer"&gt;https://x.com/ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Email: &lt;a href="//community@zsvirt.io"&gt;community@zsvirt.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>virtualmachine</category>
      <category>cloudnative</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>ZSvirt Quick Start: From ISO to Your First VM, Step by Step</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Wed, 19 Aug 2026 14:55:00 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/zsvirt-quick-start-from-iso-to-your-first-vm-step-by-step-4o8p</link>
      <guid>https://dev.to/zsvirt_community/zsvirt-quick-start-from-iso-to-your-first-vm-step-by-step-4o8p</guid>
      <description>&lt;p&gt;Over the past two days, we announced ZSvirt's open-source release and explained why we made this decision. Today, let's get hands-on.&lt;/p&gt;

&lt;p&gt;If you're evaluating ZSvirt, the fastest way to learn it isn't reading the entire user manual — it's &lt;strong&gt;getting a VM running with your own hands&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This tutorial walks you through a minimal end-to-end path: install the management node → initialize the platform → add hosts, storage, networks, and images → create your first VM and log in to it. When you're done, you'll have a VM that can reach the internet and open a console — which means every core platform link is working.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: low-level command and API names still use legacy fields such as &lt;code&gt;zstack-ctl&lt;/code&gt;, &lt;code&gt;zstack-cli&lt;/code&gt;, PrimaryStorage, and BackupStorage, and the built-in test image is named &lt;code&gt;ZStack-image-1.4&lt;/code&gt;. These are command-layer names and don't affect platform operations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Before You Start: One Server Is Enough
&lt;/h2&gt;

&lt;p&gt;The minimal setup is All-in-One: a single server acts as both the management node and a compute node. The hardware bar is low:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Minimum&lt;/th&gt;
&lt;th&gt;Recommended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Intel VT or AMD-V, at least 8 cores&lt;/td&gt;
&lt;td&gt;24 cores or more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;24 GB or more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System disk&lt;/td&gt;
&lt;td&gt;100 GB&lt;/td&gt;
&lt;td&gt;200 GB or more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NIC&lt;/td&gt;
&lt;td&gt;1 management NIC&lt;/td&gt;
&lt;td&gt;Separate management, storage, and service networks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP&lt;/td&gt;
&lt;td&gt;Static IP&lt;/td&gt;
&lt;td&gt;Static IP with DNS/NTP configured in advance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two easily overlooked points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't use DHCP.&lt;/strong&gt; The management node IP is written into the platform configuration during installation, and changing it later is painful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync the system time.&lt;/strong&gt; If the management node's clock is earlier than the installation package's build time, the installer will fail outright — this is the first pit most newcomers hit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also prepare the ISO installation media: &lt;code&gt;ZSvirt-x86_64-DVD-&amp;lt;version&amp;gt;.iso&lt;/code&gt;. You can boot from a physical optical drive, a USB stick, or an ISO mounted via the server's remote console. For USB creation we recommend Rufus or Fedora Media Writer — both support Legacy and UEFI boot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install the Management Node from the ISO
&lt;/h2&gt;

&lt;p&gt;Boot from the ISO and the installer enters &lt;strong&gt;Install ZSvirt&lt;/strong&gt; by default — no manual selection needed. You'll land on the &lt;strong&gt;INSTALLATION SUMMARY&lt;/strong&gt; screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F647yen1hmg7xjwxpa6qn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F647yen1hmg7xjwxpa6qn.png" alt="Booting from the ISO" width="799" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F96vbncsyrlyuxrweqlq0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F96vbncsyrlyuxrweqlq0.png" alt="INSTALLATION SUMMARY screen" width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Complete the four configuration items in order:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Installation Destination (system disk)&lt;/strong&gt;: select a disk as the system disk and click &lt;strong&gt;Done&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fklc38w18pbqq7hx3lsgj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fklc38w18pbqq7hx3lsgj.png" alt="Selecting the system disk" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Software Selection (installation mode)&lt;/strong&gt;: choose &lt;strong&gt;ZSvirt Management Node&lt;/strong&gt; and click &lt;strong&gt;Done&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fppossns5sitjqc6mvqwv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fppossns5sitjqc6mvqwv.png" alt="Selecting the ZSvirt Management Node installation mode" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Network &amp;amp; Host Name&lt;/strong&gt;: click &lt;strong&gt;Configure...&lt;/strong&gt; to open the NIC settings, switch &lt;strong&gt;IPv4 Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Method&lt;/strong&gt; to &lt;strong&gt;Manual&lt;/strong&gt;, click &lt;strong&gt;Add&lt;/strong&gt;, and fill in your planned IP, netmask, and gateway:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fswnyih86a9pf4fbqnfic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fswnyih86a9pf4fbqnfic.png" alt="Configuring the ens3 IPv4 address" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't forget to enable &lt;strong&gt;Connect automatically with priority (0)&lt;/strong&gt; on the &lt;strong&gt;General&lt;/strong&gt; tab — otherwise the NIC won't come up after reboot:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjlpl2sx8tq51x0dujm4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjlpl2sx8tq51x0dujm4b.png" alt="Enabling automatic NIC activation" width="500" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Root Password&lt;/strong&gt;: enter the root password twice and click &lt;strong&gt;Done&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdiy9atddwj0p8tsxqcj8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdiy9atddwj0p8tsxqcj8.png" alt="Setting the root password" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once all four items are ready, click &lt;strong&gt;Begin Installation&lt;/strong&gt;. The system then reboots automatically and continues installing the ZSvirt management node service:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3aihay3opei4vle5ndf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3aihay3opei4vle5ndf2.png" alt="Beginning the installation" width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqlnyblowsugvugo2yyp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqlnyblowsugvugo2yyp8.png" alt="Automatic management node service installation" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the system enters the TUI and &lt;strong&gt;both MN and UI show Running&lt;/strong&gt;, the management node is ready:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvia32k6n5vuya3t2ivwp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvia32k6n5vuya3t2ivwp.png" alt="TUI showing MN and UI as Running" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want extra assurance, log in and run two quick checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;zstack-ctl status
zstack-ctl show_configuration | &lt;span class="nb"&gt;grep &lt;/span&gt;management.server.ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the installation fails, check &lt;code&gt;/tmp/zstack_installation-*.log&lt;/code&gt; first; for Web UI issues, look at &lt;code&gt;/usr/local/zstack/zstack-ui/logs/ui-install.log&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Initialize the Platform
&lt;/h2&gt;

&lt;p&gt;Point your browser at the &lt;strong&gt;management node IP&lt;/strong&gt; and log in with the default credentials &lt;strong&gt;admin/password&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuchvpp5klciiep7493kw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuchvpp5klciiep7493kw.png" alt="Logging in to the ZSvirt management platform" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ In production, always change the default password immediately after your first login. It's a good habit even in test environments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On first login, the platform guides you through creating a datacenter and a cluster. QuickStart only needs one of each: name the datacenter &lt;strong&gt;Datacenter-1&lt;/strong&gt; and the cluster &lt;strong&gt;Cluster-1&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8gisavx4d5186dpi6bth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8gisavx4d5186dpi6bth.png" alt="Creating a datacenter" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe0s9zy11xmznog1an4yv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe0s9zy11xmznog1an4yv.png" alt="Creating a cluster" width="799" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conceptually, a datacenter hosts a group of compute, storage, and network resources, while a cluster organizes hosts, datastores, and distributed switches. Create them first — everything else attaches underneath.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Add the Management Node as a Host
&lt;/h2&gt;

&lt;p&gt;The All-in-One trick is to add the management node itself as a host. Enter a name, the IP address (the management node IP), and the root password, click &lt;strong&gt;OK&lt;/strong&gt;, and wait until the host shows as connected:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgpixdgrcn0cit2czbe01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgpixdgrcn0cit2czbe01.png" alt="Adding a host" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this step fails, nine times out of ten it's SSH connectivity or a wrong root password — test manually with &lt;code&gt;ssh root@&amp;lt;host IP&amp;gt;&lt;/code&gt; first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Add a Datastore and Image Storage
&lt;/h2&gt;

&lt;p&gt;VM disks live on datastores; system images live on image storage. You need both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Datastore&lt;/strong&gt;: for testing, a local datastore is fine. Enter a name and a mount path (don't reuse the system root or a temp directory), then click &lt;strong&gt;OK&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0je9wmg83a0q47yffddp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0je9wmg83a0q47yffddp.png" alt="Adding a datastore" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: local datastores work for single-host verification but can't do cross-host migration. To try live migration later, switch to shared storage that all hosts can access.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Image storage&lt;/strong&gt;: enter a name, the image storage IP (again the management node IP), and the password, click &lt;strong&gt;Test Connection&lt;/strong&gt;, select &lt;strong&gt;Local Directory&lt;/strong&gt;, and click &lt;strong&gt;OK&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvoryx2er7r90kixr2qhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvoryx2er7r90kixr2qhj.png" alt="Adding image storage" width="799" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then add a system image (qcow2 or raw). For testing, the defaults are fine — just click &lt;strong&gt;OK&lt;/strong&gt;. The system automatically provisions a test image, &lt;code&gt;ZStack-image-1.4&lt;/code&gt;, which you can use right away to verify VM creation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxp2bji75ckhz6s8ong9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxp2bji75ckhz6s8ong9.png" alt="Adding an image" width="799" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Import speed depends on the network path between the image storage, management node, hosts, and datastores, so be patient with large images. If it fails, first confirm the platform can read the image URL or local path (&lt;code&gt;curl -I &amp;lt;image URL&amp;gt;&lt;/code&gt; or &lt;code&gt;qemu-img info &amp;lt;image file&amp;gt;&lt;/code&gt; are handy).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Create the Network
&lt;/h2&gt;

&lt;p&gt;Create a distributed switch and a distributed port group. Using vlan-2344 as an example, configure the VLAN ID, IP allocation method, and DNS, then click &lt;strong&gt;OK&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkiczs4rf2fpbw1m6n7i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkiczs4rf2fpbw1m6n7i9.png" alt="Creating a distributed switch and port group" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For quick verification, &lt;strong&gt;enable IP address management and DHCP&lt;/strong&gt; so VMs get IPs automatically.&lt;/li&gt;
&lt;li&gt;Don't let the network segment overlap the gateway, DHCP service IP, or existing service addresses — this is the second most common pit, and it's why most "VM got no IP" reports happen.&lt;/li&gt;
&lt;li&gt;All hosts in the cluster need a physical interface or bond with the same name; when using VLANs, the switch-side trunk/access configuration must match the platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 6: Create Your First VM
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;Create VM&lt;/strong&gt;, enter a name, select the &lt;strong&gt;system image&lt;/strong&gt; you just imported for disk 1, pick &lt;strong&gt;NIC 1&lt;/strong&gt;, and confirm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F11mcaom2pfrszibdu4jf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F11mcaom2pfrszibdu4jf.png" alt="Creating a VM" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the VM shows as Running and the console reaches a login screen, you're most of the way there.&lt;/p&gt;

&lt;p&gt;Log in to the guest and run a quick verification:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip addr
ip route
ping &lt;span class="nt"&gt;-c&lt;/span&gt; 4 &amp;lt;gateway IP&amp;gt;
ping &lt;span class="nt"&gt;-c&lt;/span&gt; 4 1.1.1.1
ping &lt;span class="nt"&gt;-c&lt;/span&gt; 4 example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reading the results is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gateway reachable&lt;/strong&gt; → distributed switch, port group, DHCP, and VLAN are all working;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External IP reachable&lt;/strong&gt; → upstream routing works;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain resolves and responds&lt;/strong&gt; → DNS works.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 7: Double-Check via CLI (Optional)
&lt;/h2&gt;

&lt;p&gt;If you prefer the command line, run a full-chain health check on the management node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;zstack-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LogInByAccount accountName=admin password=&amp;lt;admin password&amp;gt;

QueryHost fields=uuid,name,managementIp,state,status
QueryPrimaryStorage fields=uuid,name,type,state,status,availableCapacity,totalCapacity
QueryBackupStorage fields=uuid,name,type,state,status,availableCapacity,totalCapacity
QueryL3Network fields=uuid,name,type
QueryImage fields=uuid,name,state,status
QueryVmInstance name=vm-test-01 fields=uuid,name,state,hostUuid,vmNics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host state=Enabled status=Connected
PrimaryStorage state=Enabled status=Connected
BackupStorage state=Enabled status=Connected
Image state=Enabled status=Ready
VmInstance state=Running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything matches, the compute-storage-network-image-VM chain is fully working.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Cheat Sheet
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Check first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Installation script exits&lt;/td&gt;
&lt;td&gt;System time, root privileges, &lt;code&gt;/tmp/zstack_installation-*.log&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failed to add host&lt;/td&gt;
&lt;td&gt;SSH connectivity, root password, time sync, firewall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failed to add image&lt;/td&gt;
&lt;td&gt;Image URL readability, image format, free image storage capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VM gets no IP&lt;/td&gt;
&lt;td&gt;Segment overlapping gateway/reserved addresses, DHCP enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Console won't open&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;zstack-ctl status&lt;/code&gt;, browser certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a more complete list, see the &lt;a href="https://zsvirt.io/docs" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Once the minimal environment works, continue in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Change the default password&lt;/strong&gt; and create individual admin accounts;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure NTP&lt;/strong&gt; so the management node, hosts, and storage share the same time;&lt;/li&gt;
&lt;li&gt;Switch the local datastore to &lt;strong&gt;shared storage&lt;/strong&gt; and try cross-host live migration;&lt;/li&gt;
&lt;li&gt;Build standard &lt;strong&gt;Linux/Windows template images&lt;/strong&gt; and install VMTools for complete in-guest monitoring;&lt;/li&gt;
&lt;li&gt;When you need dual-node high availability, see the HA chapter of the &lt;a href="https://zsvirt.io/docs" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A fully illustrated step-by-step reference is also available on the &lt;a href="https://zsvirt.io/docs" rel="noopener noreferrer"&gt;documentation site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you run into issues during deployment, feel free to open an issue on &lt;a href="https://github.com/zsvirt/zsvirt/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt; or join the technical discussion on GitHub Discussions.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/zsvirt/zsvirt" rel="noopener noreferrer"&gt;https://github.com/zsvirt/zsvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download Center: &lt;a href="https://zsvirt.io/download" rel="noopener noreferrer"&gt;https://zsvirt.io/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Documentation Center: &lt;a href="https://zsvirt.io/docs" rel="noopener noreferrer"&gt;https://zsvirt.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issue reports&lt;/strong&gt;: &lt;a href="https://github.com/zsvirt/zsvirt/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community discussions&lt;/strong&gt;: &lt;a href="https://github.com/ZSvirt/zsvirt/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social media&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://youtube.com/@ZSvirt" rel="noopener noreferrer"&gt;https://youtube.com/@ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/zsvirt-community/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/zsvirt-community/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X/Twitter: &lt;a href="https://x.com/ZSvirt" rel="noopener noreferrer"&gt;https://x.com/ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Email: &lt;a href="//community@zsvirt.io"&gt;community@zsvirt.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>virtualmachine</category>
      <category>opensource</category>
      <category>zsvirt</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Why We Open-Sourced ZSvirt?</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Tue, 18 Aug 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/why-we-open-sourced-zsvirt-1457</link>
      <guid>https://dev.to/zsvirt_community/why-we-open-sourced-zsvirt-1457</guid>
      <description>&lt;p&gt;&lt;em&gt;Yesterday, we open-sourced ZSvirt. Today, we want to talk about why.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;ZSvirt didn't start life as an open-source project. Its commercial counterpart, &lt;a href="https://www.zstack.io/product/virtualization/zsphere/" rel="noopener noreferrer"&gt;ZStack ZSphere&lt;/a&gt;, is a virtualization platform built by &lt;a href="https://zstack.io" rel="noopener noreferrer"&gt;ZStack&lt;/a&gt;'s engineering team over years of large-scale VMware replacement work — continuously developed, validated in real production environments, and deeply optimized.&lt;/p&gt;

&lt;p&gt;The codebase now released as ZSvirt v1.0.0 has been running in demanding production environments for a long time. In these environments, the control plane manages more than 10,000 hosts, and a single VM can carry up to 768 vCPUs. For workloads this critical, makeshift maintenance is simply not an option.&lt;/p&gt;

&lt;p&gt;That history matters to us, because virtualization is not a field where a demo alone proves long-term value.&lt;/p&gt;

&lt;p&gt;A hypervisor's real worth is proven in critical moments and under pressure: when a disk fails, when you live-migrate during peak hours, when an audit deadline lands.&lt;/p&gt;

&lt;p&gt;We've been through enough of these moments to believe that ZSvirt is ready for scrutiny from a wider community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Now? Why Open Source?
&lt;/h2&gt;

&lt;p&gt;Two years ago, this decision wouldn't have felt as urgent.&lt;/p&gt;

&lt;p&gt;Since &lt;a href="https://www.broadcom.com/company/news/articles/cloud/vmware-by-broadcom-business-transformation" rel="noopener noreferrer"&gt;Broadcom acquired VMware&lt;/a&gt;, the way we talk to infrastructure administrators has changed. Teams running vSphere — and teams also running Hyper-V, Proxmox VE, or Nutanix — are re-evaluating their virtualization strategy, often under cost and budget pressure.&lt;/p&gt;

&lt;p&gt;In these conversations, the questions we keep hearing are not about features. They are:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Can we read the code?" "Can we audit it?" "If the vendor's strategy changes down the road, how do we protect ourselves?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We could have answered these questions with promises. Instead, we chose to answer with a public repository. ZSvirt v1.0.0 is the first release to open the complete source code, build scripts, a signed installation ISO, and the accompanying documentation.&lt;/p&gt;

&lt;p&gt;More importantly, in our view, "zero vendor lock-in" should live in the license and the code itself — not as a tagline in a product brochure. The virtualization layer carries a large share of an enterprise's business-critical workloads. If users can't read, audit, or build from the code themselves, a critical part of their infrastructure remains a dependency they don't fully control. Our belief is simple: infrastructure this important should not be subject to any single vendor's commercial decisions — including our own.&lt;/p&gt;

&lt;p&gt;We understand that people may have questions about this decision, because we'd ask the same ones. An infrastructure open-source project launched by a commercial company naturally raises legitimate concerns: will the license change as the project grows? Is this an open-core play that keeps the real capabilities hidden?&lt;/p&gt;

&lt;p&gt;So we want to state our commitments publicly.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Transparent Business Model
&lt;/h2&gt;

&lt;p&gt;We will clearly define the boundary between the community edition and the commercial offering.&lt;/p&gt;

&lt;p&gt;What stays open, always:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The virtualization platform itself, including compute, storage, and network virtualization;&lt;/li&gt;
&lt;li&gt;The full API surface;&lt;/li&gt;
&lt;li&gt;ZMigrate, our free and unlimited migration tool;&lt;/li&gt;
&lt;li&gt;The Terraform Provider and Go, Python, and Java SDKs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What's commercial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enterprise-grade support services from ZStack;&lt;/li&gt;
&lt;li&gt;Capabilities exclusive to the enterprise edition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will maintain public documentation that spells out which capabilities belong to the community edition and which to the commercial edition — and we will not move already-open features behind a paywall. That commitment applies to future releases as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the license: ZSvirt will continue to be released under GPL 3.0. The license will not change.&lt;/strong&gt; We want that to be clear from day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where We Fit
&lt;/h2&gt;

&lt;p&gt;We don't believe ZSvirt is the only right choice for every organization, and we're not here to dismiss approaches the industry has widely adopted. Organizations have different infrastructure needs. ZSvirt is built for teams and individuals who want enterprise-grade capability, openness, and control at the same time.&lt;/p&gt;

&lt;p&gt;There are several valid paths in virtualization, each serving different operational needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public cloud managed services&lt;/strong&gt;: the provider runs operations; you pay per workload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hyperconverged infrastructure platforms&lt;/strong&gt;: integrated hardware and software from a single vendor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A self-built KVM stack&lt;/strong&gt;: for teams with deep Linux expertise willing to build their own toolchain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes-native virtualization&lt;/strong&gt;: for organizations all-in on Kubernetes, managing infrastructure cloud-natively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight single-node virtualization&lt;/strong&gt;: for small deployments and edge scenarios that don't need a full cluster control plane.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many enterprise teams, though, have a different set of needs. They want to keep the familiar operating model of a traditional virtualization platform while gaining the openness, flexibility, and control that come with an open foundation. These teams typically manage infrastructure around familiar concepts — clusters, hosts, VMs, networks, and datastores — and need production-grade capabilities. At the same time, they want to avoid hardware and platform lock-in, don't want Kubernetes as a prerequisite for managing VMs, and want a fully open API.&lt;/p&gt;

&lt;p&gt;For these teams, ZSvirt offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scale&lt;/strong&gt;: a single control plane managing 10,000+ hosts;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Openness&lt;/strong&gt;: 2,000+ asynchronous RESTful/OpenAPI endpoints, with Go, Python, and Java SDKs;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: native Secure Boot, vTPM 2.0, VM encryption, and built-in key management;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking&lt;/strong&gt;: distributed switches and port groups, plus SR-IOV-accelerated networking with live migration support;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration&lt;/strong&gt;: ZMigrate, an agentless migration tool running at the virtualization layer, cutting over in as little as 5 minutes;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise capabilities&lt;/strong&gt;: HA, DRS, snapshots, backup, alerting, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your organization is looking for that balance, ZSvirt is built for you. If another approach fits your needs better, we respect that — and encourage you to adopt the platform that best suits your environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Community
&lt;/h2&gt;

&lt;p&gt;For us, open-sourcing ZSvirt is not a one-time launch event. It's the start of a long-term collaboration.&lt;/p&gt;

&lt;p&gt;Concretely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A public roadmap, updated quarterly&lt;/strong&gt;, so users and contributors can see where the platform is heading;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fully public contribution guidelines&lt;/strong&gt; — contributions of every kind are welcome, from docs and testing to code;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A predictable community process&lt;/strong&gt;: technical discussions happen on GitHub Discussions; bugs and documentation issues are tracked in GitHub Issues, with the engineering team responsible for each module participating directly. We respond to issues on business days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We look forward to the community shaping where ZSvirt goes next — open collaboration builds stronger software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ZSvirt
&lt;/h2&gt;

&lt;p&gt;Download the ISO — published with checksums and cryptographic signatures — and explore ZSvirt in your own environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/zsvirt/zsvirt" rel="noopener noreferrer"&gt;https://github.com/zsvirt/zsvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Downloads: &lt;a href="https://zsvirt.io/download" rel="noopener noreferrer"&gt;https://zsvirt.io/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a href="https://zsvirt.io/docs" rel="noopener noreferrer"&gt;https://zsvirt.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Star or watch the ZSvirt repository to follow new releases, development progress, and technical discussions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issue reports&lt;/strong&gt;: &lt;a href="https://github.com/zsvirt/zsvirt/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community discussions&lt;/strong&gt;: &lt;a href="https://github.com/ZSvirt/zsvirt/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social media&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://youtube.com/@ZSvirt" rel="noopener noreferrer"&gt;https://youtube.com/@ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/zsvirt-community/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/zsvirt-community/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X/Twitter: &lt;a href="https://x.com/ZSvirt" rel="noopener noreferrer"&gt;https://x.com/ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Reddit: &lt;a href="https://www.reddit.com/r/ZSvirt/" rel="noopener noreferrer"&gt;https://www.reddit.com/r/ZSvirt/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Email: &lt;a href="//community@zsvirt.io"&gt;community@zsvirt.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>virtualmachine</category>
      <category>cloudnative</category>
      <category>kubernetes</category>
      <category>opensource</category>
    </item>
    <item>
      <title>ZSvirt is Open Source: Enterprise-Grade Virtualization, Now Open to the Community</title>
      <dc:creator>ZSvirt</dc:creator>
      <pubDate>Mon, 17 Aug 2026 02:29:17 +0000</pubDate>
      <link>https://dev.to/zsvirt_community/zsvirt-is-open-source-enterprise-grade-virtualization-now-open-to-the-community-2ee7</link>
      <guid>https://dev.to/zsvirt_community/zsvirt-is-open-source-enterprise-grade-virtualization-now-open-to-the-community-2ee7</guid>
      <description>&lt;p&gt;&lt;em&gt;ZSvirt is now officially open source under the GPL 3.0 license. The full source code is available on GitHub, and ISO installation images and technical documentation are available on the community site.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3baasc2eqykdxeslildb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3baasc2eqykdxeslildb.png" alt="zsvirt.io" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KUALA LUMPUR / SHANGHAI, August 12, 2026&lt;/strong&gt; — &lt;a href="https://github.com/zsvirt/zsvirt" rel="noopener noreferrer"&gt;ZSvirt&lt;/a&gt;, launched by infrastructure vendor &lt;a href="https://zstack-cloud.com" rel="noopener noreferrer"&gt;ZStack&lt;/a&gt;, today officially announced its open-source release under the GPL 3.0 license. The complete source code, ISO installation images, and technical documentation are now available at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/zsvirt/zsvirt" rel="noopener noreferrer"&gt;https://github.com/zsvirt/zsvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Community site: &lt;a href="https://zsvirt.io" rel="noopener noreferrer"&gt;https://zsvirt.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since &lt;a href="https://blogs.vmware.com/china/2024/03/12/vmware-by-broadcom-%E4%BA%A7%E5%93%81%E5%90%91%E8%AE%A2%E9%98%85%E8%BD%AC%E5%9E%8B/" rel="noopener noreferrer"&gt;Broadcom's acquisition of VMware&lt;/a&gt; and the licensing changes that followed, more organizations are re-evaluating their virtualization strategy around TCO, looking for greater flexibility, transparency, and control over how they run workloads. ZSvirt is going open source at this moment to give teams evaluating alternatives an open, proven option — one that doesn't require changing existing operational habits.&lt;/p&gt;

&lt;p&gt;ZSvirt brings the enterprise-proven &lt;a href="https://www.zstack-cloud.com/" rel="noopener noreferrer"&gt;ZStack ZSphere&lt;/a&gt; virtualization engine to the open-source world. As a lightweight, scalable platform, it gives teams full control over their infrastructure — from homelabs to hyperscale production environments — without vendor lock-in. Unlike approaches that require adopting an entirely new operational model, ZSvirt keeps the familiar VM-centric workflows around clusters, hosts, virtual machines, storage, and networking, while letting users evaluate, deploy, and take part in the platform's evolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Large-scale virtualization&lt;/strong&gt;: a single control plane manages 10,000+ hosts; a single VM supports up to 768 vCPUs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless VMware migration&lt;/strong&gt;: 100% agentless migration. The built-in ZMigrate toolset runs entirely at the virtualization layer, with full-disk block copy and background incremental sync, cutting over in as little as 5 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in security&lt;/strong&gt;: native VM Secure Boot, vTPM 2.0, VM encryption, security-group microsegmentation, and immutable audit logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open integration&lt;/strong&gt;: 2,000+ production-ready RESTful/OpenAPI endpoints, a native Terraform Provider, and Go, Python, and Java SDKs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Proven in Production
&lt;/h2&gt;

&lt;p&gt;ZSvirt runs the same enterprise-grade engine as ZSphere, validated in more than 1,000 production environments — including VMware replacement projects — across finance, healthcare, education, manufacturing, transportation, and other industries. Today, we're opening that engine to the community under GPL 3.0, helping organizations migrate and upgrade their virtualization platforms without disrupting their business.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dti5dfepw28ha1lljky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dti5dfepw28ha1lljky.png" alt="User Cases" width="799" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Future of Open Virtualization Together
&lt;/h2&gt;

&lt;p&gt;Over the next six to twelve months, the ZSvirt project will focus on accelerating platform maturity, expanding ecosystem compatibility, and improving operational efficiency across diverse infrastructure environments. The project roadmap, contribution guidelines, and governance documents will remain public, so users and contributors can follow where the platform is heading. Technical discussions happen on GitHub Discussions; bugs and documentation issues are tracked in GitHub Issues and handled directly by the engineering teams responsible for each module.&lt;/p&gt;

&lt;h2&gt;
  
  
  License and Governance
&lt;/h2&gt;

&lt;p&gt;ZSvirt is released under GPL 3.0. This strong copyleft license allows anyone to freely use, modify, and redistribute the source code, while requiring derivative works to be released under GPL 3.0 as well. We'll detail the boundary between the community and commercial editions in a follow-up post.&lt;/p&gt;

&lt;p&gt;This ensures that every improvement flows back to the community — and that ZSvirt remains free and open, permanently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download Center: &lt;a href="https://zsvirt.io/download" rel="noopener noreferrer"&gt;https://zsvirt.io/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Documentation Center: &lt;a href="https://zsvirt.io/docs" rel="noopener noreferrer"&gt;https://zsvirt.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issue reports&lt;/strong&gt;: &lt;a href="https://github.com/zsvirt/zsvirt/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community discussions&lt;/strong&gt;: &lt;a href="https://github.com/ZSvirt/zsvirt/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social media&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://youtube.com/@ZSvirt" rel="noopener noreferrer"&gt;https://youtube.com/@ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/zsvirt-community/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/zsvirt-community/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X/Twitter: &lt;a href="https://x.com/ZSvirt" rel="noopener noreferrer"&gt;https://x.com/ZSvirt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Email: &lt;a href="//community@zsvirt.io"&gt;community@zsvirt.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>virtualmachine</category>
      <category>opensource</category>
      <category>cloudnative</category>
      <category>gpl</category>
    </item>
  </channel>
</rss>
