存储多路径
动态多路径支持适用于光纤通道和 iSCSI 存储后端。
XenServer® 使用 Linux 原生多路径 (DM-MP)(通用的 Linux 多路径解决方案)作为其多路径处理程序。但是,XenServer 通过附加功能补充了此处理程序,以便 XenServer 可以识别存储设备的供应商特定功能。
配置多路径可在部分连接丢失时为远程存储流量提供冗余。多路径通过多条路径将存储流量路由到存储设备,以实现冗余和提高吞吐量。您可以为单个 LUN 使用多达 16 条路径。多路径是一种主动-主动配置。默认情况下,多路径根据存储阵列类型使用轮询或多总线负载平衡。在正常操作期间,所有路由上都有活动流量,从而提高了吞吐量。
重要:
我们建议您在创建 SR 之前 为池中的所有主机启用多路径。如果您在启用多路径之前创建 SR,则必须将主机置于维护模式才能启用多路径。
NIC 绑定也可以为存储流量提供冗余。对于 iSCSI 存储,我们建议尽可能配置多路径而不是 NIC 绑定。
在以下情况下,多路径无效:
- NFS 存储设备
- 您拥有的 NIC 数量有限,并且需要通过同一 NIC 路由 iSCSI 流量和文件流量(NFS 或 SMB)
在这些情况下,请考虑使用 NIC 绑定。有关 NIC 绑定的更多信息,请参阅 网络。
先决条件
在启用多路径之前,请验证以下陈述是否属实:
-
您的存储服务器上提供了多个目标。
例如,在给定门户上查询
sendtargets的 iSCSI 存储后端会返回多个目标,如下例所示:iscsiadm -m discovery --type sendtargets --portal 192.168.0.161 192.168.0.161:3260,1 iqn.strawberry:litchie 192.168.0.204:3260,2 iqn.strawberry:litchie然而,您可以执行额外的配置,为仅公开单个目标的阵列启用 iSCSI 多路径。有关更多信息,请参阅 仅公开单个目标的阵列的 iSCSI 多路径。
-
仅对于 iSCSI,控制域 (dom0) 在多路径存储使用的每个子网上都有一个 IP 地址。
确保您希望连接到存储的每个路径都有一块网卡 (NIC),并且每块网卡上都配置了 IP 地址。例如,如果您希望有四个路径连接到存储,则必须有四块网卡,每块网卡都配置了 IP 地址。
-
仅对于 iSCSI,每个 iSCSI 目标和发起程序都具有唯一的 IQN。
-
仅对于 iSCSI,iSCSI 目标端口以门户模式运行。
-
仅对于 HBA,多个 HBA 连接到交换机结构。
-
配置辅助接口时,每个辅助接口必须位于单独的子网上。例如,如果您想为存储配置另外两个辅助接口,则需要三个不同子网上的 IP 地址——一个子网用于管理接口,一个子网用于辅助接口 1,一个子网用于辅助接口 2。

此图显示了多路径 iSCSI 配置中主机上的两块网卡 (NIC) 必须位于不同的子网上。在此图中,主机上的 NIC 1 以及交换机 1 和两个存储控制器上的 NIC 1 位于与 NIC 2、交换机 2 和存储控制器上的 NIC 2 不同的子网上。
启用多路径
您可以在 XenCenter® 或 xe CLI 上启用多路径。
使用 XenCenter 启用多路径
-
在 XenCenter 的“资源”窗格中,右键单击主机并选择“进入维护模式”。
-
等待主机在“资源”窗格中重新出现维护模式图标(一个蓝色方块)后,再继续操作。
-
在主机的“常规”选项卡上,单击“属性”,然后转到“多路径”选项卡。
-
要启用多路径,请选中“在此服务器上启用多路径”复选框。
-
单击“确定”以应用新设置。XenCenter 保存新的存储配置时会有短暂延迟。
-
在“资源”窗格中,右键单击主机并选择“退出维护模式”。
-
重复这些步骤以在池中的所有主机上启用多路径。
确保在池中的所有主机上启用多路径。所有布线以及(对于 iSCSI)子网配置必须与每个主机上对应的 NIC 匹配。
使用 xe CLI 启用多路径
-
在 XenServer 主机上打开控制台。
-
使用以下命令拔出主机上的所有 PBD:
xe pbd-unplug uuid=<pbd_uuid> <!--NeedCopy-->您可以使用命令
xe pbd-list查找 PBD 的 UUID。 -
使用以下命令将
multipathing参数的值设置为true:xe host-param-set uuid=<host uuid> multipathing=true <!--NeedCopy--> -
如果服务器上存在以单路径模式运行但具有多路径的 SR:
-
迁移或暂停受影响 SR 中带有虚拟磁盘的任何正在运行的来宾
-
重新插入任何受影响 SR 的 PBD,以使用多路径重新连接它们:
xe pbd-plug uuid=<pbd_uuid> <!--NeedCopy-->
-
-
重复这些步骤以在池中的所有主机上启用多路径。
确保在池中的所有主机上启用多路径。所有布线以及(对于 iSCSI)子网配置必须与每个主机上对应的 NIC 匹配。
禁用多路径
您可以在 XenCenter 或 xe CLI 上禁用多路径。
使用 XenCenter 禁用多路径
-
在 XenCenter 的资源窗格中,右键单击主机,然后选择进入维护模式。
-
等待主机在资源窗格中重新出现并显示维护模式图标(一个蓝色方块),然后继续。
-
在主机的常规选项卡上,单击属性,然后转到多路径选项卡。
-
要禁用多路径,请清除在此服务器上启用多路径复选框。
-
单击确定以应用新设置。XenCenter 保存新的存储配置时会有短暂延迟。
-
在资源窗格中,右键单击主机,然后选择退出维护模式。
-
重复这些步骤以配置池中所有主机上的多路径。
使用 xe CLI 禁用多路径
-
在 XenServer 主机上打开控制台。
-
使用以下命令拔出主机上的所有 PBD:
xe pbd-unplug uuid=<pbd_uuid> <!--NeedCopy-->您可以使用命令
xe pbd-list查找 PBD 的 UUID。 -
使用以下命令将
multipathing参数的值设置为false:xe host-param-set uuid=<host uuid> multipathing=false <!--NeedCopy--> -
如果服务器上存在以单路径模式运行但具有多路径的现有 SR:
-
迁移或暂停受影响 SR 中包含虚拟磁盘的任何正在运行的虚拟机
-
拔出并重新插入任何受影响 SR 的 PBD,以使用多路径重新连接它们:
xe pbd-plug uuid=<pbd_uuid> <!--NeedCopy-->
-
-
重复这些步骤以禁用池中所有主机上的多路径。
配置多路径
要进行额外的临时多路径配置修改,请在目录 /etc/multipath/conf.d 中创建带有后缀 .conf 的文件。将额外的配置添加到这些文件中。多路径会按字母顺序搜索目录中以 .conf 结尾的文件,并从中读取配置信息。
请勿编辑文件 /etc/multipath.conf。此文件会被 XenServer 的更新覆盖。如果您想对多路径配置进行永久性更改,请联系您的存储供应商,他们可以请求我们的合作伙伴工程团队永久添加这些更改。
单个子网上的 iSCSI 多路径
您可以配置 XenServer 以使用 iSCSI 多路径,配合在单个子网上公开其目标和 IQN 的存储阵列。例如,您可以按照以下步骤设置 Dell EqualLogic PS 和 FS 统一系列存储阵列。
默认情况下,XenServer 为每个 iSCSI 目标只建立一个连接。因此,在默认配置下,建议使用 NIC 绑定来实现故障转移和负载平衡。本节概述的配置过程描述了一种替代配置,其中为单个子网或目标建立了多个 iSCSI 连接。不需要 NIC 绑定。
注意:
以下配置仅支持那些专门连接到通过单个子网公开其目标和 IQN 的存储阵列的服务器。这些存储阵列必须经过 XenServer 认证才能执行此过程。
要配置多路径:
-
备份您想要保护的任何数据。
-
在 XenCenter 的“资源”窗格中,右键单击主机并选择“进入维护模式”。
-
等待主机在资源窗格中重新出现,并带有维护模式图标(蓝色方块),然后再继续。
-
在主机的常规选项卡上,单击属性,然后转到多路径选项卡。
-
要启用多路径,请选中在此服务器上启用多路径复选框。
-
单击确定以应用新设置。XenCenter 保存新的存储配置时会有一个短暂的延迟。
-
在主机控制台中,配置两到四个 Open-iSCSI 接口。每个 iSCSI 接口用于建立一个单独的路径。以下步骤显示了两个接口的配置过程:
-
配置两个 iSCSI 接口,运行以下命令:
iscsiadm -m iface --op new -I c_iface1 iscsiadm -m iface --op new -I c_iface2确保接口名称具有前缀
c_。如果接口不使用此命名标准,它们将被忽略,并改用默认接口。注意:
此配置会导致所有连接都使用默认接口。这表明所有连接都是通过单个接口建立的。
-
使用以下命令将 iSCSI 接口绑定到 xenbr1 和 xenbr2:
iscsiadm -m iface --op update -I c_iface1 -n iface.net_ifacename -v xenbr1 iscsiadm -m iface --op update -I c_iface2 -n iface.net_ifacename -v xenbr2注意:
此配置假定为控制域(包括 xenbr1 和 xenbr2)配置的网络接口以及 xenbr0 用于管理。它还假定用于存储网络的网卡是 NIC1 和 NIC2。 如果情况并非如此,请参考您的网络拓扑以确定在这些命令中使用的网络接口和网卡。
-
-
在 XenCenter 的资源窗格中,右键单击主机并选择退出维护模式。暂不要恢复您的虚拟机。
-
在主机控制台中,运行以下命令以发现并登录会话:
iscsiadm -m discovery -t st -p <IP of SAN> iscsiadm -m node -L all -
使用以下命令删除包含旧会话信息的陈旧条目:
cd /var/lib/iscsi/send_targets/<IP of SAN and port, use ls command to check that> rm -rf <iqn of SAN target for that particular LUN> cd /var/lib/iscsi/nodes/ rm -rf <entries for that particular SAN> -
卸载 LUN 并重新挂载。您可以通过以下方式之一完成此操作:
- 在池中的所有主机上完成上述步骤后,您可以使用 XenCenter 卸载并重新挂载整个池的 LUN。
-
或者,您可以拔出并销毁每个主机的 PBD,然后修复 SR。
-
运行以下命令以拔出并销毁 PBD:
-
查找 SR 的 UUID:
xe sr-list -
获取与 SR 关联的 PBD 列表:
xe pbd-list sr-uuid=<sr_uuid> -
在上一个命令的输出中,查找 SCSI ID 不匹配的 iSCSI 存储库的 PBD 的 UUID。
-
拔出并销毁您识别的 PBD。
xe pbd-unplug uuid=<pbd_uuid> xe pbd-destroy uuid=<pbd_uuid>
-
-
在 XenCenter 中修复存储。
-
-
您现在可以恢复您的虚拟机。