处理计算机故障
本节详细介绍如何从各种故障方案中恢复。所有故障恢复方案都需要使用备份中列出的一个或多个备份类型。
成员失败
如果缺少高可用性功能,池协调器将通过接收常规检测信号消息检测成员的故障。如果在 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
。
池协调器故障
如有需要,资源池的每个成员都将包含担任池协调器角色所需的所有信息。当池协调器节点出现故障时,事件将按以下顺序发生:
-
如果启用高可用性功能,则会自动选择另一个池协调器。
-
如果未启用高可用性功能,则每个成员都将等待池协调器恢复。
此时如果池协调器恢复,它会与其成员重新建立通信,操作恢复正常。
如果池协调器已停用,请选择一个成员并在其上运行 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
)。
要还原彻底出故障的池,请执行以下操作:
-
安装一组全新的主机。请不要在此阶段将这些主机组成池。
-
对于任命为池协调器的主机,请使用
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。