就像其他任何计算机一样,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 文件的副本。 这些副本可以是只读文件,也可以是读写文件,具体取决于使用 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 或 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”提示)。

后续步骤

关于 Azure Windows VM 的磁盘和 VHD的更多相关文章

  1. Windows Azure Virtual Machine (36) 扩展Azure ARM VM的磁盘大小

    <Windows Azure Platform 系列文章目录> 在默认情况下,Azure ARM VM的操作系统磁盘(OS Disk),容量为: (1)Windows VM OS Disk ...

  2. Azure Key Vault (3) 在Azure Windows VM里使用Key Vaule

    <Windows Azure Platform 系列文章目录> 本章我们介绍如何在Azure Windows VM里面,使用.NET使用Azure Key Vault 我们需要对Key V ...

  3. 有关 Azure IaaS VM 磁盘以及托管和非托管高级磁盘的常见问题解答

    本文将对有关 Azure 托管磁盘和 Azure 高级存储的一些常见问题进行解答. 托管磁盘 什么是 Azure 托管磁盘? 托管磁盘是一种通过处理存储帐户管理来简化 Azure IaaS VM 的磁 ...

  4. 如何加密 Windows VM 上的虚拟磁盘

    为了增强虚拟机 (VM) 的安全性以及符合性,可以加密 Azure 中的虚拟磁盘. 磁盘是使用 Azure 密钥保管库中受保护的加密密钥加密的. 可以控制这些加密密钥,以及审核对它们的使用. 本文详细 ...

  5. Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量

    <Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...

  6. 如何在 Azure 门户中将托管数据磁盘附加到 Windows VM

    本文介绍了如何通过 Azure 门户将新的托管数据磁盘附加到 Windows 虚拟机. 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘. 有关详细信息,请参阅虚拟机大小. 对于新磁 ...

  7. 从专用磁盘创建 Windows VM

    通过使用 Powershell 将专用托管磁盘附加为 OS 磁盘来创建新 VM. 专用磁盘是保留原始 VM 中的用户帐户.应用程序和其他状态数据的现有 VM 中虚拟硬盘 (VHD) 的副本. 使用专用 ...

  8. Azure 元数据服务:适用于 Windows VM 的计划事件(预览)

    计划事件是 Azure 元数据服务中的其中一个子服务. 它负责显示有关即将发生的事件(例如,重新启动)的信息,使应用程序可以为其做准备并限制中断. 它可用于所有 Azure 虚拟机类型(包括 PaaS ...

  9. 将 Windows VM 移到其他 Azure 订阅或资源组

    本文逐步说明如何在资源组或订阅之间移动 Windows VM. 如果最初在个人订阅中创建了 VM,现在想要将其移到公司的订阅以继续工作,则在订阅之间移动 VM 可能很方便. Important 不可在 ...

随机推荐

  1. mysql5.7主从复制配置——读写分离实现

    为什么使用主从架构?1.实现服务器负载均衡:2.通过复制实现数据的异地备份:3.提高数据库系统的可用性:4.可以分库[垂直拆分],分表[水平拆分]: 主从配置的前提条件1.MySQL版本一致:2.My ...

  2. j2ee高级开发技术课程第四周

    分析hello.java,在hello1项目中.下载链接:https://github.com/javaee/tutorial-examples/tree/master/web/jsf/hello1 ...

  3. FutureTask源码解析

    在Java中一般通过继承Thread类或者实现Runnable接口这两种方式来创建多线程,但是这两种方式都有个缺陷,就是不能在执行完成后获取执行的结果,因此Java 1.5之后提供了Callable和 ...

  4. logback打印mybatis sql日志

    近期在项目中调试sql,发现现有的配置 使用logback 无法打印出sql语句,原配置如下(修改为debug也不好使): <!--jdbc --><logger name=&quo ...

  5. 使用Gitlab一键安装包后的日常备份恢复与迁移

    Gitlab 创建备份 使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:ba ...

  6. java的classLoader分析与jettty的WebAppClassLoader

    classLoader,从名字就可以知道,用于加载class的东西. 我们知道在Java中,源文件是会被编译成class文件的,我们的程序的运行也是需要依赖这些编译成字节码的class文件,而这些字节 ...

  7. Python制作回合制手游外挂简单教程(上)

    引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这里使用 ...

  8. python模块之xlwt

    一. 安装 pip install xlwt 二. 使用 1. 创建excel(工作簿)对象 import xlwt wb = xlwt.Workbook() # 生成Workbook对象(xlwt. ...

  9. [android] 轮播图-无限循环

    实现无限循环 在getCount()方法中,返回一个很大的值,Integer.MAX_VALUE 在instantiateItem()方法中,获取当前View的索引时,进行取于操作,传递进来的int ...

  10. Evolution(矩阵快速幂)zoj2853

    Evolution Time Limit: 5 Seconds      Memory Limit: 32768 KB Description Evolution is a long, long pr ...