Oracle’s Secret: Windows Para-virtualized drivers for OCI available!
UPDATE (May 9th): OCI now officially supports importing Windows VMs in paravirtualization mode! So you no longer have to lie about the operating system you are importing 🙂
When running Windows in a virtual machine you typically have 2 strategies. One is to pretend that windows is running on actual hardware. This means the virtualization layer presents the virtual machine with hardware that exists in the real world, for instance an Intel Pro 1000 network adapter. These devices are emulated to the VM. This emulation is CPU intensive for the hypervisor, as every network and disk I/O transaction needs to be translated from the emulated card to the actual physical network/storage controller.
The other strategy is using para-virtualized hardware. In this case the Virtual Machine is presented with hardware devices, that understand they are operating in a virtualization environment, these hardware components (using their paravirtualized drivers) can talk directly to the actual hardware. This means no expensive CPU translation is needed, giving this virtual machine much more performance.
When you are importing Microsoft Windows virtual machines from on-premise into OCI, you were doing this by using the emulated mode. But now you have the choice to also import your Windows virtual machines using para virtualization. Key is that before you import the virtual machine, you install the newly released para virtualized drivers for Windows into the VM. After that you can import the VM with para-virtualized hardware support!
A strange place, but welcome addition 🙂
So where can you find these Windows para-virtualized drivers for OCI? Well you need to go to the Oracle Software Delivery Cloud and search for “Oracle Linux” ?!?!?! (NO APRIL FOOLS JOKE)
Select the “DLP: Oracle Linux 7.6” option.
In this zip file you will find a small ISO file that will contain the drivers.
All you need to do, is to install the Oracle para-virtualized drivers in your Windows VM before you export the VM.
Shutdown your VM and it is now ready to export. You do not yet have to uninstall VMware tools, this can later be done when already running inside OCI.
When you have exported your VMDK file, you are ready to copy this to OCI. It first needs to be copied inside the object storage service, from there you can import it as a custom image. OCI support native importing VMDK files, so you do not need to convert your VMware virtual machine.
If you are trying to upload your VM using the OCI Web UI, you will probably run into an issue. Using the web UI you can only upload files up to 2GB. You have several ways to solve this. You can for instance use cyber duck or my favorite way is to use the OCI CLI tool.
After you have uploaded the VMDK file, you can create a Pre-Authenticated Request for the file. This gives you a unique URL to can now be imported as a custom image.
While the PV drivers are available, the people who made the import function in the UI are clearly not aware of this yet. If you select the windows operating system, it will not give you the option to import as VM with para virtualized hardware, so just select your as OS Linux! and you are good to go. Select windows when importing and use the paravirtualization mode. It takes a few minutes to import. When that is done, you are ready to create a new Compute VM using this image.
All that is left to do, is some cleaning up. You will no longer be needing VMware tools inside this image, so feel free to uninstall it.
More information about the para virtualized drivers here:
Hi Richard, It’s important to note that the preauthenticated url is not mandatory especially if there are securing concerns… Preauthenticated basically implies security by obscurity after all. A valid user can actually use the bucket standard bucket based URL and the OCI cli tool to do the import also. This prevents any kind of leakage.
Hi Robin, you are absolutely right, I guess I am not always security conscious 🙂
Pingback: Importing / Moving on-premise (VMware) instances to OCI – Oracle Cloud Blog