Skip to main content
Delphix

How to Upload a VHD File to Azure

 

Applicable Delphix Versions

 

Major Release

All Sub Releases

5.2 5.2.2.0

5.1

5.1.8.0, 5.1.8.1, 5.1.9.0

Procedure

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 https://github.com/Microsoft/azure-vhd-utils.  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 https://golang.org/doc/install.

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 github.com/Microsoft/azure-vhd-utils

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 with 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 machine's can be provisioned from the VHD file.

Creating an Image
  • Go to Images in the Azure Portal
  • Click Add to create a new image
  • Provide a name and select the resource group to hold the image
  • Select the region to be used when creating a VM from the image
  • For the Delphix Engine, choose an OS type of Linux
  • Select the uploaded VHD file as the Storage Blob
  • Storage options of 'HDD' and 'read/write' caching can be used for the OS disk although we recommend a caching policy of 'none' for the data disks
  • Data disks can be added at a later stage, during VM deployment
  • 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.

NOTE: If, rather than creating an Image, 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.  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.