带有 LVM 的 Citrix XenServer 已死机:如何从系统中获取 VHD?

带有 LVM 的 Citrix XenServer 已死机:如何从系统中获取 VHD?

我的公司最近委托我恢复一台相当老旧的(约 2015 年)Citrix Xenserver。这台机器发生了严重的电气故障,导致硬盘驱动器故障和 RAID 崩溃。没有备份,因此将驱动器送去进行数据恢复,恢复成功。机器无法启动,从硬盘驱动器启动恢复的数据会导致硬重置,同时显示 Citrix Xen 徽标。

该机器配置了 2x RAID6,其中一个包含虚拟机管理程序和存储库,另一个作为存储库扩展(稍后添加)。扩展已添加到 Xen 服务器的 LVM 卷组。

我已设法使所有卷重新启动并运行,所有 PV 均正常工作,并从虚拟机管理程序获取了一份副本state.db,我在其中搜索了连接到原始系统的所有 VDI。

目前,该机器有相当多的逻辑卷。它们都处于活动状态。我怀疑其中大部分是虚拟机管理程序上运行的大约 5 个虚拟机的快照。检查 Xen 数据库中的条目证实了这一点。(is_a_snapshotxml 中有一个部分)

所以我知道哪些 VHD 逻辑卷来自哪个虚拟机,包括拍摄快照时的信息以及快照卷的名称。

逻辑卷是正在运行的虚拟机的硬盘驱动器,因此每个不是快照的逻辑卷(即虚拟机的基本驱动器)都包含有效的分区表,并且可以通过指定挂载偏移量或使用它将其losetup附加到循环设备并partx在其上运行来挂载。

现在的问题在于:当然,附加的非快照卷包含拍摄快照之前的旧数据。但是:LVM 无法识别快照逻辑卷。我既无法确定数据库中标记为快照的卷上的分区表,也无法以任何方式挂载它们。

我在另一台测试机器上做了一些实验,创建了一个新的 VG 并添加了一个 LV。我在该 LV 上创建了一个分区表,将第一个分区格式化为 ext3。然后我拍摄了该 LV 的快照并检查快照卷是否包含有效的分区表fdisk -l- 结果是确实如此。因此,如果要求显示分区表,则正确从包含分区表的 LVM 逻辑卷拍摄的快照仍应显示分区表。

在我正在处理的死机 Xen 机器的逻辑卷上未发现此行为。在 中标记为快照的所有卷均未返回state.db有效分区表,无论是使用fdisk -l还是尝试其他工具(例如 )时guestfish

我尝试过lvconvert --merge合并快照。但是,它失败了,并提示“--trackchanges”未用于创建快照。我找不到有关此行为的任何信息。

[摘要]综上所述:

  • 带有逻辑卷 VHD 设置的 Dead Xen
  • 所有 LV 均处于活动状态且似乎完好无损
  • 我得到了一份副本,state.db其中注明了哪些 LV 是虚拟机,哪些是它们的快照
  • 我无法使用快照驱动器,因为 LVM 通常允许我这样做
  • 我无法合并快照

那么我有什么选择呢?有没有办法手动将 LV 重新合并在一起,或者我是否可以复制它们的内容并以某种方式连接数据?我可以将 VG 移动到另一个驱动器并将其安装到新的 Xen 中,然后以某种方式根据 中的信息将 VM 重新组合在一起吗state.db?我是不是在追寻一个误导性的线索,而 Xen 实际上并没有为 VM 的快照拍摄 LVM 快照?

以下是一些说明:

  • 我所做的每项操作都是在原始驱动器数据的副本上进行的。原始的、恢复的数据没有被篡改
  • 这些操作是在 GMRL 实时环境中完成的
  • VHD 数量超过 8TB
  • 机器的设置不是我做的,2015 年最初设置系统的人由于缺乏对 LVM 的了解而无法恢复它

相关内容