使用esxcli命令将多路径 PSA 声明规则添加到系统上的一组声明规则。为了激活新声明规则,请先定义规则,然后将其加载到系统中。

下面是一些添加 PSA 声明规则的示例:
  • 加载新的第三方 MPP 并且必须定义此模块声明的路径。
  • 您必须启用本机 HPP。
警告: 您不能在两个不同的插件声明路径指向同一设备的情况下创建规则。尝试创建这些声明规则失败, vmkernel.log 中会显示警告。

前提条件

安装 vCLI 或部署 vSphere Management Assistant (vMA) 虚拟机。请参见《vSphere Command-Line Interface 入门》。要进行故障排除,请在 ESXi Shell 中运行 esxcli 命令。

过程

  1. 要定义新声明规则,请使用以下命令:
    esxcli storage core claimrule add

    该命令采用以下选项:

    选项 描述
    -A|--adapter=<adapter> 要使用的路径适配器。仅当 --typelocation 时才有效。
    -u|--autoassign 根据声明特性添加声明规则。规则编号并非必填项。
    -C|--channel=<channel> 要使用的路径通道。仅当 --typelocation 时才有效。
    -c|--claimrule-class=<cl> 此操作中要使用的声明规则类。您可以指定 MP(默认值)、FilterVAAI

    要为新的阵列配置硬件加速,请添加两个声明规则:一个用于 VAAI 筛选器,另一个用于 VAAI 插件。有关详细说明,请参见添加硬件加速声明规则

    -d|--device=<device_uid> 设备 UID。 仅当 --typedevice 时才有效。
    -D|--driver=<driver> 要使用的路径 HBA 的驱动程序。仅当 --typedriver 时才有效。
    -f|--force 强制声明规则在任何情况下均忽略有效性检查并安装规则。
    --force-reserved 替代对预留规则 ID 范围的保护。

    预留声明规则是指 ID 小于 100 的规则。您可以使用它们将本地设备重新分配给特定的插件,例如将 NVMe 设备重新分配给 HPP。

    --if-unset=<str> 如果此高级用户变量未设置为 1,请运行该命令。
    -i|--iqn=<iscsi_name> 目标的 iSCSI 限定名称。 仅当 --typetarget 时才有效。
    -L|--lun=<lun_id> 路径的 LUN。仅当 --typelocation 时才有效。

    LUN ID 不得高于高级配置选项 /Disk/MaxLUN 的值。

    -M|--model=<model> 要使用的路径型号。仅当 --typevendor 时才有效。

    有效值是 SCSI 查询字符串中的型号字符串的值。在每台设备上运行 vicfg-scsidevs <conn_options> -l 以查看型号字符串值。

    -P|--plugin=<plugin> 要使用的 PSA 插件。值为 NMPMASK_PATHHPP。第三方还可以提供自己的 PSA 插件。必需。
    -r|--rule=<rule_ID> 要使用的规则 ID。规则 ID 指示声明规则的评估顺序。用户定义的声明规则按照从 101 开始的数字顺序进行评估。

    您可以运行 esxcli storage core claimrule list 以确定哪些规则 ID 可用。

    -T|--target=<target> 要使用的路径目标。仅当 --typelocation 时才有效。
    -R|--transport=<transport>

    要使用的路径传输。仅当 --typetransport 时才有效。支持以下值。

    • block— 块存储
    • fc— 光纤通道
    • iscsivendor— iSCSI
    • iscsi— 当前未使用
    • ide— IDE 存储
    • sas— SAS 存储
    • sata— SATA 存储
    • usb— USB 存储
    • parallel— 并行
    • fcoe— FCoE
    • unknown
    -t|--type=<type> 用于操作的匹配类型。以下为有效值。必需。
    • vendor
    • location
    • driver
    • transport
    • device
    • target
    -V|--vendor=<vendor> 要使用的路径供应商。仅当 --typevendor 时才有效。

    有效值是 SCSI 查询字符串中的供应商字符串的值。在每台设备上运行 vicfg-scsidevs <conn_options> -l 以查看供应商字符串值。

    --wwnn=<wwnn> 目标的全球节点编号。
    --wwpn=<wwpn> 目标的全球端口编号。
    -a|--xcopy-use-array-values 使用阵列报告的值来构建要发送到存储阵列的 XCOPY 命令。这仅适用于 VAAI 声明规则。
    -s|--xcopy-use-multi-segs 当发出 XCOPY 请求时,使用多个分段。仅当指定 --xcopy-use-array-values 时才有效。
    -m|--xcopy-max-transfer-size 使用不同于阵列所报告的传输大小时的最大数据传输大小 (MB)。仅当指定 --xcopy-use-array-values 时才有效。
    -k|--xcopy-max-transfer-size-kib 使用不同于阵列所报告的传输大小时 XCOPY 命令的最大传输大小 (KiB)。仅当指定 --xcopy-use-array-values 时才有效。
  2. 要将新声明规则加载到系统中,请使用以下命令:
    esxcli storage core claimrule load
    此命令会将 esx.conf 配置文件中所有新创建的多路径声明规则加载到 VMkernel 中。该命令没有选项。
  3. 要应用加载的声明规则,请使用以下命令:
    esxcli storage core claimrule run

    该命令采用以下选项:

    选项 描述
    -A|--adapter=<adapter> 如果 --typelocation,表示在其上运行声明规则的路径的 HBA 名称。要从所有适配器的路径上运行声明规则,请忽略此选项。
    -C|--channel=<channel> 如果 --typelocation,表示在其上运行声明规则的路径的 SCSI 通道号的值。要在含任何通道号的路径上运行声明规则,请忽略此选项。
    -c|--claimrule-class=<cl> 此操作中要使用的声明规则类。
    -d|--device=<device_uid> 设备 UID。
    -L|--lun=<lun_id> 如果 --typelocation,表示在其上运行声明规则的路径的 SCSI LUN 值。要在含任何 LUN 的路径上运行声明规则,请忽略此选项。
    -p|--path=<path_uid> 如果 --typepath,则此选项指示唯一路径标识符 (UID) 或在其上运行声明规则的路径的运行时名称。
    -T|--target=<target> 如果 --typelocation,表示在其上运行声明规则的路径的 SCSI 目标编号值。要在含任何目标编号的路径上运行声明规则,请忽略此选项。
    -t|--type=<location|path|all> 要执行的声明类型。默认情况下,将使用 all,这意味着在不限于特定路径或 SCSI 地址的情况下运行声明规则。有效值为 locationpathall
    -w|--wait 仅当还使用了 --type all 时才可以使用此选项。

    如果包括此选项,则声明将等待路径进入稳定状态后,再运行声明操作。在这种情况下,只有在开始声明过程之前系统上的所有路径都出现后,系统才会启动声明过程。

    声明过程开始后,该命令在设备注册完成后返回。

    如果在声明或发现过程中添加或移除路径,则此选项可能无法正常工作。

示例: 定义多路径声明规则

在以下示例中,将添加并加载编号为 500 的规则。此规则为 NMP 插件声明型号字符串为 NewMod 以及供应商字符串为 NewVend 的所有路径。

# esxcli storage core claimrule add -r 500 -t vendor -V NewVend -M NewMod -P NMP

# esxcli storage core claimrule load

运行 esxcli storage core claimrule list 命令之后,可以看到新的声明规则显示在列表中。

以下输出表明编号为 500 的声明规则已加载到系统中,并处于活动状态。
Rule Class  Rule   Class    Type       Plugin     Matches
...         ...    ...      ...        ...        ...
MP          500    runtime  vendor     NMP        vendor=NewVend model=NewMod  
MP          500    file     vendor     NMP        vendor=NewVend model=NewMod