使用 Azure 门户启用和配置 Azure VM 磁盘缓存

已完成

我们看到了可选择用于预测磁盘性能的设置和属性。 接下来,我们看看如何通过缓存提高性能。

磁盘缓存

缓存是一种存储数据的专用组件,通常将数据存储在内存中,以加快访问速度。 缓存中的数据通常是以前读取的数据,或者在完成前一个计算后生成的数据。 缓存的目标是使访问数据的速度比从磁盘中获取数据的速度更快。

缓存使用专用的(有时比较昂贵的)临时存储,此类存储的读取和写入性能优于永久性存储。 由于高速缓存存储通常受到限制,需要在做出决策时考虑缓存能够为哪些数据操作带来最大的好处。 但是,即使可以广泛使用缓存(例如在 Azure 中),在决定要使用哪种缓存类型之前,也仍然需要了解每个磁盘的工作负载模式,这一点非常重要。

“读取缓存”尝试加快数据检索速度。 在这种情况下,数据不是从永久性存储读取的,而是从更快的缓存中读取的。 在以下情况下,数据读取将以缓存为目标:

  • 数据以前已读取,并且存在于缓存中。
  • 缓存足够大,可以保存所有数据。

请务必注意,当读取队列具有一定的可预测性时(例如,执行一系列有序读取时),读取缓存可发挥作用。 对于随机 I/O(访问的数据分散在存储中的各个位置),高速缓存的作用很小或者不会起到任何作用,甚至可能降低磁盘性能。

“写入缓存”尝试提高在持久性存储中“写入数据”的速度。 当应用使用写入缓存时,可以考虑保存数据。 在现实中,数据会在缓存中排队,等待写入磁盘。 可以想像,此机制可能是一个潜在的故障点,例如在将此缓存数据写入之前关闭系统的情况下。 某些系统(例如 SQL Server)本身就能处理将缓存数据写入永久性磁盘存储的过程。

Azure 磁盘缓存

有两种涉及到磁盘存储的磁盘缓存:

  • Azure 存储缓存
  • Azure 虚拟机 (VM) 磁盘缓存

Azure 存储缓存为 Azure Blob 存储、Azure 文件和 Azure 中的其他内容提供缓存服务。 本模块不会介绍此类缓存的配置。

Azure 虚拟机磁盘缓存可以优化对附加到 Azure VM 的虚拟硬盘 (VHD) 文件的读取和写入访问。 在本模块中,我们将重点介绍磁盘高速缓存。

Ultra Disks 或高级 SSD v2 不支持磁盘高速缓存,但它们已受益于降低的延迟,这解决了与磁盘高速缓存相同的一些核心问题。

Azure 虚拟机磁盘类型

Azure VM 使用三种类型的磁盘:

  • OS 磁盘:创建 Azure VM 时,Azure 会自动附加操作系统 (OS) 的 VHD。

  • 临时磁盘:创建 Azure VM 时,Azure 还会自动添加一个临时磁盘。 此磁盘用于存储页面和交换文件等数据。 在维护或重新部署 VM 期间,此磁盘中的数据可能会丢失。 请勿使用它来存储永久性数据,例如数据库文件或事务日志。

  • 数据磁盘:数据磁盘是附加到虚拟机的 VHD,用于存储应用程序数据或其他需要保留的数据。

OS 磁盘和数据磁盘利用 Azure VM 磁盘缓存。 VM 磁盘的缓存大小取决于 VM 实例大小,以及 VM 上装载的磁盘数。 最多只能为 4 TiB 的磁盘启用缓存。

Azure VM 的缓存选项

VM 磁盘缓存有三个常用选项:

  • 读/写:写回缓存。 仅当应用程序可根据需要适当处理将缓存数据写入永久性磁盘的过程时,才使用此选项。
  • 只读:从缓存执行读取。
  • :无缓存。 对于只写磁盘和写入密集型磁盘,请选择此选项。 此选项非常适合日志文件,因为日志记录是写入密集型操作。

并非每个缓存选项都适用于每种磁盘。 下表显示了每种磁盘类型的缓存选项:

只读 读/写
OS 磁盘 是(默认)
数据磁盘 是(默认)
临时磁盘 no

注意

无法更改 L 系列和 B 系列虚拟机的磁盘缓存选项。

Azure VM 磁盘缓存的性能注意事项

缓存设置对 Azure VM 上运行的工作负荷的性能会造成何种影响?

OS 磁盘

VM OS 磁盘的默认行为是在读/写模式下使用缓存。 因此,如果应用程序将数据文件存储在 OS 磁盘上,并且对数据文件执行大量随机读/写操作。 请考虑将这些文件移动到已关闭高速缓存的数据磁盘。 为什么会这样? 如果读取队列不包含顺序读取,则高速缓存很少或没有好处。 维护缓存的开销可能会降低磁盘性能(如同读取有序数据一样)。

数据磁盘数

对于性能敏感型应用程序,应使用数据磁盘而不是 OS 磁盘。 使用不同的磁盘可为每个磁盘配置适当的缓存设置。

例如,在运行 SQL Server 的 Azure VM 上,对数据磁盘启用“只读”缓存(适用于普通数据和 TempDB 数据)可以明显改善性能。 另一方面,日志文件非常适合存储在未启用缓存的数据磁盘中。

警告

更改 Azure 磁盘的缓存设置会分离并重新附加目标磁盘。 如果它是操作系统磁盘,会重启 VM。 更改磁盘缓存设置前,停止所有可能受此中断影响的应用程序/服务。

可以使用以下任何工具配置虚拟机磁盘缓存设置:

  • Azure 门户
  • Azure CLI
  • Azure PowerShell
  • 资源管理器模板

使用 Azure 门户配置缓存

在部署 VM 之前,使用 Azure 门户预配新 VM 时,不能从“读/写”更改 OS 磁盘的默认缓存配置。

将数据磁盘添加到现有 VM 时,可以先将磁盘部署到 VM,然后配置缓存选项。

接下来,让我们使用 Azure 门户创建一个 VM 并更改缓存设置。