我的任务是恢复 VMWare 6.5 集群,该集群在发生意外电源故障后,有一个虚拟机(最重要的虚拟机......)在启动时卡住了。
从vmware.log
文件中可以看出,问题与损坏的 CTK 文件有关,正如我所读到的此 VMware 知识库,删除受影响的 CTK 文件就足够了(好吧,其实不是所以简单,但足够简单......)
然而,受影响的虚拟机有一些活跃的快照,正如我读到的另一个(较旧的)知识库,这样的程序应该不是如果有快照则尝试。
解除虚拟机卡住并让启动过程完成的正确路径/程序是什么?
答案1
在这种情况下,解决方案是最简单但最奇怪的:等待夜晚。几个小时后,两个虚拟机都“解开”并正确启动。
关于更改跟踪文件 (CTK) 问题,我用备用的 VMWare 虚拟机管理程序模拟了这个问题,在阅读了 VMWare 自己的文档(细节很少……)后,我认为关键点在于你能即使虚拟机有活动快照,也要删除 CTK 文件,但此类更改可能会破坏任何后续的 CTK 感知备份。因此,在这种情况下,您还需要在虚拟机和磁盘级别禁用 CTK,整合所有快照,进行完整备份,重新启用 CTK(同样,在虚拟机和磁盘级别)并重新启用增量备份。
禁用 CTK 似乎仅对最后一个 CTK 文件有影响(注意:每个 VMDK 平面文件和增量文件都有一个 CTK 文件,因此每个快照都会命令一个新的 CTK 文件),这似乎是 VMWare 建议在启用/禁用块更改跟踪时不要使用快照的原因。从这里:
注意:在启用更改跟踪之前,请确保虚拟机上没有快照。如果在启用 CBT 之前创建快照,QueryChangedDiskAreas API 可能不会返回任何错误,或者 QueryChangedDiskAreas 返回的数据可能不正确。
答案2
您可以安全地删除 -ctk.vmdk 文件,但您还需要删除 .vmdk 文本文件描述符中的 CTK 相关信息。
# Change Tracking File
changeTrackPath="YOUR-VM-ctk.vmdk"
.vmx 文件中还有 CTK 相关信息。如下所示,有一个通用条目和一个每个磁盘的条目。
ctkEnabled = "TRUE"
scsi0:0.ctkEnabled = "TRUE"
scsi0:1.ctkEnabled = "TRUE"
然后删除快照(如果需要),并将上面的 CTK 信息重新添加到 .vmx 文件中。重新启动时,将再次生成 -ctk.vmdk 文件并重新初始化序列号。您的备份软件应该进行完全同步并在后续运行中重新获取 CBT 序列号。
这是一份关于如何排除 ©ESXi 快照故障。
使用快照时主要关注的是数据库或 Active Directory 等繁忙的服务,您需要一些桥接服务,以便 ©VMWare Tools 可以有序地暂停它们,以便在拍摄快照之前将剩余数据刷新到磁盘,或者使用将为您处理服务的 ©VMWare Tools 脚本手动解决问题。
部分用户的主要误解之一是错误地认为仅请求在繁忙的服务器中静止快照就足够了。