# ZSvirt FAQ (Part 1): 10 Questions on Deployment, GPU, Networking, and Storage

> The ZSvirt open-source release brought a wave of questions about deployment, GPU and ARM support, and networking and storage. This first part answers 10 of the most common ones, from OVA/qcow2 installs and default credentials to Windows 11 vTPM, GPU passthrough, port groups, and datastores, with links to the official documentation.

- Published: 2026-10-27
- Updated: 2026-10-27
- Author: [ZSvirt Team](https://github.com/ZSvirt)
- Category: Best Practice
- Tags: ZSvirt, FAQ, Installation, GPU Passthrough, ARM, Storage, Networking, ZSvirt FAQ, install ZSvirt, ZSvirt default password, ZSvirt GPU passthrough, ZSvirt vGPU, ZSvirt aarch64, ZSvirt datastore, ZSvirt image storage, ZSvirt VLAN, nested virtualization

[Image available on the canonical HTML page: ZSvirt FAQ: 20 questions from global users, Part 1](https://zsvirt.io/blog/zsvirt-faq-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](https://docs.zsvirt.io/en/docs/quick-start/nested-virtualization-management-node), [Minimal deployment flow](https://docs.zsvirt.io/en/docs/quick-start)

### 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](https://docs.zsvirt.io/en/docs/quick-start), [HA password answer](https://github.com/zsvirt/zsvirt/discussions/4)

| 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](https://github.com/zsvirt/zsvirt/discussions/10)).

References: [Prebuilt image guide](https://docs.zsvirt.io/en/docs/quick-start/nested-virtualization-management-node), [Trekerlite answer](https://github.com/zsvirt/zsvirt/discussions/10)

### 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](https://docs.zsvirt.io/en/docs/quick-start/nested-virtualization-management-node)

#### Configure a static management IP (recommended)

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

```bash
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:

```bash
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](https://docs.zsvirt.io/en/docs/faq/resource-inventory/host/host-addition-fails-with-a-libvirt-qemu-version-mismatch-error), [Cluster settings](https://docs.zsvirt.io/en/docs/user-guide/compute/cluster/basic-operations), [CPU mode configuration](https://docs.zsvirt.io/en/docs/user-guide/compute/vm/performance/cpu-features)

## 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](https://docs.zsvirt.io/en/docs/user-guide/compute/vm/security/vtpm), [Secure Boot entry point](https://docs.zsvirt.io/en/docs/user-guide/compute/vm/basic-operations/create-vm)

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:

```powershell
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](https://docs.zsvirt.io/en/docs/user-guide/compute/vm/security/native-key-provider/backup)

### 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](https://docs.zsvirt.io/en/docs/user-guide/compute/vm/basic-operations/create-vm), [Project response](https://github.com/zsvirt/zsvirt/issues/18)

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:

```bash
virsh list
sync;sync;reboot
```

Reference: [IOMMU requirements](https://docs.zsvirt.io/en/docs/faq/resource-inventory/host/a-host-cannot-recognize-a-gpu-device-what-should-i-do)

### 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](https://github.com/zsvirt/zsvirt/discussions/6)

## 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](https://docs.zsvirt.io/en/docs/user-guide/network/network-resources/port-group/create)

#### 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](https://docs.zsvirt.io/en/docs/quick-start), [Add standalone image storage](https://docs.zsvirt.io/en/docs/user-guide/compute/image-storage/basic-operations/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](https://docs.zsvirt.io/en/docs/user-guide/storage/add-datastore/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](https://docs.zsvirt.io/en/docs/user-guide/getting-started/product-features), [Ceph storage](https://docs.zsvirt.io/en/docs/api-reference/storage-management/data-storage-apis/distributed-storage/add-ceph-primary-storage)

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

---

- Source code: [https://github.com/zsvirt/zsvirt](https://github.com/zsvirt/zsvirt)
- Download Center: [https://zsvirt.io/download](https://zsvirt.io/download)
- Documentation Center: [https://zsvirt.io/en/docs](https://zsvirt.io/en/docs)

## Join the Community

- **Issue reports**: [GitHub Issues](https://github.com/zsvirt/zsvirt/issues)
- **Community discussions**: [GitHub Discussions](https://github.com/zsvirt/zsvirt/discussions)
- **Social media**:
  - YouTube: [https://youtube.com/@ZSvirt](https://youtube.com/@ZSvirt)
  - LinkedIn: [https://www.linkedin.com/in/zsvirt-community/](https://www.linkedin.com/in/zsvirt-community/)
  - X/Twitter: [https://x.com/ZSvirt](https://x.com/ZSvirt)
  - Discord: [https://discord.com/invite/KHsw63z9xA](https://discord.com/invite/KHsw63z9xA)
  - Email: [community@zsvirt.io](mailto:community@zsvirt.io)

## Official links


- [Canonical HTML page](https://zsvirt.io/blog/zsvirt-faq-part-1/)
- [Discuss on GitHub](https://github.com/ZSvirt/zsvirt/discussions)
