VMWare錯誤訊息:程序無法存取檔案,因為另一個程序已鎖定檔案的一部分

稍微記錄一下之前遇到的VMware的錯誤。
之前要開啟虛擬機的時候,跳出了以下的這個錯誤:
「程序無法存取檔案,因為另一個程序已鎖定檔案的一部分」
「Cannot open the disk ‘D:\VM\Metasploitable2-Linux-Copy\Metasploitable.vmdk’ or one of the snapshot disks it depends on. Module ‘Disk’ power on failed. Failed to start the virtual machine」

(如果是簡體的會是「鎖定文件失敗,打不開磁盤或快照所依賴的磁盤」)

先說以下解決辦法,只要把虛擬機的資料夾下的.lck檔案都刪除就可以成功開啟了。

接著簡單紀錄一下,這種情形發生是因為虛擬機在執行的時候,會鎖定虛擬機防止被修改。
可以簡單的自己檢查看看,以下圖為例:

QubesOS並沒有在執行中,所以沒有lck的資料夾與檔案;
Metasploitable2正在執行中,所以有lck的資料夾與檔案。

那跳出這個「程序無法存取檔案,因為另一個程序已鎖定檔案的一部分」「vmware cannot open the disk」錯誤的可能通常有兩種:
第一種就是系統突然crash不正常關閉,虛擬機來不及解鎖,
第二種就是在未正確關閉虛擬機的情況下複製或移動虛擬機,將鎖定檔案一同帶過去,
不管是哪一種情況,在啟動的時候,都會跳出這個錯誤訊息提示。

可以簡單的利用複製資料夾的方法來重現這個錯誤,
假設我目前有一個Metasploitable2的虛擬機正在執行中,
那我將整個資料夾複製,將名稱改成Copy,
接著開啟VMware Workstation,
用File->Open來開啟這個Metasploitable2-Linux-Copy下的虛擬機,
就會跳出這個錯誤了。

解決的方法如下,相當的簡單,
在虛擬機的資料夾中直接搜尋副檔名.lck的檔案,
然後把這幾個檔案都刪除即可,
以下圖為例就是將搜尋到的三個.lck檔案刪除,
再重新啟動虛擬機就可以正常了。

發佈留言