处理计算机故障

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

成员失败

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

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

  • 关闭主机并使用 xe host-forget CLI 命令指示池协调器忽略该成员节点。忘记该成员后,系统会将该成员上运行的所有 VM 标记为脱机,然后在其他 XenServer 主机上将其重新启动。

    确保 XenServer 主机确实脱机非常重要,否则可能会损坏 VM 数据。

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

警告:

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

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

警告:

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

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

如果发生故障的主机在崩溃时是 SR 池协调器,则只需提供第三个字符串(“master”)。(SR 池协调器是池协调器或使用本地存储的 XenServer 主机。)

警告:

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

如果在运行 resetvdis.py 脚本之前尝试在另一个 XenServer 主机上启动 VM,则将收到以下错误消息:VDI <UUID> already attached RW

池协调器故障

如有需要,资源池的每个成员都将包含担任池协调器角色所需的所有信息。当池协调器节点出现故障时,事件将按以下顺序发生:

  1. 如果启用高可用性功能,则会自动选择另一个池协调器。

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

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

如果池协调器已停用,请选择一个成员并在其上运行 xe pool-emergency-transition-to-master 命令。成为池协调器后,请运行命令 xe pool-recover-slaves,并且成员现在将指向新的池协调器。

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

将 XenServer 成员主机转换为池协调器后,请检查默认池存储库是否设置了适当的值。通过使用 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。

处理计算机故障