精简配置共享 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 环境的要求和建议:
-
推荐: 配置冗余网络基础架构。
-
推荐: 创建专用绑定网络
-
必需: 设置集群池
-
可选: 增加控制域内存
-
推荐: 配置存储多路径
-
必需: 创建 GFS2 SR
与其它类型的池和 SR 相比,带有 GFS2 SR 的集群池在行为上存在一些差异。有关详细信息,请参阅 限制。
2. 配置冗余网络基础架构
绑定网络将两个或多个网卡连接在一起,以创建用于网络流量的单个通道。我们建议您为集群池流量使用绑定网络。但是,在设置绑定网络之前,请确保您的网络硬件配置能够促进绑定网络中的冗余。请考虑根据您的组织和环境的可行性,实施尽可能多的这些建议。
以下最佳实践可增强针对可能影响网络交换机的软件、硬件或电源故障的弹性。
- 确保您有单独的物理网络交换机可用于绑定网络,而不仅仅是同一交换机上的端口。
- 确保单独的交换机从不同的独立电源分配单元 (PDU) 获取电源。
- 如果可能,在您的数据中心中,将配电单元 (PDU) 放置在不同相的电源馈线上,甚至是由不同公用事业公司提供的馈线上。
- 考虑使用不间断电源 (UPS) 设备,以确保网络交换机和服务器在断电时能够继续运行或执行有序关机。
3. 创建专用绑定网络
确保集群池中的主机能够可靠地相互通信非常重要。为该池流量创建绑定网络可以提高集群池的弹性。
注意:
集群网络不能位于非管理 VLAN 上。
绑定网络在两个或更多网卡之间创建绑定,以形成一个单一、高性能的通道,您的集群池可以使用该通道进行集群心跳流量。我们强烈建议此绑定网络不用于任何其他流量。为池创建单独的网络以用于管理流量。
警告:
如果您选择不遵循此建议,则丢失集群管理网络数据包的风险会更高。集群管理网络数据包的丢失可能导致您的集群池失去仲裁,并且池中部分或全部主机将自行隔离。
如果您的集群在此不推荐的配置中正在隔离或面临问题,XenServer 支持可能会要求您在调查过程中在推荐的配置上重现相同的问题。
要创建用作 GFS2 集群网络的绑定网络:
-
如果您的池中的主机之间有防火墙,请确保主机可以使用以下端口在集群网络上进行通信:
- TCP: 8892, 8896, 21064
- UDP: 5404, 5405
有关详细信息,请参阅 XenServer 使用的通信端口。
-
在您希望作为池协调器的 XenServer 主机上打开控制台。
-
使用以下命令创建用于绑定网卡的网络:
xe network-create name-label=bond0 <!--NeedCopy-->将返回新网络的 UUID。
-
使用以下命令查找要在绑定中使用的 PIF 的 UUID:
xe pif-list <!--NeedCopy--> -
以主动-主动模式、主动-被动模式或 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参数,并指定lacp或active-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 创建集群池:
-
创建至少包含三个 XenServer 主机的资源池。
在每个加入的 XenServer 主机(非池协调器)上重复以下步骤:
- 在 XenServer 主机上打开控制台。
-
使用以下命令将 XenServer 主机加入池协调器上的池:
xe pool-join master-address=<master_address> / master-username=<administrators_username> / master-password=<password> <!--NeedCopy-->master-address参数的值必须设置为作为池协调器的 XenServer 主机的完全限定域名。password必须是安装池协调器时设置的管理员密码。
有关更多信息,请参阅 主机和资源池。
-
对于属于此网络的每个 PIF,设置
disallow-unplug=true。-
使用以下命令查找属于该网络的 PIF 的 UUID:
xe pif-list <!--NeedCopy--> -
在资源池中的 XenServer 主机上运行以下命令:
xe pif-param-set disallow-unplug=true uuid=<pif_uuid> <!--NeedCopy-->
-
-
在池上启用群集。在资源池中的 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,则必须将主机置于维护模式才能启用多路径。
-
在 XenServer 主机上打开控制台。
-
使用以下命令拔出主机上的所有 PBD:
xe pbd-unplug uuid=<pbd_uuid> <!--NeedCopy-->您可以使用命令
xe pbd-list查找 PBD 的 UUID。 -
使用以下命令将
multipathing参数的值设置为true:xe host-param-set uuid=<host uuid> multipathing=true <!--NeedCopy--> -
如果主机上存在以单路径模式运行但具有多路径的现有 SR:
-
迁移或暂停受影响 SR 中具有虚拟磁盘的任何正在运行的虚拟机。
-
重新插入任何受影响 SR 的 PBD,以使用多路径重新连接它们:
xe pbd-plug uuid=<pbd_uuid> <!--NeedCopy-->
-
-
重复这些步骤,以在池中的所有主机上启用多路径。
确保在池中的所有主机上启用多路径。所有布线以及(对于 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-->
-
首先运行以下命令:
xe sr-probe-ext type=gfs2 device-config:provider=iscsi <!--NeedCopy-->命令的输出会提示您提供其他参数,并在每个步骤中给出可能的取值列表。
-
重复该命令,每次添加新参数。
-
当命令输出以
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-->
-
首先运行以下命令:
xe sr-probe-ext type=gfs2 device-config:provider=hba <!--NeedCopy-->命令的输出会提示您提供其他参数,并在每个步骤中给出可能的取值列表。
-
每次添加新参数,重复执行该命令。
-
当命令输出以
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 地址冲突。