[VMware] 繞過損壞無法修復的 snapshot 的 VM

[VMware] 繞過損壞無法修復的 snapshot 的 VM

前一陣子公司的硬碟壞掉,不幸的是這顆硬碟上裝了 ESXi server,

其中一台 VM 是部門的 Wiki server,導致資料都讀不出來了…

最近用 在 CentOS 7 上讀取 VMware ESXi 5.0 vmfs 的檔案 的方法,

把這台 VM 的檔案從硬碟中直接複製了出來,想說直接用 VMware Workstation Pro 來開開看

結果就遇到了 VMDK corruption 的問題:

Screenshot from 2015-12-11 16:23:12

 

這邊就算按下 Yes 試著去修復也沒有用,結果還是失敗:

Screenshot from 2015-12-11 16:23:26  

 

參考了一下 VMware Knowledgebase: Repairing a virtual disk in Workstation

似乎可以用 vmware-vdiskmanager 來修修看: 

testuser@localhost ~/Wiki $ vmware-vdiskmanager -R Wiki-000004.vmdk 
The virtual disk, 'Wiki-000004.vmdk', was corrupted and has been successfully repaired.

 

訊息說是成功了,不過想要開啟 VM 時依然是說 VMDK corruption…

 

最後找到一個 workaround…

因為這台 VM 上有四個 snapshot,

其中最後兩個 snapshot 的時間只差一個星期,也就是說資料相差不大,

現在壞掉的是最後一個 snapshot 的 VMDK,因此如果跳過它, 

改用前一個 snapshot 的 VMDK,只會損失一點點資料~

 

先看一下 VM 目錄裡的檔案,可以看到四組 snapshot,

日期由舊到新分別是:

  – 第一組:Wiki-000001-delta.vmdk, Wiki-000001.vmdk, Wiki-Snapshot1.vmsn

  – 第二組:Wiki-000002-delta.vmdk, Wiki-000002.vmdk, Wiki-Snapshot2.vmsn

  – 第三組:Wiki-000003-delta.vmdk, Wiki-000003.vmdk, Wiki-Snapshot6.vmsn

  – 第四組:Wiki-000004-delta.vmdk, Wiki-000004.vmdk, Wiki-Snapshot7.vmsn

testuser@localhost ~/Wiki $ ll
-rw-------. 1 testuser testuser    822497280 Dec 11 15:29 Wiki-000001-delta.vmdk
-rw-------. 1 testuser testuser          332 Dec 11 15:29 Wiki-000001.vmdk
-rw-------. 1 testuser testuser  18606346240 Dec 11 15:40 Wiki-000002-delta.vmdk
-rw-------. 1 testuser testuser          339 Dec 11 15:40 Wiki-000002.vmdk
-rw-------. 1 testuser testuser   3674624000 Dec 11 15:42 Wiki-000003-delta.vmdk
-rw-------. 1 testuser testuser          339 Dec 11 15:42 Wiki-000003.vmdk
-rw-------. 1 testuser testuser   4394106880 Dec 11 17:56 Wiki-000004-delta.vmdk
-rw-------. 1 testuser testuser          339 Dec 11 15:45 Wiki-000004.vmdk
-rw-r--r--. 1 testuser testuser           27 Dec 11 15:47 Wiki-c9fa2401.hlog
-rwxr-xr-x. 1 testuser testuser            0 Dec 11 15:47 Wiki-c9fa2401.vswp
-rw-------. 1 testuser testuser 214748364800 Dec 11 16:14 Wiki-flat.vmdk
-rw-------. 1 testuser testuser         8684 Dec 11 16:14 Wiki.nvram
-rw-------. 1 testuser testuser        27967 Dec 11 15:45 Wiki-Snapshot1.vmsn
-rw-------. 1 testuser testuser        27974 Dec 11 15:45 Wiki-Snapshot2.vmsn
-rw-------. 1 testuser testuser   2155325194 Dec 11 15:46 Wiki-Snapshot6.vmsn
-rw-------. 1 testuser testuser   2156825838 Dec 11 15:47 Wiki-Snapshot7.vmsn
-rw-------. 1 testuser testuser          529 Dec 11 16:14 Wiki.vmdk
-rw-r--r--. 1 testuser testuser         1459 Dec 11 16:14 Wiki.vmsd
-rwxr-xr-x. 1 testuser testuser         3004 Dec 11 16:28 Wiki.vmx
-rw-r--r--. 1 testuser testuser          269 Dec 11 16:14 Wiki.vmxf

 

這四組 snapshot 的關聯用 Snapshot Manager 來看,正好是直線的:

(第一組) -> (第二組) -> (第三組) -> (第四組)

 

想要跳過最後一組 snapshot,需要先修改 Wiki.vmx:

scsi0:0.fileName = "Wiki-000004.vmdk"

 

上面是寫說這個 VM 的目前硬碟是 Wiki-000004.vmdk~ 

要跳過壞掉的 Wiki-000004.vmdk,很直覺地將 Wiki.vmx 的內容改成用 Wiki-000003.vmdk:

scsi0:0.fileName = "Wiki-000003.vmdk"

 

不過光是這樣改沒有用,想將 VM 開機時,說這個 Wiki-000003.vmdk 已經被使用:

Screenshot from 2015-12-14 00:31:21   

 

不過這個錯誤訊息似乎不太正確,其實是因為 VM 裡還設定了四個 snapshot,

所以 VMware Workstation 還會試著去找 Wiki-000004.vmdk,

不過大概是資料不一致導致出錯了…

修改一下 Wiki.vmsd,將 snapshot 數量從 4 改成 3:

snapshot.numSnapshots = "3"

 

就可以成功將 VM 開機囉~

算是一個 workaround,真希望可以找到一個把 VMDK 完全修復的方法呀~

 

參考資料:ESXi Snapshot Files 

(本頁面已被瀏覽過 1,673 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料