存储空间直通的性能历史记录

“性能历史记录”是一项新功能;通过它,存储空间直通管理员可跨主机服务器、驱动器、卷、虚拟机等轻松访问关于计算、内存、网络和存储的历史度量值。 性能历史记录会自动收集并存储在群集上,最长存储一年。

重要

此功能是 Windows Server 2019 中的新增功能。 该功能在 Windows Server 2016 中不可用。

开始使用

默认情况下,使用 Windows Server 2019 中的存储空间直通来收集性能历史记录。 不需要安装、配置或启动任何内容。 不需要 Internet 连接,不需要 System Center,也不需要外部数据库。

若要以图形方式查看群集的性能历史记录,请使用 Windows Admin Center

Windows Admin Center 中的性能历史记录

若要以编程方式查询和处理它,请使用新的 Get-ClusterPerf cmdlet。 请参阅 PowerShell 中的使用情况

收集的内容

会收集 7 种类型的对象的性能历史记录:

对象类型

每种对象类型都有多个系列:例如,会为每个服务器收集 ClusterNode.Cpu.Usage

若要详细了解会为每种对象类型收集哪些内容以及如何解释这些内容,请查看下面的子主题:

Object 系列
驱动器 为驱动器收集的内容
网络适配器 为网络适配器收集的内容
服务器 为服务器收集的内容
虚拟硬盘 为虚拟硬盘收集的内容
虚拟机 为虚拟机收集的内容
为卷收集的内容
群集 为群集收集的内容

许多系列跨对等对象聚合到其父级:例如,会为每个网络适配器单独收集 NetAdapter.Bandwidth.Inbound,并将其聚合到整个服务器;同样地,会将 ClusterNode.Cpu.Usage 聚合到整个群集等等。

时间范围

性能历史记录最多存储一年,粒度逐渐减小。 在最近一小时内,每 10 秒提供一次度量值。 之后,(根据情况,通过求平均值或求和)将它们智能地合并到粒度更小、时间跨度更大的系列中。 在最近一天,每 5 分钟提供一次度量值;在最近一周,每 15 分钟提供一次度量值,等等。

在 Windows Admin Center 中,可在图表的右上角选择时间范围。

Windows Admin Center 中的时间范围

在 PowerShell 中,使用 -TimeFrame 参数。

下面是可用的时间范围:

时间范围 度量频率 保留时长
LastHour 每 10 秒 1 小时
LastDay 每 5 分钟 25 小时
LastWeek 每 15 分钟 8 天
LastMonth 每 1 小时 35 天
LastYear 每 1 天 400 天

PowerShell 中的用法

使用 Get-ClusterPerformanceHistory cmdlet 在 PowerShell 中查询和处理性能历史记录。

Get-ClusterPerformanceHistory

提示

使用 Get-ClusterPerf 别名保存一些击键事件。

示例

获取虚拟机 MyVM 在过去一小时的 CPU 使用率:

Get-VM "MyVM" | Get-ClusterPerf -VMSeriesName "VM.Cpu.Usage" -TimeFrame LastHour

如需更高级的示例,请查看已发布的示例脚本,这些脚本提供入门代码用来查找峰值、计算平均值、绘制趋势线、运行离群值检测等。

指定对象

可通过管道指定所需的对象。 这适用于 7 种类型的对象:

管道中的对象 示例
Get-PhysicalDisk Get-PhysicalDisk -SerialNumber "XYZ456" | Get-ClusterPerf
Get-NetAdapter Get-NetAdapter "Ethernet" | Get-ClusterPerf
Get-ClusterNode Get-ClusterNode "Server123" | Get-ClusterPerf
Get-VHD Get-VHD "C:\ClusterStorage\MyVolume\MyVHD.vhdx" | Get-ClusterPerf
Get-VM Get-VM "MyVM" | Get-ClusterPerf
Get-Volume Get-Volume -FriendlyName "MyVolume" | Get-ClusterPerf
Get-Cluster Get-Cluster "MyCluster" | Get-ClusterPerf

如果未指定,会返回整个群集的性能历史记录。

指定系列

可使用以下参数指定所需的系列:

参数 示例 列表
-PhysicalDiskSeriesName "PhysicalDisk.Iops.Read" 为驱动器收集的内容
-NetAdapterSeriesName "NetAdapter.Bandwidth.Outbound" 为网络适配器收集的内容
-ClusterNodeSeriesName "ClusterNode.Cpu.Usage" 为服务器收集的内容
-VHDSeriesName "Vhd.Size.Current" 为虚拟硬盘收集的内容
-VMSeriesName "Vm.Memory.Assigned" 为虚拟机收集的内容
-VolumeSeriesName "Volume.Latency.Write" 为卷收集的内容
-ClusterSeriesName "PhysicalDisk.Size.Total" 为群集收集的内容

提示

使用 Tab 补全功能发现可用系列。

如果未指定,会返回指定对象可用的每个系列。

指定时间范围

可使用 -TimeFrame 参数指定所需的历史记录时间范围。

提示

使用 Tab 补全功能发现可用时间范围。

如果未指定,会返回 MostRecent 度量值。

工作原理

性能历史记录存储

启用存储空间直通后不久,就会创建一个名为 ClusterPerformanceHistory 的大约 10 GB 的卷,并在其中预配可扩展存储引擎(也称为 Microsoft JET)的实例。 这个轻型数据库存储性能历史记录,无需管理员参与或管理。

用于性能历史记录存储的卷

卷由存储空间提供支持,它使用简单的双向镜像或三向镜像复原,具体取决于群集中的节点数。 与存储空间直通中的任何其他卷一样,会在驱动器或服务器发生故障后修复它。

卷使用 ReFS,但不是群集共享卷 (CSV),因此它仅显示在群集组所有者节点上。 除了自动创建外,这个卷没有任何特殊之处:可以查看、浏览、调整大小或删除它(不建议)。 如果出现问题,请参阅故障排除

对象发现和数据收集

性能历史记录会自动发现群集中任意位置的相关对象(例如虚拟机),并开始流式传输其性能计数器。 这些计数器会聚合、同步并插入到数据库中。 流式处理会持续运行,并经过优化,能最大程度地降低系统影响。

收集操作由运行状况服务处理,该服务具有高可用性:如果运行它的节点出现故障,它将稍后在群集中的另一个节点上恢复。 性能历史记录可能会短暂失效,但它会自动恢复。 可通过在 PowerShell 中运行 Get-ClusterResource Health 来查看运行状况服务及其所有者节点。

处理度量差距

时间范围中所述,将度量值合并到粒度更小、时间跨度更大的系列中时,将排除缺失数据的时间段。 例如,如果服务器关闭 30 分钟,然后在接下来的 30 分钟内以 50% 的 CPU 运行,那么这一小时的 ClusterNode.Cpu.Usage 平均值将正确记录为 50%(而不是 25%)。

扩展性和自定义

性能历史记录易于编写脚本。 使用 PowerShell 直接从数据库拉取任何可用历史记录,来生成自动化报告或警报、导出历史记录进行保护、滚动自己的可视化效果等。如需有帮助的入门代码,请查看已发布的示例脚本

无法收集其他对象、时间范围或系列的历史记录。

度量频率和保留期当前不可配置。

启动或停止性能历史记录

如何启用此功能?

除非执行 Stop-ClusterPerformanceHistory,否则会默认启用性能历史记录。

若要重新启用它,请以管理员身份运行以下 PowerShell cmdlet:

Start-ClusterPerformanceHistory

如何禁用此功能?

若要停止收集性能历史记录,请以管理员身份运行以下 PowerShell cmdlet:

Stop-ClusterPerformanceHistory

若要删除现有度量值,请使用 -DeleteHistory 标志:

Stop-ClusterPerformanceHistory -DeleteHistory

提示

在初始部署期间,可通过将 Enable-ClusterStorageSpacesDirect-CollectPerformanceHistory 参数设置为 $False 来阻止性能历史记录启动。

疑难解答

cmdlet 不起作用

错误消息(例如,“"Get-ClusterPerf" 一词未识别为 cmdlet 的名称”表示该功能不可用或未安装。 验证是否已安装 Windows Server 2025、是否已安装故障转移群集,以及是否正在运行存储空间直通。

注意

此功能在 Windows Server 2016 或更低版本上不可用。

无可用数据

如果图表显示“无可用数据”(如图所示),可在下面查看如何进行故障排除:

无可用数据

  1. 如果对象是新添加或新创建的,请等到它被发现(最多等待 15 分钟)。

  2. 刷新页面,或者等到下一个后台刷新(最多等待 30 秒)。

  3. 会从性能历史记录中排除某些特定对象,例如,未群集化的虚拟机,以及没有使用群集共享卷 (CSV) 文件系统的卷。 请查看有关对象类型的子主题,例如卷的性能历史记录,了解详细信息。

  4. 如果问题仍然存在,请以管理员身份打开 PowerShell 并运行 Get-ClusterPerf cmdlet。 该 cmdlet 包含故障排除逻辑用来识别常见问题(例如,如果缺少 ClusterPerformanceHistor 卷),并提供修正说明。

  5. 如果上一步中的命令未返回任何内容,可通过在 PowerShell 中运行 Stop-ClusterResource Health ; Start-ClusterResource Health 来尝试重启运行状况服务(它会收集性能历史记录)。

其他参考