1

按照这篇文章(http://blog.greatrexpectations.com/2013/04/24/using-blob-snapshots-to-backup-azure-virtual-machines/)我可以创建虚拟机的快照,但我现在想要将该快照还原到不同的 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,或者如何处理它。

4

3 回答 3

3

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

您收到此错误是因为您尝试使用其中一个快照覆盖具有租约的虚拟机。因为 blob 有租约,所以操作不会完成。为此,您首先必须解除租约。您可能会发现此博客文章对此很有用:http: //www.biztalkgurus.com/biztalk_server/biztalk_blogs/b/biztalk/archive/2012/09/26/windows-azure-virtual-hard-disk-blob-storage-跨帐户复制租赁中断和管理工具.aspx

我不知道如何获得租赁 ID,或者如何处理它。

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

于 2013-07-02T16:15:58.693 回答
0

您还可以使用 PowerShell 解除租约:

Get-AzureRmStorageAccount -Name "STORAGE_ACCOUNT_NAME" | Get-AzureStorageBlob -name "CONTAINER_NAME").ICloudBlob.BreakLease()
于 2016-03-10T17:39:36.467 回答
0

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

于 2015-11-29T20:07:45.597 回答