处理计算机故障

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

成员故障

如果缺少高可用性功能,主节点将通过接收常规检测信号消息检测成员的故障。如果在 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 主服务器 MDASH 池主服务器或使用本地存储 MDASH 的 XenServer 主机 ,您只需要提供第三个字符串(“master”)。

警告:

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

如果在运行上述脚本之前,尝试在另一个 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
    
  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

  2. 如果命令成功,请重新启动 VM。

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

  1. 运行以下命令:

    xe pool-restore-database file-name=backup
    

    警告:

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

  2. 如果目标计算机具有与原始计算机不同的存储视图(例如,具有不同 IP 地址的块镜像),请依次使用 pbd-destroy 命令和 pbd-create 命令修改存储配置以重新创建存储配置。有关这些命令的文档,请参阅 pbd 命令

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

  4. 重新启动所有 VM。

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

  1. 运行以下命令:

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

    xe vm-import filename=backup metadata=true --force
    

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

  3. 重新启动所有 VM。

处理计算机故障