Azure 托管磁盘简介

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

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

可用托管磁盘类型包括超级磁盘、高级固态硬盘 (SSD)、标准 SSD 和标准硬盘驱动器 (HDD)。 有关每个磁盘类型的信息,请参阅 Azure 托管磁盘类型

托管磁盘的好处

让我们探讨使用托管磁盘会获得的一些优势。

高持久性和可用性

托管磁盘具备 99.999% 的可用性。 托管磁盘通过提供三个数据副本来实现此可用性。 如果其中一个或两个副本出现问题,剩下的副本能够确保数据的持久性和对故障的高耐受性。

此架构有助于 Azure 为基础结构即服务 (IaaS) 磁盘持续提供高持久性,年化故障率为 0%,达到行业领先水平。 本地冗余存储 (LRS) 磁盘每年提供至少 99.999999999%(11 个 9)的持续性。 区域冗余存储 (ZRS) 磁盘每年提供至少 99.9999999999%(12 个 9)的持续性。

简单且可缩放的 VM 部署

通过使用托管磁盘,在每个区域的订阅中最多可创建 50,000 个同类型 VM 磁盘。 然后,可以在单个订阅中创建数千个 VM。

托管磁盘增加了虚拟机规模集的可伸缩性。 可以使用 Azure 市场映像或包含托管磁盘的 Azure Compute Gallery 映像在虚拟机规模集中创建最多 1,000 个 VM。

集成可用性集

托管磁盘集成可用性集,可帮助确保可用性集中的 VM 的磁盘彼此之间完全隔离以避免单点故障。

磁盘自动放置于不同的存储缩放单元(模块)。 如果某个模块因硬件或软件故障而失败,则只有其磁盘在该模块上的 VM 实例会失败。

例如,假定某个应用程序在 5 台 VM 上运行并且这些 VM 位于一个可用性集中。 这些 VM 的磁盘并非全部存储在同一个模具中。 因此,如果一个标记出现故障,应用程序的其他实例将继续运行。

与可用性区域集成

托管磁盘支持可用性区域,这有助于保护应用程序免受数据中心故障的影响。

可用性区域是 Azure 区域中独特的物理位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源以及散热和网络设备。 为确保能够进行复原,所有已启用的地区中都必须至少有三个单独的区域。

有关 VM 运行时间与可用性区域的服务级别协议 (SLA) 的信息,请参阅 Azure SLA 的页

Azure 备份支持

若要帮助防范区域灾难,可以使用 Azure 备份创建具有基于时间的备份和备份保留策略的备份作业。 然后,可以同时执行 VM 或托管磁盘还原。

目前,Azure 备份支持高达 32 太字节 (TiB) 大小的磁盘。 详细了解 Azure VM 备份支持。

Azure 磁盘备份

Azure 备份提供 Azure 磁盘备份作为基于云的本机备份解决方案,可保护托管磁盘中的数据。 只需执行几个步骤即可使用此解决方案为托管磁盘配置保护。

Azure 磁盘备份为托管磁盘提供快照生命周期管理。 它会自动创建快照,并使用备份策略在配置的持续时间内保留快照。 有关详细信息,请参阅 Azure 磁盘备份概述

粒度访问控制

可以使用 Azure 基于角色的访问控制 (Azure RBAC) 将托管磁盘的特定权限分配给一个或多个用户。

托管磁盘公开了各种操作,包括读取、写入(创建/更新)、删除,以及检索磁盘的共享访问签名 (SAS) URI。 可以仅将某人员执行其工作所需的操作的访问权限授予该人员。

例如,如果不希望某人员将某个托管磁盘复制到存储帐户,则不授予对该托管磁盘的导出操作的访问权限。 类似地,如果不希望某人员使用 SAS URI 复制某个托管磁盘,则不授予对该托管磁盘的该权限。

能够上传 VHD

通过直接上传,可以轻松地将 vhd 传输到 Azure 托管磁盘。 以前,必须遵循一个过程,其中包括将数据暂存到存储帐户中。 现在,步骤更少了。 更轻松地将本地 VM 上传到 Azure,并将 VM 上传到大型托管磁盘。 备份和还原过程也得到了简化。

可以通过将数据直接上传到托管磁盘来降低成本,而无需将它们附加到 VM。 通过直接上传,可以上传大小高达 32 TiB 的 VHD。

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

安全性

可以使用托管磁盘的 Azure 专用链接 支持来导入或导出网络内部的托管磁盘。 使用专用链接,可以为未附加的托管磁盘和快照生成具有时间限制的 SAS URI。 然后,可以使用该 SAS URI 将数据导出到其他区域进行区域扩展、灾难恢复和取证分析。 还可以使用 SAS URI 将 VHD 从本地直接上传到空磁盘。

专用链接可帮助限制托管磁盘的导出和导入,使其仅在 Azure 虚拟网络中发生。 使用专用链接有助于确保数据仅在安全 Microsoft 主干网络中进行传输。

加密

托管磁盘提供两种类型的加密。 第一种是服务器端加密,存储服务会执行加密。 第二种是 Azure 磁盘加密,可以在 VM 的 OS 和数据磁盘上启用。

服务器端加密

服务器端加密可提供静态加密并有助于保护数据,让组织能够信守所做出的安全性与合规性承诺。 默认情况下,在所有托管磁盘可用的区域中,所有托管磁盘、快照和映像都启用了服务器端加密。

除非在主机上启用加密,否则服务器端加密不会加密临时磁盘。 有关详细信息,请参阅本文后面的临时磁盘部分。

有以下密钥管理选项可供选择:

  • 平台管理的密钥:Azure 为你管理密钥。
  • 客户管理的密钥:自行管理密钥。

有关详细信息,请参阅 Azure 磁盘存储的服务器端加密

Azure 磁盘加密

可以使用 Azure 磁盘加密加密 IaaS 虚拟机使用的 OS 和数据磁盘。 此加密包括托管磁盘。

在 Windows VM 上,驱动器是通过行业标准 BitLocker 加密技术进行加密。 在 Linux VM 上,磁盘会通过 DM-Crypt 技术进行加密。 加密过程与 Azure Key Vault 集成,你可以控制和管理磁盘加密密钥。 有关详细信息,请参阅适用于 Linux VM 的 Azure 磁盘加密适用于 Windows VM 的 Azure 磁盘加密

磁盘角色

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

说明磁盘角色操作的示意图。

OS 磁盘

每个虚拟机都有一个附加的 OS 磁盘。 此磁盘具有预安装的操作系统,该操作系统是在创建 VM 时选择的。 此磁盘包含启动卷。

通常,应仅将 OS 信息存储在 OS 磁盘上。 应将所有应用程序和数据存储在数据磁盘上。 但是,如果有成本方面的顾虑,则可以使用 OS 磁盘,而不是创建数据磁盘。

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

在 Azure Windows VM 上,C 驱动器是 OS 磁盘,是永久性存储,除非使用的是临时 OS 磁盘

数据磁盘

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

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

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

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

临时磁盘

大多数 VM 都包含一个临时磁盘,该磁盘不是托管磁盘。 临时磁盘为应用程序和进程提供短期存储。 它仅用于存储页面文件、交换文件或 SQL Server tempdb 文件等数据。

维护事件期间、在重新部署 VM,或在停止 VM 时,临时磁盘上的数据可能会丢失。 在以标准方式成功重启 VM 期间,临时磁盘上的数据将保留。 有关无临时磁盘的 VM 的详细信息,请参阅无本地临时磁盘的 Azure VM 规格

在 Azure Linux VM 上,临时磁盘通常是 /dev/sdb。 在 Windows VM 上,临时磁盘默认为 D 驱动器。 除非存在以下情况,否则临时磁盘不会加密:

  • 对于服务器端加密,可以在主机上启用加密。
  • 对于 Azure 磁盘加密,请在 Windows 上将 VolumeType 参数设置为所有或在 Linux 上设置为 EncryptFormatAll

托管磁盘快照

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

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

若要详细了解如何为托管磁盘创建快照,请参阅创建虚拟硬盘的快照

映像

托管磁盘支持创建自定义映像。 可以从存储帐户中的自定义 VHD 创建映像或者直接从通用化(通过 Sysprep)VM 创建映像。 该映像包含与 VM 关联的所有托管磁盘,包括 OS 磁盘和数据磁盘。 托管自定义映像允许创建数百个 VM,而无需复制或管理任何存储帐户。

有关创建映像的信息,请参阅在 Azure中创建通用化 VM 的旧托管映像

映像与快照

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

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

除了所包含的磁盘,快照无法感知任何其他磁盘。 在需要协调多个磁盘(如条带化)的情况下使用快照是有问题的。 快照彼此之间将需要相互协调,而目前并不支持该功能。

磁盘分配和性能

下图描绘了磁盘的每秒带宽和 I/O 操作 (IOPS) 的实时分配,其中 I/O 可以采用三个路径。

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

第一种 I/O 路径是未缓存的托管磁盘路径。 如果使用托管磁盘并将主机缓存设置为 none,则 I/O 操作会使用此路径。 使用此路径的 I/O 操作将基于磁盘级预配运行,然后基于 IOPS 和吞吐量的 VM 网络级预配。

第二种 I/O 路径是已缓存的托管磁盘路径。 缓存托管磁盘 I/O 使用靠近 VM 的 SSD。 此 SSD 已预配自己的 IOPS 和吞吐量,并在关系图中显示为“SSD 级预配”。

已缓存的托管磁盘启动读取时,请求会首先查看数据是否已存在于服务器 SSD 中。 如果数据不存在,这将创建缓存的未命中。 然后,I/O 会基于 SSD 级预配、磁盘级预配,并针对 IOPS 和吞吐量的 VM 网络级别预配运行。

当服务器 SSD 在服务器 SSD 上存在的缓存 I/O 上启动读取时,它会创建缓存命中。 然后,I/O 会根据 SSD 级别的预配运行。 写入缓存的托管磁盘启动始终遵循缓存未命中的路径。 他们需要完成 SSD 级、磁盘级和 VM 网络级别的预配。

第三种路径适用于本地/临时磁盘。 只在虚拟机支持本地/临时磁盘时才可采用它。 使用此路径的 I/O 操作将基于 SSD 级别的 IOPS 和吞吐量预配运行。

下图显示了这些限制的示例。 由于 SSD 和网络级别的限制,无论是否缓存,系统都无法让 Standard_D2s_v3 虚拟机实现 P30 磁盘的 5,000 IOPS 潜能。

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

Azure 对磁盘流量使用优先网络通道。 磁盘流量优先于低优先级网络流量。 在出现网络争用时,此优先级有助于磁盘保持预期的性能。

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

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

  • 若要详细了解 Azure 提供的单个磁盘类型,哪种类型最适合你的需求及其性能目标,请参阅为 IaaS VM 选择磁盘类型