บ่อยครั้งมากเมื่อลบสแน็ปช็อตหรือรวมดิสก์ของเครื่องเสมือนที่ทำงานบนโฮสต์ VMWare ESXi ฉันเห็น “ไม่สามารถเข้าถึงไฟล์ได้เนื่องจากถูกล็อค " ข้อผิดพลาด. ปัญหาที่พบบ่อยนี้เกี่ยวข้องกับข้อผิดพลาดในซอฟต์แวร์สำรองข้อมูล VM (ฉันพบปัญหาใน Veeam, HPE/Micro Focus Data Protector, Veritas) หากสแน็ปช็อตของดิสก์เสมือนถูกล็อค คุณจะไม่สามารถรวมดิสก์ได้ (เมื่อคุณเห็นข้อผิดพลาด 'Virtual machine disks consolidation is needed
’) ย้ายดิสก์ไปยังที่เก็บข้อมูลอื่นโดยใช้ Storage vMotion สำรองข้อมูล VM หรือลบสแน็ปช็อตปัจจุบัน บางครั้งคุณไม่สามารถเปิดเครื่องเสมือนที่ล็อกไว้ได้
ข้อผิดพลาดในการเข้าถึงไฟล์ดิสก์เสมือนที่ถูกล็อกหรือสแน็ปช็อตใน VMWare อาจมีลักษณะดังนี้:
Unable to access file since it is locked. An error occurred while consolidating disks: One or more disks are busy.
นอกจากนี้ คุณอาจเห็นข้อผิดพลาดนี้:
An error occurred while consolidating disks: msg.snapshot.error-DISKLOCKED.
ข้อผิดพลาด “ไม่สามารถเข้าถึงไฟล์เนื่องจากถูกล็อค” มักปรากฏขึ้นเมื่อ:
- ไฟล์บางไฟล์ของเครื่องเสมือนที่ขับเคลื่อนด้วยเครื่องเสมือนมีแท็กที่ระบุว่าถูกล็อกโดยโฮสต์ ESXi อื่น
- เมื่อเพิ่มดิสก์เสมือนลงในอุปกรณ์สำรองข้อมูลและเซสชันการสำรองข้อมูลล้มเหลว
ในการค้นหาแหล่งที่มาของการล็อกและปลดล็อก คุณต้องระบุไฟล์ที่ถูกล็อกก่อน
- ใช้ไคลเอ็นต์ SSH เชื่อมต่อกับโฮสต์ ESXi ที่ลงทะเบียนปัญหา VM ไว้
- ไปที่ไดเรกทอรีที่มีไฟล์เครื่องเสมือน:
cd /vmfs/volumes/VMFS_DATASTORE_NAME/LOCKED_VM
- ค้นหาข้อผิดพลาดการรวมและการล็อกไฟล์ใน vmware.log:
cat vmware.log | grep lock
- บันทึกจะมีข้อผิดพลาดดังนี้:
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 ถูกล็อค
- โดยใช้คำสั่งต่อไปนี้ คุณสามารถแสดงสแน็ปช็อตเชนปัจจุบันโดยเริ่มจากอันที่ระบุไปยังแฟลตดิสก์:
vmkfstools -qv10 mun-web01_1-000002.vmdk
- จากนั้นรับข้อมูลเกี่ยวกับสแนปชอตและเจ้าของ (เจ้าของ 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
เจ้าของ RO บรรทัดแสดงที่อยู่ MAC ของอะแดปเตอร์เครือข่ายโฮสต์ ESXi ที่ล็อกไฟล์สแน็ปช็อต (ที่อยู่ MAC ถูกเน้นบนภาพหน้าจอ) นอกจากนี้ ให้สังเกตค่าโหมด:
- โหมด 1 – ล็อกการอ่าน/เขียน (เช่น ของ VM ที่เปิดใช้งาน)
- โหมด 2 – มักจะหมายความว่าดิสก์เสมือนถูกล็อคโดยแอปพลิเคชันสำรอง
หากต้องการค้นหาเซิร์ฟเวอร์ ESXi หากทราบที่อยู่ MAC คุณสามารถใช้คำสั่ง 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 *
โซลูชันที่คล้ายกันเมื่อคุณต้องการค้นหา VM ใน VMWare vCenter ด้วยที่อยู่ IP หรือ MAC
ชื่อโฮสต์ ESXi จะแสดงใน VMHost สนาม
นอกจากนี้ คุณยังสามารถแสดงตาราง ARP ได้โดยตรงจากโฮสต์ ESXi และรับที่อยู่ IP และ MAC ของเซิร์ฟเวอร์ ESXi อื่นๆ ทั้งหมดในเครือข่าย VMkernel:
esxcli network ip neighbor list
หากต้องการปลดล็อกไฟล์ VM ให้รีสตาร์ทโฮสต์ ESXi ที่คุณพบ (ย้าย VM ทั้งหมดจากไฟล์นั้นโดยใช้ VMotion ล่วงหน้า) หากคุณไม่สามารถรีสตาร์ทโฮสต์ได้ ให้รีสตาร์ท Management Agent (hostd) ในโหมดการบำรุงรักษาจากคอนโซล SSH ของโฮสต์:
services.sh restart
จากนั้นลองรวมดิสก์หรือลบสแนปชอต VM อีกครั้ง
“ไม่สามารถเข้าถึงไฟล์ได้เนื่องจากถูกล็อค ” มักเกิดข้อผิดพลาดใน Veeam Backup &Replication เมื่อใช้พร็อกซีเซิร์ฟเวอร์ Veeam เนื่องจากข้อผิดพลาดในการสำรองข้อมูล Veeam จึงไม่สามารถยกเลิกการต่อเชื่อมดิสก์เครื่องเสมือนได้อย่างถูกต้องในการแก้ไขปัญหาให้เปิดการตั้งค่าของ VM ติดตั้งพร็อกซี Veeam ลบดิสก์ของ VM ที่ล็อกไฟล์จากฮาร์ดแวร์ VM
ตรวจสอบให้แน่ใจว่าคุณได้เลือก “ลบออกจากเครื่องเสมือน ” แทนที่จะเป็น “Remove from virtual machine and delete files from disk” มิฉะนั้น คุณสามารถลบดิสก์ vmdk ของคุณโดยไม่ตั้งใจได้