Azure Powershell:将Blob快照还原到其他VM

时间:2013-07-02 10:43:05

标签: powershell azure

关注本文(http://blog.greatrexpectations.com/2013/04/24/using-blob-snapshots-to-backup-azure-virtual-machines/)后,我可以创建VM的快照,但我现在想将该快照还原到其他VM - 我们有时需要恢复备份以恢复单个文件,我想确保我可以在Azure中执行此操作,然后再转移到它们。

我试过了:

$restorePath = "vhds/my-new-vm.vhd"
$restoreBlob = $blobClient.GetBlobReference($restorePath)
$restoreBlob.CopyFromBlob($snapshots[$snapshots.Length -1])

但它给了我:

Exception calling "CopyFromBlob" with "1" argument(s): "There is currently 
a lease on the blob and no lease ID was specified in the request."

我无法弄清楚如何获得租约ID,或者如何处理它。

3 个答案:

答案 0 :(得分:3)

由于您的VHD实际上是存储在blob存储中的页面blob,为了防止其他进程写入此VHD,幕后发生的事情是当VM是VM时在blob上获取Exclusive Write Lock创建或换句话说a lease is acquired on the blob。租约期限无限。

您收到此错误是因为您尝试使用其中一个快照覆盖其上有租约的VM。由于blob具有租约,因此操作无法完成。首先,你必须打破租约。您可能会发现此博文对此有用:http://www.biztalkgurus.com/biztalk_server/biztalk_blogs/b/biztalk/archive/2012/09/26/windows-azure-virtual-hard-disk-blob-storage-cross-account-copy-lease-break-and-management-tool.aspx

  

我无法弄清楚如何获得租约ID,或者如何处理它。

您只能在获得租约时获得租约ID。之后你无法以编程方式获得这个东西。您需要租用id才能对blob执行各种写操作并更改blob上的租约。

答案 1 :(得分:0)

虽然这是一个老线程,但我认为问题已经出现了新面貌。在过去的几周里,我注意到当我在创建新VM的过程中恢复VHD时,我收到一条消息,即VHD文件上仍有租约。但是,如果我等了几个小时,租约就不见了。我试着做一个循环等待博客副本的状态,但似乎总是立即退出。

答案 2 :(得分:0)

您还可以使用PowerShell打破租约:

Get-AzureRmStorageAccount -Name "STORAGE_ACCOUNT_NAME" | Get-AzureStorageBlob -name "CONTAINER_NAME").ICloudBlob.BreakLease()