当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] VMWare 错误:由于文件被锁定而无法访问该文件

作者:精品下载站 日期:2024-12-14 22:54:24 浏览:16 分类:玩电脑

VMWare 错误:由于文件被锁定而无法访问该文件


在删除快照或整合在 VMWare ESXi 主机上运行的虚拟机磁盘时,我经常会看到“无法访问文件,因为它已锁定”错误。这个常见问题与虚拟机备份软件中的错误有关(我在 Veeam、HPE/Micro Focus Data Protector、Veritas 中遇到过这个问题。)如果虚拟磁盘的快照被锁定,您将无法整合磁盘(当您看到错误“

Virtual machine disks consolidation is needed

’)、使用 Storage vMotion 将磁盘移动到另一个数据存储、备份虚拟机或删除当前快照。有时您甚至无法打开锁定的虚拟机。

在 VMWare 中访问锁定的虚拟磁盘文件或快照时出现的错误可能如下所示:

Unable to access file since it is locked.
An error occurred while consolidating disks: One or more disks are busy.

[玩转系统] VMWare 错误:由于文件被锁定而无法访问该文件

另外,您可能会看到此错误:

An error occurred while consolidating disks: msg.snapshot.error-DISKLOCKED.

最常见的错误是“无法访问文件,因为它被锁定”:

  • 已启动虚拟机的某些文件包含表明它们已被其他 ESXi 主机锁定的标签;

  • 将虚拟磁盘添加到备份设备并且备份会话失败时。

要找到锁的来源并释放它,您必须首先识别锁定的文件。

  1. 使用 SSH 客户端连接到 ESXi 主机,提示问题虚拟机注册在其上;

  2. 转到包含虚拟机文件的目录:

    cd /vmfs/volumes/VMFS_DATASTORE_NAME/LOCKED_VM
  3. 在 vmware.log 中查找合并和文件锁定错误:

    cat vmware.log | grep lock
  4. 日志将包含类似这样的错误:

    VigorSnapshotManagerConsolidateCallback: snapshotErr = Failed to lock the file (5:4008)
    2020-09-09T05:07:11.432Z| vmx| I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01_1-000002.vmdk": Failed to lock the file (16392).
    2020-09-09T05:07:11.432Z| Worker#1| I125: DISKLIB-LIB : Failed to open '/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01-000002.vmdk' with flags 0xa Failed to lock the file (16392).
    2020-09-09T05:07:11.432Z| Worker#1| I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01-000002.vmdk": Failed to lock the file (16392).
    2020-09-09T05:07:11.432Z| vmx| I125: [msg.fileio.lock] Failed to lock the file

    [玩转系统] VMWare 错误:由于文件被锁定而无法访问该文件

  5. 在此示例中,您可以看到文件mun-web01_1-000002.vmdk已被锁定;

  6. 使用以下命令,可以显示当前从指定快照链开始到平面磁盘的快照链:

    vmkfstools -qv10 mun-web01_1-000002.vmdk
  7. 然后获取快照及其所有者(RO所有者)的信息:

    vmkfstools -D mun-web01-000001-delta.vmdk
Lock [type 10c000021 offset 242835456 v 856, hb offset 3153920
gen 3, mode 1, owner 5cbac61a-4b6e32b7-0480-d06726ae7900 mtime 5199410
num 0 gblnum 0 gblgen 0 gblbrk 0]
RO Owner[0] HB Offset 3153920 5cbac61a-4b6e32b7-0480-d06726ae7900
Addr <4, 532, 83>, gen 859, links 1, type reg, flags 0, uid 0, gid 0, mode 600

[玩转系统] VMWare 错误:由于文件被锁定而无法访问该文件

RO Owner 行显示已锁定快照文件的 ESXi 主机网络适配器的 MAC 地址(该 MAC 地址在屏幕截图中突出显示)。另外,请注意模式值:

  • 模式 1 - 读/写锁定(例如,已启动的虚拟机的锁定);

  • 模式 2 - 通常表示虚拟磁盘被备份应用程序锁定。

要在已知 MAC 地址的情况下查找 ESXi 服务器,您可以使用以下 PowerCLI 命令(将之前获得的 MAC 地址转换为带冒号的格式):

Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
connect-viserver mun-vcenter
Get-VMHost | Get-VMHostNetworkAdapter | Where-Object {$_.Mac -like "d0:67:26:ae:79:00"} | Format-List -Property *

[玩转系统] VMWare 错误:由于文件被锁定而无法访问该文件

当您需要通过 IP 或 MAC 地址在 VMWare vCenter 中查找虚拟机时,可以使用类似的解决方案。

ESXi 主机名将显示在VMHost 字段中。

此外,您还可以直接从 ESXi 主机显示 ARP 表,并获取 VMkernel 网络中所有其他 ESXi 服务器的 IP 和 MAC 地址:

esxcli network ip neighbor list

[玩转系统] VMWare 错误:由于文件被锁定而无法访问该文件

要解锁虚拟机文件,只需重新启动您找到的 ESXi 主机(提前使用 VMotion 从中迁移所有虚拟机)。如果无法重新启动主机,请从主机的 SSH 控制台以维护模式重新启动管理代理 (hostd):

services.sh restart

然后再次尝试整合磁盘或删除虚拟机快照。

使用 Veeam 代理服务器时,Veeam Backup & Replication 中经常会出现“无法访问文件,因为文件已锁定”错误。由于备份错误,Veeam 可能无法正确卸载虚拟机磁盘。

要解决此问题,请打开安装了 Veeam 代理的虚拟机的设置。从虚拟机硬件中删除已锁定文件的虚拟机磁盘。

确保您已选中“从虚拟机中删除”而不是“从虚拟机中删除并从磁盘中删除文件”,否则您可能会意外删除 vmdk 磁盘。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯