How to move a snapshot to another region?

move snapshot to another azure region

Last updated on April 19th, 2021

In the last post, I showed how to replace disks in Azure Virtual Machines using the PowerShell script. You only need a disk image and you can quickly perform the replacement. Today’s post will complement the previous one and will show you how to make a disk image and move it to any location (region). We will take a snapshot of the VM (virtual machine) disk and move it to another region.

Snapshot

Snapshot, that is, simply speaking, a copy of the disk made at a given moment. We can do it at any time, even using the portal, finding the disk we are interested in and clicking on ‘Create snapshot’.

Azure disks

Now the stairs are just beginning. We can create a snapshot by Azure portal only in the subscription in which our disk is located, and only in the region where it is located. This has the consequence that we will not be able to use it so easily in a different location (region) or subscription.

Azure create snapshot

When we create our snapshot, we will not be able to transfer it via the portal.

Azure snapshots
Azure snapshot

However, not all is lost, as long as we cannot easily transfer our snapshot using the portal, it is not a problem using PowerShell.

Copying the snapshot

First we need to have a disk snapshot created, this can be done via the portal as shown in the example above. Once we have created a snapshot, we can log in to our Azure subscription using PowerShell:

Connect-AzAccount

We can also use Cloud Shell:

azure cloud shell

Before running the script below, we need to correct the variable names in it.

Enter the name of the snapshot you want to move and its resource group.

The destination will be Storage Account. We give its name, the name of the BLOB to which the disk image will go, and the name of the resource group in which it is located. Finally, the name of the created disk image.

If we do not have a Storage Account created in the target location, we need to create it.

# SOURCE
$SnapshotResourceGroup = "ResourceGroupNAME1"
$SnapshotName = "SnapshotName"

# DESTINATION
$StorageAccount = "StorageAccountNAME"
$StorageAccountBlob = "StorageAccountBlobNAME"
$storageaccountResourceGroup = "ResourceGroupNAME2"
$vhdname = "disk_image_name"


#SA_KEY
$StorageAccountKey = (Get-AzStorageAccountKey -Name $StorageAccount -ResourceGroupName $StorageAccountResourceGroup).value[0]
$snapshot = Get-AzSnapshot -ResourceGroupName $SnapshotResourceGroup -SnapshotName $SnapshotName

#GRANTING ACCESS
$snapshotaccess = Grant-AzSnapshotAccess -ResourceGroupName $SnapshotResourceGroup -SnapshotName $SnapshotName -DurationInSecond 3600 -Access Read -ErrorAction stop 
   
$DestStorageContext = New-AzStorageContext –StorageAccountName $storageaccount -StorageAccountKey $StorageAccountKey -ErrorAction stop

Write-Output "START COPY"
Start-AzStorageBlobCopy -AbsoluteUri $snapshotaccess.AccessSAS -DestContainer $StorageAccountBlob -DestContext $DestStorageContext -DestBlob "$($vhdname).vhd" -Force -ErrorAction stop
Write-Output "END COPY"

Create a disk

When we have move the snapshot to a new location (region), we can easily create a disk using the portal. When creating a disk as a source, select “Storage blob” and select the image we have just created. Please note that the created disk cannot be smaller than a snapshot.

add azure disk
add azure disk - source
add azure disk - source storage account
add azure disk - source storage account BLOB

You can learn how to replace the disk itself in a virtual machine from the previous article: https://lepczynski.it/en/azure_en/swap-the-os-disk-of-an-azure-vm/

Of course, you can automate everything. I gave a simple example that you can move a snapshot to another region. You might as well create a more complicated script that, after specifying the source disk name, resource group, and target location:

  • create a Storage Account in the target location,
  • create a snapshot,
  • move the snapshot to the target location,
  • create a snapshot disk at the target location,
  • delete unnecessary snapshot,
  • remove unnecessary Storage Account.

It all depends mainly on our ingenuity, remember that. If you made it to the end and would like more advanced stuff, leave comments and I will try to do a more advanced post.

Another way to move the disk

By the way, there are other ways that you can move the drive to another region without even using PowerShell. Assuming that we have a VM in region A that we want to copy to region B, we can, for example … Create a new resource group in region A. Copy the VM to it and move the entire resource group (containing a copy of our VM) to a new location, region B. This operation can be performed entirely via the portal, but for me it is more time consuming and I do not use it;)

Moving Azure VMs to another Azure region: link.

6 thoughts on “How to move a snapshot to another region?”

    1. Maybe the connection was unstable or it was broken. It also worked for me with disks larger than 30gb.
      When I have more free time, I will check the transfer of larger files, maybe something has changed.

Leave a Reply

Your email address will not be published. Required fields are marked *