Azure 存储冗余

Azure 存储始终存储数据的多个副本,以保护数据免受计划内和计划外事件的保护。 这些事件的示例包括暂时性硬件故障、网络中断或断电,以及大范围的自然灾害。 冗余确保你的存储账户即使在故障期间也能达到可用性和耐久性目标。

在确定最适合自己方案的冗余选项时,请考虑如何在较低成本与较高可用性之间做出取舍。 可帮助你确定应选择哪种冗余选项的因素包括:

  • 如何在主要区域内复制您的数据。
  • 你的数据是否从一个主要区域复制到地理上较远的另一个区域,以防范区域性灾难(异地复制)。
  • 在主要区域的中断期间,你的应用程序是否要求对次要区域中复制的数据具有读取访问权限(使用读取访问权限进行异地复制)。

注意

本文描述的功能和区域可用性同样适用于拥有层级命名空间(Azure Blob 存储)的账户。

构成Azure 存储的服务通过称为 storage 帐户的公共Azure资源进行管理。 存储账户代表一个共享的存储池,你可以用它来部署存储资源,比如 blob 容器(Blob 存储)、文件共享(Azure 文件存储)、表(Table Storage)或队列(Queue Storage)。 有关Azure 存储帐户的详细信息,请参阅 Storage 帐户概述

存储帐户的冗余设置由该帐户公开的所有存储服务共享。 部署在同一存储帐户中的所有存储资源具有相同的冗余设置。 如果不同类型的资源具有不同的冗余要求,可考虑将这些资源隔离在单独的存储帐户中。

主要区域中的冗余

Azure 存储提供了两个选项,用于在主要区域中复制数据:

  • 本地冗余存储(LRS) 将数据复制到所选主要区域中的单个物理数据中心。

  • 区域冗余存储(ZRS)在主要区域中的三个或多个Azure可用性区域中同步复制数据。 对于需要高可用性的应用程序,Azure建议在主要区域中使用 ZRS,并复制到次要区域。

注意

Azure建议在主要区域中对Azure Data Lake Storage工作负荷使用 ZRS。

本地冗余存储

本地冗余存储(LRS)将数据复制到所选主要区域中的单个物理数据中心。 尽管不支持选择可用性区域,但Azure可能会跨区域移动或扩展 LRS 帐户以提高负载均衡。 LRS在特定一年内至少能提供99.99999999999%(11 9秒)的物体耐久性。 请访问 什么是Azure可用性区域一文,详细了解可用性区域可靠性。

与其他选项相比,LRS 是成本最低的冗余选项,但提供的持久性也最低。 LRS 可保护数据免受驱动器、服务器和机架故障的影响。 然而,如果数据中心发生火灾或洪水等灾难,使用LRS的所有存储账户副本可能会丢失或无法恢复。 如果数据中心内发生临时事件,如热事件,所有副本可能暂时无法使用,直到事件解决。 为了缓解这些风险,Azure建议使用区域冗余存储(ZRS)、地理冗余存储(GRS)或地理区域冗余存储(GZRS)。

所有副本都反映相同的当前状态:删除和覆盖会同时应用于所有副本。 冗余可防止硬件故障,而不是针对数据修改操作。

下图展示了如何通过LRS在单个数据中心内复制您的数据:

该图显示了在采用本地冗余存储 (LRS) 的单个数据中心中,数据是如何复制的。

对于以下场景,LRS 是不错的选项:

  • 如果应用程序存储了发生数据丢失时可轻松重构的数据,则可以选择 LRS。
  • 如果由于数据治理要求,你的应用程序被限制为只能在一个区域内复制数据,请考虑选择 LRS。 在某些情况下,要在其中异地复制数据的配对区域可位于另一个区域。 有关配对区域的详细信息,请参阅 Azure 区域
  • 如果方案使用的是Azure非托管磁盘,请考虑使用 LRS。 虽然可为使用 GRS 的Azure非托管磁盘创建存储帐户,但由于异步异地复制存在一致性的潜在问题,不建议这样做。

区域冗余存储

区域冗余存储(ZRS)将数据复制到所选主要区域中的三个或更多Azure可用性区域。 每个可用性区域都是一个独立的物理位置,具有独立的电源、冷却系统和网络。 ZRS 在一年内可提供至少 99.9999999999%(12 个 9)的存储资源的可靠性。 请访问 什么是Azure可用性区域一文,详细了解可用性区域可靠性。

使用 ZRS 时,即使某个可用区不可用,数据仍可进行读取和写入操作。 如果某个区域不可用,Azure将进行网络更新,例如域名系统(DNS)重新指向。 如果在完成更新之前访问数据,则这些更新可能会影响应用程序。 在设计用于 ZRS 的应用程序时,遵循暂时性故障的处理做法,包括结合指数退让实施重试策略。

对使用 ZRS 的存储帐户的写入请求同步发生。 写入操作仅在将数据写入三个可用性区域中的所有副本后才能成功返回。 如果某个可用性区暂时不可用,则将数据写入所有可用区域后操作会成功返回。

Azure建议在主要区域中使用 ZRS 以实现高可用性。 还建议使用 ZRS 来限制将数据复制到特定的区域,以满足数据治理要求。

Azure建议对Azure 文件存储工作负荷使用 ZRS。 如果某个区域不可用,则不需要从连接的客户端重新装载Azure文件共享。

下图显示如何使用 ZRS 在主要区域中的可用性区域之间复制数据:

示意图展示了如何通过区域冗余存储 ZRS 在可用区间复制数据。

如果数据变为暂时不可用,ZRS 可提供出色的性能、低延迟和数据复原能力。 但如果发生对多个区域产生永久影响的区域性灾难,ZRS 本身可能无法充分保护数据。 异地区域冗余存储 (GZRS) 会在主要区域中使用 ZRS,并将数据异地复制到次要区域。 GZRS 在许多区域中都可以使用,并被推荐用于防范区域灾难。

ZRS、GZRS 或 RA-GZRS 帐户当前不支持Blob 存储的存档层。 非托管磁盘不支持 ZRS 或 GZRS。

有关哪些区域支持 ZRS 的详细信息,请参阅Azure具有可用性区域的区域

次要区域中的冗余

冗余选项有助于为您的应用提供高耐用性。 在许多区域中,可以将存储帐户中的数据复制到距离主要区域数百英里的次要区域。 将存储帐户复制到次要区域可确保数据在完全区域中断或主要区域不可恢复的灾难期间能够持久保存。

创建存储帐户时,可以为帐户选择主要区域。 配对的次要区域是根据主要区域确定的且无法更改。 有关 Azure 支持的区域的详细信息,请参阅 Azure 区域列表

Azure 存储提供了两个选项,用于将数据复制到次要区域:

  • 地理冗余存储(GRS)通过使用LRS,在主区域的一个或多个Azure可用性区同步复制你的数据。 然后将数据异步复制到次要区域。 在次级区域内,你的数据使用 LRS 进行同步复制。

  • 地理区域冗余存储(GZRS)通过使用ZRS同步复制你的数据,跨越主区域内三个或更多Azure可用区域。 然后将数据异步复制到次要区域。 在次级区域内,你的数据使用 LRS 进行同步复制。

注意

GRS 和 GZRS 之间的主要区别是在主要区域中复制数据的方式。 在次级区域内,数据始终通过使用LRS同步复制。 次要区域中的 LRS 保护你的数据免受硬件故障的影响。

使用GRS或GZRS时,除非有备用切换到次级区域,否则二级区域的数据无法读写访问。 若要对次要区域进行读取访问,请将存储帐户配置为使用读取访问异地冗余存储 (RA-GRS) 或读取访问异地区域冗余存储 (RA-GZRS)。 有关详细信息,请参阅对次要区域中数据的读取访问权限

如果主要区域变得不可用,则可以选择故障转移到次要区域。 故障转移操作完成后,次要区域将成为主要区域,并且你可以读取和写入数据。 有关灾难恢复以及如何将故障转移到次要区域的详细信息,请参阅灾难恢复和存储帐户故障转移

重要

由于数据以异步方式复制到次要区域,因此如果无法恢复主要区域,影响主要区域的故障可能会导致数据丢失。 最近对主要区域的写入与最近对次要区域的写入之间的时间间隔称为恢复点目标 (RPO)。 RPO 表示数据可以恢复到的时间点。 Azure 存储 提供地理优先级复制,确保块块的 RPO 不超过或等于 15 分钟。 有关详细信息,请参阅 Azure 存储异地优先级复制 文章。

异地冗余存储

地理冗余存储(GRS)通过使用LRS同步复制你的数据到主区域的一个或多个可用区域。 然后,它将数据异步复制到离主要区域数百英里的次要区域。 GRS 在一年中保证至少 99.99999999999999%(16 个 9)的存储资源的持久性。

写入操作首先提交到主位置,并使用 LRS 进行复制。 然后会以异步方式将更新复制到次要区域。 当数据写入到次要位置时,也会通过LRS在该位置复制。

下图显示了如何使用 GRS 或 RA-GRS 复制数据:

显示如何使用异地冗余存储 GRS 或 RA-GRS 将数据复制到辅助区域的图示。

地理区域冗余存储

地域区域冗余存储 (GZRS) 将冗余跨可用性区域提供的高可用性与异地复制提供的区域中断保护相结合。 GZRS 帐户中的数据跨主要区域中的三个或多个 Azure 可用性区域复制。 此外,数据还会复制到次要地理区域,以防范区域性灾难。 Azure建议对需要高一致性、持久性、可用性和复原能力的应用程序使用 GZRS 进行灾难恢复。

如果使用 GZRS 帐户,在可用性区域不可用或无法恢复的情况下,可以继续读取和写入数据。 另外,即使遇到完全区域中断或主要区域不可恢复的灾难,数据也能持久保存。 GZRS 的设计目标是在一年内确保对象至少 99.99999999999999%(即 16 个 9 配数)的耐用性。

下图显示了如何使用 GZRS 或 RA-GZRS 复制数据:

展示了如何使用异地可用区冗余存储 GZRS 或 RA-GZRS 复制数据的示意图

若要确定某个区域是否支持 GZRS,请参阅 Azure 区域列表。 为了支持 GZRS,区域必须支持可用性区域并具有配对区域。

对次要区域中数据的读取权限

异地冗余存储(使用 GRS 或 GZRS)将数据复制到次要区域中的另一个物理位置,以防止区域中断。 如果为 GRS 或 GZRS 配置了帐户,则除非发生故障转移,否则在主要区域中发生中断时,用户或应用程序将无法直接访问次要区域中的数据。 故障转移过程更新Azure 存储提供的 DNS 条目,以便次要区域中的存储服务终结点成为存储帐户的新主终结点。 在故障转移过程中,数据不可访问。 在故障转移完成后,您便可以在新的主区域读取和写入数据。 有关详细信息,请参阅客户管理的存储帐户故障切换以从中断中恢复的工作方式

如果你的应用需要高可用性,你可以配置存储账户为次级区域的读取权限。 当你启用对次级区域的读取权限时,你的数据始终可以从次级区域读取,包括在主区域无法使用的情况下。 读取访问异地冗余存储 (RA-GRS) 或异地区域冗余存储 (RA-GZRS) 的配置允许对次要区域进行读取访问。

注意

Azure 文件存储 不支持读访问异地冗余存储(RA-GRS)或读访问异地区域冗余存储(RA-GZRS)。

设计应用程序以便能够对次要区域进行读取访问

如果存储帐户已配置为对次要区域进行读取访问,则你可以设计自己的应用程序,以便在主要区域出于任何原因而不可用时,能够无缝转换为从次要区域读取数据。

启用 RA-GRS 或 RA-GZRS 后,可以对次要区域进行读取访问。 通过这种高可用性,你可以提前测试你的应用程序的功能,以确保在服务中断期间它能从次要区域正确读取数据。 若要详细了解如何设计应用程序以利用异地冗余,请参阅使用异地冗余设计高度可用的应用程序

启用对辅助数据库的读取访问权限后,您的应用程序既可以从辅助终结点读取,也可以从主终结点读取。 次要终结点在帐户名的后面追加了后缀 -secondary。 例如,如果你的 Blob 存储 主端点是 myaccount.blob.core.chinacloudapi.cn,那么副端点就是 myaccount-secondary.blob.core.chinacloudapi.cn。 存储帐户的帐户访问密钥对于主要终结点和次要终结点是相同的。

制定数据丢失计划

由于数据是异步地从主区域复制到次级区域,写入操作通常位于主区域之后。 如果主要区域发生灾难,可能会丢失一些数据,并且目录或容器中的文件会不一致。 若要详细了解如何为潜在数据丢失做好计划,请参阅数据丢失和不一致

冗余选项摘要

以下部分中的表汇总了可用于Azure 存储的冗余选项。

持久性和可用性参数

下表描述了每个冗余选项的关键参数:

参数 LRS ZRS GRS/RA-GRS GZRS/RA-GZRS
给定一年内的对象持久性百分比 至少 99.999999999%(11 个 9) 至少 99.9999999999%(12 个 9) 至少 99.99999999999999%(16 个 9) 至少 99.99999999999999%(16 个 9)
读取请求的可用性 至少 99.9%;适用于冷/冷/存档访问层的 99% 至少 99.9%;冷/冷访问层的 99% GRS 至少为 99.9%;适用于冷/冷/存档访问层的 99%

RA-GRS 至少为 99.99%;用于冷/冷/存档访问层的 99.9%
GZRS 至少为 99.9%;冷/冷访问层的 99%

RA-GZRS 至少为 99.99%;用于冷/冷访问层的 99.9%
写入请求的可用性 至少 99.9%;适用于冷/冷/存档访问层的 99% 至少 99.9%;冷/冷访问层的 99% 至少 99.9%;适用于冷/冷/存档访问层的 99% 至少 99.9%;冷/冷访问层的 99%

注意:GRS 提供地理复制,但不允许从次要区域进行读取访问。 为了在主区域发生故障期间保持读取可用性,必须使用 RA-GRS 或 RA-GZRS。

有关详细信息,请参阅存储帐户的服务级别协议

持久性和可用性(按故障情景)

下表指示数据是否持久且在给定方案中可用,具体取决于对存储帐户启用的冗余类型:

停机情境 LRS ZRS GRS/RA-GRS GZRS/RA-GZRS
数据中心内的节点变为不可用
整个数据中心(区域性或非区域性)会不可用 1
主要区域发生区域范围的服务中断 1 1
如果主区域变得不可用,可对次要区域进行读取访问 是(使用 RA-GRS) 是(使用 RA-GZRS)

1 如果主要区域变为不可用,则需要执行帐户故障转移来恢复写入可用性。 有关详细信息,请参阅灾难恢复和存储帐户故障转移

支持的Azure 存储服务

下表显示了每个Azure 存储服务支持的冗余选项。

服务 LRS ZRS GRS RA-GRS GZRS RA-GZRS
Blob 存储
(包括Data Lake Storage)
队列存储
表存储
Azure 文件存储 1 1
Azure托管磁盘 2

LRS 和 ZRS 支持 1 个 SSD 文件共享。
2 ZRS 托管磁盘存在某些限制。 有关详细信息,请参阅“托管磁盘的冗余选项”一文的限制部分。

支持的存储帐户类型

下表显示了每种类型的存储帐户支持的冗余选项。 有关存储账户类型的更多信息,请参见 存储账户概览

存储帐户类型 LRS ZRS GRS/RA-GRS GZRS/RA-GZRS
推荐 标准常规用途 v2 (StorageV2)1

高级块 Blob (BlockBlobStorage)1

SSD 文件共享 (FileStorage

高级页 Blob (StorageV2)
标准常规用途 v2 (StorageV2)1

高级块 Blob (BlockBlobStorage)1

SSD 文件共享 (FileStorage
标准常规用途 v2 (StorageV2)1 标准常规用途 v2 (StorageV2)1
遗留 标准常规用途 v1 (Storage)

旧版 Blob (BlobStorage)
空值 标准常规用途 v1 (Storage)

旧版 Blob (BlobStorage)
空值

1 启用了分层命名空间的此类型的帐户还支持指定的冗余选项。

根据存储帐户的冗余选项,所有存储帐户的所有数据都从主帐户复制到辅助帐户。 被复制的对象包括块状 Blob、附加 Blob、页面 Blob、队列、表和文件。

在异地复制期间,所有层(包括存档层)中的数据始终从主层复制到辅助层。 Blob 存储的归档层支持LRS、GRS和 RA-GRS 账户,但不支持ZRS、GZRS或 RA-GZRS 账户。 有关 Blob 层的详细信息,请参阅 Blob 数据的访问层

非托管磁盘不支持 ZRS 或 GZRS。

有关每个冗余选项的定价信息,请参阅 Azure 存储 定价

注意

块 Blob 存储帐户在特定区域支持本地冗余存储 (LRS) 和区域冗余存储 (ZRS)。

数据完整性

Azure 存储 定期通过循环冗余检查(CRC)验证存储数据的完整性,并通过冗余数据修复检测到的数据损坏。 Azure 存储还会计算所有网络流量的校验和,以检测存储或检索数据时数据包损坏。

另请参阅