修复VMware错误:需要虚拟机磁盘合并

在VMware vSphere中,虚拟机具有许多优势。如果使用适当的硬件并应用正确的软件配置,它们可以可靠地高性能地工作。有时,在VMware vSphere客户端中会显示虚拟机合并需求的状态,并且系统管理员必须修复此错误。本博文解释了为什么需要VMware虚拟机磁盘合并以及如何修复此错误。

什么是VMware磁盘合并?

虚拟磁盘合并是在创建VM快照后合并虚拟磁盘文件的过程。您可以按需启动磁盘合并,以避免性能下降和其他问题。当您拍摄快照时,会创建增量磁盘,并将更改写入适当的增量磁盘(默认情况下是最新的增量磁盘,直到选择恢复虚拟机的某个先前的快照)。因此,虚拟机存储中存在冗余数据,因为每个增量磁盘都包含与先前增量磁盘状态相比所做的所有更改,而父磁盘保持不变。

当快照链和相关虚拟磁盘文件变得很大时,性能会下降。当您执行VMware磁盘合并时,增量磁盘中的数据将合并到单个磁盘中,并且不会在存储此虚拟机文件的数据存储中留下冗余数据。在合并虚拟机磁盘文件后,存储空间将被清理。请记住,VMware建议每个虚拟机不要使用超过32个快照。

导致VMware磁盘合并错误的可能原因

在 VMware vSphere 客户端的 VM 摘要选项卡中显示出现了 需要VMware虚拟机磁盘合并 错误消息(如下图所示)。此错误消息的常见原因之一是错误地删除了 VM 快照,这可能会在数据存储器上留下与快照和日志文件相关的 VMDK 文件(例如,在您执行了 删除全部删除 操作后)。

虚拟机需要合并 状态的最常见原因:

  • VMFS 数据存储器上的磁盘空间不足,无法合并 VM 快照和合并虚拟磁盘文件。如果数据存储器上的可用空间少于 1 GB,则可能会出现此错误。
  • 连接到运行 VM 的 ESXi 主机的存储系统性能低下。如果快照大小较大或超时,快照合并可能会失败。
  • ESXi 主机和 vCenter 之间的连接问题。
  • 快照文件被第三方应用程序锁定,例如备份应用程序。如果备份应用程序未完成备份作业并锁定了快照,则可能会发生此情况(备份应用程序在运行备份时可以为虚拟机创建临时快照)。备份应用程序无法在不使用快照技术的情况下静默磁盘,以使运行中的 VM 的备份一致。

基本上,您应该恢复 VM 磁盘文件的一致性。

如何修复错误?

为了修复需要虚拟机合并状态,在VMware vSphere Client中右键单击虚拟机名称,在打开的菜单中点击快照 > 合并。

A confirmation message is displayed:

此操作将合并虚拟机上所有多余的重做日志。您确定要继续吗?

点击以确认并合并虚拟机磁盘文件。

注意: 如果担心在VMware磁盘合并期间可能会丢失一些数据,请进行VMware虚拟机备份,例如,将所有VM文件复制到数据存储的另一个文件夹中,然后执行VMware磁盘合并。

等待VMware磁盘合并完成并清除日志。您可以在VMware vSphere Client界面底部的任务面板中查看任务进度。如果虚拟机正在运行,则在此操作期间可能会降低VM性能。完成此操作所需的时间取决于虚拟机大小、快照数量和VM负载。

完成VMware磁盘合并任务后,VMware虚拟机磁盘合并所需的警告应该消失。

可能发生的错误

有时,在VMware磁盘合并期间可能会发生另一个错误,并显示以下错误消息:

无法访问文件,因为它被锁定。在合并磁盘时出现错误:无法锁定文件。磁盘节点‘scsi0:0’的合并失败。

锁定也可能在备份应用程序使用热添加磁盘选项进行备份时创建快照时发生。 VM文件锁旨在避免多个ESXi主机对文件的并发写入。

尝试执行以下操作来修复此错误。

  1. 重新启动VM所在的ESXi服务器上的管理代理。打开ESXi shell或通过SSH连接到ESXi主机并以root身份运行以下命令:

services.sh restart

/etc/init.d/hostd restart

/etc/init.d/vpxa restart

您也可以打开ESXi直接控制台,转到故障排除选项,然后选择重新启动管理代理(按Enter以激活所需选项,然后按F11以确认)。

  1. 使用以下命令检查锁定文件:

vmfsfilelockinfo -p /vmfs/volumes/vm_datastore/vm_name/vm_name.vmx

  1. 如果需要识别存储中VM文件所在路径,请检查hostd日志文件。

cat /var/log/hostd.log |grep -i vm_name

  1. 在了解VM文件位置的情况下,转到存储上的VM目录:

cd /vmfs/volumes/datastore_name/vm_name

  1. 运行以下命令以列出锁定VM文件的ESXi主机:

for i in `ls`; do vmfsfilelockinfo -p $i ;done|grep 'is locked in\|Host owning the lock\|Total time taken' | sed 's|Host owning the lock on file is||g'|sed 's|Total time|---|g' | awk '{print $1}' |uniq

  1. 重新启动 ESXi 管理代理,包括 hostdvpxa 如上所述,或者在锁定 VM 文件的 ESXi 主机上运行以下命令:

/etc/init.d/hostd restart

/etc/init.d/vpxa restart

解锁 VM 文件的另一种方法

作为替代,尝试以下步骤来修复 在整理磁盘时出现错误:无法锁定文件。

  1. 关闭虚拟机。
  2. 获取新的 VM 磁盘快照。
  3. 删除所有现有的 VM 快照。在 vSphere Client 中右键单击 VM 名称,选择 快照,然后点击 删除所有快照。

  1. 克隆 VM 或将 VM 迁移到另一个 ESXi 主机上,使用 vMotion 如果错误尚未被修复。
  2. 再次尝试整理快照,如上所述。

如果这些操作没有帮助,请尝试关闭虚拟机,打开虚拟机设置,选择虚拟机选项选项卡,然后展开高级部分,点击编辑配置。配置参数窗口中,点击添加配置参数。添加asyncConsolidate.forceSync参数,并将此参数设置为TRUE。

有时,虚拟机合并所需状态可能是由于不一致的-ctk.vmdk文件导致的(例如,由VM备份软件创建)。尝试删除CTK文件。快照合并不需要它们。在删除CTK文件之前,请不要忘记备份VM文件。然后再次尝试合并虚拟机磁盘文件。

合并选项处于非活动状态

如果VMware 合并快照选项灰掉(非活动状态),则可能有一个活动任务正在VM上运行。如果您看到“检测到无效的快照配置”错误,则可能存在一些损坏的快照或快照链分裂。在这种情况下,请尝试执行以下操作。

  1. 通过SSH连接到ESXi服务器,转到数据存储上的VM文件所在目录。

cd vmfs/volumes/DatastoreName/VMFolderName

您可以在VMware vSphere Client中检查VM文件的位置,并通过查看VM设置找到虚拟磁盘的位置。

  1. 确定正在指向哪些磁盘快照:

cat VM-name.vmx | grep scsi*

查看输出以检查包括虚拟磁盘快照文件在内的虚拟磁盘文件。例如,虚拟磁盘文件的名称显示在行中。这不是快照:

scsi 0:0.fileName = “VM-Name.vmdk”

在输出行中,显示了虚拟磁盘快照文件的名称,并且您正在指向快照:

scsi 0:0.fileName = “VM-Name-000002.vmdk”

A SCSI virtual disk controller is used in VM configuration in this example.

  1. 下一个命令检查每个快照指向的内容。使用此命令检测哪个快照指向快照链中的下一个磁盘文件(快照vmdk文件或基本磁盘vmdk文件)。

cat VM-Name-000002.vmdk | grep parentFileNameHint

您可能需要针对其他vmdk文件(比如此示例中的VM-Name-000001.vmdk)再次执行此命令,直到找到所需的基本磁盘。此方法可帮助您找到不一致之处。

  1. 如果找到了不一致之处,例如,VM-Name-000002.vmdk指向VM-Name-000001.vmdk,而后者又指向VM-Name.vmdk,则在磁盘快照链的最高点(在本例中为VM-Name-000002.vmdk)上运行vmkfstools:

vmkfstools -q -v10 VM-Name-000002.vmdk

此命令尝试打开并关闭链中的所有vmdk文件,并通知您故障发生的位置。

使用PowerCLI

作为在 VMware vSphere 客户端图形用户界面中执行 VMware 磁盘整合的替代方法,您可以使用带有命令行界面的 vSphere PowerCLI。

  1. 连接到管理 ESXi 主机具有所需虚拟机整合状态的 vCenter 服务器。在提示时输入凭据。

Connect-VIServer vcenter01.test.com

  1. 获取具有所需虚拟机整合状态的 VM 列表:

Get-VM | Where-Object {$_.Extensiondata.Runtime.ConsolidationNeeded}

  1. 执行 VMware 磁盘整合。

Get-VM | Where-Object {$_.Extensiondata.Runtime.ConsolidationNeeded} | foreach {$_.ExtensionData.ConsolidateVMDisks_Task()}

结论

本博文已解释了可以帮助您修复所需虚拟机整合状态的建议。通常在快照之一损坏、快照链不一致或快照被另一个 ESXi 主机锁定时,需要进行 VMware 虚拟机磁盘整合。

定期在您的VMware vSphere环境中运行虚拟机备份。如果您有数据备份,当数据被删除、损坏、被勒索软件加密,或者在vCenter操作期间出现错误时,您可以恢复数据并继续工作。VMware vCenter Server应该像其他重要的虚拟机一样进行备份。考虑使用NAKIVO Backup & Replication – 一款专业的备份产品,支持在VMware vSphere中备份虚拟机。

Source:
https://www.nakivo.com/blog/fix-vmware-error-virtual-machine-disks-consolidation-needed/