容器软删除

容器软删除通过在指定期限内将已删除的容器保留在存储账户中,防止容器被意外删除。 在保留期内,你可以将软删除的容器及其内容恢复到该容器被删除时的状态。 保留期到期后,容器及其内容将永久删除。

容器软删除是全面的帐户内数据保护策略的一部分。 为获得最佳存储帐户保护,Azure 建议启用以下数据保护功能:

若要防止更广泛的数据丢失方案(例如意外删除帐户或勒索软件),请考虑启用Azure 备份以及帐户内功能。 若要详细了解 Azure 基于你的工作负荷提出的数据保护建议,请参阅数据保护概述。

Tip

要在大规模范围内启用 Blob 和容器软删除,可以使用内置的 Azure Policy 为存储账户上的 Blob 和容器配置软删除。

容器软删除的工作原理

启用容器软删除时,请指定已删除容器的保留期为1到365天。 默认保持期为 7 天。 将保留期至少设置为七天,并根据数据量以及检测和响应数据丢失事件可能需要的时间,按需延长保留期。

在保持期内,可以通过调用还原容器操作来恢复已删除的容器。 恢复容器时,该容器的 blob 以及任何 blob 版本和快照也会恢复。

警告

容器软删除只能还原整个容器及其在删除时的内容。 若其父容器未被删除,要恢复已删除的 Blob,必须使用 Blob 软删除或 Blob 版本控制。 恢复容器时,必须将其恢复为原始名称。 如果你使用原名称创建新容器,就无法恢复已软删除的容器。

下图显示了在启用容器软删除后,如何还原已删除的容器:

显示在启用容器软删除时如何恢复已软删除的容器的示意图。

保留期结束后,Azure 存储 会永久删除该容器,你将无法恢复该容器。 保留期从容器被删除时开始计算。 可以随时更改保留期,但新设置仅适用于更新 后 删除的容器。 已经删除的容器会根据其最初删除时的保留期限被永久移除。

关闭容器软删除不会使现有的软删除容器永久删除。 它们会根据删除时适用的保留期限被永久删除。

容器软删除可用于以下类型的存储帐户:

  • 常规用途 v2 和 v1 存储帐户
  • 块 Blob 存储帐户
  • Blob 存储帐户

还支持启用了分层命名空间以与 Azure Data Lake Storage 配合使用的存储帐户。

Azure 存储 REST API 2019-12-12 版或更高版本支持容器软删除。

恢复软删除容器的最低权限内置角色是存储 Blob 数据贡献者。

重要

容器软删除不会防止删除存储帐户,而只能防止删除该帐户中的容器。 若要防止存储帐户被删除,请在存储帐户资源上配置锁。 若要详细了解如何锁定 Azure 资源管理器资源,请参阅锁定资源以防止意外更改。

工作负载注意事项

在启用现有账户的容器软删除前,请考虑以下几点:

  • 启用不是追溯性的: 容器软删除只保护你在启用后删除的容器。 你无法恢复在启用之前被删除的容器。

  • 容器只恢复到其原始名称: 软删除的容器只能恢复为删除时的名称。 如果你创建了一个使用该名称的新容器,在还原之前,必须先将其重命名或删除。

  • 较短的保留期优先:容器软删除和blob软删除有独立的保留期。 如果 blob 软删除的保留时间短于容器软删除的保留时间,那么已还原的容器中的 blob 可能在容器保留期结束前就已被永久删除。 将两个保留期对齐,以避免恢复缺少 blob 的容器。

  • 保留期的更改不具有追溯效力:更改保留期仅适用于在更新后删除的容器。 已软删除的容器仍沿用其删除时生效的保留期。

  • 延长已软删除容器的保留期限需要重新删除:要对已软删除的容器应用更长的保留期,请先撤销删除,然后在新的保留期生效的情况下再次将其删除。

  • 禁用软删除不会清除已有软删除的容器: 当你禁用容器软删除时,服务不会立即删除已经软删除的容器。 它们会持续存在,并在原始保留期结束前仍可恢复。

  • HNS 账户无法列出软删除容器: 在具有层级命名空间的账户中,你无法列出哪些容器被软删除。 修复需要知道原始容器的确切名称。

  • 将扁平命名空间账户升级为分层命名空间(ADLS)的阻挡: 在启用容器软删除时,迁移到分层命名空间被阻止。 迁移前禁用它,迁移完成后重新启用。

功能支持

启用 Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 可能会影响对此功能的支持。 如果已启用这些功能中的某一项,请参阅 Azure 存储帐户中的 Blob 存储功能支持,以评估对此功能的支持。

定价和计费

启用容器软删除无需额外付费。 你为软删除容器中的数据付费,价格和活跃数据是一样的。

为了降低成本,设定最短的保留期,让团队有足够时间检测并从意外删除中恢复。 Azure建议至少七天,但应根据工作负荷数据量和要求调整此值。

监视和故障排除

通过使用 Azure Monitor 活动日志监控容器删除事件。 要在 Azure 门户中查看软删除容器,请在存储浏览器中启用显示已删除容器。 以编程方式,使用带有 include=deleted 的 List Containers 操作。

  • 我的软删除容器不可见: 软删除容器默认是隐藏的。 在 Azure 门户中,在存储浏览器中启用 “显示已删除容器”。 通过 API,使用 include=deleted 调用 List Containers。 如果容器依然没有出现,请确认在删除容器之前就已启用软删除,且保留期尚未过。

  • 我无法恢复我的容器,因为名字被取用了: 你在原容器被删除后创建了一个同名的新容器。 你只能将容器恢复到其原始名称,所以先重命名或删除冲突的容器,然后再恢复。

  • 我在HNS账户中找不到我的软删除容器: 具有层级命名空间的账户不支持枚举软删除容器。 还原需要提供完全相同的原始容器名称。

  • 我升级到分层命名空间(ADLS)被阻止了: 容器软删除会阻止迁移到分层命名空间。 禁用容器软删除,执行迁移,并在迁移完成后重新启用。

  • 我需要同时恢复多个容器:Azure门户中没有批量恢复功能。 使用 Azure PowerShell 或 Azure CLI 编写脚本,以跨多个容器执行还原。

  • 我需要在过于广泛启用后大规模禁用软删除: 请参阅 启用容器软删除,了解如何使用各种工具禁用软删除。

后续步骤