XenServer

存储多路径

动态多路径支持适用于光纤通道和 iSCSI 存储后端。

XenServer 使用 Linux 本机多路径 (DM-MP)(通用 Linux 多路径解决方案)作为其多路径处理程序。但是,XenServer 为此处理程序增加了其他功能,以便 XenServer 可以识别存储设备的供应商特定功能。

配置多路径可在出现部分连接断开时为远程存储流量提供冗余。多路径通过多条路径将存储流量路由到存储设备,以实现冗余和提高吞吐量。您最多可以使用 16 个指向单个 LUN 的路径。多路径是一种主动-主动配置。默认情况下,根据存储阵列类型,多路径使用轮询或多总线负载平衡。在正常运行期间,所有路由上都有活动流量,这会导致吞吐量增加。

重要:

我们建议您在创建 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,并且在每个 NIC 上都配置了一个 IP 地址。例如,如果您希望存储有四个路径,则必须有四个 NIC,每个 NIC 都配置一个 IP 地址。

  • (仅限 iSCSI)每个 iSCSI 目标和发起程序都有唯一的 IQN。

  • (仅限 iSCSI)iSCSI 目标端口在门户模式下运行。

  • 仅限 HBA,将多个 HBA 连接到交换机结构。

  • 配置辅助接口时,每个辅助接口必须位于单独的子网上。例如,如果要为存储额外配置两个辅助接口,则需要 IP 地址位于三个不同的子网中 – 一个用于管理接口的子网,一个用于辅助接口 1 的子网,以及一个用于辅助接口 2 的子网。

    多路径 iSCSI 示意图

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

启用多路径

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

使用 XenCenter 启用多路径

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

  2. 请等到主机在资源窗格中重新出现维护模式图标(蓝色方块)后再继续。

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

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

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

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

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

请务必在池中的所有主机上启用多路径。对于每个主机上相应的 NIC,所有电缆连接和子网配置(对于 iSCSI)必须相符。

使用 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. 重复执行这些步骤,在池中的所有主机上启用多路径。

请务必在池中的所有主机上启用多路径。对于每个主机上相应的 NIC,所有电缆连接和子网配置(对于 iSCSI)必须相符。

禁用多路径

可以在 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 配置的网络接口用于管理。它还假定用于存储网络的 NIC 卡为 NIC1 和 NIC2。 如果不是这样,请参考您的网络拓扑以发现要在这些命令中使用的网络接口和 NIC 卡。

  8. 在 XenCenter 资源窗格中,在主机上单击鼠标右键,然后选择退出维护模式。暂时不要恢复 VM。

  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. 您现在可以恢复 VM 了。

存储多路径