使用 Qutil 在 Windows 主机上设置 Windows 注册表


最后修订日期: 2019-12-11

概述

Qutil 是一种 PowerShell 脚本,用于设置所需 Windows 注册表,以确保 Windows 主机正确处理 QNAP ES NAS 的存储系统行为。此外,用户可以选择哪些 QNAP LUN 需要使用 Qutil 设置为优化负载平衡策略。

基本规范:

项目 描述
支持的固件 QTS:4.2.x 及更高版本
QES:所有版本
支持的操作系统 Windows Server 2008 及更高版本
多语言 仅英语

负载平衡策略

您可以从以下 Microsoft 多路径 I/O (MPIO) 策略中进行选择:
Fail Over Only(仅故障转移)- 此策略不执行负载平衡。此策略只使用一个活动路径,其余路径为备用路径。活动路径用于发送所有 I/O。如果活动路径出现故障,则使用备用路径之一。当出现故障的路径被重新激活或重新连接时,已激活的备用路径将返回到备用状态。
Round Robin(协商会议)- 此负载平衡策略允许设备特定模块 (DSM) 均衡使用 MPIO 的所有可用路径。当存储控制器采用双主动型号且管理应用程序未专门选择负载平衡策略时,选择此策略为默认策略。
Round Robin with Subset(带子集的协商会议)- 此负载平衡策略允许应用程序指定一部分路径,循环使用,并有一组备用路径。只要这些路径中至少有一个可用,DSM 就使用主路径池中的路径来处理请求。只有所有主路径都出现故障时,DSM 才会使用备用路径。例如,共有 4 条路径:A、B、C 和 D,路径 A、B 和 C 列为主路径,D 为备用路径。只要 A、B 和 C 中至少有一个可用,DSM 便从中循环选择一个路径使用。如果这三个路径都出现故障,DSM 便会使用备用路径 D。如果路径 A、B 或 C 恢复可用,DSM 会停止使用路径 D 并切换到 A、B 和 C 中的可用路径。
Least Queue Depth(最少队列深度)- 此负载平衡策略可将 I/O 发送到当前未完成的 I/O 请求最少的路径中。例如,假设将一个 I/O 发送到路径 1 上的 LUN 1,将另一个 I/O 发送到路径 1 上的 LUN 2。路径 1 上累计未完成的 I/O 为 2,路径 2 上为 0。因此,任何一个 LUN 的下一个 I/O 都将在路径 2 上处理。
Weighted Paths(加权路径)- 此负载平衡策略为每条路径分配一个权重。权重指示给定路径的相对优先级。数字越大,优先级越低。DSM 从可用路径中选择权重最小的路径。
Least Blocks(最少块)- 此负载平衡策略将 I/O 发送到当前处理的数据块数最少的路径中。例如,假设有两个 I/O:一个是 10 个字节,另一个是 20 个字节。两者都正在路径 1 上处理,并且已在路径 2 上完成。路径 1 上累计未完成的 I/O 量为 30 个字节。路径 2 上为 0。因此,下一个 I/O 将在路径 2 上处理。

配置 iSCSI 发起程序 MPIO

  1. 单击“Start”(开始),在“Start Search”(开始搜索)中键入“iSCSI”,然后在“Programs”(程序)下单击“iSCSI Initiator”(iSCSI 发起程序)。
  2. 如果这是您第一次启动 Microsoft iSCSI 发起程序,将收到一个提示,指出 Microsoft iSCSI 服务未运行。必须启动服务,Microsoft iSCSI 发起程序才能正确运行。单击“Yes”(是)启动服务。此时会打开 Microsoft“iSCSI Initiator Properties”(iSCSI 发起程序属性)窗口。
  3. 单击“Discovery”(发现)选项卡。要添加目标门户,请单击“Discover Portal”(发现门户),然后在“Discover Target Portal”(发现目标门户)对话框中键入要连接到的目标门户的 IP 地址或名称。我们将会添加属于同一子网的双控制器数据端口(相对于管理端口)的 IP 地址。将 TCP 端口保留为默认值 3260。
  4. 然后,“Targets”(目标)选项卡下会显示可用的 iSCSI 目标及其状态。选择要连接到的目标,然后单击“Connect”(连接)。
  5. 选择“Enable multi-path”(启用多路径),然后单击“Advanced”(高级)。
  6. 在“Advanced Settings”(高级设置)窗口中,选择“Microsoft iSCSI Initiator”(Microsoft iSCSI 发起程序)作为“Local adapter”(本地适配器)。然后分别从“Initiator IP”(发起程序 IP)下拉列表和“Target portal IP”(目标门户 IP)下拉列表中选择一个 IP 地址。请确保发起程序 IP 和目标门户 IP 位于同一子网中。
  7. 单击“OK”(确定)关闭窗口。
  8. 程序显示已成功连接至这些 iSCSI 目标之一。选择此目标,然后单击“Properties”(属性)。
  9. 在“Sessions”(会话)选项卡上,选择“Add session”(添加会话)。
  10. 选择“Enable multi-path”(启用多路径),然后单击“Advanced...”(高级...)。
  11. 添加属于不同子网的其他数据端口的 IP 地址。请确保发起程序 IP 和目标门户 IP 位于同一子网中。单击“OK”(确定)关闭窗口。
  12. 您应该会看到已添加另一个会话。单击“OK”(确定)关闭窗口。
  13. 重复步骤 3 至步骤 12,为其他 iSCSI 目标设置 MPIO。
  14. 为两个目标都配置 MPIO 后,添加要永久绑定到 iSCSI 服务的 iSCSI 卷和/或设备。这样可确保在计算机可以使用所有永久绑定的卷和设备之前,iSCSI 发起程序服务不会完成初始化。在“iSCSI Initiator Properties”(iSCSI 发起程序属性)窗口中选择“Volumes and Devices”(卷和设备)选项卡,然后单击“Auto Configure”(自动配置)以自动配置所有可用设备。在“Volume list”(卷列表)中,应该会看到一个名为“mpio#disk......”的新卷。单击“OK”(确定)关闭窗口。

通过 Qutil 设置的注册表值

Qutil 需要特定注册表设置,以确保 Windows 主机正确处理存储系统行为。这些设置会影响 Windows 主机对数据延迟或丢失的响应方式。已选择特定值以确保 Windows 主机正确处理事件,例如存储系统中一个控制器到其伙伴控制器的故障转移。

以下值由 Qutil 设置。除非另有说明,否则所有值都是十进制值。HKLM 是 HKEY_LOCAL_MACHINE 的缩写。

注册表项 (QNAP)
HKLM\SYSTEM\CurrentControlSet\Services\disk \TimeOutValue 60
HKLM\SYSTEM\CurrentControlSet\Control\Class\
{4D36E97B-E325-11CE-BFC1-08002BE10318}\0001(?)\Parameters\DelayBetweenReconnect
10
HKLM\SYSTEM\CurrentControlSet\Control\Class\
{4D36E97B-E325-11CE-BFC1-08002BE10318}\0001(?)\Parameters\LinkDownTime
300
HKLM\SYSTEM\CurrentControlSet\Control\Class\
{4D36E97B-E325-11CE-BFC1-08002BE10318}\0001(?)\Parameters\MaxRequestHoldTime
300
HKLM\SYSTEM\CurrentControlSet\Control\Class\
{4D36E97B-E325-11CE-BFC1-08002BE10318}\0001(?)\Parameters\SrbTimeoutDelta
300
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\PathVerificationPeriod 30
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\PDORemovePeriod 600
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\RetryCount 3
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\RetryInterval 1
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\DsmSupportedDeviceList "QNAP iSCSI Storage "
HKLM\SYSTEM\CurrentControlSet\Control\MPDEV \MPIOSupportedDeviceList "QNAP iSCSI Storage "
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\DurableHandleV2TimeoutInSecond 240
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\ExtendedSessTimeout 960
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\SessTimeout 240

注册表项 (NetApp)
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters \DsmMaximumRetryTimeDuringStateTransition 120
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\ DsmMaximumStateTransitionTime 120
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\DsmSupportedDeviceList   "XXX "
HKLM\SYSTEM\CurrentControlSet\Control\Class\ {iSCSI_driver_GUID}\ instance_ID\Parameters \IPSecConfigTimeout 60
HKLM\SYSTEM\CurrentControlSet\Control\Class\ {iSCSI_driver_GUID}\ instance_ID\Parameters \LinkDownTime 30
HKLM\SYSTEM\CurrentControlSet\Services\ClusDisk \Parameters\ManageDisksOnSystemBuses 1
HKLM\SYSTEM\CurrentControlSet\Control\Class\ {iSCSI_driver_GUID}\ instance_ID\Parameters \MaxRequestHoldTime 60
HKLM\SYSTEM\CurrentControlSet\Control\MPDEV \MPIOSupportedDeviceList "xxxx "
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\PathRecoveryInterval 40
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\PathVerifyEnabled 0
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\PathVerifyEnabled 0
HKLM\SYSTEM\CurrentControlSet\Services\msiscdsm \Parameters\PathVerifyEnabled 0
HKLM\SYSTEM\CurrentControlSet\Services\vnetapp \Parameters\PathVerifyEnabled 0
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\PDORemovePeriod 130
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\PDORemovePeriod 130
HKLM\SYSTEM\CurrentControlSet\Services\msiscdsm \Parameters\PDORemovePeriod 130
HKLM\SYSTEM\CurrentControlSet\Services\vnetapp \Parameters\PDORemovePeriod 130
HKLM\SYSTEM\CurrentControlSet\Services\ontapdsm \Parameters\ReservationTimeout 30
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\RetryCount 6
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\RetryCount 6
HKLM\SYSTEM\CurrentControlSet\Services\msiscdsm \Parameters\RetryCount 6
HKLM\SYSTEM\CurrentControlSet\Services\vnetapp \Parameters\RetryCount 6
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\RetryInterval 1
HKLM\SYSTEM\CurrentControlSet\Services\msdsm \Parameters\RetryInterval 1
HKLM\SYSTEM\CurrentControlSet\Services\msiscdsm \Parameters\RetryInterval 1
HKLM\SYSTEM\CurrentControlSet\Services\vnetapp \Parameters\RetryInterval 1
HKLM\SYSTEM\CurrentControlSet\Services\disk \TimeOutValue 60
HKLM\SYSTEM\CurrentControlSet\Services\mpio \Parameters\UseCustomPathRecoveryInterval 1

DsmMaximumStateTransitionTime 和 DsmMaximumRetryTimeDuringStateTransition 设置

DsmMaximumStateTransitionTime 和 DsmMaximumRetryTimeDuringStateTransition 设置用于指定在将 I/O 错误返回到堆栈中其上方层之前,Windows Server 2008、Windows Server 2008 R2 或 Windows Server 2012 msdsm 等待 ALUA 路径转换的时间。

DsmMaximumStateTransitionTime 和 DsmMaximumRetryTimeDuringStateTransition 设置用于在发生存储系统故障转移或其他事件之后等待完成路径状态转换的时间。这些设置用于 Windows Server 2008、Windows Server 2008 R2 和 Windows Server 2012 上的 MPIO 配置。

DsmSupportedDeviceList 设置

DsmSupportedDeviceList 设置用于指定 DSM 应申领具有指定供应商标识符和产品标识符 (VID/PID) 的存储设备。

已为在 Windows Server 2008、Windows Server 2008 R2 和 Windows Server 2012 中所包含的 msdsm 设置了此设置。msdsm 始终优先考虑其他 DSM。如果已安装并配置另一个 DSM 申领具有指定 VID/PID 的所有 LUN,则即使 msdsm 设置了此参数,其他 DSM 也会处理指定的 LUN。

IPSecConfigTimeout 设置

IPSecConfigTimeout 参数用于指定 iSCSI 发起程序等待发现服务为 iSCSI 连接配置或发布 ipsec 的时间。

此值可使发起程序服务在使用 CHAP 的启动速度缓慢的系统上正确启动。

LinkDownTime 设置

仅适用于 iSCSI,LinkDownTime 设置用于指定在设备队列中保留请求以及在丢失与目标的连接时重试请求的最长时间(以秒为单位)。

如果已安装 MPIO,则使用此值。如果未安装,则改用 MaxRequestHoldTime。

ManageDisksOnSystemBuses 设置

ManageDisksOnSystemBuses 参数由 SAN 启动的系统使用,用于确保启动磁盘、页面文件磁盘和群集磁盘都在同一 SAN 构造上。

有关 ManageDisksOnSystemBuses 参数的详细信息,请参阅 Microsoft 支持文章 886569

MaxRequestHoldTime 设置

MaxRequestHoldTime 设置用于指定当丢失与目标的连接且正在重试连接时,请求排入队列的最长时间(以秒为单位)。

经过此保留期之后,请求失败,失败原因为“错误,无设备”,并从系统中移除磁盘。支持的设置可使连接能够留存到预期的最长存储故障转移时间。

MPIOSupportedDeviceList

MPIOSupportedDeviceList 设置用于指定 Windows MPIO 组件应申领具有指定供应商标识符和产品标识符 (VID/PID) 的存储设备。

此参数不确定哪些 DSM 会处理已申领的设备;DsmSupportedDeviceList 设置用于指定要使用的 DSM。

PathRecoveryInterval 设置

PathRecoveryInterval 设置用于指定 MPIO 组件在重试连接丢失的路径之前的等待时间(以秒为单位)。

PathRecoveryInterval 设置会导致 MPIO 组件在决定磁盘设备不再可用之前尝试恢复曾出现暂时性错误的丢失路径。

请注意,此参数会影响系统上的所有 DSM。

PathVerifyEnabled 设置

PathVerifyEnabled 参数用于指定 Windows MPIO 驱动程序是否定期请求 DSM 检查其路径。

请注意,此参数会影响系统上的所有 DSM。

PDORemovePeriod 设置

此参数用于指定在设备丢失所有路径后多路径伪 LUN 保留在系统内存中的时长。

RetryCount 设置

RetryCount 参数用于指定在故障转移到备用路径之前 LUN 当前路径的重试次数。

RetryCount 设置支持从暂时性路径问题中恢复。如果在经过指定次数的重试后未恢复路径,则可能出现更严重的网络问题。

RetryInterval 设置

RetryInterval 参数用于指定每次重试连接失败路径之间的等待时长。此设置可使路径有机会在再次重试之前从暂时性问题中恢复。如果您正在使用的 NAS 型号采用了双控制器,并且遇到在 NAS 处于“接管”状态期间 iSCSI 或 SMB 丢失连接的情况,则可以检查此值是否经过修改不再是默认值。

TimeOutValue 设置

磁盘 TimeOutValue 参数用于指定在超时和向上述应用程序传递超时错误之前 I/O 请求在 SCSI 层的保留时间。

UseCustomPathRecoveryInterval 设置

UseCustomPathRecoveryInterval 设置可启用或禁用对 PathRecoveryInterval 设置的使用。

请注意,此参数会影响系统上的所有 DSM。

示例工作流

使用 mpclaim 列出所有 MPIO 托管磁盘

“mpclaim”命令可以列出采用负载平衡策略的所有 MPIO 磁盘:
> mpclaim -s -d

使用 mpclaim 更改特定磁盘的负载平衡策略

“mpclaim”命令还可以更改特定 MPIO 磁盘的负载平衡策略:
> mpclaim -l -d 0 3

列出所有 MPIO 托管磁盘

Qutil 应首先获取所有 MPIO 磁盘:
> get-wmiobject -Namespace root\wmi -Class mpio_get_descriptor

列出所有 MPIO 托管 QNAP 磁盘

Qutil 应通过筛选前缀为“6E843B6”的 SerialNumber 属性,获取 QNAP NAS 中的所有 MPIO 磁盘:
> (get-wmiobject -Namespace root\wmi -Class mpio_disk_info).driveinfo

列出每个 MPIO QNAP 磁盘的负载平衡策略

Qutil 应列出每个 MPIO QNAP 磁盘的负载平衡策略:
> (get-wmiobject -Namespace root\wmi -Class dsm_querylbpolicy_v2).loadbalancepolicy

LoadBalancePolicy 定义:

0:清除策略
1:仅故障转移
2:协商会议
3:带子集的协商会议
4:最少队列深度
5:加权路径
6:最少块
7:供应商特定

这篇文章有帮助吗?

谢谢您,我们已经收到您的意见。

请告诉我们如何改进这篇文章:

如果您想提供其他意见,请于下方输入。

选择规格

      显示更多 隐藏更多
      open menu
      back to top