处理机器故障

本节详细介绍如何从各种失败场景中恢复。所有故障恢复场景都要求使用中列出的一种或多种备份类型备份

成员失败

在无HA的情况下,主节点通过定时接收心跳消息来检测成员故障。如果在600秒内没有接收到心跳,则主服务器认为该成员已经死亡。有两种方法可以解决这个问题:

  • 修复死亡的主机(例如,通过物理重新启动它)。当恢复到成员的连接时,主服务器将该成员再次标记为活动状态。

  • 方法关闭主机并指示主机忘记成员节点xe host-forgetCLI命令。一旦该成员被遗忘,在该成员中运行的所有vm将被标记为脱机,并可以在其他Citrix Hypervisor服务器上重新启动。

    务必确保Citrix Hypervisor服务器实际上处于脱机状态,否则可能会发生虚拟机数据损坏。

    不要将您的池拆分为单个主机的多个池使用xe host-forget.此操作可能导致它们都映射到相同的共享存储并破坏VM数据。

警告:

  • 如果您打算再次使用被遗忘的主机作为活动主机,请重新安装Citrix Hypervisor软件。
  • 不要使用xe host-forget如果该资源池已开启HA功能,则执行命令。先关闭HA,然后忘记主机,再重新启用HA。

成员Citrix Hypervisor服务器发生故障时,可能仍有虚拟机注册在运行状态。如果您确定成员Citrix Hypervisor服务器确实宕机,请使用xe vm-reset-powerstate命令,将虚拟机的电源状态设置为停止.看到vm-reset-powerstate欲知详情。

警告:

该命令使用不当可能导致数据损坏。仅在必要时使用该命令。

在启动其他Citrix Hypervisor服务器上的虚拟机之前,还需要释放虚拟机存储上的锁。在同一时间,只有一台主机可以使用sr中的每个磁盘。当一台主机发生故障时,关键是要让其他Citrix Hypervisor服务器可以访问该磁盘。为此,在包含受影响虚拟机磁盘的每个SR的主池上运行以下脚本:/ opt / xensource / sm / resetvdis.pyhost_UUID SR_UUID master

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

警告:

执行该命令前请确保主机已关闭。该命令使用不当可能导致数据损坏。

如果在运行该命令之前,试图在其他Citrix Hypervisor服务器上启动虚拟机resetvdis.py脚本,然后您会收到以下错误消息:VDI 已连接RW

大师的失败

资源池的每个成员都包含在必要时接管master角色所需的所有信息。当主节点故障时,会发生以下事件:

  1. 如果启用了HA,系统将自动选出另一个master。

  2. 如果没有启用HA,每个成员都等待主服务器返回。

如果master在此时恢复,它将重新与它的成员建立通信,操作将恢复正常。

如果主服务器已死亡,则选择其中一个成员并运行该命令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-databaseCLI命令(见pool-dump-database).

恢复一个完全失效的存储池。

  1. 安装一组新的主机。在这个阶段不要把它们放在一起。

  2. 对于指定为主主机的主机,使用xe pool-restore-database命令(见pool-restore-database).

  3. 使用XenCenter连接主主机,确保所有共享存储和虚拟机恢复可用。

  4. 在剩余新安装的成员主机上执行加入池操作,并在相应的主机上启动虚拟机。

处理配置错误导致的故障

如果物理主机运行正常,但软件或主机配置已损坏:

  1. 使用实例恢复主机软件和配置。

    Xe host-restore host=host file-name=hostbackup 
  2. 重新启动到主机安装光盘并选择从备份恢复

物理机器故障

如果物理主机出现故障,请使用以下列表中的适当步骤进行恢复。

警告:

运行在前一个成员(或前一个主机)上的虚拟机,如果出现故障,仍然会被标记为运行在数据库中。这种行为是为了安全。在两台不同的主机上同时启动虚拟机将导致严重的磁盘损坏。如果确定计算机(和虚拟机)处于脱机状态,则可以将虚拟机电源状态重置为停止

Xe vm-reset-powerstate vm=vm_uuid——force

可通过XenCenter或命令行方式重启虚拟机。

用一个仍在运行的成员替换一个失败的主节点:

  1. 执行如下命令:

    Xe pool-emergency-transition-to-master——NeedCopy >
  2. 命令执行成功后,重启虚拟机。

使用实例恢复所有主机的存储池失败。

  1. 执行如下命令:

    Xe pool-restore-database file-name=backup 

    警告:

    该命令仅在目标计算机具有适当数量的名称适当的nic时才会成功。

  2. 如果目标计算机具有与原始计算机不同的存储视图,则使用pbd-destroy命令。接下来使用pbd-create命令,重新创建存储配置。看到pbd命令获取这些命令的文档。

  3. 如果您已经创建了存储配置,请使用pbd-plugStorage >修复存储库菜单项中使用新的配置。

  4. 重启所有虚拟机。

当虚拟机存储不可用时,恢复虚拟机。

  1. 执行如下命令:

    Xe vm-import filename=备份元数据=true 
  2. 如果导入元数据失败,执行以下命令:

    Xe vm-import filename=备份元数据=true——force 

    此命令尝试在“尽最大努力”的基础上恢复VM元数据。

  3. 重启所有虚拟机。

处理机器故障