Skip to main content

Uploading a VHD File to Azure (KBA1440)





Applicable Delphix Versions

Click here to view the versions of the Delphix engine to which this article applies
Major Release All Sub Releases


In order to upload a virtual hard disk (VHD) file to Azure, you will need a Storage Account and a Container within it to hold the file, stored as a Page Blob.  The uncompressed VHD file should be accessible on your local system.  For a Delphix engine, this file can be 127GB or more in size and can therefore take a considerable amount of time.

Uploading the VHD file

  • Select the Storage Account in the Azure Resource Manager portal
  • Navigate to the Containers section
  • Select a Blob Container
  • Click Upload and choose the local VHD file

Uploading the VHD file (Faster Method)

Microsoft have created a command-line utility to reduce the time taken to upload VHD files to Azure, downloadable from  Rather than uploading the full 127GB file, it only uploads the allocated segments of the file which for a Delphix engine is significantly less and may be as little as 5GB.

In order to use it, you will need to install a runtime for Google's 'go' language.  This is available via

Once 'go' is installed, use it to download and install the Microsoft VHD utility, as below.  On macOS systems, an installation of Xcode may also be required from the App Store.

$ go get

The following details will need to be substituted into the command line for the upload.  These details are all available from the Azure portal.

  • Storage account name
  • Storage account access key
  • Blob Container name

Assuming that 'go' was installed into your user's home directory, the following command can then be used to upload the VHD file to the Azure storage account.  Substitute in the path to the local VHD file including the filename, the storage account name, the storage account's access key, the Blob container name to hold the file and the name that you would like the file to appear with in the storage account.  Where parameters contain special characters, they should be surrounded by single quotes, as in the example.

$ ~/go/bin/azure-vhd-utils --verbose upload --localvhdpath 'local_path_to_VHD_file' \
  --stgaccountname 'storage_account_name' --stgaccountkey 'storage_account_access_key' --containername 'container_name' \
  --blobname 'chosen_name_for_uploaded_file'

With the file uploaded to the Azure storage account, an 'Image' will need to be created in Azure before virtual machines can be provisioned from the VHD file.

Creating an Image

  1. Go to Images in the Azure Portal.
  2. Click Create to create a new image.
  3. Provide a name and select the resource group to hold the image.
  4. Select the region to be used when creating a VM from the image.
  5. For the Delphix Engine, choose an OS type of Linux.
  6. Select VM generation Gen 1.
  7. Select the uploaded VHD file as the Storage Blob.
  8. Select an account type of Premium SSD.
    1. Read/Write caching can be used for the OS disk, although a caching policy of None for the data disks is recommended.
    2. Data disks can be added at a later stage, during VM deployment.
  9. Click Create.

Selecting the newly created image will then show the Deploy VM option to deploy a new virtual machine based on the VHD file.



If an Azure Virtual Disk is created directly backed by the uploaded VHD file and this is used in a virtual machine, the original uploaded VHD file will be modified by the virtual machine rather than a copy of the file.  This can cause problems if a second virtual machine needs to be deployed based on the file or if the virtual disk is moved to another VM since it will already contain configuration information from the first and may fail to boot.  For this reason, an Image should be created and this used to deploy new VMs.


Related Articles

The following articles may provide more information or related information to this article: