排查经典存储资源删除错误

本文提供在尝试删除 Azure 经典存储帐户、容器或 *.vhd 页 Blob 文件时出现以下错误之一时的故障排除指南。

本文仅介绍经典存储资源的问题。 如果用户使用 Azure 门户、PowerShell 或 CLI 删除经典虚拟机,则磁盘不会自动删除。 用户获取用于删除“磁盘”资源的选项。 如果未选择选项,“磁盘”资源将阻止删除存储帐户、容器和实际的 *.vhd 页 Blob 文件。

在此处找到有关 Azure 磁盘的详细信息。 Azure 会阻止删除附加到 VM 的磁盘,以防止损坏。 它还可防止删除容器和存储帐户,这些容器和存储帐户具有附加到 VM 的页 Blob。

什么是“磁盘”?

“磁盘”资源用于将 .vhd 页 Blob 文件装载到虚拟机,作为 OS 磁盘或数据磁盘。OS 磁盘或数据磁盘资源(在删除之前)将继续保留.vhd 文件的租约。 如果“磁盘”资源指向该资源,则无法删除下图所示路径中的任何存储资源。

存储资源路径的 3 个部分的屏幕截图:存储帐户、容器和实际页 Blob,即 *.vhd 文件。磁盘资源指向它。

删除经典虚拟机时的步骤

重要

经典 VM 将于 2023 年 9 月 1 日停用

如果使用 ASM 中的 IaaS 资源,请在 2023 年 9 月 1 日前完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器 中的许多功能增强功能。

有关详细信息,请参阅在 2023 年 9 月 1 日前将 IaaS 资源迁移到 Azure 资源管理器

  1. 删除经典虚拟机。

  2. 如果选中“磁盘”复选框,则 磁盘租用 (与页 blob .vhd 关联的) 的图像中所示。实际的页 blob.vhd 文件仍将存在于存储帐户中。

    屏幕截图显示了用于确认删除虚拟机的对话框。

  3. 磁盘 () 租约中断后,可以删除页 blob () 本身。 删除其中存在的所有“磁盘”资源后,可以删除存储帐户或容器。

注意

如果用户删除 VM,但未删除 VHD,则存储费用将继续累算在页 blob *.vhd 文件上。 费用将与存储帐户的类型一致,检查定价页了解更多详细信息。 如果用户不再打算使用 VHD () ,请将其删除,以避免将来产生费用。

无法删除存储帐户

当用户尝试删除不再需要的经典存储帐户时,用户可能会看到以下行为。

Azure 门户

用户导航到Azure 门户上的经典存储帐户并单击“删除”,用户将看到以下消息:

使用磁盘 () “附加到”虚拟机

屏幕截图显示一条消息,说明无法删除存储帐户的原因。

磁盘 () “未附加”到虚拟机

门户的屏幕截图,其中虚拟机 (经典) “删除非错误”窗格打开。

Azure PowerShell

用户尝试使用经典 PowerShell cmdlet 删除不再使用的存储帐户。 用户将看到以下消息:

Remove-AzureStorageAccount -StorageAccountName myclassicaccount

Remove-AzureStorageAccount:BadRequest:存储帐户 myclassicaccount 具有一些活动映像 (s) 和/或磁盘 () ,例如 myclassicaccount。 删除此存储帐户之前,请确保删除这些映像 () 和/或磁盘 () 。

无法删除存储容器

当用户尝试删除不再需要的经典存储 Blob 容器时,用户可能会看到以下行为。

Azure 门户

如果存在指向容器中 *.vhd 页 Blob 文件的“磁盘 () ”租约,则Azure 门户不允许用户删除容器。 这是为了防止意外删除具有磁盘 () 租用的 vhd () 文件。

门户的屏幕截图,其中显示“删除”按钮为灰色,容器的租用状态为“租用”。

Azure PowerShell

如果用户选择使用 PowerShell 删除,则会导致以下错误。

Remove-AzureStorageContainer -Context $context -Name vhds

Remove-AzureStorageContainer:远程服务器返回错误: (412) 容器上当前存在租约,请求中未指定租约 ID。 HTTP 状态代码:412 - HTTP 错误消息:容器上当前存在租约,请求中未指定租约 ID。

无法删除 vhd

删除 Azure 虚拟机后,用户尝试删除 vhd 文件 (页 blob) 并收到以下消息:

Azure 门户

在门户中,可能会有两种体验,具体取决于选择要删除的 Blob 列表。

  1. 如果仅选择了“租用”Blob,则不会显示“删除”按钮。

    门户的屏幕截图,其中“容器 Blob 列表”窗格处于打开状态,并且仅选择了“租用的 Blob”。

  2. 如果混合选择了“租用”和“可用”Blob,则将显示“删除”按钮。 但是,“删除”操作将留下页 Blob,这些页 Blob 具有磁盘租约。

    门户的屏幕截图,其中打开了“容器 Blob 列表”窗格,并同时选择了“已租用的 Blob”和“可用 Blob”。

    “删除 Blob”对话框的屏幕截图,显示处于租用状态的 Blob 已锁定以供删除,并将跳过。

Azure PowerShell

如果用户选择使用 PowerShell 删除,则会导致以下错误。

Remove-AzureStorageBlob -Context $context -Container vhds -Blob “classicvm-os-8698.vhd”

Remove-AzureStorageBlob:远程服务器返回错误: (412) blob 上当前存在租约,请求中未指定租约 ID。 HTTP 状态代码:412 - HTTP 错误消息:Blob 上当前存在租约,请求中未指定租约 ID。

解决方法步骤

删除经典磁盘

在Azure 门户上执行以下步骤:

  1. 导航到 Azure 门户

  2. 导航到经典) (磁盘。

  3. 单击“磁盘”选项卡。

    屏幕截图显示选择了“磁盘 (经典) 的Azure 门户。显示经典磁盘名称和存储帐户。

  4. 选择数据磁盘,然后单击“删除磁盘”。

    屏幕截图显示选择了“磁盘 (经典) 的Azure 门户。选择数据磁盘并突出显示“删除”选项。

  5. 重试以前失败的删除操作。

  6. 只要存储帐户或容器有一个磁盘,就不能删除它。

删除经典映像

在Azure 门户上执行以下步骤:

  1. 导航到 Azure 门户
  2. 导航到经典) (OS 映像。
  3. 删除映像。
  4. 重试以前失败的删除操作。
  5. 只要存储帐户或容器有一个映像,就不能删除它。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。