更改存储帐户的复制方式
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 帐户不支持实时迁移。
尽管 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 方式对该帐户计费。