调查 ESXi/ESX 上的虚拟机文件锁定 (10051) 您所在的位置:网站首页 虚拟机注册失败 调查 ESXi/ESX 上的虚拟机文件锁定 (10051)

调查 ESXi/ESX 上的虚拟机文件锁定 (10051)

2023-09-04 21:44| 来源: 网络整理| 查看: 265

调查 ESXi/ESX 上的虚拟机文件锁定 (10051)

Last Updated: 11/28/2016Categories: Troubleshooting

 1

 Details

免责声明:本文为 Investigating virtual machine file locks on ESXi/ESX (10051) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。

 

打开虚拟机电源失败。无法打开虚拟机电源。将现有虚拟机磁盘 (VMDK) 添加到已打开电源的虚拟机失败显示错误:无法添加磁盘 scsi0:1。无法打开 scsi0:1 的电源(Failed to add disk scsi0:1. Failed to power on scsi0:1)  打开虚拟机电源时,出现下列错误之一:   无法打开交换文件 (Unable to open Swap File)文件已锁定,无法访问 (Unable to access a file since it is locked)文件  已锁定,无法访问 (Unable to access a file since it is locked)无法访问虚拟机配置 (Unable to access Virtual machine configuration)  在 /var/log/vmkernel 日志文件中,您会看到类似以下内容的条目:WARNING:World:VM xxxx:xxx:Failed to open swap file :Lock was not free WARNING:World:VM xxxx:xxx:Failed to initialize swap file   打开虚拟机控制台时,可能会收到以下错误:连接到 .vmx 时出错,因为该 VMX 未启动(Error connecting to .vmx because the VMX is not started)  打开虚拟机电源导致打开电源任务始终停留在 95%。从模板部署虚拟机后无法打开其电源。虚拟机报告 vCenter Server 和 ESXi/ESX 主机控制台的电源状态存在冲突。尝试通过文本编辑器(例如 cat 或 vi)查看或打开 .vmx 文件时报告类似于以下内容的错误:cat:无法打开“[虚拟机名称].vmx”:参数无效(cat:can't open '[name of vm].vmx':Invalid argument)

null

 Solution

文件锁定的目的

注意:有关在升级到 VMware ESXi 5.5 Patch 5 之后查找锁定所有者的详细信息,请参见 在 VMware ESXi 5.5 P05 中查找 VMFS 数据存储上的 VMDK 或文件的锁定所有者 (2125544)。

为了防止并行更改关键虚拟机文件和文件系统,ESXi/ESX 主机对这些文件建立了锁定。在某些情况下,当关闭虚拟机电源后,这些锁定可能不会解除。文件锁定后,服务器将无法访问这些文件,并且将无法打开虚拟机的电源。如下虚拟机文件会在运行时期间锁定:

VMNAME.vswpDISKNAME-flat.vmdkDISKNAME-ITERATION-delta.vmdkVMNAME.vmxVMNAME.vmxfvmware.log

初始快速测试

要使关键虚拟机运行,请执行以下操作:

将虚拟机迁移至已知上次在其上运行的主机,并尝试打开电源。如果不成功,请继续尝试在群集中的其他主机上打开虚拟机的电源。如果遇到持有文件锁定的主机,当相应文件锁定有效时,应该可以打开虚拟机电源。如果仍无法打开虚拟机电源,请继续执行以下步骤来调查更多详细信息。

要标识和释放文件上的锁定,请执行以下与您 ESXi 版本相关的步骤。

ESXi 故障排除步骤

确定锁定的文件

要确定锁定的文件,请尝试打开虚拟机电源。在打开电源过程中,可能会显示错误后有错误信息写入虚拟机日志。该错误和日志条目确定了虚拟机和文件:

如果适用,打开 vSphere 或 VMware Infrastructure (VI)Client 并将其连接到对应的 ESXi 主机、VirtualCenter Server 或者 vCenter Server 主机名或 IP 地址。找到受影响的虚拟机,并尝试打开其电源。打开虚拟机的远程控制台窗口。如果虚拟机无法开机,远程控制台屏幕上会显示一条包含受影响文件名称的错误消息。注意:如果错误未显示,请继续执行以下步骤来查看虚拟机的 vmware.log 文件:   使用 SSH 客户端以 root 身份登录 ESXi 主机。确认已在服务器上注册虚拟机,并运行以下命令获取虚拟机的完整路径:# vim-cmd vmsvc/getallvms输出会返回已在 ESXi 主机上注册的虚拟机列表。每行都包含虚拟机 .vmx 文件中的数据存储和位置。您会看到类似于以下内容的输出:[datastore] VMDIR/VMNAME.vmx确定该列表上是否有受影响的虚拟机。如果未列出,说明该虚拟机未在此 ESXi 主机上注册。通常在其上注册虚拟机的主机持有该锁定。确保已连接至正确的主机,然后再继续操作。  移至虚拟机目录:# cd /vmfs/volumes/datastore/VMDIR  使用文本查看器读取 vmware.log 文件的内容。在该文件末尾,查找标示出受影响文件的错误消息。

找到锁定并将其移除

虚拟机可以在主机之间移动,正因如此,虚拟机当前在其中注册的主机可能不是保持文件锁定的主机。必须由拥有锁定的 ESX/ESXi 主机来释放锁定。此主机由主管理 vmkernel 接口的 MAC 地址标识。注意:文件遭到锁定还可能是因为备份程序在备份虚拟机期间一直在锁定文件而导致的。如果备份存在任何问题,都可能会导致无法正确将锁定解除。在某些情况下,可能需要禁用备份应用程序或重新引导备份服务器来清除挂起的备份。此锁定可能由任何连接到同一存储的主机的 VMkernel 所保持。先确定 VMkernel 在锁定文件的服务器。要确定该服务器,请执行以下操作:

通过运行以下命令报告锁定持有者的 MAC 地址(NFS 卷上除外):# vmkfstools -D /vmfs/volumes/UUID/VMDIR/LOCKEDFILE.xxx注意:在所有通常锁定的虚拟机文件(如 Solution Section 开头所列)中运行此命令以确保确认所有锁定的文件。  对于 ESXi 4.1 之前的服务器,上述命令会把其输出写入系统日志。自 ESXi 4.1 起,输出还会显示在屏幕上。任何正在锁定 .vmdk 文件的主机的 MAC 地址都会包括在此输出中。要查找此信息,可以查看 /var/log/messages。查找类似于以下内容的行:Hostname vmkernel:17:00:38:46.977 cpu1:1033)Lock [type 10c00001 offset 13058048 v 20, hb offset 3499520Hostname vmkernel:gen 532, mode 1, owner xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx mtime xxxxxxxxxx] Hostname vmkernel:17:00:38:46.977 cpu1:1033)Addr , gen 19, links 1, type reg, flags 0x0, uid 0, gid 0, mode 600 Hostname vmkernel:17:00:38:46.977 cpu1:1033)len 297795584, nb 142 tbz 0, zla 1, bs 2097152 Hostname vmkernel:17:00:38:46.977 cpu1:1033)FS3:132: 第二行(以粗体显示)owner 一词后显示的是 MAC 地址。在此示例中,无效 ESXi 主机的管理 vmkernel 接口的 MAC 地址为 xx:xx:xx:xx:xx:xx。登录服务器之后,可分析保持锁定的进程。ESXi 4.0 U3、4.1 U1 或更高版本提供了一个新字段,可确定只读锁定所有者或多写入器锁定所有者。您会看到类似以下内容的输出:[root@test-esx1 testvm]# vmkfstools -D test-000008-delta.vmdk Lock [type 10c00001 offset 45842432 v 33232, hb offset 4116480 gen 2397, mode 2, owner 00000000-00000000-0000- 000000000000mtime 5436998]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有