XenServer

精简配置的共享 GFS2 块存储

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

警告:

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

GFS2 的限制包括:

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

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

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

如果您的 SAN 支持精简配置,我们建议您优先使用 LVM 配合精简配置,而不是 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 放置在电源馈电的不同相位上,甚至放置在由不同公用事业公司提供的馈电上。
  • 考虑使用不间断电源设备,以确保网络交换机和服务器在断电时能够继续运行或执行有序关机。

3. 创建专用绑定网络

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

注意:

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

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

警告:

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

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

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

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

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

    有关更多信息,请参阅 XenServer 使用的通信端口

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

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

    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-->
      

      绑定两个 NIC 时键入两个 UUID,绑定四个 NIC 时键入四个 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 环境遇到问题,请参阅 Troubleshoot clustered pools

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

限制

共享 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 块存储