บ่อยครั้งเวลาลบ Snapshot หรือ Consolidate Disks ของ VM ที่รันบน VMware ESXi Hosts จะเจอ Error "Unable to access a file since it is locked" ปัญหานี้เกี่ยวข้องกับ Error ของ VM Backup Software (เจอใน Veeam, HPE/Micro Focus Data Protector, Veritas) หาก Snapshot ของ Virtual Disk ถูก Lock จะไม่สามารถ Consolidate Disks ได้ (เวลาเจอ Error Virtual machine disks consolidation is needed) ย้าย Disk ไป Datastore อื่นด้วย Storage vMotion, Backup VM หรือลบ Snapshot ปัจจุบันได้ บางครั้งแม้แต่ Power On Locked VM ก็ไม่ได้
Error การเข้าถึง Locked Virtual Disk File หรือ Snapshot ใน VMware อาจมีลักษณะดังนี้:
Unable to access file since it is locked. An error occurred while consolidating disks: One or more disks are busy.

อาจเจอ Error นี้ด้วย:
An error occurred while consolidating disks: msg.snapshot.error-DISKLOCKED.
สาเหตุหลักของ Error "Unable to access file since it is locked":
- บางไฟล์ของ Powered-on VM มี Tag บ่งบอกว่า Locked โดย ESXi Hosts อื่น
- เวลา Virtual Disks ถูกเพิ่มเข้า Backup Appliance และ Backup Session Fail
เพื่อหาแหล่ง Lock และปลด Lock ต้องระบุ Locked Files ก่อน
- SSH เข้า ESXi Host ที่ Problem VM ลงทะเบียนอยู่
- ไป Directory ที่มีไฟล์ VM:
cd /vmfs/volumes/VMFS_DATASTORE_NAME/LOCKED_VM - หา Consolidation และ File Locking Errors ใน vmware.log:
cat vmware.log | grep lock - Log จะมี Error ประมาณนี้:
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

- ในตัวอย่างเห็นว่าไฟล์ mun-web01_1-000002.vmdk ถูก Lock
- ใช้คำสั่งต่อไปนี้แสดง Snapshot Chain เริ่มจากไฟล์ที่ระบุจนถึง Flat Disk:
vmkfstools -qv10 mun-web01_1-000002.vmdk - จากนั้นดูข้อมูล Snapshot และ Owner (RO Owner):
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

บรรทัด RO Owner แสดง MAC Address ของ ESXi Host Network Adapter ที่ Lock Snapshot File (MAC Address ไฮไลท์ใน Screenshot) สังเกตค่า Mode ด้วย:
- mode 1 – Read/Write Lock (เช่น Powered-on VM)
- mode 2 – ปกติหมายถึง Virtual Disk ถูก Lock โดย Backup Application
เพื่อหา ESXi Server จาก MAC Address ที่รู้ ใช้ PowerCLI Commands (แปลง MAC Address ที่ได้เป็น Format คั่นด้วย Colon):
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 *

วิธีคล้ายกันเมื่อต้องการหา VM ใน vCenter จาก IP หรือ MAC Address
ESXi Hostname จะแสดงใน Field VMHost
ยังสามารถแสดง ARP Table โดยตรงจาก ESXi Host และได้ IP และ MAC Addresses ของ ESXi Servers อื่นใน VMkernel Network:
esxcli network ip neighbor list

เพื่อ Unlock VM File ให้ Restart ESXi Host ที่พบ (Migrate VMs ทั้งหมดออกด้วย vMotion ก่อน) หาก Restart Host ไม่ได้ ให้ Restart Management Agent (hostd) ใน Maintenance Mode จาก SSH Console ของ Host:
services.sh restart
จากนั้นลอง Consolidate Disks หรือลบ VM Snapshot อีกครั้ง
Error "Unable to access file since it is locked" เกิดบ่อยใน Veeam Backup & Replication เมื่อใช้ Veeam Proxy Server เนื่องจาก Backup Errors Veeam อาจไม่ Unmount VM Disk ได้ถูกต้อง
เพื่อแก้ไข เปิด Settings ของ VM ที่ Veeam Proxy ติดตั้งอยู่ ลบ Disk ของ VM ที่มี Locked Files ออกจาก VM Hardware
ตรวจสอบว่าได้ติ๊ก "Remove from virtual machine" แทน "Remove from virtual machine and delete files from disk" มิฉะนั้นอาจลบ VMDK Disk ของคุณโดยไม่ตั้งใจ