声明规则会确定哪个多路径模块拥有通往特定存储设备的路径。他们也定义了主机向设备提供的多路径支持的类型。
要了解有关多路径模块的更多信息,请参见多路径概念和缩写。
声明规则在主机的 /etc/vmware/esx.conf 文件中列出。
- 核心声明规则。这些声明规则会确定 NMP、HPP 或第三方 MPP 中的哪个多路径模块为特定设备提供声明。
- SATP 声明规则。根据设备类型,这些规则会分配特定 SATP 子模块,为设备提供特定于供应商的多路径管理。
您可以使用 esxcli 命令添加或更改核心和 SATP 声明规则。通常情况下,您要添加声明规则以加载第三方 MPP,或从主机中隐藏 LUN。如果特定设备的默认设置不足,则可能需要更改声明规则。
有关可用于管理 PSA 声明规则的命令的详细信息,请参见《ESXCLI 入门》。
有关存储阵列和相应的 SATP 和 PSP 的列表,请参见以下文档的“存储/SAN”一节:vSphere Compatibility Guide。
多路径注意事项
管理存储多路径插件和声明规则时,需考虑一些特定的注意事项。
以下注意事项可帮助您使用多路径:
- 如果声明规则未将任何 SATP 分配给设备,则 iSCSI 或 FC 设备的默认 SATP 将是 VMW_SATP_DEFAULT_AA。默认 PSP 是 VMW_PSP_FIXED。
- 当系统搜索 SATP 规则以查找给定设备的 SATP 时,会首先搜索驱动程序规则。如果没有匹配项,则搜索供应商/型号规则,最后搜索传输规则。如果未出现匹配项,NMP 将选择设备的默认 SATP。
- 如果已将 VMW_SATP_ALUA 分配给某特定存储设备,但该设备不能识别 ALUA,则该设备将没有任何匹配的声明规则。设备将由默认 SATP 根据设备的传输类型进行声明。
- 由 VMW_SATP_ALUA 声明的所有设备的默认 PSP 是 VMW_PSP_MRU。VMW_PSP_MRU 选择由 VMW_SATP_ALUA 报告的主动/优化的路径,如果没有主动/优化的路径,则选择主动/未优化的路径。在有更好的路径可用 (MRU) 之前,将一直使用此路径。例如,如果 VMW_PSP_MRU 当前正在使用主动/未优化的路径,那么,当主动/优化的路径变为可用时,VMW_PSP_MRU 会将当前路径切换到主动/优化的路径。
- 尽管默认情况下通常为 ALUA 阵列选择 VMW_PSP_MRU,但某些 ALUA 存储阵列仍需使用 VMW_PSP_FIXED。要查看存储阵列是否需要使用 VMW_PSP_FIXED,请参阅《VMware 兼容性指南》或联系存储供应商。如果将 VMW_PSP_FIXED 用于 ALUA 阵列,则除非明确指定首选路径,否则 ESXi 主机将选择最优的工作路径,并将其指定为默认首选路径。如果主机选择的路径不可用,主机将选择替代的可用路径。但如果您明确指定首选路径,则无论其为何状态,都将始终为首选路径。
- 默认情况下,PSA 声明规则 101 会屏蔽 Dell 阵列伪设备。除非您要取消屏蔽这些设备,否则请不要删除此规则。
列出主机的多路径声明规则
使用 esxcli命令可列出可用的多路径声明规则。
声明规则指出是 NMP、HPP 还是第三方 MPP 管理给定的物理路径。每个声明规则基于以下参数标识一组路径:
- 供应商/型号字符串
- 传输,如 SATA、IDE、光纤通道
- 适配器、目标或 LUN 位置
- 设备驱动程序(如 Mega-RAID)
过程
- ♦ 通过运行 esxcli storage core claimrule list --claimrule-class=MP 命令来列出多路径声明规则。
如果不使用 claimrule-class选项,则隐含 MP 规则类。
示例: esxcli storage core claimrule list 命令的示例输出
Rule Class Rule Class Type Plugin Matches MP 10 runtime vendor HPP vendor=NVMe model=* MP 10 file vendor HPP vendor=NVMe model=* MP 50 runtime transport NMP transport=usb MP 51 runtime transport NMP transport=sata MP 52 runtime transport NMP transport=ide MP 53 runtime transport NMP transport=block MP 54 runtime transport NMP transport=unknown MP 101 runtime vendor MASK_PATH vendor=DELL model=Universal Xport MP 101 file vendor MASK_PATH vendor=DELL model=Universal Xport MP 200 runtime vendor MPP_1 vendor=NewVend model=* MP 200 file vendor MPP_1 vendor=NewVend model=* MP 201 runtime location MPP_2 adapter=vmhba41 channel=* target=* lun=* MP 201 file location MPP_2 adapter=vmhba41 channel=* target=* lun=* MP 202 runtime driver MPP_3 driver=megaraid MP 202 file driver MPP_3 driver=megaraid MP 65535 runtime vendor NMP vendor=* model=*
- NMP 声明与使用 USB、SATA、IDE 和块 SCSI 传输的存储设备相连的所有路径。
- 已添加 HPP、MPP_1、MPP_2 和 MPP_3 规则,以便模块可声明指定设备。例如,HPP 声明供应商为 NVMe 的所有设备。无论实际供应商如何,所有由内置的 nvme 驱动程序处理的设备均已声明。MPP_1 模块声明与任何型号 NewVend 存储阵列相连的所有路径。
- 可以使用 MASK_PATH 模块隐藏主机中未使用的设备。默认情况下,PSA 声明规则 101 会屏蔽供应商字符串为 DELL且型号字符串为 Universal Xport 的 Dell 阵列伪设备。
- 输出中的“Rule Class”列说明声明规则的类别。类别可以是 MP(多路径插件)、Filter 或 VAAI。
- “Class”列显示已定义的规则和已加载的规则。“Class”列中的file参数表示规则已定义。runtime参数表示规则已被加载到系统中。为了激活用户定义的声明规则,必须存在两个具有相同规则编号的行,一行是具有 file参数的规则,另一行是具有runtime 的规则。几个默认系统定义的声明规则只有一行,其“Class”为runtime。您无法修改这些规则。
- 默认规则 65535 将所有空闲路径分配给 NMP。请勿删除此规则。
添加多路径声明规则
使用 esxcli 命令将多路径 PSA 声明规则添加到系统上的一组声明规则。为了激活新声明规则,请先定义规则,然后将其加载到系统中。
- 加载新的第三方 MPP 并且必须定义此模块声明的路径。
- 您必须启用本机 HPP。
前提条件
安装 ESXCLI。请参见《ESXCLI 入门》。要进行故障排除,请在 ESXi Shell中运行 esxcli 命令。
过程
示例: 定义多路径声明规则
在以下示例中,将添加并加载编号为 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 命令之后,可以看到新的声明规则显示在列表中。
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
删除多路径声明规则
使用 esxcli命令将多路径 PSA 声明规则从系统上的一组声明规则中移除。
前提条件
安装 ESXCLI。请参见《ESXCLI 入门》。要进行故障排除,请在 ESXi Shell中运行 esxcli 命令。
过程
屏蔽路径
可以阻止主机访问存储设备或 LUN,或阻止其使用指向某个 LUN 的单个路径。使用 esxcli 命令可屏蔽路径。屏蔽路径时,请创建声明规则,该规则将 MASK_PATH 插件分配给指定路径。
前提条件
安装 ESXCLI。请参见《ESXCLI 入门》。要进行故障排除,请在 ESXi Shell中运行 esxcli 命令。
过程
结果
示例: 屏蔽 LUN
在此示例中,屏蔽目标 T1 和 T2 上通过存储适配器 vmhba2 和 vmhba3 访问的 LUN 20。
-
#esxcli storage core claimrule list
-
#esxcli storage core claimrule add -P MASK_PATH -r 109 -t location -A vmhba2 -C 0 -T 1 -L 20 #esxcli storage core claimrule add -P MASK_PATH -r 110 -t location -A vmhba3 -C 0 -T 1 -L 20 #esxcli storage core claimrule add -P MASK_PATH -r 111 -t location -A vmhba2 -C 0 -T 2 -L 20 #esxcli storage core claimrule add -P MASK_PATH -r 112 -t location -A vmhba3 -C 0 -T 2 -L 20
-
#esxcli storage core claimrule load
-
#esxcli storage core claimrule list
-
#esxcli storage core claiming unclaim -t location -A vmhba2 #esxcli storage core claiming unclaim -t location -A vmhba3
-
#esxcli storage core claimrule run
取消路径屏蔽
当需要主机访问被屏蔽的存储设备时,请取消对该设备路径的屏蔽。
前提条件
安装 ESXCLI。请参见《ESXCLI 入门》。要进行故障排除,请在 ESXi Shell中运行 esxcli 命令。
过程
结果
定义 NMP SATP 规则
NMP SATP 声明规则定义存储设备由哪些 SATP 来管理。通常情况下,您可以使用为存储设备提供的默认 SATP。如果默认设置不充足,请使用 esxcli命令更改特定设备的 SATP。
前提条件
安装 ESXCLI。请参见《ESXCLI 入门》。要进行故障排除,请在 ESXi Shell中运行 esxcli 命令。
过程
示例: 定义 NMP SATP 规则
以下示例命令将分配 VMW_SATP_INV 插件以管理供应商字符串为 NewVend 和型号字符串为 NewMod 的存储阵列。
# esxcli storage nmp satp rule add -V NewVend -M NewMod -s VMW_SATP_INV
运行 esxcli storage nmp satp list -s VMW_SATP_INV 命令时,您可以看到新规则已位于 VMW_SATP_INV 规则列表中。