精简预配的共享 GFS2 块存储设备

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

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

  • 您希望提高空间效率。图像是稀疏的,而不是厚厚地分配。
  • 您希望降低存储阵列上的每秒 I/O 操作数。GFS2 SR 是第一种支持在共享块存储上进行存储读取缓存的 SR 类型。
  • 您对多个虚拟机使用公共基础映像。这样,各个 VM 的映像通常会占用更少的空间。
  • 您使用快照。每个快照都是一个映像,并且每个映像现在都是稀疏的。
  • 您的存储不支持 NFS,仅支持块存储。如果您的存储支持 NFS,我们建议您使用 NFS 而非 GFS2。
  • 您希望创建大小大于 2 TiB 的 VDI。GFS2 SR 最大支持大小为 16 TiB 的 VDI。

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

必备条件

开始操作之前,请确保满足以下必备条件:

  • 群集池中的所有 Citrix Hypervisor 服务器都必须至少具有 2 GiB 的控制域内存。

  • 群集中的所有主机都必须使用群集网络的静态 IP 地址。

  • 我们建议您仅在至少包含三个主机的池中使用群集,因为包含两个主机的池对自主防护整个池非常敏感。

  • 如果在池中的主机之间设置了防火墙,请确保主机能够使用以下端口在群集网络中进行通信:
    • TCP:8892、21064
    • UDP:5404、5405

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

  • 如果要对现有池进行群集操作,请务必禁用高可用性。启用群集功能后,可以重新启用高可用性。

  • 您有一个基于块的存储设备对资源池中的所有 Citrix Hypervisor 服务器可见。

设置群集池以使用共享 GFS2 SR

要使用共享 GFS2 存储,Citrix Hypervisor 资源池必须是群集池。请先在您的池中启用群集,然后再创建 GFS2 SR。

注意:

群集池的行为与非群集池不同。有关群集行为的详细信息,请参阅群集池

如果喜欢,可以使用 XenCenter 在池中设置群集功能。有关详细信息,请参阅 XenCenter 产品文档

要使用 xe CLI 创建群集池,请执行以下操作:

  1. 创建绑定网络以用作群集网络。在希望作为池主服务器的 Citrix Hypervisor 服务器上,完成以下步骤:

    1. 在 Citrix Hypervisor 服务器上打开控制台。

    2. 使用以下命令命名您的资源池:

      xe pool-param-set name-label="New Pool" uuid=<pool_uuid>
      
    3. 使用以下命令创建用于绑定 NIC 的网络:

      xe network-create name-label=bond0
      

      此时将返回新网络的 UUID。

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

      xe pif-list
      
    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>
        

        绑定两个 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
        

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

    有关详细信息,请参阅网络连接

  2. 创建至少包含三台 Citrix Hypervisor 服务器的资源池。

    在每个(非主)池成员的 Citrix Hypervisor 服务器上重复执行以下步骤:

    1. 在 Citrix Hypervisor 服务器上打开控制台。
    2. 使用以下命令将 Citrix Hypervisor 服务器加入池主服务器上的池:

      xe pool-join master-address=master_address master-username=administrators_username master-password=password
      

      master-address 参数的值必须设置为作为池主服务器的 Citrix Hypervisor 服务器的完全限定域名。安装池主服务器时,password 必须为设置的管理员密码。

    有关详细信息,请参阅主机和资源池

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

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

      xe pif-list
      
    2. 在资源池中的 Citrix Hypervisor 服务器上运行以下命令:

      xe pif-param-set disallow-unplug=true uuid=<pif_uuid>
      
  4. 在您的池上启用群集功能。在资源池中的 Citrix Hypervisor 服务器上运行以下命令:

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

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

设置指向您的共享 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,dom0 在多路径存储使用的每个子网上都有一个 IP 地址。

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

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

可以使用 XenCenter 设置存储多路径。有关详细信息,请参阅 XenCenter 文档中的存储多路径

或者,要使用 xe CLI 设置存储多路径,请在群集池中的所有 Citrix Hypervisor 服务器上完成以下步骤:

  1. 在 Citrix Hypervisor 服务器上打开控制台。

  2. 使用以下命令拔出服务器上的所有 PBD:

    xe pbd-unplug uuid=<pbd_uuid>
    
  3. 使用以下命令将 other-config:multipathing 参数的值设置为 true

    xe host-param-set other-config:multipathing=true uuid=<server_uuid>
    
  4. 使用以下命令将 other-config:multipathhandle 参数的值设置为 dmp

    xe host-param-set other-config:multipathhandle=dmp uuid=<server_uuid>
    
  5. 如果服务器上存在以单一路径模式运行但具有多路径的现有 SR:

    • 迁移或挂起在受影响的 SR 中存在虚拟磁盘的任何正在运行的来宾系统

    • 拔出并重新插入所有受影响的 SR 的 PBD 以使用多路径重新对其进行连接:

       xe pbd-unplug uuid=<pbd_uuid>
       xe pbd-plug uuid=<pbd_uuid>
      

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

创建共享 GFS2 SR

可以在 iSCSI 或 HBA LUN 上创建共享 GFS2 SR。

通过 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>
  1. 首先请运行以下命令:

    xe sr-probe-ext type=gfs2 device-config:provider=iscsi
    

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

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

  3. 当命令输出以 The following SRs were found: 开头时,可以使用指定的 device-config 参数在运行 xe sr-create 命令时查找 SR。

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

如果装载 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>
  1. 首先请运行以下命令:

    xe sr-probe-ext type=gfs2 device-config:provider=hba
    

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

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

  3. 当命令输出以 The following SRs were found: 开头时,可以使用指定的 device-config 参数在运行 xe sr-create 命令时查找 SR。

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

有关使用 HBA SR 的详细信息,请参阅硬件主机总线适配器

限制

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

  • VDI 位于 GFS2 SR 上的 VM 不支持通过存储实时迁移功能迁移 VM。
  • GFS2 SR 不支持 FCoE 协议。
  • GFS2 SR 上不支持裁剪/取消映射。
  • 性能衡量指标不适用于 GFS2 SR 以及这些 SR 上的磁盘。
  • GFS2 SR 上存储的 VDI 不支持更改块跟踪功能。
  • 不能将大于 2 TiB 的 VDI 导出为 VHD 或 OVA/OVF。但是,可以以 XVA 格式导出 VDI 大于 2 TiB 的 VM。
  • 群集池最多仅支持每个池包含 16 个主机。
  • 如果网络已同时用于管理和群集操作,则不能分离管理网络而不重新创建群集。
  • 通过使用 XenCenter 更改群集网络的 IP 地址要求暂时禁用群集功能和 GFS2。
  • 群集处于活动状态并且具有正在运行的 VM 时,请勿更改群集网络的绑定。此操作会导致群集进行防护。
  • 如果您的至少涉及一个启用了群集功能的主机的群集网络中的一个 IP 地址(多个具有相同 IP 地址的主机)出现冲突,这些主机将不防护。要修复此问题,请解析 IP 地址冲突。