处理计算机故障
本节详细介绍如何从各种故障方案中恢复。所有故障恢复方案都需要使用备份中列出的一个或多个备份类型。
成员失败
如果缺少高可用性功能,主节点将通过接收常规检测信号消息检测成员的故障。如果在 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
。
主服务器故障
如有需要,资源池的每个成员都将包含担任主服务器角色所需的所有信息。如果主节点发生故障,将依次发生下列事件:
-
如果禁用高可用性功能,则会自动选出另一个主服务器。
-
如果未启用高可用性功能,则每个成员都将等待主服务器恢复。
此时如果主服务器恢复,它会与其成员重新建立通信,操作恢复正常。
如果主服务器已停用,请选择一个成员并在其上运行 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
)。
要还原彻底出故障的池,请执行以下操作:
-
安装一组全新的主机。请不要在此阶段将这些主机组成池。
-
对于任命为主服务器的主机,请使用
xe pool-restore-database
命令从备份中还原池数据库(请参阅 pool-restore-database)。 -
使用 XenCenter 连接到主服务器主机并确保所有共享存储和 VM 都再次可用。
-
在已全新安装的其余成员主机上执行池加入操作,并在相应主机上启动 VM。
处理因配置错误导致的故障
如果物理主机可以运行但软件或主机配置被损坏,可按以下方式处理:
-
运行以下命令可还原主机软件和配置:
xe host-restore host=host file-name=hostbackup <!--NeedCopy-->
-
重新启动到主机安装 CD 并选择 Restore from backup(从备份还原)。
物理计算机故障
如果物理主机发生故障,请使用下面列表中的相应过程进行恢复。
警告:
所有曾在发生了故障的先前成员(或先前主机)上运行的 VM,在数据库中仍将被标记为
Running
。这种行为是为了安全考虑。同时在两个不同的主机上启动 VM 会导致严重的磁盘损坏。如果确定计算机(和 VM)处于脱机状态,您可以将 VM 电源状态重置为Halted
:
xe vm-reset-powerstate vm=vm_uuid --force
然后可以使用 XenCenter 或 CLI 重新启动 VM。
要使用仍处于运行状态的成员替换出现故障的主服务器,请执行以下操作:
-
运行以下命令:
xe pool-emergency-transition-to-master xe pool-recover-slaves <!--NeedCopy-->
-
如果命令成功,请重新启动 VM。
要还原所有主机都发生故障的池,请执行以下操作:
-
运行以下命令:
xe pool-restore-database file-name=backup <!--NeedCopy-->
警告:
仅当目标计算机具有合适数量的正确命名的 NIC 时,此命令才能成功。
-
如果目标计算机的存储视图与原始计算机不同,请使用
pbd-destroy
命令修改存储配置。接下来请使用pbd-create
命令重新创建存储配置。有关这些命令的文档,请参阅 pbd 命令。 -
如果已创建存储配置,请使用
pbd-plug
或 XenCenter 中的存储 > 修复存储库菜单项以使用新配置。 -
重新启动所有 VM。
要在 VM 存储不可用时还原 VM,请执行以下操作:
-
运行以下命令:
xe vm-import filename=backup metadata=true <!--NeedCopy-->
-
如果元数据导入失败,请运行以下命令:
xe vm-import filename=backup metadata=true --force <!--NeedCopy-->
此命令将“尽最大努力”尝试还原 VM 元数据。
-
重新启动所有 VM。