New Import Wizard Available for Migrating VMware ESXi Based Virtual Machines

t.lamprecht

Proxmox Staff Member
Staff member
Jul 28, 2015
6,427
3,423
303
South Tyrol/Italy
shop.proxmox.com
We are proud to announce the first release of our new integrated import wizard!

Proxmox VE now provides an integrated VM import wizard re-using the storage plugin system for native integration into the API and web-based user interface. You can use this to import VMware ESXi VMs as a whole, with most of its config mapped to Proxmox VE’s config model and reduced downtime.

gui-import-wizard-general.png

Video tutorial
https://youtu.be/8Z9Zvt2RxlA

Documentation
For more details see the reference docs and the updated "Migrate to Proxmox VE" wiki article, which provides a step-by-step guide.

Source Code
https://git.proxmox.com

Bugtracker
https://bugzilla.proxmox.com

FAQ
Q: How can I get the new import wizard?
A: Update your Proxmox VE to pve-manager version 8.1-8, libpve-storage-perl version 8.1.3 or newer, which should pull in the new pve-esxi-import-tools package.

Q: Why can't I find updates for those packages?
A: As of this writing, these packages are available in the pvetest and the pve-no-subscription repositories.

Q: What ESXi version does the new importer support?
A: We successfully tested the new import with VMware ESXi versions 6.5 through 8.0.

Q: Will other import sources be supported in the future?
A: We plan to integrate our OVF/OVA import tools into this new stack in the future. Currently, integrating additional import sources is not on our roadmap, but will be re-evaluated periodically.

Q: How does this work?
A: We're accessing the official ESXi API through a user space filesystem with fine-tuned read-ahead caching that we implemented in the rust programming language. While we cannot support every possible option (e.g., vSAN is not currently supported), using only official public APIs ensures that it can be integrated into our open source project.
 
Last edited by a moderator:
Thanks, will report some feedback. Gonna try soon on pvetest.
 
Very good, something that will help a lot in this great moment of Proxmox, as a strong alternative to VMWare. Congratulations on this initiative, but the great and revolutionary feature will be cross-over replication, to reduce downtime to a minimum in this migration to environments with reduced maintenance windows and volumes of tens or hundreds of TB.

I know this is still a dream, but let's dream.
 
but the great and revolutionary feature will be cross-over replication, to reduce downtime to a minimum in this migration to environments with reduced maintenance windows and volumes of tens or hundreds of TB.
Note that you can live-import VMs. This means that you can stop the VM on the ESXi source and then immediately start it on the Proxmox VE target with the disk data required for booting then being fetched on demand. The feature works similarly to live-restore that we provide for PBS backups since a while.

Live-import naturally requires a very stable and fast network between the PVE and ESXi host and taking some care with device driver/model selection, but it can reduce the downtime on import significantly.
 
Note that you can live-import VMs. This means that you can stop the VM on the ESXi source and then immediately start it on the Proxmox VE target with the disk data required for booting then being fetched on demand. The feature works similarly to live-restore that we provide for PBS backups since a while.

Live-import naturally requires a very stable and fast network between the PVE and ESXi host and taking some care with device driver/model selection, but it can reduce the downtime on import significantly.
I am using this live-import feature right now.
Awesome.

But there issue
restore-scsi0: transferred 8.8 GiB of 16.0 GiB (54.69%) in 12m 40s
restore-scsi0: stream-job finished
restore-drive jobs finished successfully, removing all tracking block devices
An error occurred during live-restore: VM 109 qmp command 'blockdev-del' failed - Node 'drive-scsi0-restore' is busy: node is used as backing hd of '#block296'

TASK ERROR: live-restore failed
 
Last edited:
Note that you can live-import VMs. This means that you can stop the VM on the ESXi source and then immediately start it on the Proxmox VE target with the disk data required for booting then being fetched on demand. The feature works similarly to live-restore that we provide for PBS backups since a while.
Awesome :)

Congratulations, this is huge.
 
So I added the esxi as storage. Seemed ok. Had a list of vms to import. I prepped one and came back to do the import and got an error. Removed the esxi storage and on the attempt to add it back I get.


create storage failed: (vim.fault.HostConnectFault) { dynamicType = <unset>, dynamicProperty = (vmodl.DynamicProperty) [], msg = '503 Service Unavailable', faultCause = <unset>, faultMessage = (vmodl.LocalizableMessage) [] } (500)
 
503 Service Unavailable
This is the rate limiting of the ESXi storage, their API is a bit finicky, to say the least.

Anyhow, please open a new thread and there post the ESXi version used and ideally also the original error from the first import try, you might be able to gather that from the system log (journalctl).
 
  • Like
Reactions: PmUserZFS
An error occurred during live-restore: VM 109 qmp command 'blockdev-del' failed - Node 'drive-scsi0-restore' is busy: node is used as backing hd of '#block296'
Is the source VM still running? Does it have snapshots? Would be great if you could share the VM config in a new thread.
Code:
cat /run/pve/import/esxi/STORAGEID/manifest.json
cat /run/pve/import/esxi/STORAGEID/mnt/DATACENTER/STORAGE/GUEST/*.vmx
for file in /run/pve/import/esxi/STORAGEID/mnt/DATACENTER/STORAGE/GUEST/*.vmdk; do grep 'text/plain' <(file -b --mime $file) && cat $file; done

Adapt the ALL-CAPS parts please.
 
  • Like
Reactions: Gilberto Ferreira
Is the source VM still running? Does it have snapshots? Would be great if you could share the VM config in a new thread.
Code:
cat /run/pve/import/esxi/STORAGEID/manifest.json
cat /run/pve/import/esxi/STORAGEID/mnt/DATACENTER/STORAGE/GUEST/*.vmx
for file in /run/pve/import/esxi/STORAGEID/mnt/DATACENTER/STORAGE/GUEST/*.vmdk; do grep 'text/plain' <(file -b --mime $file) && cat $file; done

Adapt the ALL-CAPS parts please.
Yes.
I will give some more details later.
Perhaps this is happes because it's a lab env, and the ESXi is installed as regular PVE VM.
I am planning to install ESXi on real hardware and will keep you posted.
Thanks
 
Since you are using ESXi's API are you testing this on fully licensed vs free licensed hosts? Or are you testing this with hosts in trial mode? The free version of ESXi does not expose its API's so really curious about your test bed.

This needs a note someplace in the official documents so users trying this don't get stuck.
 
  • Like
Reactions: kasto
This is the rate limiting of the ESXi storage, their API is a bit finicky, to say the least.

Anyhow, please open a new thread and there post the ESXi version used and ideally also the original error from the first import try, you might be able to gather that from the system log (journalctl).
OK. but This was literally the first thing I tried to do. I'm surprised I hit some rate limit. I'll see if I can reproduce it with specific steps.

EDIT.. Looks like I need to give it a few minutes after adding it to storage to let the rate limit die down. I was moving quickly.
 
Last edited:
Since you are using ESXi's API are you testing this on fully licensed vs free licensed hosts? Or are you testing this with hosts in trial mode? The free version of ESXi does not expose its API's so really curious about your test bed.

This needs a note someplace in the official documents so users trying this don't get stuck.
Fully Licensed VMware ESXi, 6.7.0, 15160138 which will be consistent over all my nodes.
 
This is the rate limiting of the ESXi storage, their API is a bit finicky, to say the least.

Anyhow, please open a new thread and there post the ESXi version used and ideally also the original error from the first import try, you might be able to gather that from the system log (journalctl).
Also, once I get the error it never seems to come back. Clicking on the storage gets me (vim.fault.HostConnectFault) { (500)
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!