Citrix Hypervisor

处理计算机故障

本节详细介绍如何从各种故障方案中恢复。所有故障恢复方案都需要使用备份中列出的一个或多个备份类型。

成员失败

如果缺少高可用性功能,主节点将通过接收常规检测信号消息检测成员的故障。如果在 600 秒内还没有接收到检测信号,主服务器就会认为该成员已停止活动。可通过下列两种方式从此问题中恢复:

  • 修复停止活动的主机(例如,以物理方式重新启动主机)。还原与该成员的连接后,主服务器会再次将该成员标记为活动成员。

  • 关闭主机并使用 xe host-forget CLI 命令指示主服务器忽略该成员节点。忘记该成员后,在该成员上运行的所有 VM 都将被标记为脱机,并且可以在其他 Citrix Hypervisor 服务器上重新启动。

    确保 Citrix Hypervisor 服务器确实脱机非常重要,否则可能会损坏 VM 数据。

    请勿使用 xe host-forget 将池拆分为单个主机的多个池。此操作可能会导致其全部映射相同的共享存储并损坏 VM 数据。

警告:

  • 如果您准备将已忽略的主机再次用作活动主机,请执行 Citrix Hypervisor 软件的全新安装。
  • 如果此池中启用了高可用性功能,请不要使用 xe host-forget 命令。首先禁用高可用性,忘记主机,然后再重新启用高可用性。

成员 Citrix Hypervisor 服务器出现故障后,可能存在仍以正在运行状态注册的 VM。如果您确定成员 Citrix Hypervisor 服务器确实已关闭,请使用 xe vm-reset-powerstate CLI 命令将 VM 的电源状态设置为 halted。请参阅 vm-reset-powerstate 以了解更多详细信息。

警告:

如果此命令使用不当,则会导致数据损坏。仅在必要时使用此命令。

在另一个 Citrix Hypervisor 服务器上启动 VM 之前,还需要释放 VM 存储的锁定。一次只能在主机上使用 SR 中的一个磁盘。在某个主机出现故障后,使磁盘可供其他 Citrix Hypervisor 服务器访问非常关键。为此,请在池主服务器上针对任何受影响 VM 的磁盘所在的每个 SR 运行以下脚本:/opt/xensource/sm/resetvdis.py host_UUID SR_UUID master

如果在出现崩溃时,出现故障的主机是 SR 主服务器,您只需要提供第三个字符串(“master”)。(SR 主服务器为池主服务器或使用本地存储的 Citrix Hypervisor 服务器。)

警告:

在运行此命令之前,请确保主机已关闭。如果此命令使用不当,则会导致数据损坏。

如果在运行 resetvdis.py 脚本之前尝试在另一个 Citrix Hypervisor 服务器上启动 VM,您将收到以下错误消息:VDI <UUID> already attached RW

主服务器故障

如有需要,资源池的每个成员都将包含担任主服务器角色所需的所有信息。如果主节点发生故障,将依次发生下列事件:

  1. 如果禁用高可用性功能,则会自动选出另一个主服务器。

  2. 如果未启用高可用性功能,则每个成员都将等待主服务器恢复。

此时如果主服务器恢复,它会与其成员重新建立通信,操作恢复正常。

如果主服务器已停用,请选择一个成员并在其上运行 xe pool-emergency-transition-to-master 命令。当该成员成为主服务器后,运行命令 xe pool-recover-slaves,这些成员此时将指向新的主服务器。

如果修复或替换用作原始主服务器的服务器,您只需启动该服务器,安装 Citrix Hypervisor 软件,然后将其添加到池中即可。由于池中的 Citrix Hypervisor 服务器被强制设置为同类主机,因此实际上不需要将替换的服务器设为主服务器。

将成员 Citrix Hypervisor 服务器转换为主服务器后,请检查是否已将默认池存储库设置为相应的值。通过使用 xe pool-param-list 命令并验证 default-SR 参数是否指向有效的存储库,可完成此检查。

池故障

如果您的整个资源池不幸发生故障,必须从头开始重新创建池数据库。请务必使用 xe pool-dump-database CLI 命令定期备份池元数据(请参阅 pool-dump-database)。

要还原彻底出故障的池,请执行以下操作:

  1. 安装一组全新的主机。请不要在此阶段将这些主机组成池。

  2. 对于任命为主服务器的主机,请使用 xe pool-restore-database 命令从备份中还原池数据库(请参阅 pool-restore-database)。

  3. 使用 XenCenter 连接到主服务器主机并确保所有共享存储和 VM 都再次可用。

  4. 在已全新安装的其余成员主机上执行池加入操作,并在相应主机上启动 VM。

处理因配置错误导致的故障

如果物理主机可以运行但软件或主机配置被损坏,可按以下方式处理:

  1. 运行以下命令可还原主机软件和配置:

    xe host-restore host=host file-name=hostbackup
    <!--NeedCopy-->
    
  2. 重新启动到主机安装 CD 并选择 Restore from backup(从备份还原)。

物理计算机故障

如果物理主机发生故障,请使用下面列表中的相应过程进行恢复。

警告:

所有曾在发生了故障的先前成员(或先前主机)上运行的 VM,在数据库中仍将被标记为 Running。这种行为是为了安全考虑。同时在两个不同的主机上启动 VM 会导致严重的磁盘损坏。如果确定计算机(和 VM)处于脱机状态,您可以将 VM 电源状态重置为 Halted

xe vm-reset-powerstate vm=vm_uuid --force

然后可以使用 XenCenter 或 CLI 重新启动 VM。

要使用仍处于运行状态的成员替换出现故障的主服务器,请执行以下操作:

  1. 运行以下命令:

    xe pool-emergency-transition-to-master
    xe pool-recover-slaves
    <!--NeedCopy-->
    
  2. 如果命令成功,请重新启动 VM。

要还原所有主机都发生故障的池,请执行以下操作:

  1. 运行以下命令:

    xe pool-restore-database file-name=backup
    <!--NeedCopy-->
    

    警告:

    仅当目标计算机具有合适数量的正确命名的 NIC 时,此命令才能成功。

  2. 如果目标计算机的存储视图与原始计算机不同,请使用 pbd-destroy 命令修改存储配置。接下来请使用 pbd-create 命令重新创建存储配置。有关这些命令的文档,请参阅 pbd 命令

  3. 如果已创建存储配置,请使用 pbd-plug 或 XenCenter 中的存储 > 修复存储库菜单项以使用新配置。

  4. 重新启动所有 VM。

要在 VM 存储不可用时还原 VM,请执行以下操作:

  1. 运行以下命令:

    xe vm-import filename=backup metadata=true
    <!--NeedCopy-->
    
  2. 如果元数据导入失败,请运行以下命令:

    xe vm-import filename=backup metadata=true --force
    <!--NeedCopy-->
    

    此命令将“尽最大努力”尝试还原 VM 元数据。

  3. 重新启动所有 VM。

处理计算机故障