Disk image backups can be restored as an Azure Cloud instance for rapid recovery.
Notes:
-
All example commands executed in Windows Powershell
-
Azure accepts only VHD file format, so images must first be converted to this format. Example instructions included below.
-
Install and configure MS Azure command-line interface (CLI): https://aka.ms/installazurecliwindows
-
If using an existing VM, Microsoft recommends that it be prepared first: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/prepare-for-upload-vhd-image?toc=/azure/virtual-machines/windows/toc.json
Step 1: Restore the image as VMDK using Zmanda Pro
Note: The restored files will be the same size as the original disk size, so ensure you have enough space in your restore location:
Files will be restored as shown below:
Convert VMDK to VHD
-
We used the QEMU utility with the 1 KB VMDK file from the previous step (with fixed-size-type required by Azure).
-
Example command to convert VMDK file to VHD format:
.\qemu-img.exe convert C:\path\to\disk.vmdk -O vpc -o subformat=fixed C:\path\to\disk.vhd
-
Note: The disk.vhd image just produced can now be imported, without further changes, into any locally-installed MS Hyper-V program.
If needed, resize the VHD file upwards to the nearest megabyte multiple
-
The size of the disk.vhd file from the previous step must be a multiple of megabytes (ie: the VHD file-size needs to be a number exactly divisible by 1024).
-
Example command to find file size:
ls C:\path\to\diskname.vhd = X
-
Our example produced a file of size X = 41943040 KB
-
X/1024/1024 must be a whole number. You may need to resize your own file upwards to a megabyte-multiple.
-
An exact next-biggest megabyte-multiple for our example 40 GB disk = 42951770112 bytes.
-
We resize our example file to illustrate:
-
Example command to resize the disk.vhd file upwards to a megabyte multiple:
resize-vhd C:\path\to\diskname.vhd -SizeBytes 42951770112
-
Note: This creates a resized VHD file of size 42951770624 bytes. Azure 'resize' command adds 512 bytes for their footer 42951770112 + 512
Create an empty managed disk on Azure
-
Example command to create an empty managed disk on Azure using the size parameter from the previous step:
az disk create --name azure-disk-name --resource-group azure-resource-name --sku standardssd_lrs --hyper-v-generation V1 --location australiaeast --for-upload true --upload-size-bytes 42951770624
-
Use your preference parameters for disk-name, resource-group, hard-disk type, location. Other VM parameters, such as CPU and RAM allocation, can be added later. Location parameter can be selected via:
az account list-locations -o table
Grant write access to obtain 'sasURI'
-
Example command to grant write access to Azure:
az disk grant-access -n azure-disk-name -g azure-resource-name --access-level Write --duration-in-seconds 86400
-
Produces an sas-URI: similar to: "https://xx-xxxxx-xxxxxxxxxx.blob.core.windows.net/xxxxxxxxxx/abcd?sv=2017-04-17&sr=b&si=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&sig=xxxx%3D"
-
Note: Azure charges while disk is writeable
Upload the VHD file to Azure
-
We used the convenient AzCopy https://adamtheautomator.com/azcopy-setup/
-
Command format:
AzCopy.exe copy "C:\path\to\diskname.vhd" "sas-URI" --blob-type PageBlob
-
Example command to upload the VHD file to Azure, using the sas-URI from the previous step:
AzCopy.exe copy "C:\path\to\diskname.vhd" "https://xx-xxxxx-xxxxxxxxxx.blob.core.windows.net/xxxxxxxxxx/abcd?sv=2017-04-17&sr=b&si=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&sig=xxxx%3D" --blob-type PageBlob
-
Note: To reduce costs, revoke write-access when finished uploading.
-
Example command to revoke write access:
az disk revoke-access -n azure-disk-name -g azure-resource-name
Create the new VM in Azure
-
Example command to create the new VM in Azure using the azure-disk-name file uploaded from the previous step:
az vm create --resource-group azure-resource-name --location australiaeast --name new-vm-name --os-type windows --attach-os-disk azure-disk-name
-
Use your parameters for resource group, location, vm name.
-
Example result from command to create new VM in Azure:
-
Copy the ‘publicIpAddress’ field
Connect via RDP
-
Use your preferred Remote Desktop program to connect to the ‘publicIpAddress’ from previous step: “XXX.XXX.XXX.XXX”