Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
blob软删除通过在系统中保留已删除的数据,保护单个blob、快照或版本免受意外删除或覆盖。 在保持期内,可以将软删除对象还原到它在删除时的状态。 保留期结束后,该对象将被永久删除。
推荐的数据保护配置
Blob 软删除是 Blob 数据的综合帐户内数据保护策略的一部分。 为获得最佳 Blob 数据保护,建议启用以下数据保护功能:
Blob 软删除,可用于还原已删除的 Blob、快照或版本。 若要了解如何启用 blob 软删除,请参阅启用和管理 blob 的软删除。
容器软删除,用来恢复你删除的容器。 若要了解如何启用容器软删除,请参阅启用和管理容器的软删除。
若要防止更广泛的数据丢失方案(例如意外删除帐户或勒索软件),请考虑启用Azure 备份以及帐户内功能。 若要详细了解 Azure 的数据保护建议,请参阅数据保护概述。
Tip
要大规模启用 blob 和容器软删除,可以使用内置的 Azure Policy 为存储帐户上的 blob 和容器配置软删除。
Blob 软删除工作原理
当你为存储账户启用 blob 软删除时,请指定已删除对象的保留期为 1 到 365 天。 保持期表示数据在被删除或覆盖后保持可用的时间。 一旦对象被删除或覆盖,保留期限的到期时间就会被设定。
在保留期处于激活状态期间,您可以通过调用 Undelete Blob 操作恢复已删除的 blob 及其快照和版本。 下图显示了在启用 blob 软删除后,如何还原已删除的对象:
你可以随时更新配置的保留期限。
如果你禁用了 blob 软删除,你可以继续访问和恢复存储账户中软删除的对象,直到软删除保留期结束。
Azure 存储 REST API 版本 2017-07-29 及以上支持 blob 软删除。
重要
你只能用 blob 软删除来恢复单个 blob 或目录(在层级命名空间中)以及它们所有关联的快照和版本(仅限于扁平命名空间)。 要恢复容器及其内容,你还必须为存储账户启用容器软删除。
Blob 软删除无法在容器或帐户级别提供保护。 参考数据保护概述,了解基于您的工作负载的保护建议。
启用软删除后,删除操作将作何处理
当你启用 blob 软删除时,删除一个 blob 会将该 blob 标记为已软删除。 删除过程不会生成快照。 当保留期结束时,系统会永久删除软删除的blob。 在具有层级命名空间的账户中,如果blob被恢复,blob的访问控制列表将保持完整。
如果一个blob有快照,你不能删除它,除非你也删除了快照。 删除 blob 及其快照后,blob 和快照都将标记为软删除。 删除过程不会创建新的快照。
可以在不删除基础 blob 的情况下删除一个或多个活动快照。 在这种情况下,快照被软删除。
如果你删除账户中启用了分层命名空间功能的目录,该目录及其所有内容都会被标记为软删除。 你只能访问已软删除的目录。 要访问已软删除目录中的内容,您需要先还原该已软删除的目录。
软删除的对象除非你明确显示或列出它们,否则是不可见的。 有关如何列出软删除对象的详细信息,请参阅管理和还原软删除的 blob。
启用软删除时,如何处理覆盖操作
重要
本部分不适用于具有分层命名空间的帐户。
调用放置 Blob、放置块列表或复制 Blob 等操作可覆盖 blob 中的数据。 当你启用 blob 软删除时,覆盖 blob 会自动创建该 blob 在写入操作之前状态的软删除快照。 保留期届满后,系统会永久删除软删除的快照。 系统创建快照的操作不会出现在 Azure Monitor 资源日志或 存储分析 日志中。
软删除快照是不可见的,除非你明确显示或列出软删除对象。 有关如何列出软删除对象的详细信息,请参阅管理和还原软删除的 blob。
blob 软删除不能防止写入 blob 元数据或属性的操作。 当更新 blob 的元数据或属性时,不会创建软删除快照。 要捕获blob的元数据,请参见 Blob版本管理。
对于高级存储账户,软删除的快照不计入每个 blob 最多 100 个快照的限制。
还原软删除的对象
可以在保留期内通过调用“撤销删除 Blob”操作,还原在分层命名空间中软删除的 Blob 和目录。 取消删除 Blob 操作用于恢复 blob 及其关联的任何软删除快照或版本。 它会恢复保留期内被删除的任何快照。 在具有分层命名空间的帐户中,某个 Blob 的访问控制列表会随着该 Blob 一起还原。
在具有层级命名空间的账户中,你还可以使用 “撤销 Blob ”操作来恢复软删除目录及其所有内容。 如果重命名包含软删除 Blob 的目录,则这些软删除的 Blob 会断开与目录的连接。 要恢复这些blob,你需要将目录名恢复为原始名称,或者创建一个使用原始目录名称的独立目录。 否则,当你尝试恢复那些软删除的斑点时,会收到错误。 你也不能将目录或 Blob 还原到已存在同名目录或 Blob 的文件路径。 例如,如果你删除了a.txt(1),然后又上传了一个名称同样为a.txt(2)的新文件,那么在当前处于活动状态的a.txt(2)被删除或重命名之前,你无法恢复已软删除的a.txt(1)。 在该目录被取消删除之前,你无法访问已软删除的目录中的内容。
对未软删除的 blob 调用“取消删除 Blob”,会恢复与该 blob 关联的所有软删除快照。 如果 blob 不包含快照且未被软删除,则调用“取消删除 Blob”不起任何作用。
若要将软删除的快照提升到基础 blob,请先对基础 blob 调用“恢复已删除的 Blob”以还原 blob 及其快照。 接下来,将所需的快照复制到基本 blob 上。 也可将该快照复制到新的 blob 中。
在对象恢复之前,你无法读取软删除的blob或快照中的数据。
有关如何还原软删除对象的详细信息,请参阅管理和还原软删除的 blob。
Blob 操作的软删除保护
下表描述了启用 blob 软删除(无论是否启用 blob 版本控制)后删除和写入操作的预期行为。 在下表中, “无变化 ”表示无论是否启用 blob 软删除,操作的行为都相同。
存储帐户(无分层命名空间)
| REST API 操作 | 已启用软删除 | 同时启用了软删除和版本控制 |
|---|---|---|
| 删除存储帐户 | 无更改。 已删除帐户中的容器和 Blob 不可恢复。 | 无更改。 已删除帐户中的容器和 Blob 不可恢复。 |
| 删除容器 | 无更改。 删除容器中的blobs除非启用 容器软删除 ,否则无法恢复。 | 无更改。 已删除容器中的 blob 不可恢复。 |
| 删除 Blob | 如果用于删除一个 blob,操作会将该 blob 标记为软删除。 如果用于删除 blob 快照,操作会将该快照标记为软删除。 |
如果用于删除 blob,则当前版本将成为先前版本,并且会删除当前版本。 该操作不会创建新版本或软删除快照。 如果用于删除 blob 版本,操作会将该版本标记为已软删除。 |
| 取消删除 Blob | 还原在保持期内删除的 blob 和所有快照。 | 恢复在保留期内被删除的 blob 和其所有版本。 |
|
上传 Blob 上传块列表 复制 Blob 从 URL 复制 Blob |
如果在活动的blob上调用,操作会自动生成该blob在操作前的状态快照。 如果对已软删除的 blob 调用该操作,只有当 blob 被同类型的 blob 替换时,操作才会生成该 blob 先前状态的快照。 如果blob类型不同,操作会永久删除所有已软删除的数据。 |
操作会自动生成一个新版本,捕捉操作前的 blob 状态。 |
| 放置块 | 如果用于将块提交到活动 blob 中,则不发生任何更改。 如果用于将块提交到软删除的blob,操作会创建一个新的blob,并自动生成快照以捕捉软删除blob的状态。 |
无更改。 |
|
插入页面 从 URL 插入页 |
无更改。 操作覆盖或清除的页面blob数据不会被保存,也无法恢复。 | 无更改。 操作覆盖或清除的页面blob数据不会被保存,也无法恢复。 |
|
追加块 通过 URL 追加块 |
无更改。 | 无更改。 |
| 设置 Blob 属性 | 无更改。 被覆盖的 blob 属性不可恢复。 | 无更改。 被覆盖的 blob 属性不可恢复。 |
| 设置 Blob 元数据 | 无更改。 被覆盖的 Blob 元数据无法恢复。 | 操作会自动生成一个新版本,捕捉操作前的 blob 状态。 |
| 设置 Blob 层 | 基础 blob 已移至新层。 任何活跃或软删除的快照将保持在原始级别。 不会创建软删除的快照。 | 基础 blob 已移至新层。 任何处于活动状态或已软删除的版本将保留在原来级别中。 不会创建新的版本。 |
存储帐户(分层命名空间)
| REST API 操作 | 软删除已启用 |
|---|---|
| 删除存储帐户 | 无更改。 已删除帐户中的容器和 Blob 不可恢复。 |
| 文件系统 - 删除 | 无更改。 已删除容器中的 blob 不可恢复。 |
| 删除容器 | 无更改。 删除容器中的blobs除非启用 容器软删除 ,否则无法恢复。 |
| 路径 - 删除 | 该操作创建软删除的blob或目录。 软删除的对象将在保留期过后删除。 |
| 删除 Blob | 该操作会创建一个软删除对象。 软删除的对象将在保留期过后删除。 你不能删除已有快照的blob。 |
| 路径 - 创建,用于重命名 Blob 或目录 | 现有的目标 blob 或空目录会被软删除,源会替换它。 软删除的对象将在保留期过后删除。 |
| 设置 Blob 到期时间,它会在现有 Blob 上设置到期日期 | 无更改。 过期的 blob 在过期时不会成为软删除的 blob。 |
功能支持
启用 Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 可能会影响对此功能的支持。 如果已启用这些功能中的某一项,请参阅 Azure 存储帐户中的 Blob 存储功能支持,以评估对此功能的支持。
工作负载注意事项
启用软删除不会影响你现有的数据,但它会改变删除和覆盖操作的行为。 在启用生产工作负载软删除之前,请考虑以下因素:
现在,列出所有 blob 会返回已软删除的 blob。 这一变化影响最大。 那些使用 all 标志列出 blobs 的应用程序(在传统 SDK 中为
BlobListingDetails.All,在 v12Azure.Storage.BlobsSDK 中为BlobStates.All),一旦启用软删除,就会开始列出已软删除的 blob。 假设只返回活跃blob的应用逻辑可能会出现异常,备份或恢复进程也可能将软删除blob误解为活动数据。 在启用前,请审核所有列表标志并进行测试。 仅列出活跃的blob,请使用BlobStates.None。 要列出版本并排除软删除的 blob,请使用BlobStates.Versioned。删除和覆盖现在保留数据并继续计费。 当你启用软删除时,删除或覆盖一个blob并不会立刻释放空间。 之前的状态作为软删除数据保留,并按与活跃数据相同的费率计费,直到保留期结束。 依赖删除或覆盖操作来回收存储的工作负载,会在保留期限内产生额外成本。
覆盖操作频繁的工作负载会积累软删除快照。 在FNS账户中,如果没有启用版本控制,每次覆写都会创建一个软删除快照,捕捉之前的状态。 经常覆盖相同 Blob 的应用程序,如日志记录、检查点或临时文件,可能会产生大量软删除数据并带来意外成本。 如果尚未更改 Blob 或快照的层级,则会对该 Blob 及其快照以及其具有的任何版本中不重复的数据块进行计费。 详见截图 定价与计费。 选择一个反映你恢复需求的保留期,同时避免过度保留变动数据。
阻止平面命名空间帐户上的 DFS 终结点。 当你在没有层级命名空间的账户上启用软删除时,通过 Data Lake Storage(DFS)端点(
*.dfs.core.chinacloudapi.cn)的操作会被阻断并因EndpointUnsupportedAccountFeatures而失败。 你可以使用Blob端点(*.blob.core.chinacloudapi.cn),或者将账户升级到分层命名空间,以便使用启用软删除功能的DFS端点。
特征交互
Blob 版本控制
重要
版本控制不支持层级命名空间。
覆盖会创建一个版本,而不是被软删除的快照: 如果你同时启用了 blob 版本控制和 blob 软删除,覆盖 blob 会生成一个新的前一版本,捕捉 blob 之前的状态。 该操作不会生成软删除快照。 系统不会软删除新版本,并且不会在软删除保留期到期时删除该版本。
删除之前的版本仅软删除该版本: 删除特定的 之前版本,软删除该版本,该版本会被保留,直到软删除保留期结束。 保留期满后,软删除版本将被永久删除。
取消删除将还原所有已软删除的版本: “取消删除 Blob”操作会一次性还原 blob 的所有已软删除版本;你不能选择性地只还原其中一个。 它不会把任何版本设为当前版本。 要恢复当前版本,先撤销删除,然后将想要的前一个版本复制到基础 blob 上。 更多信息请参见 特征交互。
Blob 快照
当禁用版本控制时,覆盖会创建软删除快照: 在没有版本控制的平面命名空间账户中,覆盖blob会自动生成软删除快照,捕捉写入前的状态。 当保留期届满时,快照将被永久删除。
软删除保护你明确删除的快照: 删除活动快照会将其软删除,并在保留期内保留。 除非你也删除了它的快照,否则你无法删除带有快照的基础blob。 当你删除这两项时,你会将所有项标记为软删除。
高级存储帐户不将软删除快照计入快照限制: 在高级块 Blob 帐户中,软删除快照不计入每个 Blob 100 个快照的限制。
生命周期管理
- 生命周期删除操作会产生软删除对象: 当生命周期管理策略删除了blob、快照或版本时,软删除仍然适用。 被删除的对象会进入软删除状态,并在保留期间保持可恢复性,而不会立即被移除。 如果你使用生命周期规则来控制存储增长,请考虑额外的保留窗口,因为删除数据会持续计费直到保留期结束。
容器软删除
Blob软删除和容器软删除保护不同的范围: Blob软删除可以恢复单个blob、快照和版本,但无法恢复已删除的容器。 容器软删除会恢复已删除的容器及其内容,但它不能防止活动容器中单个 blob 被删除。 这两个功能是互补的,Azure建议启用这两个功能。
你无法从软删除的容器中恢复单个 blob: 容器软删除是将整个容器恢复到删除时的状态。 你不能选择性地从软删除的容器中恢复单个 Blob 对象。 先还原整个容器,然后再处理其中的 Blob。 更多信息请参见 容器软删除。
已知的限制
它不能防止容器或账户被删除。 blob软删除仅在blob、快照、版本和目录(层级命名空间)层面工作。 要恢复已删除的容器及其内容,你还必须启用容器软删除。 为了防范更广泛的数据丢失情景,如意外删除账户或勒索软件,请启用 Azure 备份。
它不保护元数据或属性写入。 更新blob的元数据或属性时,不会生成软删除快照。 无法通过软删除恢复这些更改。
它不能保护层级命名空间账户不被覆盖。 对于具有层级命名空间的账户,软删除仅防止删除。 覆盖不会被捕获为软删除的快照,也无法恢复。
保留期限为1至365天,且不可延长。 一旦保留期结束,保留期无法延长,对象将被永久删除。
通过“Set Blob Expiry”进行的删除无法恢复。 通过仅支持 ADLS 的设置 Blob 到期操作删除的 blob 不会变成软删除 blob,也无法还原。
阻止将平坦命名空间帐户升级为层级命名空间(ADLS)。 当你在平面命名空间账户上启用 blob 或容器软删除时,将账户升级为分层命名空间会被阻止(例如,通过
Invoke-AzStorageAccountHierarchicalNamespaceUpgrade或az storage account hns-migration start)。 要迁移,先禁用软删除,完成升级,然后重新启用软删除。 最好在创建账户时启用ADLS。
定价和计费
所有软删除数据按与活动数据相同的费率计费。 当一个 Blob 被软删除时,它会保留在同一层,你也按同一层付费。 保存期过后永久删除的数据不会被收费。
启用软删除时,请保留较短的期限,以便更好地了解该功能如何影响账单。 建议的最短保持期为七天。
对频繁被覆盖的数据启用软删除可能会导致存储容量费用增加,并在列出 Blob 时导致延迟增加。 在覆盖或删除 blob 时,自动生成快照或版本的相关事务不会被计费。 按写入操作的交易费率对“取消删除 Blob”操作进行计费。
有关 Blob 存储定价的详细信息,请参阅 Blob 存储定价页。
Blob 软删除与虚拟机磁盘
Blob 软删除适用于高级和标准非托管磁盘(实际上是页 blob)。 软删除仅可帮助恢复被“删除 Blob”、“上传 Blob”、“上传块列表”和“复制 Blob”操作删除或覆盖的数据。
被Put Page调用覆盖的数据无法恢复。 Azure 虚拟机使用对 Put Page 的调用写入非托管磁盘,因此,使用软删除来撤销 Azure VM 对非托管磁盘执行的写入操作不是受支持的场景。
监视和故障排除
要在 Azure 门户中查看软删除的 blob,请在容器视图中启用显示活跃和已删除的 blob。
以编程方式,使用 List Blobs 操作和 include=deleted(或在 Azure.Storage.Blobs v12 SDK 中使用 BlobStates.Deleted 标志)列出它们。 要量化软删除数据,运行 Azure 存储 blob 库存报告,并将includeDeleted筛选器设置为true,然后汇总Content-Length字段;注意,Azure Monitor 中的BlobCapacity指标报告的是账户总容量,不区分软删除数据和活动数据。
我的应用在启用软删除后开始返回已删除的 blob,或者开始失败: 如果你的代码使用“all”标志列出 blob(在旧版 SDK 中为
BlobListingDetails.All,在 v12Azure.Storage.BlobsSDK 中为BlobStates.All),软删除的 blob 现在也包含在结果中。 假设只返回活跃blob的应用逻辑可能会出现异常,备份或恢复进程也可能将软删除blob误解为活动数据。 审核你的代码,检查“all”列出相关标志。 仅列出活跃的blob,请使用BlobStates.None;若列出版本并排除软删除blob,请使用BlobStates.Versioned。我的DFS端点操作因 EndpointUnsupportedAccountFeatures 而失败:在一个平面命名空间账户中,启用软删除会阻止 Data Lake Storage(DFS)端点。 对
*.dfs.core.chinacloudapi.cn的操作因EndpointUnsupportedAccountFeatures而失败。 确认你的连接字符串或监控是否显示DFS端点请求。 解决方法是将工作负载更新为使用 Blob 端点(*.blob.core.chinacloudapi.cn),或将账户升级为分层命名空间,使 DFS 端点在启用软删除的情况下正常工作。我删除的blob不会出现在容器里: 软删除blobs在标准列表操作中是隐藏的。 在 Azure 门户中,启用显示已删除的 blobs;程序化地设置
include=deleted。 如果 blob 依然没有出现,请确认软删除是在删除 blob 之前 就已启用,且保留期尚未结束。启用软删除后,我的存储费用增加了: 软删除的blob、快照和版本在保留期结束前按与活跃数据相同的费率计费。 覆盖写入密集型工作负载在禁用版本控制时会迅速积累软删除快照。 使用 Blob 清单识别软删除数据,并考虑缩短保留期限。
我无法用blob软删除恢复已删除的容器: blob软删除保护的是单个blob,而不是容器。 如果容器被删除,其blobs无法通过blob软删除恢复。 容器恢复需要事先启用容器软删除。 参见 容器软删除。
我需要在过于广泛启用后大规模禁用软删除: 请参阅 启用容器软删除,了解如何使用各种工具禁用软删除。
我设置的保留期太长,希望我的blobs能更早被永久删除: 为了永久删除已经软删除的blob,请撤销软删除的blob,关闭blob软删除功能,然后重新删除blob。