ZSvirt FAQ: 20 questions from global users, Part 1

ZSvirt was open-sourced on August 12, 2026. Since then, users around the world have sent questions about the project’s positioning, features and technical capabilities, installation, day-to-day use, and roadmap. This two-part FAQ collects 20 representative questions in seven categories. Part 1 covers installation and login; Windows, GPU, and ARM support; and networking and storage.

What this FAQ covers

  • Installation and login
    • Q1: No spare server? How can I try ZSvirt?
    • Q2: What are the default login credentials?
    • Q3: After the prebuilt image first boots, how do I configure the management IP and start the service?
    • Q4: What are the host requirements? Can one cluster mix CPU models?
  • Windows, GPU, and ARM support
    • Q5: How do I configure vTPM and Secure Boot for Windows 11?
    • Q6: Are GPU passthrough and vGPU supported? How do I configure passthrough?
    • Q7: Is aarch64 supported? Are there plans for it?
  • Networking and storage
    • Q8: Where do I configure VLANs, DHCP, and NAT? Are VPC and EIP supported?
    • Q9: Does image storage need a dedicated server? How do I add a local spare disk or an existing directory as a datastore?
    • Q10: Which datastore types does ZSvirt support?
  • Migration and backup/recovery
    • Q11: Migrating from VMware: how do I choose a migration method?
    • Q12: How do I import an OVF? What if the data disk is not recognized?
    • Q13: What are the plans for Veeam integration? How do built-in backup, recovery, and off-site sync work?
  • API and SDK
    • Q14: How do I initialize the Java SDK? How do I get the final result of an HTTP 202?
    • Q15: Does ZSvirt support API integration? How do authentication and calls work?
  • Documentation and community
    • Q16: Where is the official documentation? Why are the ZStack/ZSphere names still used?
    • Q17: How do I report a fault, a feature request, or a UI translation issue?
    • Q18: How are security vulnerabilities reported and handled?
  • Open-source scope and platform selection
    • Q19: Can the open-source edition be used in production for free? How does it relate to OpenStack?
    • Q20: How do I evaluate the platform and its performance? What automation entry points are available?

Installation and login

Q1: No spare server? How can I try ZSvirt?

Download the official OVA or qcow2 image and deploy it inside an existing virtualization environment.

  • OVA: CPU, memory, and disk sizes follow the image defaults.
  • qcow2: allocate at least 8 vCPUs, 8 GiB of memory, and one management NIC, and have a static management IP ready.
  • On VMware, enable “Expose hardware assisted virtualization to the guest OS” and leave enough resources for your other VMs.

Minimal deployment sequence:

  1. Import the image.
  2. Configure the management IP and start the management service.
  3. Log in.
  4. Create a datacenter and cluster.
  5. Add a host, datastore, and image storage.
  6. Create a distributed switch and port group.
  7. Add a system image and create a VM.

In a single-node setup, use the same management IP for the host and image storage.

References: Deployment guide, Minimal deployment flow

Q2: What are the default login credentials?

The Web UI and system accounts are managed separately. For management node HA, enter the root SSH password of each of the two management nodes.

References: Login guide, HA password answer

Where Credential
Initial Web UI admin / password
System console and SSH after an ISO install The root password set during installation, or changed later
System console of the official prebuilt OVA/qcow2 Initial root / zsvirt.123
SSH authentication for management node HA (MN HA) Root SSH password of each management node

Change each of these initial passwords after the first login.

The console password for the community Trekerlite image is admin; it applies only to that image (Discussion #10).

References: Prebuilt image guide, Trekerlite answer

Q3: After the prebuilt image first boots, how do I configure the management IP and start the service?

After the official OVA or qcow2 image boots for the first time, configure the management IP and then start the management service. At the console, press Ctrl+Alt+F2 to switch to a login terminal and sign in as root.

Reference: Official steps

The commands below use bond0 as an example. Select the management NIC when prompted, configure a static address, and start the service:

zs-bond-ab -c bond0
zs-nic-to-bond -a bond0
zs-network-setting -i bond0 <management-node-IP> <netmask> <gateway>
zstack-ctl change_ip --ip <management-node-IP>
zstack-ctl start

Use a DHCP address (optional)

If the node already has a DHCP address, run ip addr on the console to confirm the management IP, then run:

zstack-ctl change_ip --ip <management-node-IP>
zstack-ctl start

Once the service is running, open https://<management-node-IP>.

Q4: What are the host requirements? Can one cluster mix CPU models?

A host must meet these requirements:

  • Run a supported OS, with QEMU/libvirt versions matching the other hosts in the cluster. Use the same CPU architecture as the cluster and enable hardware virtualization.
  • Have two-way connectivity with the management node, and NICs that match the cluster’s distributed switch.
  • Be able to reach the datastore.

A cluster can mix CPU models. “Host CPU model detection” under the cluster’s Modify Configuration is off by default; when it is on, a CPU model mismatch blocks adding hosts and live migration. Live migration across CPU models still requires compatible CPU features. Shut down a VM before changing its CPU mode.

References: Host version requirements, Cluster settings, CPU mode configuration

Windows, GPU, and ARM support

Q5: How do I configure vTPM and Secure Boot for Windows 11?

ZSvirt supports vTPM and Secure Boot.

The platform needs a usable key provider. The host kernel, QEMU, and libvirt versions must meet the vTPM requirements. The VM must boot in UEFI mode, and the guest OS must support TPM 2.0. Back up a built-in key provider before use, and shut down an existing VM before adding vTPM to it.

References: vTPM prerequisites, Secure Boot entry point

  1. Under Key Provider at the root of the resource tree, add a built-in provider. Then choose Actions > Backup, enable password protection, and save the backup file and password.
  2. When you create a VM, select Windows, choose UEFI under Advanced Settings > Boot Options and enable Secure Boot, then add vTPM under Hardware > Add Hardware > TPM.
  3. In Windows, open PowerShell as an administrator and check TPM and Secure Boot status:
Get-Tpm
Confirm-SecureBootUEFI

TpmPresent and TpmReady should read True, and the Secure Boot check should return True.

An existing Legacy system cannot be switched to UEFI in place. If you use BitLocker, store the recovery key outside the VM first.

Reference: Key backup guide

Q6: Are GPU passthrough and vGPU supported? How do I configure passthrough?

Physical GPU passthrough and vGPU are both supported. The GPU model, driver, partitioning method, and vendor licensing must be compatible.

References: GPU configuration entry point, Project response

Configure physical GPU passthrough in this order:

  1. Enable IOMMU/VT-d.
  2. Confirm that the platform detects the GPU.
  3. Shut down the VM and add the GPU device.
  4. Start the VM and install the guest driver.

If the platform still reports the GPU as unavailable after IOMMU is enabled, the host has usually not been rebooted. Migrate the VMs off the host, enter maintenance mode, confirm that no VMs are running, and reboot:

virsh list
sync;sync;reboot

Reference: IOMMU requirements

Q7: Is aarch64 supported? Are there plans for it?

The download page offers x86_64 images only, and there are no plans to provide aarch64 images.

Reference: ARM image answer

Networking and storage

Q8: Where do I configure VLANs, DHCP, and NAT? Are VPC and EIP supported?

VLANs, DHCP, and IP address management are configured on distributed port groups.

  1. Go to Resource Inventory > Network Resources, right-click the distributed switch, and create a port group.
  2. Select the VLAN type and, for a standard VLAN, the VLAN ID. Enable IP address management and DHCP as needed, then enter the subnet, gateway, address pool, DHCP service IP, and DNS. Allow the VLAN on the physical uplink, and keep the gateway, broadcast address, network address, and DHCP service IP out of the address pool.
  3. Attach the VM NIC to the port group and set the subnet’s real gateway as the default gateway. For outbound NAT (network address translation), configure it on the egress router or firewall.

Reference: Port group configuration

Are VPC and EIP supported?

No.

Q9: Does image storage need a dedicated server? How do I add a local spare disk or an existing directory as a datastore?

Image storage is added separately in ZSvirt. A single-node trial can reuse the management node; no dedicated server is required. Image storage holds system and disk images, while datastores hold VM disks.

Add image storage

  1. Go to Resource Inventory > Images and Templates, right-click the target datacenter, and choose Add Image Storage. Select Standalone Image Repository.
  2. Enter the storage node IP and SSH credentials, then test connectivity. If you reuse the management node, enter its IP and system SSH credentials.
  3. Choose Local Directory, enter the absolute path of the storage directory you planned, and confirm.

References: Single-node example, Add standalone image storage

Add a local disk or directory as a datastore

Go to Resource Inventory > Datastores, select the target datacenter, and choose Actions > Add Datastore. Select Local Storage, associate it with the target cluster, and choose how to add it:

  • Spare disk: select an unmounted local disk and enter a mount path. This formats the disk and erases all data on it.
  • Local directory: enter the absolute path of an existing dedicated directory and use the free space on its disk.

Click OK to finish. A local storage mount path cannot be a system directory such as /, /dev, /proc, /sys, /usr/bin, or /bin.

Reference: Add local storage

Q10: Which datastore types does ZSvirt support?

ZSvirt supports the following datastore types:

  • Local storage: local disks or directories on a host.
  • NFS: shared file storage.
  • SAN: shared block storage over FC, iSCSI, or NVMe.
  • Ceph distributed storage: block storage for VMs from a Ceph cluster.

References: Storage types, Ceph storage

Part 2 covers migration and backup/recovery, API and SDK, documentation and community, and open-source scope and platform selection: 10 more questions.


Join the Community