【问题标题】:Azure Powershell: Restoring a blob snapshot to a different VMAzure Powershell:将 Blob 快照还原到不同的 VM
【发布时间】:2013-07-02 10:43:05
【问题描述】:

按照这篇文章 (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,或者如何处理它。

【问题讨论】:

    标签: powershell azure


    【解决方案1】:

    由于您的 VHD 实际上是存储在 blob 存储中的页 blob,因此为了防止其他进程写入此 VHD,幕后发生的情况是在创建 VM 时在 blob 上获取 Exclusive Write Lock 或换句话说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-cross-account-copy-lease-break-and-management-tool.aspx

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-10-19
          • 1970-01-01
          • 1970-01-01
          • 2019-03-10
          • 1970-01-01
          • 2021-08-26
          • 2021-01-11
          相关资源
          最近更新 更多