关于 Azure Windows VM 的磁盘存储

就像其他任何计算机一样,Azure 中的虚拟机将磁盘用作存储操作系统、应用程序和数据的位置。 所有 Azure 虚拟机都至少有两个磁盘,即 Windows 操作系统磁盘和临时磁盘。 操作系统磁盘基于映像创建,操作系统磁盘和该映像都存储在 Azure 存储帐户中的虚拟硬盘 (VHD) 内。 虚拟机还可以有一个或多个数据磁盘,而这些磁盘也存储为 VHD。

在本文中,我们将讨论磁盘的不同用法,并讨论可以创建和使用的不同磁盘类型。 本文也适用于 Linux 虚拟机

Note

Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典。 这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource Manager 模型。

VM 使用的磁盘

让我们来看看 VM 如何使用磁盘。

操作系统磁盘

每个虚拟机都附加了一个操作系统磁盘。 默认情况下,它注册为 SATA 驱动器并标为 C: 盘。 此磁盘的最大容量为 2048 GB。

临时磁盘

每个 VM 包含一个临时磁盘。 临时磁盘为应用程序和进程提供短期存储存储空间,仅用于存储页面或交换文件等数据。 在维护事件期间或重新部署 VM 时,临时磁盘上的数据可能会丢失。 在 VM 标准重启期间,临时驱动器上的数据应会保留。

临时磁盘默认标记为 D: 盘,用于存储 pagefile.sys。 若要将此磁盘重新映射到其他驱动器号,请参阅更改 Windows 临时磁盘的驱动器号。 临时磁盘的大小因虚拟机的大小而异。 有关详细信息,请参阅 Windows 虚拟机的大小

有关 Azure 如何使用临时磁盘的详细信息,请参阅 Understanding the temporary drive on Azure Virtual Machines

数据磁盘

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

Note

有关虚拟机容量的详细信息,请参阅 Windows 虚拟机的大小

当你基于映像创建虚拟机时,Azure 会创建操作系统磁盘。 如果使用包含数据磁盘的映像,则 Azure 还会在创建虚拟机时创建数据磁盘。 否则,需要在创建虚拟机后添加数据磁盘。

随时可以将数据磁盘添加到虚拟机,只需将该磁盘附加 到虚拟机即可。 可以使用已上传或复制到存储帐户的 VHD,也可以使用 Azure 为你创建的空 VHD。 附加数据磁盘会将 VHD 文件与 VM 关联,方法是在 VHD 上放置“租约”,因此在仍附加 VHD 时无法从存储中删除它。

关于 VHD

Azure 中使用的 VHD 是在 Azure 的标准或高级存储帐户中作为页 Blob 存储的 .vhd 文件。 有关页 blob 的详细信息,请参阅 了解块 blob 和页 blob。 有关高级存储的详细信息,请参阅高性能高级存储和 Azure VM

Azure 支持固定的磁盘 VHD 格式。 固定格式在文件内对逻辑磁盘以线性方式布局,使磁盘偏移量 X 存储在 Blob 偏移量 X 的位置。在 Blob 末尾有一小段脚注,描述了 VHD 的属性。 通常,由于大多数磁盘中都有较大的未使用区域,因此固定格式会浪费空间。 不过,Azure 以稀疏格式存储 .vhd 文件,因此可兼获固定和动态格式磁盘的优点。 有关更多详细信息,请参阅虚拟硬盘入门

Azure 中想要用作源创建磁盘或映像的所有 .vhd 文件都是只读的,但用户已上传或复制到 Azure 存储的 .vhd 文件除外(可以是读写的或只读的)。 创建磁盘或映像时,Azure 将生成源 .vhd 文件的副本。 这些副本可以是只读文件,也可以是读写文件,具体取决于使用 VHD 的方式。

基于映像创建虚拟机时,Azure 将为虚拟机创建磁盘,该磁盘是源 .vhd 文件的副本。 为避免被意外删除,Azure 对任何用于创建映像、操作系统磁盘或数据磁盘的源 .vhd 文件设置了租约。

在删除源 .vhd 文件之前,需要先通过删除磁盘或映像来解除租约。 若要删除当前由虚拟机用作操作系统磁盘的 .vhd 文件,可以通过删除虚拟机并删除所有关联的磁盘,一次性删除虚拟机、操作系统磁盘和源 .vhd 文件。 但是,删除用作数据磁盘来源的 .vhd 文件需要按一定顺序执行几个步骤。 首先从虚拟机分离该磁盘,再删除该磁盘,才能删除 .vhd 文件。

Warning

如果从存储空间删除了源 .vhd 文件或删除了存储帐户,Microsoft 无法恢复数据。

磁盘类型

Azure 磁盘具备 99.999% 的可用性。 Azure 磁盘持续提供企业级持久性,年化故障率为 0%,达到行业领先水平。

创建磁盘时,有两种适用于存储的性能层可供选择 -- 标准存储和高级存储。 另外还有两类磁盘 -- 非托管磁盘和托管磁盘 -- 这两类磁盘可以驻留在任一性能层中。

标准存储

标准存储以 HDD 为基础,可以在确保性能的同时提供经济高效的存储。 标准存储可在一个数据中心进行本地复制,也可以通过主要和辅助数据中心实现异地冗余。 有关存储复制的详细信息,请参阅 Azure 存储复制

要详细了解如何将标准存储与 VM 磁盘结合使用,请参阅标准存储和磁盘

高级存储

高级存储以 SSD 为基础,为运行 I/O 密集型工作负荷的 VM 提供高性能、低延迟的磁盘支持。 可以将高级存储与 DS、DSv2、GS、Ls 或 FS 系列的 Azure VM 结合使用。 有关详细信息,请参阅高级存储

非托管磁盘

非托管磁盘是 VM 一直使用的传统类型的磁盘。 有了这些以后,即可创建自己的存储帐户并在创建磁盘时指定该存储帐户。 必须确保不将太多磁盘置于同一存储帐户中,因为可能会超过存储帐户的可伸缩性目标(例如 20,000 IOPS),导致 VM 数受限。 使用非托管磁盘时,必须确定如何最大程度地使用一个或多个存储帐户,以便充分利用 VM 的性能。

托管磁盘

托管磁盘为用户在后台处理存储帐户的创建/管理,确保用户不需担心存储帐户的可伸缩性限制。 用户只需指定磁盘大小和性能层(标准/高级),Azure 就会自动创建和管理磁盘。 即使在添加磁盘或者对 VM 进行上下伸缩的时候,用户也不需担心所使用的存储。

还可以按 Azure 区域在一个存储帐户中管理自定义映像,并使用这些映像在同一订阅中创建数百个 VM。 有关管理磁盘的详细信息,请参阅托管磁盘概述

建议为新 VM 使用 Azure 托管磁盘,并将以前的非托管磁盘转换为托管磁盘,以便充分利用托管磁盘中提供的多项功能。

磁盘比较

下表对托管磁盘与非托管磁盘的高级和标准性能层做了比较,方便用户确定要使用哪个层。

Azure 高级磁盘 Azure 标准磁盘
磁盘类型 固态硬盘 (SSD) 机械硬盘 (HDD)
概述 基于 SSD 的高性能、低延迟磁盘支持,适用于运行 IO 密集型工作负荷或托管任务关键型生产环境的 VM 基于 HDD 的经济高效型磁盘支持,适用于开发/测试 VM 方案
方案 生产和性能敏感型工作负荷 开发/测试、非关键、
不经常访问的工作负荷
磁盘大小 P4:32 GB(仅托管磁盘)
P6:64 GB(仅托管磁盘)
P10:128 GB
P20:512 GB
P30:1024 GB
P40:2048 GB
P50:4095 GB
非托管磁盘:1 GB - 4 TB (4095 GB)

托管磁盘:
S4:32 GB
S6:64 GB
S10:128 GB
S20:512 GB
S30:1024 GB
S40:2048 GB
S50:4095 GB
每个磁盘的最大吞吐量 250 MB/秒 60 MB/秒
每个磁盘的最大 IOPS 7500 IOPS 500 IOPS

最后一个建议:对非托管标准磁盘使用 TRIM

如果使用非托管标准磁盘 (HDD),则应启用 TRIM。 TRIM 会放弃磁盘上未使用的块,以便仅对实际使用的存储进行收费。 如果创建了较大的文件,并将其删除,这样可以节省成本。

可以运行此命令来检查 TRIM 设置。 在 Windows VM 上打开命令提示符,并键入:

fsutil behavior query DisableDeleteNotify

如果该命令返回 0,则表示正确启用了 TRIM。 如果该命令返回 1,则运行以下命令以启用 TRIM:

fsutil behavior set DisableDeleteNotify 0

Note

注意:从 Windows Server 2012/Windows 8 及更高版本开始支持 Trim,请参阅New API allows apps to send "TRIM and Unmap" hints to storage media(新 API 允许应用向存储媒体发发送“TRIM 和 Unmap”提示)。

后续步骤