你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure NetApp 文件的 Azure VMware 解决方案数据存储性能注意事项

本文提供有关与 Azure NetApp 文件一起使用时 Azure VMware 解决方案数据存储设计和调整大小的注意事项。 此内容适用于虚拟化管理员、云架构师或存储架构师。

本文中概述的注意事项有助于通过优化成本效益从应用程序实现最高级别的性能。

Azure NetApp 文件为 Azure VMware 解决方案提供即时可缩放、高性能和高度可靠的存储服务。 这些测试包括 Azure VMware 解决方案和 Azure NetApp 文件之间的各种不同配置。 这些测试能够驱动每秒超过 10,500 MiB/s 和超过 585,000 个输入/输出操作 (IOPS),只有四个 Azure VMware 解决方案/ESXi 主机和单个 Azure NetApp 文件容量池。

使用 Azure NetApp 文件为 Azure VMware 解决方案实现更高的存储性能

在一个服务级别预配多个可能更大的数据存储可能会降低成本,同时提供更高的性能。 原因是负载分布到多个 TCP 流,从 Azure VMware 解决方案主机到多个数据存储。 可以使用 Azure VMware 解决方案 TCO 估算器的 Azure NetApp 文件数据存储,通过上传 RVTools 报表或输入手动平均 VM 大小来计算潜在的成本节省。

确定如何配置数据存储时,从管理的角度来看,最简单的解决方案是创建单个 Azure NetApp 文件数据存储,装载数据存储,并将所有 VM 放入其中。 此策略适用于许多情况,直到需要更多吞吐量或 IOPS。 为了识别不同的边界,测试使用了综合工作负荷生成器(程序 fio)来评估其中每个方案的工作负荷范围。 此分析可帮助确定如何将 Azure NetApp 文件卷预配为数据存储,以最大程度地提高性能和优化成本。

开始之前

关于 Azure NetApp 文件性能数据,请参阅:

测试方法

本部分介绍用于测试的方法。

测试方案和迭代

此测试遵循“四角”方法,该方法包括每个顺序和随机输入/输出 (IO) 的读取操作和写入操作。 测试的变量包括一对多 Azure VMware 解决方案主机、Azure NetApp 文件数据存储、VM(每个主机)和每个 VM 的 VM 磁盘 (VMDK)。 已选择以下缩放数据点来查找给定方案的最大吞吐量和 IOPS:

  • 缩放 VMDK,每个都位于自己的数据存储上,用于单个 VM。
  • 在单个 Azure NetApp 文件数据存储上缩放每个主机的 VM 数。
  • 缩放 Azure VMware 解决方案主机的数量,每个主机带有共享单个 Azure NetApp 文件数据存储的 VM。
  • 缩放 Azure NetApp 文件数据存储的数量,每个数据存储带有在 Azure VMware 解决方案主机中平均分布的一个 VMDK。

测试小型和大型块操作,并循环访问顺序和随机工作负荷,确保将计算、存储和网络堆栈中的所有组件测试到“边缘”。 若要覆盖块大小和随机化的四个角,请使用以下常见组合:

  • 64 KB 顺序读取
    • 大型文件流式处理工作负荷通常以大型块大小读取和写入,以及作为默认的 MSSQL 盘区大小。
    • 大型块测试通常生成最高吞吐量(以 MiB/s 为单位)。
  • 8 KB 随机测试
    • 此设置是数据库软件的常用块大小,包括来自 Microsoft、Oracle 和 PostgreSQL 的软件。
    • 小块测试通常生成最高数量的 IOPS。

注意

本文仅介绍 Azure NetApp 文件的测试。 不包括 Azure VMware 解决方案随附的 vSAN 存储。

环境详细信息

本文的结果是使用以下环境配置实现的:

  • Azure VMware 解决方案主机:
    • 大小:AV36
    • 主机计数:4
    • VMware ESXi 版本 7u3
  • Azure VMware 解决方案私有云连接:具有 FastPath 的 UltraPerformance 网关
  • 来宾 VM:
    • 操作系统:Ubuntu 20.04
    • CPU/内存:16 vCPU/64 GB 内存
    • Azure VMware 解决方案 vSAN 数据存储上具有 16 GB OS 磁盘的虚拟 LSI SAS SCSI 控制器
    • 测试 VMDK 的准虚拟 SCSI 控制器
    • LVM/磁盘配置:
      • 每个磁盘有一个物理卷
      • 每个物理卷一个卷组
      • 每个卷组一个逻辑分区
      • 每个逻辑分区一个 XFS 文件系统
  • Azure VMware 解决方案到 Azure NetApp 文件协议:NFS 版本 3
  • 工作负荷生成器:fio 版本 3.16
  • Fio 脚本:fio-parser

测试结果

本部分介绍所执行测试的结果。

单 VM 缩放

在 Azure VMware 解决方案虚拟机上配置数据存储呈现的存储时,应考虑文件系统布局的影响。 配置分布在多个数据存储中的多个 VMDK 可提供最高可用带宽量。 配置放置在单个数据存储上的一对多 VMDK 可确保在备份和 DR 操作方面最简单,但代价是降低性能上限。 本文中提供的经验数据可帮助你做出决策。

为了最大限度地提高性能,通常跨多个 VMDK 缩放单个 VM,并将这些 VMDK 放置在多个数据存储中。 只有一个或两个 VMDK 的单个 VM 可以通过一个 NFS 数据存储来限制,因为它通过单个 TCP 连接装载到给定的 Azure VMware 解决方案主机。

例如,工程师通常会为数据库日志预配 VMDK,然后为数据库文件预配一对多 VMDK。 使用多个 VMDK 时,有两个选项。 第一个选项是将每个 VDMK 用作单个文件系统。 第二个选项是使用存储管理实用工具(如 LVM、MSSQL 文件组或 Oracle ASM)通过跨 VMDK 进行条带化来平衡 IO。 当 VMDK 用作单个文件系统时,跨多个数据存储分配工作负荷是手动工作,可能很麻烦。 使用存储管理实用工具将文件分散到 VMDK,可实现工作负荷伸缩性。

如果跨多个磁盘条带卷,请确保备份软件或灾难恢复软件支持同时备份多个虚拟磁盘。 由于单个写入在多个磁盘上条带化,文件系统需要在快照或备份操作期间确保磁盘“冻结”。 大多数现代文件系统包括冻结或快照操作,例如 xfsxfs_freeze)和 NTFS(卷影副本),备份软件可以利用这些操作。

为了了解单个 Azure VMware 解决方案 VM 在添加更多虚拟磁盘时的缩放情况,使用一个、两个、四个和八个数据存储(每个数据存储包含单个 VMDK)执行测试。 下图显示了单个磁盘平均约为 73,040 IOPS(从 100% 写入/0% 读取缩放到 0% 写入/100% 读取)。 当此测试增加到两个驱动器时,性能提高了 75.8%,达到 128,420 IOPS。 增加到四个驱动器开始显示单个 VM(大小为已测试的大小)可能会推送的回报下降。 观察到的峰值 IOPS 为 147,000 IOPS,随机读取 100%。

显示单个 VM 缩放到多数据存储的关系图。

单主机缩放 – 单数据存储

它缩放表现不佳,以增加从单个主机到单个数据存储驱动 IO 的 VM 数量。 这一事实是由于单个网络流造成的。 当达到给定工作负荷的最佳性能时,通常是通过主机的单个 NFS 数据存储在单个 TCP 连接使用单个队列的结果。 使用 8 KB 块大小时,从具有单个 VMDK 的一个 VM 扩展到 16 个 VMDK 的 4 个 VM(每个 VM 4 个,全部在单个数据存储上)时,总 IOPS 增加量在 3% 和 16% 之间。

增加大型块工作负荷的块大小(到 64 KB)具有可比结果,达到 2148 MiB/s(单个 VM、单个 VMDK)和 2138 MiB/s(4 个 VM、16 个 VMDK)的峰值。

显示在单个数据存储主机上缩放 VM 的关系图。

单主机缩放 – 多数据存储

从单个 Azure VMware 解决方案主机的上下文中,单个数据存储允许 VM 驱动约 76,000 IOPS,将工作负荷分散在两个数据存储之间使平均总吞吐量增加了 76%。 从两个数据存储到四个数据存储会导致 163% 的增长(超过一个数据存储,从 2 个增加到 4 时增长 49%),如下图所示。 尽管仍有性能提升,但增长到超过八个数据存储显示回报会减少。

显示使用四个 VM 在单个数据存储主机上缩放 VM 的关系图。

多主机缩放 – 单数据存储

来自单个主机的单个数据存储生成的 64 KB的顺序吞吐量超过 2000 MiB/s。 在所有四台主机上分配相同的工作负荷会产生 135% 的峰值增益,从而驱动超过 5000 MiB/s。 此结果可能表示单个 Azure NetApp 文件卷吞吐量性能的上限。

显示单个 Azure NetApp 文件卷上的吞吐量缩放的关系图。

将块大小从 64 KB 减少到 8 KB,并重新运行相同的迭代会导致 4 个 VM 生成 195,000 IOPS,如下图所示。 由于网络流的数量增加,因此性能随着主机数和数据存储数的增加而缩放。 通过缩放主机数乘以数据存储数来提高性能,因为网络流的计数是主机时间数据存储的一个因素。

显示网络流总数计算的公式。

显示单个 Azure NetApp 文件数据存储上的 IOPS 缩放的关系图。

多主机缩放 – 多数据存储

一个数据存储,其中四个 VM 分布在四个主机中,生成顺序 64 KB IO 超过 5000 MiB/s。 对于更苛刻的工作负荷,每个 VM 将移动到专用数据存储,总共产生超过 10,500 MiB/s,如下图所示。

显示在四个主机上的缩放数据存储的关系图。

对于小块随机工作负荷,单个数据存储生成了 195,000 个随机 8 KB IOPS。 扩展到生成超过 530,000 个随机 8K IOPS 的四个数据存储。

显示在四个具有 8k 块大小的主机上的缩放数据存储的关系图。

影响和建议

本部分讨论为何将 VM 分散到多个数据存储具有显著的性能优势。

测试结果所示,Azure NetApp 文件的性能功能非常丰富:

  • 测试显示,一个数据存储可以从四主机配置中驱动平均约 148,980 8 KB IOPS 或约 4147 MiB/s 及 64 KB IOPS(所有写入%/读取% 测试平均值)。
  • 一个数据存储上的一个 VM –
    • 如果单个 VM 可能需要超过约 75K 8 KB IOPS 或约 1700 MiB/s,可将文件系统分散到多个 VMDK 上,以缩放 VM 存储性能。
  • 多个数据存储的一个 VM – 跨 8 个数据存储的单个 VM 最多实现约 147,000 8 KB IOPS 或约 2786 MiB/s,块大小为 64 KB。
  • 一个主机 - 如果每个主机至少使用 4 个 VM,以及至少 4 个 Azure NetApp 文件数据存储,则每个主机能够支持平均约 198,060 8 KB IOPS 或大约 2351 MiB/s。 因此,可以选择平衡预配足够的数据存储,以达到最大、可能突发、性能与管理和成本的复杂性。

建议

如果单个数据存储的性能功能不足,请将 VM 分散到多个数据存储,以进一步扩展。 简单性通常是最好的,但性能和可伸缩性可能证明复杂性有所添加,但有限。

四个 Azure NetApp 文件数据存储为大型顺序 IO 提供最多 10 GBps 的可用带宽,或者提供高达 500K 8K 随机 IOPS 的功能。 尽管一个数据存储可能足以满足许多性能需求,但为了获得最佳性能,请从至少四个数据存储开始。

为了进行精细的性能优化,Windows 和 Linux 来宾操作系统都允许跨多个磁盘进行条带化。 因此,应该将文件系统条带化到分布在多个数据存储中的多个 VMDK。 但是,如果应用程序快照一致性是个问题,并且无法使用 LVM 或存储空间来克服,请考虑从来宾操作系统装载 Azure NetApp 文件或调查应用程序级缩放,其中 Azure 有许多出色的选项。

如果跨多个磁盘条带卷,请确保备份软件或灾难恢复软件支持同时备份多个虚拟磁盘。 由于单个写入在多个磁盘上条带化,文件系统需要在快照或备份操作期间确保磁盘“冻结”。 大多数现代文件系统包括冻结或快照操作,例如 xfs (xfs_freeze) 和 NTFS(卷影副本),备份软件可以利用这些操作。

由于 Azure NetApp 文件按容量池中的预配容量而不是分配的容量(数据存储)计费,因此将为例如 4x20TB 数据存储或 20x4TB 数据存储支付相同的费用。 如果需要,可以按需调整数据存储的容量和性能,通过 Azure API/控制台动态进行

例如,在接近财年结束时,你会发现在标准数据存储上需要更多的存储性能。 可以将数据存储的服务级别增加一个月,使这些数据存储上的所有 VM 都具有更高的性能,同时在较低的服务级别维护其他数据存储。 不仅节省成本,而且通过在每个数据存储与每个 AVS 主机之间的更多 TCP 连接之间分散工作负荷来获得更高的性能。

可以通过 vCenter Server 或 Azure API/控制台监视数据存储指标。 在 vCenter Server 中,只要在数据存储上启用存储 IO 控制指标集合,就可以在性能/高级图表中监视数据存储的聚合平均 IOPS。 Azure API控制台提供用于在数据存储级别衡量工作负荷的 WriteIopsReadIopsReadThroughputWriteThroughput 等指标。 使用 Azure 指标,可以使用操作设置警报规则,以便通过 Azure 函数、Webhook 或其他操作自动调整数据存储大小。

后续步骤