Azure 托管磁盘简介

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

Azure 托管磁盘是由 Azure 托管并与 Azure 虚拟机配合使用的块级存储卷。 托管磁盘类似于本地服务器中的物理磁盘,但它是虚拟化的。 使用托管磁盘时,只需指定磁盘大小、磁盘类型并预配磁盘即可。 预配此磁盘后,Azure 会处理剩余磁盘。

可用的磁盘类型包括超级磁盘、高级固态硬盘 (SSD)、标准 SSD 和标准硬盘驱动器 (HDD)。 有关每种磁盘类型的信息,请参阅选择适用于 IaaS VM 的磁盘类型

托管磁盘的好处

接下来让我们看一下使用托管磁盘可以获得的一些好处。

高度持久和可用

托管磁盘具备 99.999% 的可用性。 托管磁盘实现这一点的方式是:提供三个包含数据的副本,确保高持久性。 如果其中一个或两个副本出现问题,剩下的副本能够确保数据的持久性和对故障的高耐受性。 此架构有助于 Azure 为基础结构即服务 (IaaS) 磁盘持续提供企业级的持久性,年化故障率为 0%,达到行业领先水平。 本地冗余存储 (LRS) 磁盘在给定的年份内提供至少 99.999999999%(11 个 9)的持续性,而区域冗余存储 (ZRS) 磁盘在给定的年份内提供至少 99.9999999999%(12 个 9)的持续性。

简单且可缩放的 VM 部署

托管磁盘支持在每个区域中的一个订阅中创建最多 50,000 个同一类型的 VM 磁盘,这样就可以在单个订阅中创建数以千计的 VM。 此功能允许使用 Marketplace 映像或 Azure Compute Gallery 映像,在一个虚拟机规模集中创建多达 1000 台 VM,进一步增加虚拟机规模集的可伸缩性。

集成可用性集

托管磁盘集成可用性集,可确保可用性集中的 VM 的磁盘彼此之间完全隔离以避免单点故障。 磁盘自动放置于不同的存储缩放单元(模块)。 如果某个模块因硬件或软件故障而失败,则只有其磁盘在该模块上的 VM 实例会失败。 例如,假定某个应用程序在 5 台 VM 上运行并且这些 VM 位于一个可用性集中。 这些 VM 的磁盘不会存储在同一个模块中,因此,如果一个模块失败,该应用程序的其他实例可以继续运行。

与可用性区域集成

托管磁盘支持可用性区域,这是一种高可用性产品/服务,可以保护应用程序免受数据中心故障的影响。 可用性区域是 Azure 区域中独特的物理位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。 为确保能够进行复原,所有已启用的地区中都必须至少有三个单独的区域。 Azure 凭借可用性区域提供一流的 99.99% VM 运行时间 SLA。

Azure 备份支持

若要防范区域灾难,可以使用 Azure 备份创建具有基于时间的备份和备份保留策略的备份作业。 这样就可以随意执行 VM 或托管磁盘还原。 目前,Azure 备份支持高达 32 太字节 (TiB) 的磁盘大小。 详细了解 Azure VM 备份支持。

Azure 磁盘备份

Azure 备份提供 Azure 磁盘备份作为基于云的本机备份解决方案,可保护托管磁盘中的数据。 它是一个简单、安全且经济高效的解决方案,使你能够通过几个步骤为托管磁盘配置保护。 Azure 磁盘备份提供了一个统包式解决方案,通过自动定期创建快照并使用备份策略在配置的时间段内保留快照,为托管磁盘提供快照生命周期管理。 有关 Azure 磁盘备份的详细信息,请参阅 Azure 磁盘备份概述

粒度访问控制

可以使用 Azure 基于角色的访问控制 (Azure RBAC) 将托管磁盘的特定权限分配给一个或多个用户。 托管磁盘公开了各种操作,包括读取、写入(创建/更新)、删除,以及检索磁盘的共享访问签名 (SAS) URI。 可以仅将某人员执行其工作所需的操作的访问权限授予该人员。 例如,如果不希望某人员将某个托管磁盘复制到存储帐户,则可以选择不授予对该托管磁盘的导出操作的访问权限。 类似地,如果不希望某人员使用 SAS URI 复制某个托管磁盘,则可以选择不授予对该托管磁盘的该权限。

上传 vhd

通过直接上传,可以轻松地将 vhd 传输到 Azure 托管磁盘。 以前,必须遵循一个更复杂的过程,包括将数据暂存到存储帐户中。 现在,步骤更少了。 可以更方便地将本地 VM 上传到 Azure、上传到大型托管磁盘,并简化了备份和还原过程。 通过允许你直接将数据上传到托管磁盘而不将它们附加到 VM,还降低了成本。 可以使用直接上传来上传最大为 32 TiB 的 vhd。

若要了解如何将 vhd 传输到 Azure,请参阅 CLIPowerShell 文章。

安全性

对托管磁盘的专用链接支持可用于导入或导出网络内部的托管磁盘。 通过专用链接,可以为未连接的托管磁盘和快照生成有时间限制的共享访问签名 (SAS) URI,将数据导出到其他区域以进行区域扩展、灾难恢复和取证分析。 还可以使用 SAS URI 将 VHD 从本地直接上传到空磁盘。 现在,可以利用专用链接将托管磁盘的导出和导入限制于 Azure 虚拟网络。 通过专用链接,可以确保数据仅在安全的 Azure 骨干网络内传输。

若要了解如何启用专用链接以导入或导出托管磁盘,请参阅门户文章。

加密

托管磁盘提供两种不同的加密。 第一种是服务器端加密 (SSE),由存储服务执行。 第二种是 Azure 磁盘加密 (ADE),可以在 VM 的 OS 和数据磁盘上启用。

服务器端加密

服务器端加密可提供静态加密并保护数据,让你的组织能够信守安全性与合规性方面所做的承诺。 默认情况下,在所有托管磁盘可用的区域中,所有托管磁盘、快照和映像都启用了服务器端加密。 (另一方面,服务器端加密不会加密临时磁盘,除非你在主机上启用加密;请参阅磁盘角色:临时磁盘)。

可以让 Azure 为你管理密钥(平台托管的密钥),也可以自行管理密钥(客户管理的密钥)。 请访问 Azure 磁盘存储的服务器端加密以了解详细信息。

Azure 磁盘加密

Azure 磁盘加密允许加密 IaaS 虚拟机使用的 OS 磁盘和数据磁盘。 此加密包括托管磁盘。 对于 Windows,驱动器是使用行业标准 BitLocker 加密技术加密的。 对于 Linux,磁盘是使用 DM-Crypt 技术加密的。 加密过程与 Azure Key Vault 集成,可让你控制和管理磁盘加密密钥。 有关详细信息,请参阅适用于 Linux VM 的 Azure 磁盘加密适用于 Windows VM 的 Azure 磁盘加密

磁盘角色

在 Azure 中有三个主要磁盘角色:OS 磁盘、数据磁盘和临时磁盘。 这些角色将映射到附加到虚拟机的磁盘。

操作中的磁盘角色

OS 磁盘

每个虚拟机都附加了一个操作系统磁盘。 该 OS 磁盘有一个预先安装的 OS,是在创建 VM 时选择的。 此磁盘包含启动卷。 通常,应仅将 OS 信息存储在 OS 磁盘上,并将所有应用程序和数据存储在数据磁盘上。 但是,如果成本令人担忧,则可以使用 OS 磁盘,而不是创建数据磁盘。

此磁盘最大容量为 4,095 GiB。 但许多操作系统默认使用主启动记录 (MBR) 进行分区。 MBR 将可用大小限制为 2 TiB。 如果需要超过 2 TiB,请创建并附加数据磁盘并将其用于数据存储。 如果需要在 OS 磁盘上存储数据并需要额外空间,请将其转换为 GUID 分区表 (GPT)。 若要了解 MBR 和 GPT 在 Windows 部署中的区别,请参阅 Windows 和 GPT 常见问题解答

数据磁盘

数据磁盘是附加到虚拟机的托管磁盘,用于存储应用程序数据或其他需要保留的数据。 数据磁盘注册为 SCSI 驱动器并且带有所选择的字母标记。 虚拟机的大小决定了可附加的磁盘数目,以及可用来托管磁盘的存储类型。

通常,应使用数据磁盘来存储应用程序和数据,而不是将它们存储在 OS 磁盘上。 与使用操作系统磁盘相比,使用数据磁盘存储应用程序和数据具有以下优势:

  • 改进了备份和灾难恢复
  • 提高了灵活性和可伸缩性
  • 性能隔离
  • 更容易维护
  • 增强了安全性和访问控制

有关这些优势的更多详细信息,请参阅为何应使用数据磁盘而不是 OS 磁盘来存储应用程序和数据?

临时磁盘

大多数 VM 都包含一个临时磁盘,该磁盘不是托管磁盘。 临时磁盘为应用程序和进程提供短期存储,仅用于存储页面文件、交换文件或 SQL Server tempdb 等数据。 在维护事件期间、重新部署 VM 或停止 VM 时,临时磁盘上的数据可能会丢失。 在以标准方式成功重启 VM 期间,临时磁盘上的数据将保留。 有关无临时磁盘的 VM 的详细信息,请参阅无本地临时磁盘的 Azure VM 规格

在 Azure Linux VM 上,临时磁盘通常为“/dev/sdb”;在 Windows VM 上,临时磁盘默认为 “D:”。 除非在主机上启用加密(对于服务器端加密),或者(对于 Azure 磁盘加密)在 Windows 上将 VolumeType 参数设置为“All”在 Linux 上将该参数设置为“EncryptFormatAll”,否则不会对临时磁盘进行加密。

托管磁盘快照

托管磁盘快照是托管磁盘的只读崩溃一致性完整副本,默认情况下它作为标准托管磁盘进行存储。 使用快照,可以在任意时间点备份托管磁盘。 这些快照独立于源磁盘而存在,并可用来创建新的托管磁盘。

基于已使用大小对快照计费。 例如,如果创建预配容量为 64 GiB 且实际使用数据大小为 10 GiB 的托管磁盘的快照,则仅针对已用数据大小 10 GiB 对该快照计费。 可以通过查看 Azure 使用情况报告来了解快照的已使用大小。 例如,如果快照的已用数据大小为 10 GiB,则每日使用情况报告将显示 10 GiB/(31 天) = 0.3226 作为已使用数量。

若要详细了解如何为托管磁盘创建快照,请参阅创建托管磁盘的快照一文。

映像

托管磁盘还支持创建托管自定义映像。 可以从存储帐户中的自定义 VHD 创建映像或者直接从通用化 (sysprepped) VM 创建映像。 此过程捕获单个映像。 该映像包含与 VM 关联的所有托管磁盘,包括 OS 磁盘和数据磁盘。 该托管自定义映像支持使用自定义映像创建数百台 VM,且不需要复制或管理任何存储帐户。

映像与快照

了解映像与快照之间的区别很重要。 使用托管磁盘,可以创建已解除分配的通用 VM 的映像。 此映像包括附加到该 VM 的所有磁盘。 可以使用此映像创建 VM,它包括所有磁盘。

快照是磁盘在创建快照那一刻的副本。 它仅应用于一个磁盘。 如果 VM 有一个磁盘(OS 磁盘),则可以为其创建快照或映像,并且可以通过该快照或映像创建 VM。

除了所包含的磁盘,快照无法感知任何其他磁盘。 因此,如果在要求对多个磁盘进行协调的方案(例如条带化方案)中使用,则会出现问题。 快照彼此之间将需要相互协调,而目前并不支持此功能。

磁盘分配和性能

下图描述了磁盘带宽和 IOPS 的实时分配情况,并呈现了 IO 可以采用的三种不同路径:

示意图:显示带宽和 IOPS 分配情况的三级预配系统。

第一种 IO 路径是未缓存的托管磁盘路径。 如果使用托管磁盘,并将主机缓存设置为“无”,则可采用此路径。 使用此路径的 IO 将基于磁盘级预配,然后是基于适用于 IOPs 和吞吐量的 VM 网络级别预配执行操作。

第二种 IO 路径是已缓存的托管磁盘路径。 已缓存的托管磁盘 IO 使用接近于 VM 的 SSD,其拥有自己的 IOPs 和预配的吞吐量,并在关系图中标记为 SSD 级预配。 已缓存的托管磁盘启动读取时,请求会首先查看数据是否已存在于服务器 SSD 中。 如果数据不存在,此操作会导致创建缓存失误,IO 便会基于 SSD 级预配、磁盘级预配,然后是基于适用于 IOPs 和吞吐量的 VM 网络级预配执行操作。 如果服务器 SSD 在已存在于服务器 SSD 中已缓存的 IO 处启动读取,则其会创建缓存命中,IO 便会基于 SSD 级预配执行操作。 由已缓存的托管磁盘启动的写入总会遵循缓存失误的路径执行操作,并且需要经历 SSD 级、磁盘级和 VM 网络级预配。

最后,第三种路径适用于本地/临时磁盘。 只在虚拟机支持本地/临时磁盘时才可采用此路径。 采用此路径的 IO 将基于适用于 IOPs 和吞吐量的 SSD 级预配执行操作。

对于这些限制,举例来说,Standard_D2s_v3 VM 无法达到 P30 磁盘的 5,000 IOPS 的极限,不管它是否为缓存型,因为在 SSD 和网络级别存在限制:

具有 Standard_D2s_v3 示例分配的三级预配系统的关系图。

Azure 对磁盘流量使用优先网络通道。 在出现网络争用时,这有助于磁盘保持预期的性能。 类似地,Azure 存储在后台使用自动负载均衡来处理资源争用和其他问题。 Azure 存储在你创建磁盘时分配所需资源,并应用主动和被动资源均衡来处理流量级别。 这进一步确保磁盘保持其预期的 IOPS 和吞吐量目标。 可以根据需要使用 VM 级别和磁盘级别的指标来跟踪性能和设置警报。

请参阅为实现高性能而设计一文,了解优化 VM + 磁盘配置以实现所需性能的最佳做法

后续步骤

在有关磁盘类型的文章中,详细了解 Azure 提供的各个磁盘类型、哪个类型符合自己的需求,并了解其性能目标。