Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Lỗi VMware: Không thể truy cập file vì nó bị khóa

Rất thường khi xóa snapshot hoặc gộp đĩa của máy ảo chạy trên VMware ESXi host, tôi thấy lỗi "Unable to access a file since it is locked". Vấn đề thường gặp này liên quan đến lỗi trong phần mềm sao lưu VM (tôi gặp vấn đề trong Veeam, HPE/Micro Focus Data Protector, Veritas.) Nếu snapshot của ổ cứng ảo bị khóa, bạn sẽ không thể gộp đĩa (khi thấy lỗi 'Virtual machine disks consolidation is needed'), di chuyển đĩa sang datastore khác bằng Storage vMotion, sao lưu VM hoặc xóa snapshot hiện tại. Đôi khi bạn thậm chí không thể bật máy ảo bị khóa.

Lỗi truy cập file ổ cứng ảo bị khóa hoặc snapshot trong VMware có thể trông như sau:

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

Lỗi VMware: Không thể truy cập file vì nó bị khóa

Cũng có thể thấy lỗi này:

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

Lỗi "Unable to access file since it is locked" thường xuất hiện khi:

  • Một số file của máy ảo đang bật chứa tag cho biết chúng bị khóa bởi ESXi host khác;
  • Khi ổ cứng ảo được thêm vào backup appliance và phiên bản sao lưu thất bại.

Để tìm nguồn khóa và giải phóng nó, bạn phải xác định file bị khóa trước.

  1. Sử dụng client SSH, kết nối với ESXi host mà VM gặp vấn đề đăng ký trên đó;
  2. Đi đến thư mục chứa file máy ảo: cd /vmfs/volumes/VMFS_DATASTORE_NAME/LOCKED_VM
  3. Tìm lỗi gộp và khóa file trong vmware.log: cat vmware.log | grep lock
  4. Log sẽ chứa lỗi như sau:
    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
    Lỗi VMware: Không thể truy cập file vì nó bị khóa
  5. Trong ví dụ này, bạn thấy file mun-web01_1-000002.vmdk bị khóa;
  6. Sử dụng lệnh sau, bạn có thể hiển thị chuỗi snapshot hiện tại bắt đầu từ snapshot chỉ định đến ổ đĩa flat:
    vmkfstools -qv10 mun-web01_1-000002.vmdk
  7. Sau đó lấy thông tin về snapshot và chủ sở hữu (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

Lỗi VMware: Không thể truy cập file vì nó bị khóa

Dòng RO Owner hiển thị địa chỉ MAC của card mạng ESXi host đã khóa file snapshot (địa chỉ MAC được highlight trên screenshot). Cũng lưu ý giá trị Mode:

  • mode 1 – khóa đọc/ghi (ví dụ: của VM đang bật);
  • mode 2 – thường có nghĩa là ổ cứng ảo bị khóa bởi ứng dụng backup.

Để tìm máy chủ ESXi nếu biết địa chỉ MAC, bạn có thể dùng các lệnh PowerCLI sau (chuyển đổi địa chỉ MAC bạn nhận được trước đó sang định dạng có dấu hai chấm):

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 *

Lỗi VMware: Không thể truy cập file vì nó bị khóa

Giải pháp tương tự khi bạn cần tìm VM trong VMware vCenter bằng IP hoặc MAC address.

Tên host ESXi sẽ hiển thị trong trường VMHost.

Cũng có thể hiển thị bảng ARP trực tiếp từ ESXi host và lấy IP và MAC của tất cả ESXi server khác trong mạng VMkernel:

esxcli network ip neighbor list

Lỗi VMware: Không thể truy cập file vì nó bị khóa

Để mở khóa file VM, chỉ cần khởi động lại ESXi host bạn đã tìm thấy (di chuyển tất cả VM khỏi nó bằng vMotion trước). Nếu không thể khởi động lại host, hãy khởi động lại Management Agent (hostd) trong Maintenance Mode từ console SSH của host:

services.sh restart

Sau đó thử gộp đĩa hoặc xóa snapshot VM lại.

Lỗi "Unable to access file since it is locked" thường xảy ra trong Veeam Backup & Replication khi dùng Veeam proxy server. Do lỗi backup, Veeam có thể không unmount đúng ổ cứng ảo máy ảo.

Để khắc phục, mở cài đặt VM nơi cài Veeam proxy. Tháo ổ đĩa của VM có file bị khóa khỏi phần cứng VM.

Đảm bảo bạn đã chọn "Remove from virtual machine" thay vì "Remove from virtual machine and delete files from disk" nếu không bạn có thể vô tình xóa ổ vmdk của mình.