vSphere Storage I/O Control 允许在整个集群范围内划分存储 I/O 的优先级,从而更好地整合工作负载,并有助于减少与过度置备相关的额外成本。

Storage I/O Control 通过扩展份额和限制的构成来处理存储 I/O 资源。您可以控制在 I/O 拥堵期间分配给虚拟机的存储 I/O 量,从而确保在进行 I/O 资源分配时重要性较高的虚拟机与重要性较低的虚拟机相比具有更高的优先级。

当对数据存储启用 Storage I/O Control 时,ESXi 会开始监控主机与该数据存储通信时出现的设备延迟时间。当设备延迟时间超出阈值时,该数据存储会被视为出现拥堵,此时将按访问该数据存储的每个虚拟机的份额比例向其分配 I/O资源。您可以设置每个虚拟机的份额,并根据需要调整每个虚拟机的份额数量。

I/O 筛选器框架 (VAIO) 允许 VMware 及其合作伙伴开发用于拦截每个 VMDK 的 I/O 的筛选器,并在 VMDK 粒度级别提供所需的功能。VAIO 可与基于存储策略的管理 (SPBM) 配合使用,从而允许您通过附加到 VMDK 的存储策略设置筛选器首选项。

配置 Storage I/O Control 分为两个步骤:

  1. 为数据存储启用 Storage I/O Control。
  2. 设置每个虚拟机所允许的存储 I/O 份额数量以及每秒 I/O 操作数 (IOPS) 的上限。

默认情况下,所有虚拟机的份额均设置为“正常 (1000)”且 IOPS 无限制。

注: 在已启用 Storage DRS 的数据存储集群上,Storage I/O Control 默认情况下处于启用状态。
注: vSphere 8.0 U1 支持在虚拟机重新配置期间无缝热添加和热移除 LWD I/O 筛选器。
注: 本章中“内存”是指物理内存。

虚拟机存储策略

虚拟机存储策略对虚拟机置备至关重要。这些策略将控制为虚拟机提供的存储类型、虚拟机在存储中的放置方式,以及为虚拟机提供的数据服务。

vSphere 包括默认存储策略。但是,您可以定义和分配新策略。

使用“虚拟机存储策略”界面创建存储策略。定义该策略时,可为虚拟机上运行的应用程序指定各种存储要求。您也可以使用存储策略来为虚拟磁盘请求缓存或复制等特定的数据服务。

您可以在创建、克隆或迁移虚拟机时应用该存储策略。应用存储策略之后,基于存储策略的管理 (SPBM) 机制会将虚拟机放置到匹配的数据存储中,在某些存储环境中还会确定如何在存储资源内置备和分配虚拟机存储对象,以确保所需的服务级别。SPBM 还将对虚拟机启用请求的数据服务。vCenter Server 会监控策略合规性,并在虚拟机违反所分配的存储策略时发送警示。

请参见《vSphere 存储》了解详细信息。

I/O 筛选器

无论基础存储拓扑如何,与虚拟磁盘关联的 I/O 筛选器均可直接访问虚拟机 I/O 路径。

VMware 提供某些类别的 I/O 筛选器。此外,第三方供应商也可创建 I/O 筛选器。通常,它们以软件包形式分发,可提供安装程序以在 vCenter ServerESXi 主机集群上部署筛选器组件。

ESXi 集群上部署 I/O 筛选器时,vCenter Server 会自动为集群中的每个主机配置并注册 I/O 筛选器存储提供程序(也称为“VASA 提供程序”)。这些存储提供程序与 vCenter Server 进行通信,并使 I/O 筛选器提供的数据服务在“虚拟机存储策略”界面中可见。在定义虚拟机策略的常用规则时,可以引用这些数据服务。将虚拟磁盘与此策略关联后,会在虚拟磁盘上启用 I/O 筛选器。

请参见《vSphere 存储》了解详细信息。

Storage I/O Control 要求

Storage I/O Control 有一些要求和限制。

  • 启用了 Storage I/O Control 的数据存储必须由单个 vCenter Server 系统管理。
  • 光纤通道连接、iSCSI 连接和 NFS 连接的存储上都可支持 Storage I/O Control。裸设备映射 (RDM) 不受支持。
  • Storage I/O Control 不支持具有多个数据区的数据存储。
  • 在具有自动化存储分层功能的阵列所支持的数据存储上使用 Storage I/O Control 之前,请查看《VMware 存储/SAN 兼容性指南》,以确认自动化分层存储阵列已通过认证,与 Storage I/O Control 兼容。

    自动化存储分层是阵列(或阵列组)的功能,可根据用户设置的策略和当前 I/O 模式,将 LUN/卷或 LUN/卷的某些部分迁移到其他类型的存储介质(SSD、FC、SAS 和 SATA)。对于不具有这些自动迁移/分层功能的阵列(其中包括提供不同类型存储介质之间手动迁移数据功能的阵列)无需特殊认证。

Storage I/O Control 资源份额和限制

您可以分配每个虚拟机所允许的存储 I/O 份额数量以及每秒 I/O 操作数 (IOPS) 的上限。当检测到数据存储出现存储 I/O 拥堵时,会根据每个虚拟机具有的虚拟机份额比例调整访问该数据存储的虚拟机的 I/O 工作负载。

资源分配份额中所介绍,存储 I/O 份额与用于内存和 CPU 资源分配的份额相似。这些份额表示虚拟机在存储 I/O 资源分配方面的相对重要性。在发生资源争用时,份额值较高的虚拟机访问存储阵列的机会更大。当分配存储 I/O 资源时,您可以限制虚拟机所允许的 IOPS。在默认情况下,IOPS 无限制。

资源分配限制中介绍了设置资源限制的优缺点。如果要为虚拟机设置的限制单位为 MB/秒而非 IOPS,则可根据虚拟机的典型 I/O 大小将 MB/秒转换为 IOPS。例如,要将具有 64 KB IO 的备份应用程序限定为 10 MB/秒,请将限制设置为 160 IOPS。

查看 Storage I/O Control 份额和限制

您可以查看数据存储上运行的所有虚拟机的份额和限制。通过查看此信息,可以比较访问该数据存储的所有虚拟机的设置,而不管这些虚拟机在哪个集群中运行。

过程

  1. vSphere Client 中,浏览到数据存储。
  2. 单击虚拟机选项卡。
    该选项卡显示了数据存储上运行的每个虚拟机以及关联的份额值和数据存储份额百分比。

监控 Storage I/O Control 份额

使用数据存储性能选项卡,可以监控 Storage I/O Control 如何基于其份额处理访问数据存储的虚拟机的 I/O 工作负载。

使用数据存储性能图表可以监控以下信息:
  • 数据存储的平均延迟时间和汇总 IOPS
  • 主机之间的延迟时间
  • 主机之间的队列深度
  • 主机之间的读/写 IOPS
  • 虚拟机磁盘之间的读/写延迟时间
  • 虚拟机磁盘之间的读/写 IOPS

过程

  1. vSphere Client 中,浏览到数据存储。
  2. 监控选项卡下,单击性能
  3. 选择高级

设置 Storage I/O Control 资源份额和限制

通过向虚拟机分配相对数量的份额,可根据重要性将存储 I/O 资源分配给虚拟机。

除非虚拟机工作负载非常相似,否则份额不必以 I/O 操作数或 MB/秒来规定分配。较高的份额可以使虚拟机在存储设备或数据存储中保持更多挂起的并行 I/O 操作(与份额较低的虚拟机相比)。根据其工作负载,两个虚拟机可能有不同的吞吐量。

前提条件

请参见《vSphere 存储》了解有关创建虚拟机存储策略和定义虚拟机存储策略常用规则的信息。

过程

  1. vSphere Client 中,浏览到虚拟机。
    1. 要查找虚拟机,请选择数据中心、文件夹、集群、资源池或主机。
    2. 单击虚拟机选项卡。
  2. 右键单击虚拟机,然后单击编辑设置
  3. 单击虚拟硬件选项卡,然后从列表中选择虚拟硬盘。展开硬盘
  4. 从下拉菜单中选择虚拟机存储策略
    如果选择了某个存储策略,请勿手动配置 份额限制 - IOPS
  5. 份额下,单击下拉菜单,然后选择要分配给虚拟机的相对数量的份额(低、正常或高)。
    您可以选择 自定义以输入用户定义的份额值。
  6. 限制 - IOPS 下,单击下拉菜单,然后输入要分配给虚拟机的存储资源的上限。
    IOPS 是每秒 I/O 操作数。在默认情况下,IOPS 无限制。选择低 (500)、正常 (1000) 或高 (2000),或者可以选择“自定义”输入用户定义的份额量。
  7. 单击确定

启用 Storage I/O Control

启用 Storage I/O Control 后,如果数据存储平均延迟时间超过阈值,则 ESXi 会监控数据存储延迟时间并限制 I/O 负载。

过程

  1. vSphere Client 中,浏览到数据存储。
  2. 单击配置选项卡。
  3. 依次单击设置常规
  4. 针对数据存储功能单击编辑
  5. 选中启用 Storage I/O Control 对话框。
  6. 单击确定

结果

数据存储功能下,即会针对数据存储启用 Storage I/O Control。

设置 Storage I/O Control 阈值

数据存储的拥堵阈值是数据存储所允许的延迟时间上限,超过该值后,Storage I/O Control 将开始根据份额将重要性分配给虚拟机工作负载。

在大部分环境中,都不需要调整阈值设置。
小心: 如果在两个不同的数据存储上共享相同的心轴,Storage I/O Control 可能无法正常运行。
如果要更改拥堵阈值设置,请根据以下事项来设置该值。
  • 值越大,通常会导致总吞吐量越大,隔离越弱。除非整体平均延迟时间高于阈值,否则不会出现限制。
  • 如果吞吐量比延迟时间更重要,请不要将该值设置得过低。例如,对于光纤通道磁盘,低于 20 ms 的值可降低磁盘吞吐量峰值。当该值非常大(超过 50 毫秒)时,可能会出现延迟时间长而总吞吐量却并未显著增加的情况。
  • 值越小,则设备的延迟时间就越短,且虚拟机 I/O 性能隔离将越强。隔离增强意味着份额控制的实施更加频繁。设备延迟时间越短,则拥有最高份额的虚拟机的 I/O 延迟时间越短,但同时会导致份额较低的虚拟机的 I/O 延迟时间更长。
  • 非常低的值(小于 20 毫秒)会使设备的延迟时间更短,I/O 之间的隔离更强,但有可能会降低数据存储总吞吐量。
  • 将值设置极高或极低会导致隔离性变差。

前提条件

验证是否启用了 Storage I/O Control。

过程

  1. vSphere Client 中,浏览到数据存储。
  2. 依次单击配置选项卡和设置
  3. 单击常规
  4. 针对数据存储功能单击编辑
  5. 选中启用 Storage I/O Control 对话框。
    当数据存储以其吞吐量峰值的 90% 运行时,Storage I/O Control 会自动将延迟时间阈值设置为与估计延迟时间相对应。
  6. (可选) 调整拥堵阈值
    • 吞吐量峰值百分比下拉菜单中选择一个值。
    吞吐量峰值百分比指示当数据存储使用其估计吞吐量峰值百分比时的估计延迟时间阈值。
    • 手动下拉菜单中选择一个值。
    该值必须介于 5 毫秒到 100 毫秒之间。如果设置了错误的拥堵阈值,则可能会对数据存储上虚拟机的性能不利。
  7. (可选) 单击重置为默认值,将拥堵阈值设置还原为默认值(30 毫秒)。
  8. 单击确定

Storage DRS 与存储配置文件集成

基于存储策略的管理 (SPBM) 允许您为虚拟机指定由 Storage DRS 执行的策略。一个数据存储集群可以包含一组具备不同功能配置文件的数据存储。如果虚拟机具有关联的存储配置文件,则 Storage DRS 可以根据基础数据存储功能执行放置。

在 Storage DRS 与存储配置文件集成过程中,引入了 Storage DRS 集群级别高级选项 EnforceStorageProfiles。高级选项 EnforceStorageProfiles 使用以下整数值之一:0、1 或 2。默认值为 0。当选项设置为 0 时,表示 Storage DRS 集群中不会执行任何存储配置文件或策略。当选项设置为 1 时,表示 Storage DRS 集群中将软性执行存储配置文件或策略。这类似于 DRS 软规则。Storage DRS 将在最佳级别遵守存储配置文件或策略。但如果要求违反存储配置文件合规性,Storage DRS 也会按要求执行操作。只有在存储配置文件执行被设置为 1 时,Storage DRS 关联性规则的优先级才会高于存储配置文件。当选项设置为 2 时,表示 Storage DRS 集群中将硬性执行存储配置文件或策略。这类似于 DRS 硬规则。Storage DRS 不会违反存储配置文件或策略合规性。存储配置文件的优先级高于关联性规则。Storage DRS 将生成错误:无法解决反关联性规则的违反问题 (could not fix anti-affinity rule violation)

前提条件

默认情况下,Storage DRS 不会执行与虚拟机关联的存储策略。请根据您的需求,配置 EnforceStorageProfiles 选项。选项包括默认 (0)、软性要求 (1) 或硬性要求 (2)。

过程

  1. 以管理员身份登录到 vSphere Client
  2. vSphere Client 中,单击 Storage DRS 集群,然后选择管理 > 设置 > Storage DRS
  3. 单击编辑 > 高级选项
  4. 单击“选项”标题下方的区域,并键入 EnforceStorageProfiles
  5. 单击之前输入的高级选项名称右侧的“值”标题下方的区域,并键入值 0、1 或 2。
  6. 选择添加
  7. 单击确定