Azure 文件中的可靠性

Azure 文件存储在云中提供完全托管的文件共享,可通过行业标准服务器消息块(SMB)和网络文件系统(NFS)协议进行访问。

根据 Azure 区域,Azure 文件可以支持一系列冗余配置,以便为托管工作负荷启用高可用性(HA)和灾难恢复(DR):

  • 本地冗余存储(LRS)和 Zone-Redundant 存储(ZRS) 旨在实现高可用性,并确保单个数据中心或跨可用性区域的数据持久性。
  • 异地冗余存储(GRS)和异地区冗余存储(GZRS) 提供跨区域灾难恢复,并将数据复制到次要区域,以防止区域性中断。

本文介绍 Azure 文件中的可靠性与可用性区域支持,包括通过可用性区域配置实现的区域复原,以及通过异地冗余存储选项实现跨区域保护。 有关 Azure 中可靠性的更详细概述,请参阅 Azure 可靠性

注释

Azure 文件是 Azure 存储平台的一部分。 Azure 文件的一些功能在许多 Azure 存储服务中很常见。 本文档使用“Azure 存储”来指示这些常见功能。

生产部署建议

若要了解如何部署 Azure 文件以支持解决方案的可靠性要求,以及可靠性如何影响体系结构的其他方面,请参阅 Azure Well-Architected Framework 中 Azure 文件的体系结构最佳做法

可靠性体系结构概述

Azure 文件在两个媒体层中可用:

  • 高级层 使用固态磁盘(SSD)实现高性能。 对于需要低延迟的工作负荷,建议使用此层。
  • 标准层 支持硬盘驱动器(HDD)。 HDD 文件共享为常规用途文件共享提供经济高效的存储选项。

若要了解有关 Azure 文件层的详细信息,请参阅 计划部署 Azure 文件存储。

Azure 文件在存储帐户级别实现冗余,文件共享继承冗余配置。 该服务支持多种冗余模型,这些模型在数据保护方法上有所不同。

本地冗余存储 (LRS) 将存储帐户中的数据复制到所选主要区域中的一个或多个 Azure 可用性区域。 尽管没有选择首选可用性区域的选项,但 Azure 可以跨区域移动或扩展 LRS 帐户以提高负载均衡。 无法保证数据将分散到各个区域。 有关可用性区域的详细信息,请参阅可用性区域是什么?

显示如何使用 LRS 在可用性区域中复制数据的关系图。

区域冗余存储 (ZRS)、异地冗余存储 (GRS) 和异地区域冗余存储 (GZRS) 提供额外的保护。 本文详细介绍了这些选项。

暂时性故障

暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。

与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议

若要在使用 Azure 文件存储时有效地管理暂时性故障,请根据文件大小和网络条件为文件操作配置合适的超时值。 较大的文件需要更长的超时时间,而较小的操作可以使用较短的值, 快速检测故障。

为了确保只建立安全的 NFS 共享连接,建议为你的存储帐户配置一个专用终结点。 专用终结点使用 Azure 专用链接从虚拟网络的专用地址空间将静态 IP 地址分配给存储帐户。 专用终结点可有效防止由于动态 IP 地址更改而导致的连接中断。 有关 NFS 共享的安全性的详细信息,请参阅 NFS 文件共享 - 安全性和网络

可用性区域支持

可用性区域 是每个 Azure 区域内物理上独立的数据中心群组。 当某个区域发生故障时,服务可以切换到其他可用的区域。

Azure 文件存储通过区域冗余存储配置提供可靠的可用性区域支持,这些配置可在区域中的多个可用性区域中自动分发数据。 与 LRS 不同,ZRS 保证 Azure 跨多个可用性区域同步复制文件数据。 ZRS 确保即使一个区域遇到中断,数据仍可访问。

显示如何使用区域冗余存储 (ZRS) 在主要区域中复制数据的关系图。

区域支持

所有 具有可用性区域的 HDD(标准)文件共享都支持 ZRS。

ZRS 支持通过 FileStorage 存储帐户类型的 SSD(高级)文件共享。 有关支持 SSD 文件共享帐户 ZRS 的区域列表,请参阅对 SSD 文件共享的 ZRS 支持

要求

所有文件共享类型都支持 ZRS。

成本

启用区域冗余存储 (ZRS) 时,由于额外的复制和存储开销,你需以与本地冗余存储 (LRS) 不同的费率付费。

有关详细的定价信息,请参阅 Azure 文件存储定价

配置可用性区域支持

  • 创建具有区域冗余的文件共享: 若要使用 ZRS 创建新文件共享,请参阅 创建 Azure 文件共享 ,并在创建帐户期间选择 ZRS 或 GZRS 作为冗余选项。

  • 更改复制类型: 若要将现有存储帐户转换为 ZRS 并了解迁移选项和要求,请参阅 Azure 文件的更改冗余配置。

  • 禁用区域冗余: 通过相同的冗余配置更改过程将 ZRS 帐户转换回非区域配置(例如 LRS)。

常规操作

本部分介绍文件存储帐户已配置为支持区域冗余以及所有可用性区域均正常运行时的预期情况。

  • 区域之间的流量路由:具有区域冗余存储 (ZRS) 的 Azure 存储自动在多个可用性区域中的存储群集之间分配请求。 流量分布对应用程序是透明的,不需要客户端配置。

  • 区域之间的数据复制:对 ZRS 的所有写入操作都跨区域内的所有可用性区域进行同步复制。 上传或修改数据时,在数据成功复制到所有可用性区域之前,该作不会被视为完成。 此同步复制可确保在发生区域故障期间保持高度一致性和零数据丢失。

区域关闭体验

本部分介绍文件存储帐户配置为可用性区域冗余时以及在可用性区域发生中断时可能遇到的情况。

  • 检测和响应: Azure 会自动检测区域故障并启动恢复过程。 对于区域冗余存储 (ZRS) 帐户,不需要客户操作。

    如果某个区域变得不可用,则 Azure 会执行网络更新,例如域名系统 (DNS) 重新指向。

  • 通知:Azure 存储在区域关闭时不会通知你。 但是,可以使用 Azure 资源运行状况 来监视存储帐户的运行状况。 还可以使用 Azure 服务运行状况 来了解 Azure 存储服务的总体运行状况,包括任何区域故障。

    针对这些服务设置警报,以接收区域级别问题的通知。 有关详细信息,请参阅 Azure 门户中的“创建服务运行状况警报 ”并 创建和配置资源运行状况警报

  • 活动请求:在恢复过程中,正在传输的请求可能会掉线,应该重试。 应用程序应 实现重试逻辑 来处理这些临时中断。

  • 预期数据丢失: 区域故障期间不会发生数据丢失,因为在写入作完成之前,数据在多个区域中同步复制。

  • 预期的故障时间:在自动恢复过程中,由于流量被重定向到正常区域,可能会出现少量故障时间,通常为几秒钟。 为 ZRS 设计应用程序时,请遵循暂时性故障处理的做法,包括实现具有指数退避的重试策略。

  • 交通改道。 Azure 会自动将流量重新路由到剩余正常的可用性区域。 该服务通过剩余可用区域保持全部功能,无需客户干预。 无需从连接的客户端重新装载 Azure 文件共享。

区域恢复

发生故障的可用性区域恢复时,Azure 存储会自动还原所有可用性区域中的正常作。 该服务通过同步中断期间发生的任何操作来自动确保数据一致性。

对区域故障进行测试

使用区域冗余存储 (ZRS) 时,Azure 存储自动管理复制、流量路由和区域故障响应。 由于此功能是完全托管的,因此你无需启动或验证可用性区域故障流程。

多区域支持

Azure 存储(包括 Azure Blob 存储、Azure 文件存储、Azure 表存储和 Azure 队列存储)提供了一系列异地冗余和故障转移功能,以满足不同的要求。

重要

异地冗余存储 (GRS) 仅在 Azure 配对区域内工作。 如果存储帐户的区域未配对,请考虑使用 替代的多区域方法

跨配对区域复制

Azure 存储在配对区域中提供多种类型的 GRS。 无论使用哪种类型的 GRS,次要区域中的数据始终使用本地冗余存储 (LRS) 进行复制。 此方法针对次要区域内的硬件故障提供了保护。

重要

Azure 文件仅对标准(HDD)文件共享支持异地冗余(GRS 或 GZRS)。

Azure 文件存储不支持读取访问异地冗余存储 (RA-GRS) 或读取访问异地区域冗余存储 (RA-GZRS)。 如果将存储帐户配置为使用 RA-GRS 或 RA-GZRS,则会配置标准 (HDD) 文件共享并将其计费为 GRS 或 GZRS。

故障转移类型

针对不同场景,Azure 存储支持三种类型的故障转移。

  • 客户托管的未计划的故障转移:如果主要区域中出现区域范围的存储故障,你负责启动恢复。

  • 客户管理的计划故障转移: 如果解决方案的一个部分在主区域发生故障,并且需要将整个解决方案切换到备区域,您需要负责启动恢复过程。 当主要区域的存储仍然正常运行时,可以使用计划的故障转移,将整个解决方案转移到次要区域,比如用于灾难恢复演练,以确保遵循合规性和审计要求。

  • Microsoft托管的故障转移: 在特殊情况下,Azure可能会为某个区域中的所有异地冗余存储(GRS)帐户发起故障转移。 但是,Azure 管理的故障转移是最后的手段,仅预期在长时间的服务中断之后才执行。 不应依赖由 Azure 管理的故障转移。

GRS 帐户可以使用这些故障转移类型中的任何一种。 无需预先配置存储帐户即可使用任何故障转移类型。

区域支持

Azure 存储异地冗余配置使用 Azure 配对区域进行次要区域复制。 次要区域根据主要区域选择自动确定,无法自定义。

如果存储帐户的区域未配对,请考虑使用 替代的多区域方法

要求

  • 仅标准文件共享: Azure 文件仅支持标准 (HDD) 文件共享的异地冗余(GRS 或 GZRS)。 高级(SSD)文件共享必须使用 LRS 或 ZRS。 如果你有高级文件共享,并且想要跨区域复制数据以提高复原能力,请参阅 “备用多区域”方法

  • 仅限 GRS 和 GZRS: Azure 文件不支持读取访问的异地冗余存储(RA-GRS)或读取访问的异地区域冗余存储(RA-GZRS)。 如果将存储帐户配置为使用 RA-GRS 或 RA-GZRS,则会配置标准 (HDD) 文件共享并将其计费为 GRS 或 GZRS。

注意事项

实现多区域 Azure 文件存储时,请考虑以下重要因素:

  • 异步复制延迟:向次要区域的数据复制是异步操作,这意味着将数据写入主要区域与这些数据在次要区域中变为可用之间存在一个滞后时间。 如果在复制最近的数据之前发生主要区域故障,则此滞后可能会导致潜在的数据丢失。 数据丢失由恢复点目标 (RPO) 度量。 可以预期复制滞后时间少于 15 分钟,但此时间是一个估计值,无法保证。

    可以检查“上次同步时间”属性,了解如果存储帐户具有未计划的故障转移,可能会丢失多少数据。

  • 上次同步时间: 对于 Azure 文件存储,上次同步时间基于次要区域中的最新系统快照。

    如果存储帐户中有超过 100 个文件共享,上次同步时间的计算可能会超时。 建议为每个存储帐户部署 100 个或更少的文件共享,以避免超时。

  • 次要区域访问:在故障转移发生之前,次要区域无法进行读取操作。

  • 功能限制:某些 Azure 文件存储功能不受支持,在使用异地冗余存储或使用客户管理的故障转移时存在限制。 其中包括某些文件共享类型、访问层、管理工具和操作。 在实现异地冗余之前,请查看 功能兼容性文档

成本

多区域 Azure 存储帐户配置对次要区域中的跨区域复制和存储会产生额外的成本。 Azure 区域之间的数据传输根据标准区域间带宽费率收费。

有关详细的定价信息,请参阅 Azure 文件存储定价

配置多区域支持

  • 创建新的异地冗余存储 (GRS) 帐户。 若要创建 GRS 帐户,请参阅创建存储帐户,并在帐户创建期间选择 GRS、读取访问异地冗余存储 (RA-GRS)、异地区域冗余存储 (GZRS) 或读取访问异地区域冗余存储 (RA-GZRS)。
  • 在现有文件存储帐户上启用异地冗余。 若要将现有文件存储帐户转换为异地冗余存储,请参阅 Azure 文件存储的更改冗余配置。

警告

为异地冗余重新配置帐户后,可能需要花费大量时间才能将新的主要区域中的现有数据完全复制到新的次要区域。

若要避免重大数据丢失,请在启动计划外故障转移之前检查 上次同步时间属性 的值。 若要评估潜在的数据丢失,请将上次同步时间与将数据写入新主数据库的最后一次进行比较。

  • 禁用异地冗余。 通过相同的冗余配置更改过程,将异地冗余存储帐户转换回单区域配置(LRS 或 ZRS)。

常规操作

本部分说明当存储帐户配置为异地冗余且所有区域都正常运行时的预期情况。

  • 区域之间的流量路由:Azure 文件使用主动/被动方法,其中所有读取和写入作都定向到主要区域。

  • 区域之间的数据复制:首先通过配置的冗余类型(GRS 的 LRS 或 GZRS 的 ZRS)将写入操作先提交到主要区域。 在主要区域中成功完成后,数据将异步复制到使用本地冗余存储(LRS)存储的次要区域。

    跨区域复制的异步性质意味着将数据写入主要区域与这些数据在次要区域中可用之间存在一个滞后时间。 可以使用“上次同步时间”属性监视复制时间。

区域故障体验

本部分介绍在为存储帐户配置了异地冗余,且主要区域中出现中断时会发生什么情况。

  • 客户托管的故障转移(未计划):当主要区域中的存储不可用时,请使用未计划的故障转移。

    • 检测和响应:在主要区域中存储帐户不可用的极端情况下,可以考虑发起客户管理的计划外故障转移。 若要做出此决定,请考虑以下因素:

      • Azure 资源运行状况是否显示访问主要区域中存储帐户时出现问题

      • Azure 是否建议您执行故障转移到其他区域

      警告

      计划外故障转移 可能会导致数据丢失。 在启动客户托管的故障转移之前,请确定还原服务是否值得冒数据丢失的风险。

    • 通知:Azure 存储在区域关闭时不会通知你。 但是,可以使用 Azure 资源运行状况 来监视存储帐户的运行状况。 还可以使用 Azure 服务运行状况 来了解 Azure 存储服务的总体运行状况,包括任何区域故障。

      设置这些服务的警报,以接收区域级别问题的通知。 有关详细信息,请参阅 Azure 门户中的“创建服务运行状况警报 ”并 创建和配置资源运行状况警报

    • 活动请求: 在故障转移过程中,主存储帐户终结点和辅助存储帐户终结点暂时都不能同时进行读取和写入。 可能会删除任何活动请求,客户端应用程序需要在故障转移完成后重试。

    • 预期数据丢失:由于异步复制滞后,数据丢失在未计划的故障转移期间很常见,这意味着可能不会复制最近的写入。 可以检查“上次同步时间”属性,了解在未计划的故障转移期间可能会丢失多少数据。 预期的数据丢失通常称为恢复点目标(RPO)。 通常可以预期数据丢失(RPO)小于 15 分钟,但无法保证该时间。

    • 预期的停机时间: 预期的停机时间量通常称为恢复时间目标(RTO)。 客户管理的故障转移通常在 60 分钟内完成(换句话说,预期的 RTO 为 60 分钟),具体取决于帐户大小和复杂性。

    • 流量重新路由: 故障转移完成后,Azure 会自动更新存储帐户终结点,以便无需重新配置应用程序。 如果应用程序一直缓存域名系统 (DNS) 条目,则则可能有必要清除缓存,以确保应用程序将流量发送到新的主要区域。

    • 故障转移后配置:在未计划的故障转移完成后,目标区域中的存储帐户使用本地冗余存储 (LRS) 层。 如果需要再次对其进行异地复制,则需要重新启用异地冗余存储 (GRS),并等待数据复制到新的次要区域。

    有关如何启动客户托管的故障转移的详细信息,请参阅客户托管的(未计划)故障转移的工作原理启动存储帐户故障转移

  • 客户托管的故障转移(计划):当存储在主要区域中保持运行,但你出于另一个原因需要将整个解决方案故障转移到次要区域时,请使用计划的故障转移。 例如,另一个 Azure 服务可能会遇到问题,需要切换到对整个解决方案使用次要区域,或者可以使用计划的故障转移来执行灾难恢复演练,以实现合规性和审核目的。

    • 检测和响应:你负责故障转移的决定。 如果你需要在区域之间进行故障转移,那么即使你的存储帐户正常,你通常也会做出此决定。 例如,当主要区域中发生另一个应用程序组件的重大中断且无法恢复时,你可能会启动故障转移。

    • 通知:Azure 存储在区域关闭时不会通知你。 但是,可以使用 Azure 资源运行状况 来监视存储帐户的运行状况。 还可以使用 Azure 服务运行状况 来了解 Azure 存储服务的总体运行状况,包括任何区域故障。

      设置这些服务的警报,以接收区域级别问题的通知。 有关详细信息,请参阅 Azure 门户中的“创建服务运行状况警报 ”并 创建和配置资源运行状况警报

    • 活动请求: 在故障转移过程中,主存储帐户终结点和辅助存储帐户终结点暂时都不能同时进行读取和写入。 可能会删除任何活动请求,客户端应用程序需要在故障转移完成后重试。

    • 预期数据丢失: 预期没有数据丢失(也就是说,预期的 RPO 为零),因为故障转移过程会等待所有数据同步。

    • 预期的停机时间: 故障转移通常在 60 分钟内完成(换句话说,预期的 RTO 为 60 分钟),具体取决于帐户大小和复杂性。 在故障转移过程中,主存储帐户终结点和辅助存储帐户终结点暂时都不能同时进行读取和写入。

    • 流量重新路由: 故障转移完成后,Azure 会自动更新存储帐户终结点,以便无需重新配置应用程序。 如果应用程序一直缓存 DNS 条目,则则可能有必要清除缓存,以确保应用程序将流量发送到新的主要区域。

    • 故障转移后配置: 计划内故障转移完成后,目标区域中的存储帐户将继续进行异地复制,并保留在 GRS 层上。

    有关如何启动客户管理的故障转移的详细信息,请参阅 启动存储帐户故障转移

  • Microsoft 管理的故障转移: 在极少数情况下发生重大灾难时,如果 Azure 判断主要区域已经无法恢复,Azure 可能会自动切换至次要区域。 此过程完全由 Azure 管理,无需客户操作。 故障转移发生前经过的时间取决于灾难的严重性和评估情况所需的时间。

    重要

    使用客户管理的故障转移选项来开发、测试和实现灾难恢复计划。 请勿依赖于 Microsoft 托管的故障转移,这可能只在极端情况下使用。 Azure 托管的故障转移可能针对整个区域启动。 无法为单个存储帐户、订阅或客户启动该功能。 对于不同的 Azure 服务,故障转移可能在不同的时间发生。 建议使用客户托管的故障转移。

区域恢复

故障恢复过程在 Azure 托管的故障转移方案与客户管理的故障转移方案之间存在显著差异。

  • 客户托管的故障转移(未计划):在未计划的故障转移后,存储帐户配置有本地冗余存储 (LRS)。 若要进行故障回复,需要重新建立异地冗余存储 (GRS) 关系,并等待复制数据。

  • 客户托管的故障转移(计划):在计划的故障转移后,存储帐户保持异地复制状态。 可以启动另一个客户托管的故障转移,以故障回复到原始主要区域。 相同的故障转移注意事项仍然适用

  • 由微软管理的故障转移: 如果 Azure 启动故障转移,可能是因为在主要区域发生了重大灾难,主要区域可能难以恢复。 任何时间线或恢复计划都取决于区域灾难和恢复工作的程度。 应监视 Azure 服务运行状况通信以了解详细信息。

测试区域故障

对于异地冗余存储帐户,可以在维护窗口内执行计划内故障切换操作,以测试完整的故障切换和恢复过程。 尽管计划内故障转移不需要数据丢失,但在故障转移和故障回复期间,这确实涉及停机。

备选多区域方法

Azure 存储的跨区域故障转移功能可能不适合,原因如下:

  • 存储帐户位于未配对的区域。

  • 内置故障转移选项提供的恢复时间和数据丢失无法满足你的业务运行时间目标。

  • 你需要故障转移到不是你的主要区域的配对的区域。

  • 需要在区域之间进行主动/主动配置。

  • 使用不支持异地冗余的文件共享类型。

本部分简要概述了要考虑的一些方法,但对 Azure 存储的多区域部署拓扑的完全处理超出了本文的范围。

下面是需要考虑的一些常见高级方法:

  • 多个存储帐户: 可以使用每个区域中的单独存储帐户跨多个区域部署 Azure 文件。 此方法提供区域选择的灵活性、使用非配对区域的能力,以及对复制计时和数据一致性进行更精细的控制。 跨区域实现多个存储帐户时,需要配置跨区域数据复制,实现负载均衡和故障转移策略,并确保跨区域的数据一致性。

  • 应用程序级复制: 使用 Azure 数据工厂AzCopy 实现自定义复制逻辑,以在不同区域中的文件共享之间同步数据。 此方法需要自定义开发和冲突解决机制。

  • 使用 Azure 文件同步将文件复制到另一个 Azure 区域中的文件共享: 可以使用 Azure 文件同步 在 SMB Azure 文件共享(云终结点)、本地 Windows 文件服务器和在另一 Azure 区域中的 VM 上运行的已装载文件共享( 灾难恢复服务器终结点)之间进行同步。

    此方法要求部署多个文件共享和一个 VM 来协调同步过程。

    如果使用此方法进行多区域文件复制:

    • 禁用云分层,以确保文件服务器上本地存储有所有数据。
    • 在 Azure VM 上预配足够的存储来保存整个数据集。
    • 访问和修改服务器终结点上的文件,而不是在 Azure 中,以确保更改快速复制到次要区域。

Backups

Azure 文件备份 是 Azure 文件存储与 Azure 备份之间的本机集成,旨在保护数据免受意外删除、损坏和勒索软件攻击。

Azure 文件备份创建存储在同一存储帐户中的共享级快照。 这样就可以快速恢复单个文件和整个文件共享。 还可以使用 备份策略 来提供具有可自定义备份频率的较长保留期。

可以创建快照,并采用两种不同的方式存储快照:

  • 共享级存储。 对于操作和短期恢复方案,可以创建共享层级快照并将其存储在同一存储帐户中。 共享级快照可快速将单个文件或整个文件共享恢复到原始位置或备用位置。

  • 保管库备份存储。 使用保管库备份,可以将每日快照复制到恢复服务保管库。 为了增强安全性,此保管库与主存储帐户隔离并进行物理隔离。

    使用配对的 Azure 区域并将保管库配置为使用 Geo-Redundant 存储(GRS),保管库会将数据复制到配对区域,支持跨区域恢复和支持灾难恢复(DR)工作流。

服务级别协议

Azure 存储的服务级别协议(SLA)描述了服务的预期可用性以及达到该可用性预期必须满足的条件。 你有资格获得的可用性 SLA 取决于你所使用的存储层和复制类型。 有关详细信息,请参阅 联机服务的 SLA