XenServer

精简配置共享 GFS2 块存储

精简配置通过在数据写入虚拟磁盘时才为 VDI 分配磁盘存储空间,而不是提前分配 VDI 的全部虚拟大小,从而更好地利用可用存储。精简配置使您能够显著减少共享存储阵列所需的空间量,从而降低您的总拥有成本 (TCO)。

警告:

GFS2 存在一些限制和复杂性,在继续操作之前应仔细考虑这些限制和复杂性。在许多情况下,替代存储策略会更合适。

GFS2 的限制包括:

  • 功能不完善(不支持灾难恢复、不支持存储迁移、池大小限制为 16)
  • 性能限制,使其不适用于大型、I/O 密集型工作负载
  • 需要集群服务,这可能会带来稳定性问题
  • 更难理解,导致配置错误和故障增加

鉴于这些限制和复杂性,仅建议在没有替代方案可满足要求的情况下使用 GFS2。GFS2 可能适用的场景包括:

  • 需要精简配置,但您的 SAN 不提供。 建议使用支持精简配置的 SAN 上的 LVM 存储。如果无法实现,则可以考虑使用 GFS2。
  • 支持大于 2TiB 的磁盘。 GFS2 将支持高达 16TB 的磁盘。如果需要大于 2TiB 的磁盘,可以考虑使用 GFS2。客户应进行测试,以确保环境能够满足负载和性能要求。

如果您的 SAN 支持精简配置,我们建议您优先使用 LVM 配合 SAN 的精简配置,而不是 GFS2,除非您需要大于 2 TiB 的虚拟机磁盘。对于需要大于 2 TiB 的虚拟机磁盘的情况,请考虑在 LVM 中使用多个磁盘来实现此目的。

共享 GFS2 类型将磁盘表示为在 iSCSI 或 HBA LUN 上创建的文件系统。存储在 GFS2 SR 上的 VDI 以 QCOW2 映像格式存储。

本文介绍了如何使用 xe CLI 设置 GFS2 环境。要使用 XenCenter 设置 GFS2 环境,请参阅 XenCenter 产品文档

1. 规划您的 GFS2 环境

为了在共享块存储上提供精简配置的优势而又不丢失数据,您的池必须提供良好的可靠性和连接性。使用 GFS2 的资源池中的主机能够可靠地相互通信至关重要。为确保这一点,XenServer® 要求您将集群池与 GFS2 SR 配合使用。我们还建议您设计环境并配置 XenServer 功能,以提供尽可能多的弹性和冗余。

在设置 XenServer 池以与 GFS2 SR 配合使用之前,请查看以下有关理想 GFS2 环境的要求和建议:

与其它类型的池和 SR 相比,带有 GFS2 SR 的集群池在行为上存在一些差异。有关详细信息,请参阅 限制

2. 配置冗余网络基础架构

绑定网络将两个或多个网卡连接在一起,以创建用于网络流量的单个通道。我们建议您为集群池流量使用绑定网络。但是,在设置绑定网络之前,请确保您的网络硬件配置能够促进绑定网络中的冗余。请考虑根据您的组织和环境的可行性,实施尽可能多的这些建议。

以下最佳实践可增强针对可能影响网络交换机的软件、硬件或电源故障的弹性。

  • 确保您有单独的物理网络交换机可用于绑定网络,而不仅仅是同一交换机上的端口。
  • 确保单独的交换机从不同的独立电源分配单元 (PDU) 获取电源。
  • 如果可能,在您的数据中心中,将配电单元 (PDU) 放置在不同相的电源馈线上,甚至是由不同公用事业公司提供的馈线上。
  • 考虑使用不间断电源 (UPS) 设备,以确保网络交换机和服务器在断电时能够继续运行或执行有序关机。

3. 创建专用绑定网络

确保集群池中的主机能够可靠地相互通信非常重要。为该池流量创建绑定网络可以提高集群池的弹性。

注意:

集群网络不能位于非管理 VLAN 上。

绑定网络在两个或更多网卡之间创建绑定,以形成一个单一、高性能的通道,您的集群池可以使用该通道进行集群心跳流量。我们强烈建议此绑定网络不用于任何其他流量。为池创建单独的网络以用于管理流量。

警告:

如果您选择不遵循此建议,则丢失集群管理网络数据包的风险会更高。集群管理网络数据包的丢失可能导致您的集群池失去仲裁,并且池中部分或全部主机将自行隔离。

如果您的集群在此不推荐的配置中正在隔离或面临问题,XenServer 支持可能会要求您在调查过程中在推荐的配置上重现相同的问题。

要创建用作 GFS2 集群网络的绑定网络:

  1. 如果您的池中的主机之间有防火墙,请确保主机可以使用以下端口在集群网络上进行通信:

    • TCP: 8892, 8896, 21064
    • UDP: 5404, 5405

    有关详细信息,请参阅 XenServer 使用的通信端口

  2. 在您希望作为池协调器的 XenServer 主机上打开控制台。

  3. 使用以下命令创建用于绑定网卡的网络:

    xe network-create name-label=bond0
    <!--NeedCopy-->
    

    将返回新网络的 UUID。

  4. 使用以下命令查找要在绑定中使用的 PIF 的 UUID:

    xe pif-list
    <!--NeedCopy-->
    
  5. 以主动-主动模式、主动-被动模式或 LACP 绑定模式创建您的绑定网络。根据您要使用的绑定模式,完成以下操作之一:

    • 要在主动-主动模式(默认)下配置绑定,请使用 bond-create 命令创建绑定。使用逗号分隔参数,指定新创建的网络 UUID 和要绑定的 PIF 的 UUID:

       xe bond-create network-uuid=<network_uuid> /
           pif-uuids=<pif_uuid_1>,<pif_uuid_2>,<pif_uuid_3>,<pif_uuid_4>
       <!--NeedCopy-->
      

      绑定两个网卡时输入两个 UUID,绑定四个网卡时输入四个 UUID。运行命令后将返回绑定的 UUID。

    • 要在主动-被动或 LACP 绑定模式下配置绑定,请使用相同的语法,添加可选的 mode 参数,并指定 lacpactive-backup

       xe bond-create network-uuid=<network_uuid> /
           pif-uuids=<pif_uuid_1>,<pif_uuid_2>,<pif_uuid_3>,<pif_uuid_4> /
           mode=balance-slb | active-backup | lacp
       <!--NeedCopy-->
      

在池协调器上创建绑定网络后,当您将其他 XenServer 主机加入池时,网络和绑定信息将自动复制到加入的服务器。

有关更多信息,请参阅 网络

注意:

  • 使用 XenCenter® 更改集群网络的 IP 地址需要暂时禁用集群和 GFS2。
  • 当集群处于活动状态并有正在运行的虚拟机时,请勿更改集群网络的绑定。此操作可能导致集群中的主机硬重启(隔离)。
  • 如果您的集群网络上存在 IP 地址冲突(多个主机具有相同的 IP 地址),并且至少有一个主机启用了集群功能,则集群将无法正确形成,并且主机在需要时无法进行隔离。要解决此问题,请解决 IP 地址冲突。

运行以下命令以查找池的 token-timeout 值(以秒为单位):

xe cluster-param-get uuid=<cluster_uuid> param-name=token-timeout

如果网络绑定故障转移时间可能大于超时值,则您的网络基础设施和配置可能不够可靠,无法支持集群池。

4. 设置集群池

要使用共享 GFS2 存储,XenServer 资源池必须是集群池。在创建 GFS2 SR 之前,请在池上启用集群。

集群池是由 XenServer 主机组成的池,与非集群池中的主机相比,它们连接更紧密、协调性更高。集群中的主机在所选网络上彼此保持持续通信。集群中的所有主机都了解集群中每个主机的状态。这种主机协调使集群能够控制对 GFS2 SR 内容的访问。为确保集群池始终保持通信,集群中的每个主机必须始终与集群中至少一半的主机(包括自身)保持通信。这种状态称为主机拥有仲裁。如果主机没有仲裁,它将硬重启并从集群中移除自身。此操作称为“隔离”。

更多信息,请参阅 集群池

在开始设置集群池之前,请确保满足以下先决条件:

  • 计划创建包含 3 到 16 个主机的池。

    在可能的情况下,在集群池中使用奇数个主机,因为这可以确保主机始终能够确定它们是否拥有仲裁。我们建议您仅在包含至少三个主机的池中使用集群,因为两个主机的池容易导致整个池自我隔离。

    集群池每个池最多支持 16 个主机。

  • 集群池中的所有 XenServer 主机必须至少有 2 GiB 的控制域内存。
  • 集群中的所有主机必须为集群网络使用静态 IP 地址。
  • 如果您正在对现有池进行集群,请确保高可用性已禁用。在启用集群后,您可以再次启用高可用性。

使用 xe CLI 创建集群池:

  1. 创建至少包含三个 XenServer 主机的资源池。

    在每个加入的 XenServer 主机(非池协调器)上重复以下步骤:

    1. 在 XenServer 主机上打开控制台。
    2. 使用以下命令将 XenServer 主机加入池协调器上的池:

      xe pool-join master-address=<master_address> /
          master-username=<administrators_username> /
          master-password=<password>
      <!--NeedCopy-->
      

      master-address 参数的值必须设置为作为池协调器的 XenServer 主机的完全限定域名。password 必须是安装池协调器时设置的管理员密码。

    有关更多信息,请参阅 主机和资源池

  2. 对于属于此网络的每个 PIF,设置 disallow-unplug=true

    1. 使用以下命令查找属于该网络的 PIF 的 UUID:

      xe pif-list
      <!--NeedCopy-->
      
    2. 在资源池中的 XenServer 主机上运行以下命令:

      xe pif-param-set disallow-unplug=true uuid=<pif_uuid>
      <!--NeedCopy-->
      
  3. 在池上启用群集。在资源池中的 XenServer 主机上运行以下命令:

    xe cluster-pool-create network-uuid=<network_uuid>
    <!--NeedCopy-->
    

    提供您在前面步骤中创建的绑定网络的 UUID。

5. 增加控制域内存

如果主机上的控制域内存不足,您的池可能会出现网络不稳定。网络不稳定可能会导致具有 GFS2 SR 的群集池出现问题。

确保群集池具有适当的控制域内存量非常重要。有关更改控制域内存量和监视内存行为的信息,请参阅 内存使用情况

6. 配置存储多路径

确保在群集池和 GFS2 SR 之间设置了存储多路径。

多路径通过多条路径将存储流量路由到存储设备以实现冗余。在正常操作期间,所有路径都可以有活动流量,从而提高吞吐量。

在启用多路径之前,请验证以下陈述是否属实:

  • 您的以太网或光纤交换机已配置为在存储服务器上提供多个目标。

    例如,查询给定门户上 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 地址。

    确保到存储的每个路径都有一个网卡,并且每个网卡上都配置了一个 IP 地址。例如,如果您希望有四条路径通往存储,则必须有四个网卡,每个网卡都配置了 IP 地址。

  • 仅适用于 iSCSI,每个 iSCSI 目标和发起程序都具有唯一的 IQN。

  • 仅适用于 iSCSI,iSCSI 目标端口以门户模式运行。

  • 仅适用于 HBA,多个 HBA 连接到交换机结构。

  • 如果可能,请使用多个冗余交换机。

使用 xe CLI 启用多路径

我们建议您在创建 SR 之前为池中的所有主机启用多路径。如果您在启用多路径之前创建 SR,则必须将主机置于维护模式才能启用多路径。

  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)子网配置必须与每个主机上对应的网卡匹配。

有关详细信息,请参阅存储多路径

7. 创建 GFS2 SR

在资源池中所有 XenServer 主机可见的 iSCSI 或 HBA LUN 上创建共享 GFS2 SR。我们不建议将精简预配 LUN 与 GFS2 配合使用。但是,如果您确实选择此配置,则必须确保 LUN 始终有足够的空间以允许 XenServer 写入数据。

您最多可以将 62 个 GFS2 SR 添加到群集池中。

如果您之前曾将基于块的存储设备用于 LVM 的厚预配,XenServer 会检测到这一点。XenCenter 将为您提供使用现有 LVM 分区或格式化磁盘并设置 GFS2 分区的机会。

创建基于 iSCSI 的共享 GFS2 SR

您可以使用 xe CLI 创建基于 iSCSI 的 GFS2 SR。

GFS2 SR 的设备配置参数:

参数名称 描述 是否必需?
provider 块提供程序实现。在此情况下,iscsi
target 托管 iSCSI 存储器的 IP 地址或主机名
targetIQN 托管 SR 的 iSCSI 存储器的 IQN 目标
SCSIid 设备 SCSI ID

您可以使用 xe sr-probe-ext 命令查找这些参数的值。

xe sr-probe-ext type=<type> host-uuid=<host_uuid> device-config:=<config> sm-config:=<sm_config>
<!--NeedCopy-->
  1. 首先运行以下命令:

    xe sr-probe-ext type=gfs2 device-config:provider=iscsi
    <!--NeedCopy-->
    

    命令的输出会提示您提供其他参数,并在每个步骤中给出可能的取值列表。

  2. 重复该命令,每次添加新参数。

  3. 当命令输出以 Found the following complete configurations that can be used to create SRs: 开头时,您可以使用 xe sr-create 命令和您指定的 device-config 参数来定位 SR。

    示例输出:

    Found the following complete configurations that can be used to create SRs:
    Configuration 0:
      SCSIid       : 36001405852f77532a064687aea8a5b3f
          targetIQN: iqn.2009-01.example.com:iscsi192a25d6
             target: 198.51.100.27
           provider: iscsi
    
    
    Configuration 0 extra information:
    <!--NeedCopy-->
    

要在 iSCSI 目标的特定 LUN 上创建共享 GFS2 SR,请在群集池中的服务器上运行以下命令:

xe sr-create type=gfs2 name-label="Example GFS2 SR" --shared \
   device-config:provider=iscsi device-config:targetIQN=<target_iqns> \
   device-config:target=<portal_address> device-config:SCSIid=<scsci_id>
<!--NeedCopy-->

如果在挂载 GFS2 文件系统时 iSCSI 目标不可达,则群集池中的某些主机可能会硬重启(隔离)。

有关使用 iSCSI SR 的更多信息,请参阅软件 iSCSI 存储

创建基于 HBA 的共享 GFS2 SR

您可以使用 xe CLI 创建基于 HBA 的 GFS2 SR。

GFS2 SR 的设备配置参数:

参数名称 描述 是否必需?
provider 块提供程序实现。在这种情况下,hba
SCSIid 设备 SCSI ID

您可以使用 xe sr-probe-ext 命令查找用于 SCSIid 参数的值。

xe sr-probe-ext type=<type> host-uuid=<host_uuid> device-config:=<config> sm-config:=<sm_config>
<!--NeedCopy-->
  1. 首先运行以下命令:

    xe sr-probe-ext type=gfs2 device-config:provider=hba
    <!--NeedCopy-->
    

    命令的输出会提示您提供其他参数,并在每个步骤中给出可能的取值列表。

  2. 每次添加新参数,重复执行该命令。

  3. 当命令输出以 Found the following complete configurations that can be used to create SRs: 开头时,您可以使用 xe sr-create 命令和您指定的 device-config 参数来定位 SR。

    示例输出:

    Found the following complete configurations that can be used to create SRs:
    Configuration 0:
      SCSIid       : 36001405852f77532a064687aea8a5b3f
          targetIQN: iqn.2009-01.example.com:iscsi192a25d6
             target: 198.51.100.27
           provider: iscsi
    
    
    Configuration 0 extra information:
    <!--NeedCopy-->
    

要在 HBA 目标的特定 LUN 上创建共享 GFS2 SR,请在群集池中的服务器上运行以下命令:

xe sr-create type=gfs2 name-label="Example GFS2 SR" --shared \
  device-config:provider=hba device-config:SCSIid=<device_scsi_id>
<!--NeedCopy-->

有关使用 HBA SR 的更多信息,请参阅 硬件 HBA 存储

接下来是什么?

设置好 GFS2 环境后,通过确保群集池具有仲裁来维护其稳定性非常重要。有关更多信息,请参阅 管理群集池

如果您的 GFS2 环境遇到问题,请参阅 对集群池进行故障排除

您可以像管理其他 SR 一样管理 GFS2 SR。例如,您可以向存储阵列添加容量以增加 LUN 的大小。有关详细信息,请参阅 实时 LUN 扩展

限制

共享 GFS2 存储目前具有以下限制:

  • 使用 GFS2 SR 的虚拟机不支持 Intellicache™。

  • 与任何精简预配的 SR 一样,如果 GFS2 SR 使用率达到 100%,则来自虚拟机的后续写入将失败。这些失败的写入可能导致虚拟机内部故障、可能的数据损坏或两者兼有。

  • 当您的 SR 使用率达到 80% 时,XenCenter 会显示警报。请务必监控您的 GFS2 SR 以获取此警报,并在看到警报时采取适当的措施。在 GFS2 SR 上,高使用率会导致性能下降。我们建议您将 SR 使用率保持在 80% 以下。

  • 对于 VDI 位于 GFS2 SR 上的虚拟机,不支持带存储迁移(实时或离线)的虚拟机迁移。您也不能将 VDI 从其他类型的 SR 迁移到 GFS2 SR。

  • GFS2 SR 不支持软件 FCoE 传输(对于完全卸载的 FCoE,请使用 HBA)。

  • GFS2 SR 不支持 Trim/unmap。

  • GFS2 SR 不支持 CHAP。

  • 您不能将大于 2 TiB 的 VDI 导出为 VHD 或 OVA/OVF。但是,您可以以 XVA 格式导出 VDI 大于 2 TiB 的虚拟机。

  • 我们不建议将精简预配的 LUN 与 GFS2 结合使用。但是,如果您确实选择此配置,则必须确保 LUN 始终有足够的空间供 XenServer 写入。

  • 我们不建议将 SAN 重复数据删除与 GFS2 SR 结合使用。但是,如果您确实选择此配置,则必须使用适当的外部监控来监控 SAN 利用率,以确保 XenServer 始终有足够的空间进行写入。

  • 您的 GFS2 文件系统不能大于 100 TiB。

  • 您的池中不能有超过 62 个 GFS2 SR。

  • 集群池每个池最多支持 16 个主机。

  • 要在集群池上启用 HA,心跳 SR 必须是 GFS2 SR。

  • 对于集群流量,我们强烈建议您使用至少两个不同网络交换机的绑定网络。请勿将此网络用于任何其他目的。

  • 使用 XenCenter 更改集群网络的 IP 地址需要暂时禁用集群和 GFS2。

  • 当集群处于活动状态并运行虚拟机时,请勿更改集群网络的绑定。此操作可能导致集群中的主机硬重启(隔离)。

  • 如果您的集群网络上存在 IP 地址冲突(多个主机具有相同的 IP 地址),并且至少有一个主机启用了集群功能,则集群将无法正确形成,并且主机在需要时无法隔离。要解决此问题,请解决 IP 地址冲突。

精简配置共享 GFS2 块存储