Introducing the preview of direct-upload to Azure managed disks

Posted on October 3, 2019

Principal Program Manager, Azure Managed Disks

We are excited to announce the preview of direct-upload to Azure managed disks. Today, there are two ways you can bring an on-premises VHD to Azure as a managed disks:

  1. Stage the VHD into a storage account before converting it into a managed disk. 
  2. Attach an empty managed disk to a virtual machine and do copy.

Both these ways have disadvantage. The first option requires extra storage account to manage while the second option has extra cost of running virtual machine. Direct-upload addresses both these issues and provides a simplified workflow by allowing copy of an on-premises VHD directly as a managed disk. You can use it to upload to Standard HDD, Standard SSD, and Premium SSD managed disks of all the supported sizes.

If you are an independent software vendor (ISV) providing backup solution for IaaS virtual machines in Azure, we recommend you leverage direct-upload to restore your customers’ backups to managed disks. It will help simplify the restore process by getting away from storage account management. Our Azure Backup support for large managed disks is powered by direct-upload. It uses direct-upload to restore large managed disks.

For increased productivity, Azure Storage Explorer also added support for managed disks. It exposes direct-upload via an easy-to-use graphical user interface (GUI), enabling you to migrate your local VHDs to managed disks in few clicks. Moreover, it also leverages direct-upload to enable you to copy and migrate your managed disks seamlessly to another Azure region. This cross-region copy is powered by AzCopy v10 which is designed to support large-scale data movement in Azure.

If you choose to use Azure Compute Rest API or SDKs, you must first create an empty managed disk by setting the createOption property to Upload and the uploadSizeBytes property to match the exact size of the VHD being uploaded.

Rest API

{
   "location": "WestUS2",
   "properties": {
     "creationData": {
       "createOption": "Upload",
       "uploadSizeBytes": 10737418752
     }
   }
}

Azure CLI

az disk create \
-n mydiskname \
-g resourcegroupname \
-l westus2 \
--for-upload \
--upload-size-bytes 10737418752 \
--sku standard_lrs

You must generate a writeable SAS for the disk, so you can reference it as the destination for your upload.

az disk grant-access \
-n mydiskname \
-g resourcegroupname \
--access-level Write \
--duration-in-seconds 86400

Use AzCopy v10 to upload your local VHD to the empty managed disk by specifying the SAS URI you generated.

AzCopy copy "c:\somewhere\mydisk.vhd" "SAS-URI" --blob-type PageBlob

After the upload is complete, revoke the SAS. Revoking the SAS will change the state of the managed disk and allow you to attach the disk to a virtual machine.

az disk revoke-access -n mydiskname -g resourcegroupname

Supported regions

All regions are supported via Azure Compute Rest API version 2019-03-01, latest version of Azure CLI, Azure PowerShell SDK, Azure .Net SDK, AzCopy v10 and Storage explorer.

Getting started

  1. Upload a vhd to Azure using Azure PowerShell and AzCopy v10
  2. Upload a vhd to Azure using Azure CLI and AzCopy v10
  3. Upload, download, cross-region copy managed disks using Azure Storage Explorer