Blob 快照
快照是在某一时间点拍摄的只读版本的 Blob。
注意
Blob 版本控制提供了一种更高级的方法来维护以前的 blob 版本。 有关详细信息,请参阅 Blob 版本控制。
关于 Blob 快照
Blob 的快照与其基本 Blob 相同,不过,Blob URI 的后面追加了一个 DateTime 值,用于指示快照的生成时间。 例如,如果页 Blob URI 为 http://storagesample.core.blob.chinacloudapi.cn/mydrives/myvhd
,则快照 URI 将类似于 http://storagesample.core.blob.chinacloudapi.cn/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z
。
注意
所有快照共享基本 Blob 的 URI。 基本 Blob 与快照之间的唯一区别体现在追加的 DateTime 值。
一个 Blob 可以有任意数目的快照。 快照将持续存在,直到它们被显式删除(独立删除或作为基本 Blob 的删除 Blob 操作的一部分删除)。 可以枚举与基本 Blob 关联的快照,以跟踪当前快照。
创建 Blob 的快照时,会将该 Blob 的系统属性复制到具有相同值的快照。 基本 Blob 的元数据也会复制到快照,除非创建快照时为其指定了单独的元数据。 创建快照后,可以读取、复制或删除它,但无法修改它。
任何与基本 Blob 关联的租约都不会影响快照。 无法获取快照上的租约。
可以在热层或冷层中创建 Bob 的快照。 不支持存档层中的 Blob 快照。
VHD 文件用于存储 VM 磁盘的当前信息和状态。 可以将磁盘从 VM 分离或者关闭 VM,并拍摄其 VHD 文件的快照。 可以在以后使用该快照文件检索该时间点的 VHD 文件并重新创建 VM。
定价和计费
创建快照(它是 Blob 的只读副本)会导致帐户产生额外的数据存储费用。 设计应用程序时,务必注意在哪些情况下会产生这些费用,以便最大程度地降低成本。
Blob 快照和 blob 版本一样,按与活动数据相同的费率计费。 如何对快照(或版本)进行计费取决于是否已为基本 blob 或其任何快照显式设置层级。 有关 Blob 层的详细信息,请参阅 Blob 数据的访问层。
如果尚未更改 Blob 或快照的层级,则会对该 Blob 及其快照以及其具有的任何版本中不重复的数据块进行计费。 有关详细信息,请参阅在未显式设置 Blob 层级时进行计费。
如果已更改了 Blob 或快照的层级,则会对整个对象进行计费,而不考虑 Blob 和快照是否最终在同一层级中。 有关详细信息,请参阅在显式设置了 blob 层级时进行计费。
有关 blob 版本的计费详细信息,请参阅 Blob 版本控制。
使用快照管理最大限度地降低成本
我们建议仔细管理快照,避免额外费用。 遵循下述最佳做法可以将存储快照的费用降至最低:
- 除非应用程序设计需要保留与 Blob 关联的快照,否则请在更新 Blob 时删除并重新创建这些快照,即使你使用相同的数据进行更新也是如此。 通过删除并重新创建 Blob 的快照,可以确保 Blob 和快照不会发生偏离。
- 如果要保留 Blob 的快照,请避免在更新 Blob 时调用覆盖整个 Blob 的方法。 而应更新尽可能少的块数,使成本保持低廉。
在未显式设置 Blob 层级时进行计费
如果没有为基本 Blob 或其任何快照显式设置 Blob 层级,则会针对 Blob 及其快照以及其具有的任何版本中不重复的块或页面向你收费。 对于跨 blob 及其快照共享的数据,只会收费一次。 当 blob 更新时,基本 blob 中的数据与其快照中存储的数据将会相异,并且会按块或页面对不重复的数据进行收费。
在替换块 Blob 中的某个块后,会将该块作为唯一块进行收费。 即使该块具有的块 ID 和数据与它在快照中所具有的 ID 和数据相同也是如此。 重新提交块后,它将与它在快照中的对应部分相异,并且你要为其数据付费。 对于使用相同数据更新的页 Blob 中的页面来说,情况也是如此。
Blob 存储无法确定两个块是否包含相同的数据。 每个上传和提交的块均被视为唯一的块,即使它具有相同的数据和块 ID 也是如此。 由于不重复的块会产生费用,因此请务必记住,在 Blob 具有快照或版本时更新该 Blob 将导致产生更多不重复的块和额外费用。
当 blob 具有快照时,请对块 blob 调用更新操作,以使它们更新尽可能少的块。 允许对块进行精细控制的写入操作是放置块和放置块列表。 另一方面,放置 Blob 操作会替换 Blob 的全部内容,因此可能会导致额外的费用。
下列方案说明了未显式设置 blob 层级时块 Blob 及其快照将如何产生费用。
方案 1
在方案 1 中,基本 Blob 自创建快照后未进行更新,因此只有不重复的块 1、2 和 3 会产生费用。
方案 2
在方案 2 中,已更新基本 Blob,但未更新快照。 已更新块 3,即使它包含相同的数据和 ID,它也与快照中的块 3 不同。 因此,帐户需要为四个块支付费用。
方案 3
在方案 3 中,已更新基本 Blob,但未更新快照。 块 3 已替换为基础 Blob 中的块 4,但快照仍反映块 3。 因此,帐户需要为四个块支付费用。
方案 4
在方案 4 中,已完全更新基本 Blob,并且其中不包含任何原始块。 因此,帐户需要为所有八个唯一块支付费用。
提示
请避免调用覆盖整个 blob 的方法,而应更新单个块以使成本保持低廉。
在显式设置了 blob 层级时进行计费
如果为 Blob 或快照(或版本)显式设置了 Blob 层级,则会针对新层级中对象的完整内容长度计费,而不考虑它是否与原始层级中的对象共享块。 还会针对原始层级中最早版本的完整内容长度向你收费。 对于保留在原始层级中的任何版本或快照,都将针对其可能共享的不重复的块收费,如在未显式设置 Blob 层级时进行计费中所述。
将 blob 移到新层级
下表描述了将 Blob 或快照移动到新层级时的计费行为。
当针对以下项显式设置了 blob 层级时... | 然后,针对以下内容进行计费... |
---|---|
带有快照的基本 blob | 新层级中的基本 blob 和原始层级中最旧的快照,以及其他快照中的任何不重复的块。1 |
具有先前版本和快照的基本 blob | 新层级中的基本 blob、原始层级中的最早版本、原始层级中的最早快照,以及其他版本或快照中的任何不重复的块1。 |
快照 | 新层级中的快照和原始层级中的基本 blob,以及其他快照中的任何不重复的块。1 |
1如果有其他先前版本或快照尚未从其原始层级中移出,则会根据这些版本或快照包含的不重复的块的数量对它们进行收费,如在未显式设置 Blob 层级时进行计费中所述。
下图说明了当包含快照的 blob 移到另一个层级时,如何针对对象进行计费。
为 blob、版本或快照显式设置层级的操作不能撤消。 如果将 blob 移动到新层级,然后将其移回其原始层级,则即使该对象与原始层级中的其他对象共享块,也会针对其完整内容长度向你收费。
显式设置 blob、版本或快照的层级的操作包括:
在启用了软删除的情况下删除 blob
在启用了 blob 软删除的情况下,如果删除或覆盖已显式设置其层级的基本 blob,则软删除的 blob 的任何先前版本都将按完整内容长度进行计费。 有关如何结合使用 blob 版本控制和软删除的详细信息,请参阅 Blob 版本控制和软删除。
下表描述了软删除的 blob 的计费行为,具体取决于是启用还是禁用了版本控制。 启用版本控制后,软删除 blob 时将创建一个新版本。 禁用版本控制后,软删除 blob 时将创建一个软删除快照。
当你覆盖已显式设置了其层级的基本 blob 时... | 然后,针对以下内容进行计费... |
---|---|
如果同时启用了 blob 软删除和版本控制 | 所有现有版本(按完整内容长度),不考虑层级。 |
如果启用了 blob 软删除但禁用了版本控制 | 所有现有软删除快照(按完整内容长度),不考虑层级。 |
功能支持
启用 Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 可能会影响对此功能的支持。 如果已启用这些功能中的某一项,请参阅 Azure 存储帐户中的 Blob 存储功能支持,以评估对此功能的支持。