VHD to Archive Storage

Iron Contributor

I have a disk with some files (About 1 TB) that will probably never be needed. However they might be needed so I have to keep them somewhere. I thought that the archive storage tier would be the perfect place.

 

My plan was to detach the VHD from the VM and change the storage tier from hot to archive. If I ever needed the data again I would change from archive back to hot and attach the VHD to a VM. However, after detaching the disk, when I tried to change the tier I got the message "Changing the access tier is only allowed on block blobs that do not have snapshots in an active state." I then realized that the VHD is a page blob and it appears you can't change the tier on a page blob.

 

I can't be the only one who wants to archive a drive (Or an entire VM) so I suspect I am missing a simple solution.

 

Any ideas?

9 Replies

I'm spit balling here, but have you considered using AZcopy? You can use it transfer data to/from different storage types.

 

You can set up another Azure storage account and copy the data from your page blob to a drive you can store cold.

I had read somewhere that with azcopy if it came from a page blob the new copy would still be a page blob and that there wasn't a switch in azcopy to change from page to block blob or vice versa. 

 

However, I didn't verify that so I may have to test it 

It may be possible to perform the following using AZcopy v10:

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10

 

...you can sync a Blob container down to a local file system:

AzCopy
# If you're using Azure Active Directory authentication the sastoken is not required
.\azcopy sync "https://account.blob.core.windows.net/mycontainer1" "C:\local\path" --recursive=true

 

Darrick

 

Good suggestion but that didn't work.

 

The Azcopy documentation says "AzCopy v10 by default uploads data into block blobs. However, if a source file has vhd extension, AzCopy v10 will by default upload it to a page blob.

 

The documentation doesn't seem to be correct. I removed the vhd extension and used Azcopy but it kept it as a page blob. 

 

@John Twohig 

 

Did you ever figure out a solution for this?  (you are right, not the only one thinking about something like this)

 

David

 

@davlun 

 

Not really a good one. I thought the best thing to do was to copy the files to a container in a storage account in Azure and then change the container to the archive tier. It is not as simple a process as I wanted. There are more steps and more chances for error. 

 

I have been on vacation so I haven't moved our archive yet. We are still using our normal backup process. 

@davlun 

 

This is how I have implemented a similar scenario.

 

Scenario:

Copy vhd file from one subscription to another and in the destination subscription the vhd file must be placed in the archive tier.

 

Considerations:
- VHD file is supposed to be page blob.
- Archive tier is supported for block blobs (page blob cannot be changed to Archive tier) and at the object level only.  
- We want to Archive the vhd file in the destination subscription, so we have to copy the vhd file as block blob and then change the tier to Archive.
- However in case we ever need to restore the vhd file which was copied as block blob, we have to convert the vhd file back to page blob first and then mount it as a disk (because we cannot mount a vhd file block blob as a disk to a VM).

 

Steps:

 

1) First I have copied the vhd file from source subscription to destination subscription as block blob (parameter --blob-type=blockblob) with AzCopy v10.

 

azcopy copy "https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>?<source-storage-account-SAS-token>" "https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>?<destination-storage-account-SAS-token>" --blob-type=blockblob
 
2) I configured the Lifecycle Management to automatically switch files in a given container to the Archive tier. Note that the policy only executes once per day. 

For details on how to manage the Azure Blob storage lifecycle check this:

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts

 

3) In case we need to restore the vhd file which was copied as block blob, these are the steps:

- Change the tier from Archive to Hot for example.

- Convert the vhd file back to page blob with below command (parameter --blob-type=pageblob).

- Mount it as a disk to a VM.

 

azcopy copy "https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>?<source-storage-account-SAS-token>" "https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>?<destination-storage-account-SAS-token>" --blob-type=pageblob

 

@CristianoRosa 

 

Thanks for the write up!  I could not find a solution originally, so went a more traditional backup, but will need to do this again toward the end of the year.  I am going to give this a shot in the next few weeks...

@John Twohig 

 

When rehydrating a blob from archive tier to the hot or cool tier, how will I know when rehydration is complete?

During rehydration, you may use the get blob properties operation to poll the Archive Status attribute to confirm when the tier change is complete. The status reads "rehydrate-pending-to-hot" or "rehydrate-pending-to-cool" depending on the destination tier. Upon completion, the archive status property is removed, and the Access Tier blob property reflects the new hot or cool tier.

 

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-storage-tiers