在 Windows HLK 中对存储空间直通 (S2D) 运行群集测试

摘要

在本文档中,合作伙伴和原始设备制造商 (OEM) 可了解如何使用 Windows Hardware Lab Kit(HLK,以前称为 HCK)中包含的测试来验证基础功能的特定硬件配置和存储空间直通 (S2D) 的可靠性。

重要

本文档中的说明仅用于测试目的。 它们不适用于最终用户,也不适用于配置供生产使用的系统。

先决条件

  1. 硬件配置必须满足 S2D 要求,并且必须首先通过所有群集验证测试,包括为 S2D 添加的新测试。
  2. 你必须下载、安装和配置支持最新 Windows Server Technical Preview 的最新 Windows HLK。 建议熟悉 Windows HLK。 若要下载并详细了解 Windows HLK,请参阅 Windows Hardware Lab Kit
    1. 首先,在测试服务器上安装 HLK 控制器 (HLKC) 和 HLK Studio。 不要将其安装在群集节点上。 管理员将使用此服务器来运行测试和管理其他计算机。 HLKC 可用于同时管理多个群集,因此可使用已配置了另一个群集的现有 HLKC。
    2. 接下来,在以下服务器上安装 HLK 客户端:
      • 旨在用作存储群集节点的所有服务器(应至少具有 4 个节点,另可查看单独的 S2D 要求),以及
      • 不以测试控制器 (TC) 的形式包含在群集中的服务器。 将在这里运行测试。
  3. 用于测试的所有计算机(包括 HLK 控制器)都应加入到同一个域,并且包含对所有计算机都具有管理员权限的公共域用户。 此用户的凭据将提供给测试框架以在其下运行测试。 可以明文形式传输和存储用户的密码。
  4. 所有群集节点都必须在所有连接的网络接口上启用 DHCP,同时在所连接的网络上配置 DHCP。

设置

配置 HLK

若要详细了解如何安装 HLK,请参阅 HLK 用户指南查看详细说明。 在所有计算机上安装并配置 HLK 后,请创建计算机池和项目:

  1. 在 HLKC 上的 HLK Studio 中,创建新的计算机池,该池的名称稍后可轻松识别群集,例如将要使用的群集名称(本文档使用“Cluster”)。 将 TC 和所有群集节点添加到该计算机池。 确保计算机处于“就绪”状态。
    1. 打开 HLK Studio,选择“启动”,然后选择“所有应用”>“Windows 工具包”>“HLK Studio”。
    2. 选择右上角的“配置”。
      1. 右键单击 $(Root),然后选择“创建计算机池”并指定名称。 (本文档使用“Cluster”。)
      2. 将计算机移动到新池。 HLK Studio 目前不支持选择多项,因此必须一次移动一台计算机。
      3. 选择池中的所有计算机,然后右键单击,然后选择“ 更改计算机状态>就绪”。 计算机将先更改为“正在初始化”状态。
      4. 确保计算机进入“就绪”状态。 HLK Studio 不会自动刷新显示的状态。 等待几秒钟,然后选择默认计算机池。 返回到群集计算机池以刷新计算机状态。 所有计算机都处于“就绪”状态后,请继续创建一个项目。
  2. 创建一个同名的新项目。
    1. 如果位于“配置”视图中,请单击标题“配置”左边的“后退”(它看起来像一个左箭头)来返回到主视图。
    2. 在“项目”选项卡中,选择“创建项目”。
    3. 指定 S2D 作为项目名称。 不需要使用这个确切的名称,但这样做可以更轻松地标识项目。

准备计算机以运行测试

此步骤将所需的测试二进制文件和驱动程序部署到群集节点和测试控制器,以便可以运行 S2D 测试。 即使多次运行实际的 S2D 测试,每个群集也只需要运行一次该测试作业。 此作业将重启计算机。

重要

在运行此测试作业之前,请确保在用于测试的所有计算机上都禁用了安全启动和 BitLocker。 如果你对测试控制器使用虚拟机,则可能需要手动禁用安全启动和 BitLocker,因为它们可能已默认启用。

可通过两种方式来运行 HLK 测试:

  • 在未配置 S2D 的设置中(即,让测试配置S2D):

    • 运行“S2D - 为测试准备计算机”
    • 运行“S2D - 设置存储群集”
    • 运行“S2D - 基本验证测试”
    • 运行“S2D - 压力测试”
  • 在现有的 S2D 群集上:

    • 应预配一个 256 GB 的卷(虚拟磁盘),测试将使用此卷。
    • 对于双节点群集,必须具有仲裁见证。
    • 运行“S2D - 为测试准备计算机”
    • 运行“S2D - 基本验证测试”
    • 运行“S2D - 压力测试”

在 HLK Studio 中执行以下操作:

  1. 在“项目”选项卡中,双击之前创建的项目(如果尚未选择)。 选择项目名称后,该名称将显示为视图标题。

  2. 单击“选择”选项卡。

    1. 选择之前创建的包含群集和测试控制器的计算机池。

    2. 选择左侧的“系统”,然后选中列表中显示的第一个群集节点。

      请确保仅选择了一个节点,并且不会无意中选择测试控制器。

    3. 右键单击所选计算机,然后选择“添加/修改功能”。

      add/modify features

    4. 在打开的对话框中,从“设备功能列表”中选择“System.Solutions.StorageSpacesDirect”,然后选择“确定”。

  3. 在“ 测试 ”选项卡中,选择“测试 S2D - 准备测试的计算机”,然后选择“ 运行选定”。run selected machines

  4. 指定所需参数。

    1. 对于参数 Domain、UserName 和 Password,请输入域用户的相应信息,该域用户对计算机池中的所有计算机具有管理员访问权限。
    2. 在“角色”下拉列表中,应选择“PrimaryNode”。 在计算机列表中,确认已选中“选择”选项卡中所选的节点。 此外:
      1. 在“角色”下拉列表中选择“TestController”,然后从计算机列表中选择测试控制器。
      2. 在“角色”下拉列表中选择“OtherNodes”,然后选择群集中的其余节点。
      3. 在继续操作之前,请确保已选择所有计算机。
  5. 选择“确定”以运行作业。 这会准备计算机。

    prepare the machines

  6. HLK Studio 窗口底部将显示一个进度栏。 该过程完成后,测试作业的“状态”列中将出现一个绿色复选标记。 如果状态显示为红色 X,则测试作业失败。 有关详细信息,请参阅故障排除

该过程运行大约需要 10 分钟。 如果计算机重启的时间超过 5 分钟,则可能需要更长时间。

创建群集、存储池和虚拟磁盘

为测试准备好计算机后,还需要配置 S2D,然后才能运行相关测试。 以下作业将创建群集、启用 S2D,并配置池和空间。

重要

只有在尚未创建现有群集、存储池或虚拟磁盘时,此作业才会成功。 运行此作业之前,请首先删除所有虚拟磁盘、存储池和群集角色。 同时删除群集本身。 如果已创建群集,启用了 S2D 并且配置和验证了池和空间,请跳过此步骤,继续运行测试。

  1. 在 HLK Studio 的“测试”选项卡中,选择测试“S2D - 设置存储群集”和“运行选定的群集”,然后指定所需的参数和角色。

    1. 对于参数 ClusterName,输入要创建的群集的名称作为其值。 (你需要为以后的测试提供相同的群集名称。)
    2. 如果将静态 IP 地址分配给群集,则还可以在 ClusterStaticIP 字段中输入 IP 地址。 否则,将此参数保留为空。 地址将分配给群集名称。
    3. 除非另有指示,否则将其他参数留空。
    4. 在“角色”下拉列表中,应选择“PrimaryNode”。 在计算机列表中,确认已选中“选择”选项卡中所选的节点。 此外:
      1. 在“角色”下拉列表中选择“TestController”,然后从计算机列表中选择测试控制器。
      2. 在“角色”下拉列表中选择“OtherNodes”,然后在计算机列表中选择群集中的其他节点。
      3. 在继续操作之前,请确保已选择所有计算机。
  2. 选择“确定”以运行作业。 这会创建群集并设置 S2D。

    run s2d job

  3. HLK Studio 窗口底部将显示一个进度栏。 该过程完成后,测试作业的“状态”列中将出现一个绿色复选标记。 如果状态显示为红色 X,则测试作业失败。 有关详细信息,请参阅故障排除

完成此作业大约需要 15 分钟。 如果计算机需要 5 分钟以上时间才能重启,或者磁盘数量很大,则可能需要更长时间。

运行测试

运行基本验证测试 (BVT)

BVT 执行两种类型的测试:

  • 一种测试类型将群集共享卷 (CSV) 移动到节点之间的存储空间直通之上,同时执行随机写入 I/O。 它还验证 I/O 是否不间断,以及 CSV 是否未失败。
  • 另一种测试类型通过停止群集服务、终止群集服务、逐出节点、正常重启计算机和非正常重启计算机来关闭节点。 (每个操作都面向随机 node.) 它还会执行随机写入 I/O,该 I/O 在节点故障期间针对相应的 CSV,并验证 I/O 未失败。

若要在 HLK 中运行这些测试:

  1. 在“测试”选项卡中,选择测试“S2D - 基本验证测试”和“运行选定的测试”,然后指定所需的参数和角色:

    1. 对于参数 ClusterName,输入群集的名称。 它应与之前为设置群集而提供的名称相同。
    2. 除非另有指示,否则请不要更改或填写其他参数。
    3. 在“角色”下拉列表中,应选择“PrimaryNode”。 在下面的计算机列表中,确认已选中“选择”选项卡中所选的节点。 此外:
      1. 在“角色”下拉列表中选择“TestController”,然后从计算机列表中选择测试控制器。
      2. 在“角色”下拉列表中选择“OtherNodes”,然后选择群集中的其余节点。
      3. 在继续操作之前,请确保已选择所有计算机。
  2. 选择“确定”以启动作业。 这会运行 BVT。

    run bvts

  3. HLK Studio 窗口底部将显示一个进度栏。 该过程完成后,测试作业的“状态”列中将出现一个绿色复选标记。 如果状态显示为红色 X,则测试作业失败。 有关详细信息,请参阅故障排除

运行此作业通常需要 30 到 60 分钟。 对于预览版,BVT 的预期通过率至少为 80%。

运行压力测试

压力测试会导致重复和随机的节点失败(通过停止或终止群集服务)。 如果配置允许,它们可能会导致多个节点失败。 在节点失败期间,测试从面向相应 CSV 的多个节点执行多个 I/O 流。 (每个流使用读取数据验证执行顺序/随机读/写。)

若要运行这些测试:

  1. 在 HLK Studio 的“测试”选项卡中,选择测试“S2D - 压力测试”和“运行选定的测试”,然后输入所需的参数:

    1. 对于参数 ClusterName,输入群集的名称。 它应与之前为设置群集而提供的名称相同。
    2. 除非另有指示,否则请不要更改或填写其他参数。
    3. 在“角色”下拉列表中,应选择“PrimaryNode”。 在下面的计算机列表中,确认已选中“选择”选项卡中所选的节点。 此外:
      1. 在“角色”下拉列表中选择“TestController”,然后从计算机列表中选择测试控制器。
      2. 在“角色”下拉列表中选择“OtherNodes”,然后选择群集中的其余节点。
      3. 在继续操作之前,请确保已选择所有计算机。
  2. 选择“确定”以运行作业。 这会运行压力测试。

    run stress tests

  3. HLK Studio 窗口底部将显示一个进度栏。 该过程完成后,测试作业的“状态”列中将出现一个绿色复选标记。 如果状态显示为红色 X,则测试作业失败。 有关详细信息,请参阅故障排除

对于预览版,压力测试的预期通过率至少为 60%。 使用默认参数运行此测试作业通常需要 45 分钟到 1 小时。 但是,在它使用默认参数传递一次后,建议通过为 TestRunTime 提供更大的值,以更长的运行时再次运行它。 (这指定核心运行时(以秒为单位);由于测试设置和清理,作业通常运行 15 到 30 分钟。) 此作业支持最长 24 小时的运行时间。

疑难解答

如果作业或测试失败,可以检查相应的日志来发现失败的原因。 如果需要,可以将日志转发给相应的人员,以帮助进行调查。 这些文档将作业的每次运行引用为“结果”。

获取测试日志

  1. 当你位于运行测试的同一 S2D 项目时,在 HLK Studio 中选择“结果”选项卡。

  2. 通过选择测试名称左侧的三角形,展开要进行故障排除的测试。

  3. 如果多次运行测试,将显示多个结果。 每个结果将显示一个时间戳,并标识运行该时间戳的计算机。 右键单击要进行故障排除的结果,然后选择 “其他文件>全部显示”。 这将在包含测试日志和相关日志的文件资源管理器中打开一个窗口。show all test logs

  4. 测试日志的文件名以“TST-”开头。如果在测试作业中运行了多个测试任务,则可能存在多个测试日志文件。 例如,BVT 可能有一个执行移动 CSV 的测试任务,还有一个执行存储缩放单元 (SSU) 故障的测试任务。 (由于直接附加存储拓扑,每个节点及其存储都被视为一个 SSU.) 变体名称位于文件名 (以及 Calabria(存储空间直通) 的代码名称)。

    test log file names

  5. 在有多个测试日志文件的情况下,若要快速查看哪个任务失败,请首先展开结果,以便显示其任务。 然后,你可以查找显示红色“X”的任务。test failure

在前面的示例中,任务的图标指示“使用 CSV 移动验证 IO”失败(它只显示一个红色的“X”)。 它们还表明,“使用 SSU 失败验证 IO”没有运行,而是由于之前的失败而被跳过(它在弯曲箭头上显示一个红色 X)。

在文本编辑器中打开测试日志文件后,请搜索“SEV2”来查看测试是否失败,如果失败,则查看具体原因。 在下面的示例中,可以看到在机架恢复后空间未处于正常状态。 有关此失败的更多详细信息,请参阅常见已知问题

1940.1404 2015/01/09-16:36:14.867 [INFO] 0: [TST] 空间 ID: 19CFCDFCC19EB54AAA780436B2B1D859 池 ID: 5D12DF6A5D4DB444AA3407AFA5749578 易记名称: TestSpace 是手动附加的? 是 已群集? 是 复原类型: 2 预配类型: 2 副本数: 3 列数: 1 容错: 2 运行状况: 1 (警告) 状态: 11 (InService/Regenerating) 附加节点: RR1FSC2623N05-1 可见节点: RR1FSC2623N05-1 RR1FSC2623N05-2 RR1FSC2623N28-1 RR1FSC2623N28-2 此空间使用的驱动程序: [base\cluster\testsrc\common\storagewrapper\swvirtualdisk.cpp@66: ctsw::SWVirtualDisk::QuerySpInfo()] [orchestrator.cpp@192]

错误: 1940.1404 2015/01/09-16:36:14.867 [ SEV2] 0 : [TST]Status=-2147418113(8000FFFFH) 'CalabriaBVT::VerifyIOWithRackFailure' - 意外行为: 机架恢复后空间未处于正常状态。 [base\cluster\testsrc\calabria\calabriabvt\calabriabvt.cpp@1359 CalabriaBVT::VerifyIOWithRackFailure()] [calabriabvt.cpp@1379]

1940.1404 2015/01/09-16:36:14.867 [INFO] 0 :[TST] 错误消息 2147549183 (0x8000ffff): 灾难性故障 [wttlog.cpp@1237]

错误: TAEF: "TerminateOnFirstFailure" 设置 - 正在忽略以下所有测试并尝试正常终止。

EndGroup: CalabriaBVT::VerifyIOWithRackFailure [Failed]

错误: 1940.1404 2015/01/09-16:36:14.867 [SEV2] 0 : [TST]Status=-2147418113(8000FFFFH) 'CalabriaBVT::VerifyIOWithRackFailure' - 意外行为: 机架恢复后空间未处于正常状态。 [base\cluster\testsrc\calabria\calabriabvt\calabriabvt.cpp@1359 CalabriaBVT::VerifyIOWithRackFailure()] [calabriabvt.cpp@1379]

此问题的压力测试的示例输出:

1148.035C 2015/01/12-14:41:10.489 [INFO] 0 : [TST] 等待所有空间都处于正常状态。空间 19CFCDFCC19EB54AAA780436B2B1D859 状态为 InService/Regenerating [calabriastress.cpp@938]

错误: 1148.035C 2015/01/12-14:41:10.489 [SEV2] 0:[TST]Status=258(102H) 验证失败: 并非所有空间在 1200000 毫秒的超时时间内达到正常状态。 可能继续等待直到等待超时。 [calabriastress.cpp@962]

1148.035C 2015/01/12-14:41:10.505 [INFO] 0: [TST] 错误消息 258 (0x102): 等待操作超时。[wttlog.cpp@1237]

获取群集和存储诊断日志

若要获取失败结果的群集和存储诊断日志:

  1. 展开失败的结果,以便显示其测试任务。

  2. 右键单击任务 RunJob-Generate 群集和存储诊断日志,然后选择 “任务日志>全部显示”。 这会在文件资源管理器中打开一个包含群集和存储诊断日志的窗口。 这些日志可提供有关测试失败原因的其他详细信息。

    show task logs

将日志发送到 Microsoft 进行测试失败分析

如果需要将日志发送给 Microsoft 来帮助分析测试失败,请参阅打包结果部分,了解创建 .HLKX 结果包的步骤。 此包将包含由测试生成和收集的相关日志,并有助于分析失败。

常见已知问题

测试失败的最常见原因是,在一个或多个节点关闭并恢复后,一个或多个空间花费太长时间来重新生成数据(太长时间处于维护/重新生成状态)。 不均匀的存储性能可能导致重新生成超时并导致测试失败。 如果此问题频繁出现,则配置可能会产生性能瓶颈。 如果是这种情况,建议检查存储、网络性能和远程直接内存访问 (RDMA)。

此问题的 BVT 的示例输出:

1940.1404 2015/01/09-16:36:14.867 [INFO] 0: [TST] 空间 ID: 19CFCDFCC19EB54AAA780436B2B1D859 池 ID: 5D12DF6A5D4DB444AA3407AFA5749578 易记名称: TestSpace 是手动附加的? 是 已群集? 是 复原类型: 2 预配类型: 2 副本数: 3 列数: 1 容错: 2 运行状况: 1 (警告) 状态: 11 (InService/Regenerating) 附加节点: RR1FSC2623N05-1 可见节点: RR1FSC2623N05-1 RR1FSC2623N05-2 RR1FSC2623N28-1 RR1FSC2623N28-2 此空间使用的驱动程序: [base\cluster\testsrc\common\storagewrapper\swvirtualdisk.cpp@66: ctsw::SWVirtualDisk::QuerySpInfo()] [orchestrator.cpp@192]

错误: 1940.1404 2015/01/09-16:36:14.867 [SEV2] 0 : [TST]Status=-2147418113(8000FFFFH) 'CalabriaBVT::VerifyIOWithRackFailure' - 意外行为: 机架恢复后空间未处于正常状态。 [base\cluster\testsrc\calabria\calabriabvt\calabriabvt.cpp@1359 CalabriaBVT::VerifyIOWithRackFailure()] [calabriabvt.cpp@1379]

此问题的压力测试的示例输出:

1148.035C 2015/01/12-14:41:10.489 [INFO] 0 : [TST] 等待所有空间都处于正常状态。空间 19CFCDFCC19EB54AAA780436B2B1D859 状态为 InService/Regenerating [calabriastress.cpp@938]

错误: 1148.035C 2015/01/12-14:41:10.489 [SEV2] 0:[TST]Status=258(102H) 验证失败: 并非所有空间在 1200000 毫秒的超时时间内达到正常状态。 可能继续等待直到等待超时。 [calabriastress.cpp@962]

1148.035C 2015/01/12-14:41:10.505 [INFO] 0: [TST] 错误消息 258 (0x102): 等待操作超时。[wttlog.cpp@1237]

打包结果

所有测试均已成功完成,并且仍处于 HLK Studio 中的同一项目中时,请依次选择“包”选项卡和右下角的“创建包”。 系统提示你使用签名选项时,请选择“不签名”。 将结果保存到文件。 此文件需要包含在任何 S2D 认证提交中。

signing options

术语

术语 说明
BVT 基本验证测试
CSV 群集共享卷
DAS 直接连接的存储
HCK (Windows) 硬件认证包,以前用于认证测试的工具包
HLK (Windows) Hardware Lab Kit,用于帮助验证 Windows 硬件配置的测试框架。 它还用于运行本主题中所述的测试。
HLKC HLK 控制器,管理员用于运行测试和管理其他计算机的服务器。 这不一定包含在群集中。
TC 测试控制器,它是一些测试将在其上运行来面向群集的服务器。 这不一定包含在群集中。
S2D Storage Spaces Direct

其他资源

Windows Hardware Lab Kit