Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Azure by (13.1k points)
I have an Azure VM data disk and I want it to store on Azure blob storage after converting it to VHD. Can I able to achieve it?

1 Answer

0 votes
by (26.7k points)

Yes you can able to do that, for doing this, follow the below code which is in PowerShell:

#Provide the subscription Id of the subscription where managed disk is created

$subscriptionId = "yourSubscriptionId"

#Provide the name of your resource group where managed is created

$resourceGroupName ="yourResourceGroupName"

#Provide the managed disk name 

$diskName = "yourDiskName"

#Provide Shared Access Signature (SAS) expiry duration in seconds e.g. 3600.

#Know more about SAS here: https://docs.microsoft.com/en-us/Az.Storage/storage-dotnet-shared-access-signature-part-1

$sasExpiryDuration = "3600"

#Provide storage account name where you want to copy the underlying VHD of the managed disk. 

$storageAccountName = "yourstorageaccountName"

#Name of the storage container where the downloaded VHD will be stored

$storageContainerName = "yourstoragecontainername"

#Provide the key of the storage account where you want to copy the VHD of the managed disk. 

$storageAccountKey = 'yourStorageAccountKey'

#Provide the name of the destination VHD file to which the VHD of the managed disk will be copied.

$destinationVHDFileName = "yourvhdfilename"

#Set the value to 1 to use AzCopy tool to download the data. This is the recommended option for faster copy.

#Download AzCopy v10 from the link here: https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10

#Ensure that AzCopy is downloaded in the same folder as this file

#If you set the value to 0 then Start-AzStorageBlobCopy will be used. Azure storage will asynchronously copy the data. 

$useAzCopy = 1 

# Set the context to the subscription Id where managed disk is created

Select-AzSubscription -SubscriptionId $SubscriptionId

#Generate the SAS for the managed disk 

$sas = Grant-AzDiskAccess -ResourceGroupName $ResourceGroupName -DiskName $diskName -DurationInSecond $sasExpiryDuration -Access Read 

#Create the context of the storage account where the underlying VHD of the managed disk will be copied

$destinationContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

#Copy the VHD of the managed disk to the storage account

if($useAzCopy -eq 1)

{

    $containerSASURI = New-AzStorageContainerSASToken -Context $destinationContext -ExpiryTime(get-date).AddSeconds($sasExpiryDuration) -FullUri -Name $storageContainerName -Permission rw

    $containername,$sastokenkey = $containerSASURI -split "\?"

    $containerSASURI = "$containername/$destinationVHDFileName`?$sastokenkey"

    azcopy copy $sas.AccessSAS $containerSASURI

}else{

    Start-AzStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $storageContainerName -DestContext $destinationContext -DestBlob $destinationVHDFileName

}

I hope this will help.

Want to become an Azure expert? join azure architect certification now!!

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
asked Dec 13, 2020 in Azure by dante07 (13.1k points)

Browse Categories

...