更改存储帐户的复制方式
Azure 存储始终会存储数据的多个副本,以防范各种计划内和计划外的事件,包括暂时性的硬件故障、网络中断或断电、大范围自然灾害等。 即使面临故障时,冗余也可确保存储帐户满足 Azure 存储的服务级别协议 (SLA)的要求。
Azure 存储提供以下类型的复制:
- 本地冗余存储 (LRS)
- 区域冗余存储 (ZRS)
- 异地冗余存储 (GRS) 或读取访问异地冗余存储 (RA-GRS)
- 异地区域冗余存储 (GZRS) 或读取访问异地区域冗余存储 (RA-GZRS)
有关这些选项每一个的概述,请参阅 Azure 存储冗余。
在复制类型之间切换
可以将存储帐户从一种类型的复制切换到任何其他类型,但某些方案比另一些方案更直接。 若要添加或删除对次要区域的异地复制或读取访问权限,可以使用 Azure 门户、PowerShell 或 Azure CLI 来更新某些方案中的复制设置;其他方案要求手动或实时迁移。 如果要通过从 LRS 移动到 ZRS(或反之)来更改主要区域的数据复制方式,则必须执行手动迁移或请求实时迁移。 如果要从 ZRS 迁移到 GZRS 或 RA-GZRS,则必须执行实时迁移,除非你是在故障转移后执行故障回复操作。
下表概述了如何从每种复制类型切换到另一种复制类型:
切换 | …到 LRS | …到 GRS/RA-GRS | …到 ZRS | …到 GZRS/RA-GZRS |
---|---|---|---|---|
…从 LRS | 空值 | 使用 Azure 门户、PowerShell 或 CLI 更改复制设置1,2 | 执行手动迁移 OR 请求实时迁移5 |
执行手动迁移 OR 首先切换到 GRS/RA-GRS,然后请求实时迁移3 |
…从 GRS/RA-GRS | 使用 Azure 门户、PowerShell 或 CLI 更改复制设置 | 不可用 | 执行手动迁移 OR 首先切换到 LRS,然后请求实时迁移3 |
执行手动迁移 OR 请求实时迁移3 |
...从 ZRS | 执行手动迁移 | 执行手动迁移 | 空值 | 请求实时迁移3 OR 只在故障回复操作的过程中,使用 Azure 门户、PowerShell 或 Azure CLI 来更改复制设置4 |
…从 GZRS/RA-GZRS | 执行手动迁移 | 执行手动迁移 | 使用 Azure 门户、PowerShell 或 CLI 更改复制设置 | 空值 |
1 会产生一次性出口费用。
2 如果存储帐户在存档层中包含 blob,则不支持从 LRS 迁移到 GRS。
3 标准常规用途 v2 和高级文件共享存储帐户支持实时迁移。 高级块 blob 或页 blob 存储帐户不支持实时迁移。
4 帐户故障转移到次要区域后,可以使用 PowerShell 或 Azure CLI(2.30.0 或更高版本)启动从新主数据库到新辅助数据库的故障回复。
5 如果为 Azure Blob 存储启用了 NFSv3 协议支持,或者如果存储帐户包含 Azure 文件 NFSv4.1 共享,则不支持从 LRS 迁移到 ZRS。
注意
如果你为 (RA-)GRS 或 (RA-)GZRS 帐户执行了帐户故障转移,则在故障转移后该帐户在新的主要区域中为本地冗余 (LRS) 帐户。 不支持由于故障转移而将 LRS 帐户实时迁移到 ZRS 或 GZRS。 即使对于所谓的故障回复操作,也是如此。 例如,如果执行从 RA-GZRS 到次要区域 LRS 的帐户故障转移,然后再次将其配置为 RA-GRS 并执行另一轮到原始主要区域的帐户故障转移,则无法联系支持部门以进行到主要区域中 RA-GZRS 的原始实时迁移。 相反,你需要手动迁移到 ZRS 或 GZRS。
要更改存档层中包含 Blob 的存储帐户的冗余配置,必须先将所有已存档的 Blob 解除冻结到热访问层或冷访问层。 Azure 建议尽可能避免更改包含已存档 Blob 的存储帐户的冗余配置,因为解除冻结操作可能成本很高且非常耗时。
更改复制设置
只要不更改在主要区域中复制数据的方式,就可以使用 Azure 门户、PowerShell 或 Azure CLI 更改存储帐户的复制设置。 如果要从主要区域中的 LRS 迁移到主要区域中的 ZRS(或相反),则必须执行手动迁移或实时迁移。
更改存储帐户的复制方式不会导致应用程序停机。
若要在 Azure 门户中更改存储帐户的冗余选项,请执行以下步骤:
执行到 ZRS、GZRS 或 RA-GZRS 的手动迁移
如果要通过从 LRS 移动到 ZRS(或相反)来更改存储帐户中的数据在主要区域中的复制方式,则可以选择执行手动迁移。 手动迁移比实时迁移更灵活。 你可以控制手动迁移的时间,因此如果需要在特定日期之前完成迁移,请使用此选项。
在主要区域执行从 LRS 到 ZRS 的手动迁移时(或相反),目标存储帐户可以是异地冗余的,也可以配置为对次要区域进行读取访问。 例如,可以通过一个步骤将 LRS 帐户迁移到 GZRS 或 RA-GZRS 帐户。
不能使用手动迁移从 ZRS 迁移到 GZRS 或 RA-GZRS。 必须请求实时迁移。
手动迁移可能导致应用程序关闭。 如果应用程序需要高可用性,则还可以使用 Microsoft 提供的实时迁移选项。 实时迁移属于就地迁移,不停机。
通过手动迁移,将数据从现有存储帐户复制到在主要区域使用 ZRS 的新存储帐户。 若要执行手动迁移,可以使用以下选项之一:
- 使用现有工具(如 AzCopy、Azure 存储客户端库之一或可靠的第三方工具)复制数据。
- 如果你熟悉 Hadoop 或 HDInsight,则可以将源存储帐户和目标存储帐户帐户附加到群集。 然后使用 DistCp 等工具来并行化数据复制过程。
请求实时迁移到 ZRS、GZRS 或 RA-GZRS
如果需要在不停机的情况下将存储帐户从 LRS 迁移到主要区域中的 ZRS,则可以从 Azure 请求实时迁移。 若要从 LRS 迁移到 GZRS 或 GZRS,请首先切换到 GRS 或 RA-GRS,然后请求实时迁移。 同样,你可以请求从 ZRS、GRS 或 RA-GRS 到 GZRS 或 RA-GZRS 的实时迁移。 若要从 GRS 或 RA-GRS 迁移到 ZRS,请首先切换到 LRS,然后请求实时迁移。
在实时迁移期间,你可以访问存储帐户中的数据,而不会丢失持久性或可用性。 在迁移过程中将保留 Azure 存储 SLA。 实时迁移不会造成数据丢失。 迁移后,服务终结点、访问密钥、共享访问签名和其他帐户选项保持不变。
对于标准性能,ZRS 仅支持常规用途 v2 帐户,因此如果它是常规用途 v1 帐户,请确保在提交实时迁移到 ZRS 的请求之前升级存储帐户。 有关详细信息,请参阅升级到常规用途 v2 存储帐户。 存储帐户必须包含要通过实时迁移进行迁移的数据。
对于高级性能,高级文件共享帐户支持实时迁移,但高级块 blob 或高级页 blob 帐户不支持实时迁移。
如果你的帐户使用 RA-GRS,则需要先将帐户的复制类型更改为 LRS 或 GRS,然后再继续进行实时迁移。 此中间步骤会删除 RA-GRS 提供的辅助只读终结点。
尽管 Azure 会尽快处理实时迁移的请求,但无法保证实时迁移何时完成。 如果需要在特定的日期之前将数据迁移到 ZRS,Azure 建议你执行手动迁移。 通常,帐户中的数据越多,迁移这些数据所需的时间就越长。
在以下情况下,必须执行手动迁移:
- 想要将数据迁移到位于与源帐户不同区域的 ZRS 存储帐户。
- 存储帐户是一个高级页 blob 或块 blob 帐户。
- 需要将数据从 ZRS 迁移到 LRS、GRS 或 RA-GRS。
- 存储帐户包含存档层中的数据。
可以通过 Azure 支持门户请求实时迁移。
重要
如果需要迁移多个存储帐户,请创建一个支持票证,并在“详细信息”选项卡上指定要转换的帐户的名称。
注意
高级文件共享仅适用于 LRS。
GZRS 存储帐户当前不支持存档层。 有关更多详细信息,请参阅 Blob 数据的热访问层、冷访问层和存档访问层。
托管磁盘仅适用于 LRS,不能迁移到 ZRS。 可将标准 SSD 托管磁盘的快照和映像存储在标准 HDD 存储上,并在 LRS 与 ZRS 选项之间进行选择。 有关与可用性集集成的信息,请参阅 Azure 托管磁盘简介。
与更改数据复制方式相关的成本
与更改数据复制方式相关的成本取决于你的转换路径。 从最便宜到最昂贵的 Azure 存储冗余产品/服务依次为 LRS、ZRS、GRS、RA-GRS 和 RA-GZRS。
例如,从 LRS 转移到任何其他类型的复制会产生额外的费用,因为这是转移到更高级的冗余级别。 如果迁移到 GRS 或 RA-GRS,则会在迁移时产生流出量带宽费用,因为要将整个存储帐户复制到次要区域。 之后写入主要区域的所有内容也会产生流出量带宽费用,用于将写入内容复制到次要区域。 有关带宽费用的详细信息,请参阅 Azure 存储定价页面。
如果将存储帐户从 GRS 迁移到 LRS,则不会产生额外的费用,但从次要位置复制的数据将被删除。
重要
如果将存储帐户从 RA-GRS 迁移到 GRS 或 LRS,则会在完成转换 30 天后以 RA-GRS 方式对该帐户计费。