XenServer

存储多路径

动态多路径支持适用于光纤通道和 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 图

    此图显示了多路径 iSCSI 配置中主机上的两块网卡 (NIC) 必须位于不同的子网上。在此图中,主机上的 NIC 1 以及交换机 1 和两个存储控制器上的 NIC 1 位于与 NIC 2、交换机 2 和存储控制器上的 NIC 2 不同的子网上。

启用多路径

您可以在 XenCenter® 或 xe CLI 上启用多路径。

使用 XenCenter 启用多路径

  1. 在 XenCenter 的“资源”窗格中,右键单击主机并选择“进入维护模式”。

  2. 等待主机在“资源”窗格中重新出现维护模式图标(一个蓝色方块)后,再继续操作。

  3. 在主机的“常规”选项卡上,单击“属性”,然后转到“多路径”选项卡。

  4. 要启用多路径,请选中“在此服务器上启用多路径”复选框。

  5. 单击“确定”以应用新设置。XenCenter 保存新的存储配置时会有短暂延迟。

  6. 在“资源”窗格中,右键单击主机并选择“退出维护模式”。

  7. 重复这些步骤以在池中的所有主机上启用多路径。

确保在池中的所有主机上启用多路径。所有布线以及(对于 iSCSI)子网配置必须与每个主机上对应的 NIC 匹配。

使用 xe CLI 启用多路径

  1. 在 XenServer 主机上打开控制台。

  2. 使用以下命令拔出主机上的所有 PBD:

    xe pbd-unplug uuid=<pbd_uuid>
    <!--NeedCopy-->
    

    您可以使用命令 xe pbd-list 查找 PBD 的 UUID。

  3. 使用以下命令将 multipathing 参数的值设置为 true

    xe host-param-set uuid=<host uuid> multipathing=true
    <!--NeedCopy-->
    
  4. 如果服务器上存在以单路径模式运行但具有多路径的 SR:

    • 迁移或暂停受影响 SR 中带有虚拟磁盘的任何正在运行的来宾

    • 重新插入任何受影响 SR 的 PBD,以使用多路径重新连接它们:

       xe pbd-plug uuid=<pbd_uuid>
       <!--NeedCopy-->
      
  5. 重复这些步骤以在池中的所有主机上启用多路径。

确保在池中的所有主机上启用多路径。所有布线以及(对于 iSCSI)子网配置必须与每个主机上对应的 NIC 匹配。

禁用多路径

您可以在 XenCenter 或 xe CLI 上禁用多路径。

使用 XenCenter 禁用多路径

  1. 在 XenCenter 的资源窗格中,右键单击主机,然后选择进入维护模式

  2. 等待主机在资源窗格中重新出现并显示维护模式图标(一个蓝色方块),然后继续。

  3. 在主机的常规选项卡上,单击属性,然后转到多路径选项卡。

  4. 要禁用多路径,请清除在此服务器上启用多路径复选框。

  5. 单击确定以应用新设置。XenCenter 保存新的存储配置时会有短暂延迟。

  6. 资源窗格中,右键单击主机,然后选择退出维护模式

  7. 重复这些步骤以配置池中所有主机上的多路径。

使用 xe CLI 禁用多路径

  1. 在 XenServer 主机上打开控制台。

  2. 使用以下命令拔出主机上的所有 PBD:

    xe pbd-unplug uuid=<pbd_uuid>
    <!--NeedCopy-->
    

    您可以使用命令 xe pbd-list 查找 PBD 的 UUID。

  3. 使用以下命令将 multipathing 参数的值设置为 false

    xe host-param-set uuid=<host uuid> multipathing=false
    <!--NeedCopy-->
    
  4. 如果服务器上存在以单路径模式运行但具有多路径的现有 SR:

    • 迁移或暂停受影响 SR 中包含虚拟磁盘的任何正在运行的虚拟机

    • 拔出并重新插入任何受影响 SR 的 PBD,以使用多路径重新连接它们:

       xe pbd-plug uuid=<pbd_uuid>
       <!--NeedCopy-->
      
  5. 重复这些步骤以禁用池中所有主机上的多路径。

配置多路径

要进行额外的临时多路径配置修改,请在目录 /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 认证才能执行此过程。

要配置多路径:

  1. 备份您想要保护的任何数据。

  2. 在 XenCenter 的“资源”窗格中,右键单击主机并选择“进入维护模式”。

  3. 等待主机在资源窗格中重新出现,并带有维护模式图标(蓝色方块),然后再继续。

  4. 在主机的常规选项卡上,单击属性,然后转到多路径选项卡。

  5. 要启用多路径,请选中在此服务器上启用多路径复选框。

  6. 单击确定以应用新设置。XenCenter 保存新的存储配置时会有一个短暂的延迟。

  7. 在主机控制台中,配置两到四个 Open-iSCSI 接口。每个 iSCSI 接口用于建立一个单独的路径。以下步骤显示了两个接口的配置过程:

    1. 配置两个 iSCSI 接口,运行以下命令:

      iscsiadm -m iface --op new -I c_iface1
      iscsiadm -m iface --op new -I c_iface2
      

      确保接口名称具有前缀 c_。如果接口不使用此命名标准,它们将被忽略,并改用默认接口。

      注意:

      此配置会导致所有连接都使用默认接口。这表明所有连接都是通过单个接口建立的。

    2. 使用以下命令将 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。 如果情况并非如此,请参考您的网络拓扑以确定在这些命令中使用的网络接口和网卡。

  8. 在 XenCenter 的资源窗格中,右键单击主机并选择退出维护模式。暂不要恢复您的虚拟机。

  9. 在主机控制台中,运行以下命令以发现并登录会话:

    iscsiadm -m discovery -t st -p <IP of SAN>
    iscsiadm -m node -L all
    
  10. 使用以下命令删除包含旧会话信息的陈旧条目:

    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>
    
  11. 卸载 LUN 并重新挂载。您可以通过以下方式之一完成此操作:

    • 在池中的所有主机上完成上述步骤后,您可以使用 XenCenter 卸载并重新挂载整个池的 LUN。
    • 或者,您可以拔出并销毁每个主机的 PBD,然后修复 SR。

      1. 运行以下命令以拔出并销毁 PBD:

        1. 查找 SR 的 UUID:

          xe sr-list
          
        2. 获取与 SR 关联的 PBD 列表:

          xe pbd-list sr-uuid=<sr_uuid>
          
        3. 在上一个命令的输出中,查找 SCSI ID 不匹配的 iSCSI 存储库的 PBD 的 UUID。

        4. 拔出并销毁您识别的 PBD。

          xe pbd-unplug uuid=<pbd_uuid>
          xe pbd-destroy uuid=<pbd_uuid>
          
      2. 在 XenCenter 中修复存储。

  12. 您现在可以恢复您的虚拟机。

存储多路径