How to Import a Hyper-V VM into Hyperion

Written By Sebastian Sime (Super Administrator)

Updated at October 21st, 2026

→ Applies to: Hyperion 9.x and above

This article describes how to migrate an existing virtual machine from Microsoft Hyper-V to a Syneto Hyperion appliance. There are two methods: an automated import using the syneto-hyperv-import script, which can migrate the VM without powering it off, and a manual import based on exporting and converting the disks.

 

Import Via Script

The syneto-hyperv-import tool connects to the Hyper-V host, converts the VM’s disks and creates the VM on Hyperion automatically. The source VM can stay running during the import.

PREREQUISITES

  • A local administrator account on the Hyper-V host (domain accounts are not supported).
  • The Hyper-V host is reachable from Hyperion on WinRM (port 5985) and SMB (port 445).
  • Hyperion has internet access to files.syneto.eu and pypi.org (needed to download and install the import tool).
  • The source VM has no checkpoints. Delete them on the Hyper-V host before importing.
  • The target storage pool has free space of about three times the used size of the VM’s disks.

 

Step 1. On the Hyper-V host, open PowerShell as administrator and allow SMB access

Enable-NetFirewallRule -DisplayGroup "File and Printer Sharing"
Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Profile Any

NOTE
-Profile Any is required when Hyperion is on a different subnet. Without it, port 445 stays blocked.

 

Step 2. Connect to Hyperion CLI ("How to Connect to SynetoOS 6 CLI")

Step 3. Download the import tool

wget --content-disposition -P /tmp "https://files.syneto.eu/s/yMXnaqFawsGKwkr/download?path=/&files=syneto-hyperv-import.tgz"
wget --content-disposition -P /tmp "https://files.syneto.eu/s/yMXnaqFawsGKwkr/download?path=/&files=uv"

 

Step 4. Verify the downloaded files

sha256sum /tmp/syneto-hyperv-import.tgz /tmp/uv

EXAMPLE OUTPUT

aa631c66806022226a462ad7219b1fd4f0e91a334630cf6bdfa85b49552199c4  /tmp/syneto-hyperv-import.tgz
cd952ca51e2c730e848a45c4e0dfb58926d79d90550b6a5feb5543b43d3248b4  /tmp/uv

IMPORTANT
If the values are different, do not continue. Download the files again or contact Syneto Support.

 

Step 5. Install uv (only if it is not already installed)

command -v uv || install -m 755 /tmp/uv /usr/local/bin/uv

 

Step 6. Install the import tool

tar xzf /tmp/syneto-hyperv-import.tgz -C /opt
UV_TOOL_BIN_DIR=/usr/local/bin uv tool install --from /opt/syneto-hyperv-import syneto-hyperv-import

EXAMPLE OUTPUT

Resolved 14 packages in 720ms
      Built syneto-hyperv-import @ file:///opt/syneto-hyperv-import
Prepared 14 packages in 1.56s
Installed 14 packages in 26ms
 + certifi==2026.10.19
 + cffi==2.0.0
 + charset-normalizer==3.5.2
 + cryptography==50.0.2
 + idna==3.20
 + pycparser==2.23
 + pyspnego==0.12.4
 + pywinrm==0.5.0
 + requests==2.32.5
 + requests-ntlm==1.3.0
 + syneto-hyperv-import==0.1.0 (from file:///opt/syneto-hyperv-import)
 + typing-extensions==4.16.0
 + urllib3==2.6.3
 + xmltodict==1.0.4
Installed 1 executable: syneto-hyperv-import

NOTE
This step downloads the tool’s dependencies from pypi.org. Package versions and timings may differ from the example. The last line must be Installed 1 executable: syneto-hyperv-import.

 

Step 7. Check the installation

which syneto-hyperv-import

EXAMPLE OUTPUT

/usr/local/bin/syneto-hyperv-import

 

Step 8. Remove the downloaded files

rm /tmp/syneto-hyperv-import.tgz /tmp/uv

NOTE
Steps 3 to 8 are needed only once per Hyperion appliance. For further imports on the same appliance, start from Step 9.

 

Step 9. Run the preflight check (replace <hyperv-ip> with the IP of the Hyper-V host)

syneto-hyperv-import check <hyperv-ip>

Enter the Hyper-V administrator password when prompted.

NOTE
If the administrator account is not called Administrator, add --user <username> to every command.

 

Step 10. List the VMs on the Hyper-V host (replace <hyperv-ip> with the IP of the Hyper-V host)

syneto-hyperv-import list <hyperv-ip>

EXAMPLE OUTPUT

NAME                     STATE    GEN CPU  MEMORY GUEST_OS                   DISKS CHKPTS  IMPORTABLE
VM1                      Running    2   2    4.0G Windows Server 2025 Stand…     2      0  yes — live, no downtime
web-prod-01              Off        2   4   16.0G Windows?                       1      2  no — 2 checkpoint(s)

NOTE
Check that the VM shows yes in the IMPORTABLE column.

 

Step 11. Review the import plan (replace <hyperv-ip> with the IP of the Hyper-V host, <vm-name> with the name of the source VM and <pool-name> with the name of the storage pool)

syneto-hyperv-import <hyperv-ip> <vm-name> --pool <pool-name> --dry-run

EXAMPLE

syneto-hyperv-import 192.168.60.20 m1-w2019 --pool hybrid --dry-run

NOTE
The dry run shows the source, target, firmware, CPU, memory, disks and space needed, and changes nothing.

 

Step 12. Import the VM (replace <hyperv-ip>, <vm-name>, <pool-name> and <new-vm-name> with the correct information)

syneto-hyperv-import <hyperv-ip> <vm-name> --as <new-vm-name> --pool <pool-name>

EXAMPLE

syneto-hyperv-import 192.168.60.20 m1-w2019 --as VM1-Hyper-V-Test --pool hybrid

Confirm the plan when prompted and wait for the import to complete.

NOTE
Optional parameters:

  • --memory <size> (for example 8G) is required if the source VM uses dynamic memory.
  • --final-state stopped leaves the imported VM powered off.
  • --consistency app imports only if an application-consistent copy is possible. Use it for databases.

 

Step 13. Check the consistency result

If the source VM was running, the tool ends with a banner saying whether the copy is application-consistent or crash-consistent.

IMPORTANT
A crash-consistent copy is equivalent to a power loss. Windows recovers normally, but databases and mail servers may lose in-flight transactions. For these, shut down the source VM and run the import again, or use the Manual Import procedure.

 

Step 14. Shut down the source VM on Hyper-V

IMPORTANT
The imported VM’s network is disconnected by default, because it has the same hostname and identity as the source. Connect it only after the source VM is shut down.

 

Step 15. Log in to the SynetoOS GUI (replace <your_ip_address_or_hostname> with the correct information)

https://<your_ip_address_or_hostname>

 

Step 16. Connect the VM’s network adapter and perform the necessary health checks

 

Manual Import

PREREQUISITES

  • The source VM is powered off.
  • Enough space is available on the target storage pool on Hyperion, and locally on the Hyper-V host, to temporarily hold the exported disks.

 

Step 1. Create a new VM (“How to Create a VM in SynetoOS 6”)

IMPORTANT
Do not power on the VM. Ensure the VM has the same compute configuration as the original, including:

  • Same amount of RAM
  • Same number of CPUs
  • No attached storage disks
  • Firmware: UEFI
  • Secure Boot: Disabled

 

Step 2. Connect to Hyperion CLI ("How to Connect to SynetoOS 6 CLI")

Step 3. List the disks of the newly created VM (replace <new-vm-name> with the name of the new virtual machine)

virsh domblklist <new-vm-name>

EXAMPLE OUTPUT

Target     Source
-----------------------------------------------
 sda      -

 

Step 4. Retrieve the volume UUID of the newly created VM (replace <pool-name> with the name of the storage pool and <new-vm-name> with the name of the new virtual machine)

find /<pool-name>/syn-volumes/ -name "*.xml" | xargs grep -l "<new-vm-name>" 2>/dev/null | awk -F'/' '{print $4}'

EXAMPLE

find /hybrid/syn-volumes/ -name "*.xml" | xargs grep -l "VM1-Hyper-V-Test" 2>/dev/null | awk -F'/' '{print $4}'
4acf5b39-88cc-4e56-9fac-e9a88cc93837

Note down the UUID as it will be needed in the Restore steps, in this case: 4acf5b39-88cc-4e56-9fac-e9a88cc93837

 

Step 5. Create the temporary staging folder in Hyperion (replace <pool-name> with the correct information)

mkdir -p /<pool-name>/migration-staging

EXAMPLE

mkdir -p /hybrid/migration-staging

 

Export and Transfer the VM from Hyper-V

Step 1. In the Hyper-V console, right-click on the source VM, then select Export

 

Step 2. Choose the local export location, then click on Export

Wait for completion.

 

Step 3. In File Explorer, navigate to the export location and open the VM folder

 

Step 4. Open the Virtual Hard Disks folder

 

Step 5. Save the full path of the export location and the disk names

If the VM has multiple disks, note down the name of each disk

 

Step 6. Open the CMD or PowerShell as administrator, then copy each disk to the Hyperion appliance (replace <path_to_disks> with the path from Step 5 in the Export and Transfer the VM from Hyper-V subsection, <disk_name> with the disk name from Step 5, <hyperion-ip> with the IP of Hyperion and <pool-name> with the correct information)

scp "<path_to_disks>\<disk_name>.vhdx" admin@<hyperion-ip>:/<pool-name>/migration-staging/

EXAMPLE

scp "C:\Exports-VMs\m1-w2019\Virtual Hard Disks\m1-w2019.vhdx" admin@192.168.60.10:/hybrid/migration-staging/

IMPORTANT
Run this command for each disk attached to the VM, and wait for every transfer to complete. 
Hyperion admin credentials will be requested for each transfer.

 

Restore the VM Disk Images on Hyperion

Step 1. Connect to Hyperion CLI ("How to Connect to SynetoOS 6 CLI")

Step 2. Convert each copied disk (replace <disk_name> with the disk name from Step 5 in the Export and Transfer the VM from Hyper-V subsection, <pool-name> with the name of the storage pool, <vm-uuid> with the uuid from Step 4 in the Manual Import subsection and <new-vm-name> with the new vm name from Step 1 in the Manual Import subsection)

qemu-img convert -f vhdx -O raw -S 4k /<pool-name>/migration-staging/<disk_name>.vhdx /<pool-name>/syn-volumes/<vm-uuid>/<new-vm-name>_1.img

EXAMPLE

qemu-img convert -f vhdx -O raw -S 4k /hybrid/migration-staging/m1-w2019.vhdx /hybrid/syn-volumes/4acf5b39-88cc-4e56-9fac-e9a88cc93837/vm1-hyper-v-test_1.img

Repeat this command for each disk, incrementing the final number in order (_1.img, _2.img, etc.).

 

Step 3. Detach empty disk (replace <new-vm-name> with the new vm name from Step 1 in the Manual Import subsection)

virsh detach-disk <new-vm-name> sda --persistent

 

Step 4. Attach the converted disks to the new VM (replace <new-vm-name> with the new vm name from Step 1 in the Manual Import subsection, <pool-name> with the name of the storage pool and <vm-uuid> with the uuid from Step 4 in the Manual Import subsection)

virsh attach-disk <new-vm-name> /<pool-name>/syn-volumes/<vm-uuid>/<new-vm-name>_1.img sda --targetbus sata --persistent

EXAMPLE

virsh attach-disk VM1-Hyper-V-Test /hybrid/syn-volumes/4acf5b39-88cc-4e56-9fac-e9a88cc93837/vm1-hyper-v-test_1.img sda --targetbus sata --persistent

Repeat this command for each disk, incrementing the target identifier (sda, sdb, etc.).

 

Step 5. Verify the disk attachment (replace <new-vm-name> with the new vm name from Step 1 in the Manual Import subsection)

virsh domblklist <new-vm-name>

EXAMPLE

virsh domblklist VM1-Hyper-V-Test
 Target   Source
------------------------------------------------------------------------------------------
 sda      /hybrid/syn-volumes/4acf5b39-88cc-4e56-9fac-e9a88cc93837/vm1-hyper-v-test_1.img

 

Step 6. Log in to the SynetoOS GUI (replace <your_ip_address_or_hostname> with the correct information)

https://<your_ip_address_or_hostname>

 

Step 7. Power ON the VM and perform the necessary health checks

 

Remove Temporary Files After VM Health Checks

Step 1. Connect to Hyperion CLI ("How to Connect to SynetoOS 6 CLI")

Step 2. Delete the leftover temporary files (replace <pool-name> with the correct information)

rm -rf /<pool-name>/migration-staging

EXAMPLE

rm -rf /hybrid/migration-staging