你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 磁盘存储为Azure虚拟机(VM)提供托管磁盘。 它专为业务关键型工作负荷构建,可确保企业级可靠性和可用性。 数据会自动复制,以防止硬件故障,有多个冗余选项来满足持久性要求。
使用 Azure 时,可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍如何使Azure 磁盘存储应对各种潜在中断和问题,包括暂时性故障、可用性区域故障和区域范围的故障。 它还介绍了备份和恢复选项,并重点介绍了有关Azure 磁盘存储服务级别协议(SLA)的关键信息。
重要
考虑磁盘的可靠性时,还需要考虑 VM、网络基础结构和在 VM 上运行的应用程序的可靠性。 如果其他组件不同样具有复原能力,则仅提高磁盘的复原能力可能会造成有限的影响。 根据复原能力要求,可能需要跨多个区域进行配置更改。
生产部署建议
Azure Well-Architected 框架提供关于可靠性、性能、安全性、成本和操作的建议。 若要了解这些领域如何相互影响并有助于构建可靠的 Azure 磁盘存储 解决方案,请参阅 Azure 磁盘存储 的架构最佳实践。
可靠性体系结构概述
每个 VM 将磁盘用于不同的目的:
- OS 磁盘: 单个 OS 磁盘运行操作系统。 默认情况下,它是保留数据的托管磁盘。 还可以使用 非托管的临时 OS 磁盘。 避免使用 OS 磁盘来存储应用程序或数据。
- 数据磁盘: 用于存储应用程序和数据的零个或多个托管磁盘。
- 临时磁盘: 每个 VM 随附的非持久性非托管磁盘。
本指南特别侧重于可可靠地保存数据的托管磁盘。 若要详细了解不同的磁盘角色,请参阅 磁盘角色。
托管磁盘旨在实现 99.999% 的虚拟机可用性,并提供至少 99.999999999% 的耐久性(11 个 9)。 使用托管磁盘时,数据将复制三次。 如果这三个副本中的一个不可用,Azure会自动在后台创建新数据副本。 此过程可确保数据的持久性和高容错能力。
默认情况下,托管磁盘使用本地冗余存储(LRS)。 LRS 在单个数据中心内保留磁盘数据的三个副本,从而防止硬件故障,例如驱动器或服务器机架问题。
尽管 LRS 可保护磁盘免受服务器机架和驱动器故障的影响,但它不会考虑数据中心内的火灾或洪水等灾难。 为了更高的保护级别,请使用 区域冗余存储(ZRS),它会将你的磁盘复制到多个可用区。
对于在多个 VM 上运行的应用程序,在跨多个可用性区域分布时,多个 VM 具有最高的可用性 SLA。 对于分布在多个可用性区域的 VM 和磁盘,磁盘及其父 VM 将分别并置在同一区域中,这可以防止多个 VM 出现故障,即使整个区域遇到中断也是如此。
当区域不可用或工作负荷对 VM 间延迟敏感时,请跨多个 容错域部署 VM 和磁盘。 容错域不提供区域冗余,但它们减少了硬件故障、网络中断或电源中断的影响。 如果一个存储容错域出现故障,这可以防止多个 VM 失败。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循Azure暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议。
托管磁盘会自动从Azure基础结构中的暂时性故障中恢复。
应对可用区故障的弹性
可用性区域 是 Azure 区域内在物理上独立的若干数据中心组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
可通过两种方法将可用性区域与托管磁盘配合使用:
- 可以部署一个 ZRS 磁盘,该磁盘位于区域中的三个可用性区域。 为了获得最佳可靠性,建议使用 ZRS 磁盘,因为 ZRS 磁盘提供自动区域复原能力。
- 可以部署仅位于单个区域中 的区域性 LRS 磁盘。 使用区域性 LRS 磁盘时,你需要自行负责将工作负载配置为能够耐受区域中断。 你可以通过部署多个 VM 和磁盘,并将它们分布在不同的可用性区域中,来实现这种弹性。
如果未配置可用性区域支持,则磁盘 为非区域 或 区域 ,并可能放置在该区域的任何可用性区域中。 这些磁盘被视为 LRS,因为它们在区域内复制。
区域冗余磁盘
ZRS 在一个区域内的三个可用性区域中同步复制数据。 为托管磁盘启用区域冗余时,Azure可确保任何单个区域中的故障不会影响数据可用性。
可以在 VM 之间共享 ZRS 磁盘以提高群集或分布式应用程序(如 SQL Server FCI、SAP ASCS/SCS 或 GFS2)的可用性。 可以在不同可用区中将共享 ZRS 磁盘附加到主虚拟机和辅助虚拟机,同时利用分布在多个可用性区域的 ZRS 磁盘和虚拟机的优势。 如果主区域发生故障,您可以使用 SCSI 持久保留快速故障转移到辅助 VM。
如果将 ZRS 磁盘作为数据磁盘附加到出现故障的区域中的单个 VM,则可以从故障 VM 上强制分离该磁盘,并将其附加到另一个 VM。
要求
区域支持: 有关支持 ZRS 托管磁盘的区域列表,请参阅 托管磁盘的冗余选项。
磁盘类型: 高级 SSD 和标准 SSD 托管磁盘支持区域冗余磁盘。 高级 SSD v2、超级磁盘或标准 HDD 托管磁盘不支持 ZRS。
Cost
ZRS 的成本高于 LRS,因为需要额外的复制开销和基础结构才能跨多个区域维护数据。 确切的成本差异因区域和磁盘类型而异。 有关详细的定价信息,请参阅Azure托管磁盘定价。
配置可用性区域支持
创建新的 ZRS 磁盘: 若要创建新的 ZRS 托管磁盘, 请参阅 Tutorial - 使用适用于 Linux VM 的 Azure CLI 管理Azure磁盘,或 Tutorial:使用 Windows VM 的 Azure PowerShell 管理磁盘。 在创建磁盘期间选择 ZRS 磁盘层。
你负责将磁盘附加到 VM,包括在不同区域中的多个 VM 上配置 共享磁盘 (如果这适用于工作负荷)。
更改现有磁盘以使用 ZRS: 可以将现有的非区域(区域)磁盘转换为 ZRS。
虽然无法将区域 LRS 磁盘转换为 ZRS,但可以从快照创建新的 ZRS 磁盘。 有关分步迁移过程和要求,请参阅 将磁盘从 LRS 转换为 ZRS 。
禁用可用性区域支持: 无法更改现有 ZRS 磁盘的可用性区域配置。 相反,您需要使用之前磁盘的快照,按新配置创建一个新磁盘,然后删除旧磁盘。
所有区域正常时的行为
本部分介绍在所有可用区均正常运行时,为 ZRS 配置托管磁盘的预期结果。
跨区域操作: 在使用具有区域冗余磁盘的VM时,Azure自动管理在不同可用性区域之间的流量的路由。 在正常作期间,请求以透明方式分布在各个区域。
跨区域数据复制: ZRS 磁盘跨区域中的多个可用性区域同步复制每个写入。 写入操作仅在数据存储在多个区域中的群集中后完成。 此方法提供很强的一致性和高可用性,但与 LRS 磁盘相比,此方法可能会带来略高写入延迟。
区域故障期间的行为
本节介绍当你为 ZRS 配置托管磁盘,且某个可用区发生中断时,可能会出现的情况。
检测和响应: 区域中断可能仅影响磁盘、仅 VM 或两者。 此行为取决于可用区中断是否影响连接到该磁盘的虚拟机。
如果 VM 保持正常运行,但磁盘受中断影响,VM 将继续运行。 Microsoft自动重定向磁盘操作,以针对正常可用性区域中的数据工作,无需执行任何操作。
如果 VM 已关闭,则需要将工作负荷切换到其他可用性区域中的另一个 VM。
共享磁盘: 如果已在其他区域中创建了辅助 VM 并配置 了共享磁盘,则可供辅助 VM 使用。 无需任何配置更改。
未共享的磁盘: 您可以将磁盘从发生故障的 VM 中强制分离,然后将其附加到运行正常的可用区中的 VM。 若要执行强制分离,请执行以下操作:
- Azure CLI:将 az vm disk detach 命令与
--force-detach参数一起使用。 - Azure PowerShell:将 Remove-AzVMDataDisk cmdlet与
-ForceDetach参数一起使用。
- Azure CLI:将 az vm disk detach 命令与
- Notification:当区域关闭时,Microsoft不会自动通知你。 但是,可以使用 Azure 资源运行状况 监视单个资源的运行状况,并且可以设置 资源运行状况 警报来通知问题。 还可以使用 Azure 服务运行状况 了解服务的总体运行状况,包括任何区域故障,并且可以设置 Service Health 警报来通知问题。
预期数据丢失: 区域故障期间不会发生数据丢失。
预期的停机时间: 在多个 VM 之间共享磁盘时,不会造成停机。
Redistribution: Azure会自动将流量重新路由到处于正常区域中的磁盘的另一个副本。
区域恢复
Azure自动检测以前失败的区域是否正常,并将数据同步还原到恢复的区域。
区域 LRS 磁盘
区域 LRS(本地冗余存储)磁盘驻留在特定的可用性区域中,并且仅附加到该区域中的虚拟机。 磁盘数据的所有副本都位于同一区域。 单个区域 LRS 磁盘和 VM 不提供区域复原能力。 如果包含磁盘的区域遇到中断,则磁盘可能变得不可用。
对于多 VM 工作负荷,可以通过跨不同可用性区域部署多个 VM 及其区域 LRS 磁盘来实现区域复原。 此方法是实现 Web 服务器、应用程序层和数据库群集等工作负载的高可用性的最常用方法。 如果一个区域出现故障,您可以通过使用运行正常的区域中的虚拟机来配置工作负载,以继续运行。
此多区域分发模式适用于所有磁盘类型,包括仅支持 LRS 的高级 SSD v2 和超级磁盘。 有关此方法的详细信息,请参阅 跨可用性区域分配 VM 和磁盘。
要求
区域支持:具有可用性区域的所有区域都支持区域 LRS 托管磁盘。
磁盘类型: 所有托管磁盘类型都支持区域 LRS 部署。
Cost
区域 LRS 磁盘按与非区域磁盘相同的费率收费。 有关详细的定价信息,请参阅Azure托管磁盘定价。
配置可用性区域支持
创建具有可用性区域支持的新磁盘: 若要创建具有区域 LRS 冗余的新托管磁盘, 请参阅 Tutorial - 使用适用于 Linux VM 的 Azure CLI 管理Azure磁盘,或 Tutorial - 使用 Azure PowerShell 管理Windows VM 的磁盘。
在创建磁盘期间选择可用性区域。
重要
仅当跨区域延迟太高而无法满足需求时,才建议固定到单个可用性区域,并且验证延迟是否不符合要求。 区域资源本身不能提供对可用区中断的复原能力。 若要提高区域资源的复原能力,需要将单独的资源显式部署到多个可用性区域,并配置流量路由和故障转移。 有关详细信息,请参阅 区域资源和区域复原能力。
更改现有磁盘的可用性区域配置: 无法更改现有区域 LRS 磁盘的可用性区域配置。 相反,需要使用上一个磁盘中的快照创建具有新配置的新磁盘,然后删除旧磁盘。
所有区域正常时的行为
本部分介绍当将托管磁盘配置为分区 LRS 且所有可用性区域均正常运行时,可能会出现的情况。
跨区域操作: 同一区域中的区域性 VM 与区域 LRS 磁盘之间的流量仍保留在可用性区域中。
跨区域部署多个 VM 时,负责跨 VM 分发传入请求。 每个 VM 从其自己的区域磁盘读取和写入。
跨区域数据复制: 所有到区域 LRS 磁盘的写入操作都在可用性区域中同步复制。
跨区域部署多个 VM 时,如果工作负荷需要跨 VM 的数据一致性,则需负责同步数据。 例如,可以使用数据库复制或应用程序层复制。
区域故障期间的行为
本部分介绍:当你将托管磁盘配置为区域 LRS,且某个可用性区域出现中断时,可能会出现什么情况。
检测和响应: 如果您有一台带有区域 LRS 磁盘的 VM,您需负责检测区域故障并启动故障转移或其他响应。
如果 VM 分布在多个区域,则负责配置工作负荷以检测区域故障,并继续在处于正常区域的 VM 上运行。
- Notification:当区域关闭时,Microsoft不会自动通知你。 但是,可以使用 Azure 资源运行状况 监视单个资源的运行状况,并且可以设置 资源运行状况 警报来通知问题。 还可以使用 Azure 服务运行状况 了解服务的总体运行状况,包括任何区域故障,并且可以设置 Service Health 警报来通知问题。
预期数据丢失: LRS 复制提供至少 99.999999999%(11 9 秒)的持久性,因此磁盘会保留其数据,并在区域恢复后可以恢复数据。
如果 VM 分布在多个可用区,那么仅位于故障区域磁盘上的数据将暂时不可用。 如果应用程序跨 VM 同步数据,则正常区域中的 VM 将继续使用自己的数据为请求提供服务。
预期的停机时间: 在可用性区域恢复之前,单个区域 LRS 磁盘不可用。
如果 VM 和磁盘分布在多个区域,则工作负荷可以继续在正常运行区域中的 VM 上运行。
重新分发: 如果单个 VM 具有区域 LRS 磁盘,则需负责将流量重新路由到另一个 VM(如果有)。
在跨可用区分布虚拟机时,可以将工作负载配置为自动将流量重新分配到健康区域中的虚拟机。
区域恢复
当发生故障的可用性区域恢复时,托管磁盘会自动恢复。 如果附加到磁盘的 VM 受到中断的影响,则会重启。 如果你在其他可用性区域中使用 VM 和磁盘,那么你需要负责将应用程序数据重新同步到这些资源。
测试区域故障
不能直接模拟磁盘级别的可用区故障,但可以使用 Azure Chaos Studio 对虚拟机规模集模拟可用区停机事件和模拟单个 VM 丢失的支持。
应在服务中断期间测试应用程序对区域故障和托管磁盘行为的复原能力。 在模拟区域中断期间监视磁盘性能,并验证应用程序是否适当地处理增加的延迟。 实现自动化测试方案,验证应用程序是否可以处理临时 I/O 延迟,并强制对共享磁盘执行分离操作。
对区域范围的故障的复原能力
Azure 磁盘存储是一种单区域服务,可在特定Azure区域的边界内运行。 该服务不具备原生的多区域支持功能,也无法在区域之间自动故障转移。 如果某个区域不可用,则该区域中的托管磁盘资源也不可用。
用于复原的自定义多区域解决方案
可以通过在每个区域部署虚拟机和磁盘、跨区域复制或备份数据,并在需要时进行故障转移或从备份中还原,来构建多区域解决方案。 你负责管理每个区域中的资源、协调和同步数据以及处理故障转移或还原。 一些常见方法包括:
- Azure Site Recovery,它提供 VM 和磁盘的跨区域复制。
- Azure 备份,它提供托管备份服务,包括磁盘备份服务。 可以使用 跨区域还原 来还原另一个区域中的虚拟机。
- 通过 跨区域复制磁盘快照 构建您自己的基于快照的解决方案。
- 使用特定数据库和应用程序提供的方法。 这些方法通过复制更改和管理群集跨区域工作。 例如,SQL Server Always On 可用性组提供应用程序感知的跨区域数据保护,并具备可自定义的一致性和故障转移行为。
备份和还原
Azure托管磁盘支持多种备份方法来防止数据丢失和损坏。 Azure磁盘备份是一种原生的基于云的解决方案,可自动执行快照生命周期管理。 它提供具有可配置保留策略的崩溃一致性增量备份。 这种无代理方法每天支持多个备份,不会影响应用程序性能,并与Azure 备份中心集成,以便集中管理。 可以使用 增量快照 来降低存储成本和备份时间。
对于 VM 级保护,Azure 备份为整个 VM 提供应用程序一致性备份,包括所有附加磁盘。 如果需要协调备份多个磁盘或应用程序感知备份,此方法是理想的方法。 对于数据库工作负荷,请考虑应用程序特定的备份解决方案,这些解决方案提供事务一致性保护和更快的恢复选项。
对于关键工作负荷,实施分层备份策略,将Azure磁盘备份、跨区域快照复制和应用程序级备份相结合,以实现事务一致性。 根据恢复要求、合规性需求和成本注意事项配置备份策略。
服务级别协议
Azure服务的服务级别协议(SLA)描述了每个服务的预期可用性以及解决方案必须满足的条件,以实现该可用性预期。 有关详细信息,请参阅 SLa for 联机服务。
Azure 磁盘存储不提供自己的可用性 SLA,但包含在 VM 的 SLA 中。 磁盘的配置可能会影响 VM 的可用性 SLA。
相关内容
- Azure托管磁盘类型
- Azure托管磁盘的备份和灾难恢复
- 实现Azure虚拟机和托管磁盘的高可用性的最佳做法
- 托管磁盘的冗余选项
- Azure可靠性