XenServer

精简预配的共享 GFS2 块存储

精简预配通过将磁盘存储空间分配给 VDI(因为数据会写入虚拟磁盘)来更好地利用可用存储,而非提前分配 VDI 的完整虚拟大小。通过精简预配,可以大大降低共享存储阵列上所需的空间量以及您的总体拥有成本 (TCO)。

在以下情况下,面向共享块存储进行精简预配尤其适用:

  • 您希望提高空间效率。图像是稀疏的,而不是厚厚地分配。
  • 您希望降低存储阵列上的每秒 I/O 操作数。GFS2 SR 是第一种支持在共享块存储上进行存储读取缓存的 SR 类型。
  • 您对多个虚拟机使用公共基础映像。这样,各个 VM 的映像通常会占用更少的空间。
  • 您使用快照。每个快照都是一个映像,并且每个映像现在都是稀疏的。
  • 您希望创建大小大于 2 TiB 的 VDI。GFS2 SR 最大支持大小为 16 TiB 的 VDI。
  • 您的存储不支持 NFS 或 SMB3,仅支持块存储。如果您的存储支持 NFS 或 SMB3,我们建议您使用这些 SR 类型而非 GFS2。
  • 您的存储不支持 LUN 的精简预配。如果您的存储确实精简预配了 LUN,则在将其与 GFS2 组合使用时可能会遇到问题并耗尽空间。将 GFS2 与精简预配的 LUN 结合使用不会带来很多其他好处,因此不建议这样做。

注意:

我们建议不要将 GFS2 SR 与 VLAN 一起使用,因为存在已知问题,即如果群集网络位于非管理 VLAN 上,则无法在群集池中添加或删除主机。

共享 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 环境:

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

2. 配置冗余网络连接基础结构

绑定网络会将两个或多个 NIC 链接在一起,从而为网络流量创建单一通道。我们建议您为群集池流量使用绑定网络。但是,在设置绑定网络之前,请确保您的网络硬件配置能够提升绑定网络的冗余性。如果贵组织和环境可以实施这些建议,请考虑尽可能多地执行此操作。

以下最佳做法增强了针对可能影响您的网络交换机的软件、硬件或电源故障的恢复能力。

  • 确保您在绑定网络中可以使用不同的物理网络交换机,而不仅仅是使用同一交换机上的端口。
  • 确保单独的交换机从不同的独立电源分配单元 (PDU) 获取电力。
  • 如果可能,请在您的数据中心中,将 PDU 放置在供电的不同阶段,甚至不同的公共事业公司提供的电源。
  • 请考虑使用不间断电源装置来确保网络交换机和服务器能够继续运行或在出现电源故障时能够有序关闭。

3. 创建专用的绑定网络

确保群集池中的主机能够可靠地相互通信至关重要。为此池流量创建绑定网络可以提高群集池的恢复能力。

绑定网络会在两个或多个 NIC 之间创建绑定以创建单个高性能通道,您的群集池可以将该通道用于群集检测信号流量。 我们强烈建议不要将此绑定网络用于任何其他流量。为池创建一个单独的网络以用于管理流量。

警告:

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

如果您的群集正在进行防护,或者在这种不推荐的配置中遇到问题,XenServer 支持部门可能会要求您在调查过程中使用推荐的配置重现相同的问题。

创建绑定网络以用作群集网络:

  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。
  • 群集处于活动状态并且具有正在运行的 VM 时,请勿更改群集网络的绑定。此操作可能会导致群集中的主机硬重启(防护)。
  • 在至少包含一个启用了群集功能的主机的群集网络中,如果您的 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 地址。

    对于指向存储的每条路径,请确保都有一个 NIC,并且在每个 NIC 上都配置了一个 IP 地址。例如,如果您希望存储有四个路径,则必须有四个 NIC,每个 NIC 都配置一个 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. 重复执行这些步骤,在池中的所有主机上启用多路径。

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

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

7. 创建 GFS2 SR

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

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

如果您之前曾使用基于块的存储设备通过 LVM 进行密集预配,XenServer 会检测到这种情况。XenCenter 向您提供了使用现有 LVM 分区或格式化磁盘并设置 GFS2 分区的机会。

通过 iSCSI SR 创建共享 GFS2

可以使用 XenCenter 通过 iSCSI SR 创建 GFS2。有关详细信息,请参阅 XenCenter 产品文档中的软件 iSCSI 存储

或者,可以使用 xe CLI 通过 iSCSI SR 创建 GFS2。

GFS2 SR 的 Device-config 参数:

参数名称 说明 必需?
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

可以使用 XenCenter 通过 HBA SR 创建 GFS2。有关详细信息,请参阅 XenCenter 产品文档中的硬件 HBA 存储

或者,可以使用 xe CLI 通过 HBA SR 创建 GFS2。

GFS2 SR 的 Device-config 参数:

参数名称 说明 必需?
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 的详细信息,请参阅硬件主机总线适配器

接下来做什么?

由于您已经设置了 GFS2 环境,因此重要的是要确保群集池具有仲裁功能,从而保持其稳定性。有关详细信息,请参阅管理群集池

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

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

限制

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

  • 与任何精简预配的 SR 一样,如果 GFS2 SR 的使用率增长到 100%,从 VM 进一步写入将失败。然后,这些失败的写入可能会导致 VM 内出现故障或者可能会导致数据损坏,或者出现这两种情况。

  • 当您的 SR 使用量增长到 80% 时,XenCenter 会显示警报。请务必监视 GFS2 SR 是否有此警报,并采取适当的措施(如果看到)。在 GFS2 SR 上,高使用率会导致性能下降。我们建议您将 SR 使用率保持在 80% 以下。

  • VDI 位于 GFS2 SR 上的 VM 不支持通过存储迁移(实时或脱机)功能迁移 VM。也不能将 VDI 从另一种类型的 SR 迁移到 GFS2 SR。

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

  • GFS2 SR 上不支持裁剪/取消映射。

  • GFS2 SR 上不支持 CHAP。

  • GFS2 SR 上存储的 VDI 不支持更改块跟踪功能。

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

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

  • 我们不建议将 SAN 重复数据删除功能与 GFS2 SR 一起使用。但是,如果您确实选择了此配置,则必须对 SAN 使用情况进行适当的外部监视,以确保始终有空间可供 XenServer 写入。

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

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

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

  • 要在群集池上启用高可用性,检测信号 SR 必须为 GFS2 SR。

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

  • 通过使用 XenCenter 更改群集网络的 IP 地址要求暂时禁用群集功能和 GFS2。

  • 群集处于活动状态并且具有正在运行的 VM 时,请勿更改群集网络的绑定。此操作可能会导致群集中的主机硬重启(防护)。

  • 在至少包含一个启用了群集功能的主机的群集网络中,如果您的 IP 地址出现冲突(多个主机具有相同的 IP 地址),则群集无法正常形成且主机无法在需要时进行防护。 要修复此问题,请解决 IP 地址冲突。

精简预配的共享 GFS2 块存储