A few days ago, Microsoft announced the preview of direct-upload to Azure Managed Disks. So, there are two ways you could move a VHD to the Azure cloud as a managed disk:
- Upload the VHD in a storage account and then convert it into a managed disk.
- Create and attach empty managed disk to a VM and then do the copy.
The first scenario requires extra storage account management, while the second scenario has extra cost because of a running virtual machine. Direct-upload allows copying an on-premise VHD directly to the Azure cloud as a managed disk, which reduces the cost and the management issues mentioned earlier.
Currently, you can direct-upload to standard HDD, standard SSD and premium SSD managed disks of all supported sizes.
Direct-Upload can be approached using Azure Storage Explorer
from the GUI, which is basically a standalone app, or if you are more of a developer, or DevOps guy, you could use a Rest API or Azure CLI with AzCopy command-line utility. I have already covered AWS to Azure migration topic on this post.
Today, we are going to use Azure CLI in combination with AzCopy.
Prerequisites
- Azure subscription
- Azure Storage account
- AzCopy
Create an Azure Managed Disk
Step 1. Open Terminal and login to the Azure Portal.
az login
It will open a new window using the default browser where you will be prompted for email and password.
Step 2. Create a resource group.
az group create --name "managed-disks-rg" --location westeurope
Step 3. Create an empty managed disk.
az disk create --name "myfirstmanageddisk" --resource-group "managed-disks-rg" --location westeurope --for-upload --upload-size-bytes 34359738880 --sku "standard_lrs"
Step 4. Next, create a writable shared access signature (SAS) of your empty managed disk.
az disk grant-access --name "myfirstmanageddisk" --resource-group "managed-disks-rg" --access-level Write --duration-in-seconds 86400
The parameters are self-explanatory. Output will be in JSON format. For instance:
{
"accessSas": "https://md-impexp-wjjjpktbq2st.blob.core.windows.net/vh3sfg1tc3tj/abcd?sv=2017-04-17&sr=b&si=c71a65c4-1a3a-49c0-9f5b-d884b8c6c384&sig=cvswkCDM5tW4SNJe7g9O0CNaVYaIgr4IHoKzi7NP3dA%3D"
}
Step 5. Now that you have writable SAS, you can upload a VHD using AzCopy tool.
azcopy copy "VHDs/managedDisk1.vhd" "<insert_the_sas_token_output_here>" --blob-type PageBlob
Step 6. Once the upload completed, you can revoke the SAS, so it allows you to attach a managed disk to a VM.
az disk revoke-access --name "myfirstmanageddisk" --resource-group "managed-disks-rg"
Now, you can attach the managed disk to a virtual machine.
Clean up
Step 7. Delete the resource group.
az group delete --name "managed-disks-rg"
Conclusion
If you are working with IaaS Virtual Machines, using Direct-Upload is a recommended way to do it, because it will save you a lot of time in a backup and restore, disaster and recovery scenarios. Feel free to leave a comment below and if you find this tutorial useful, follow our official channel on Telegram.