如何從XenServer恢復誤刪的虛擬機數據

經常有用戶問到如何從xenserver的角度恢復被客戶誤刪除的虛擬機,citrix 技術支持並不提供這種數據恢復服務,但是並不是無法恢復,過程比較繁瑣,我在這裏整理下如何恢復誤刪的虛擬機數據。

這裏我新建一個測試存儲和測試vm

QQ圖片20140727192038    
上圖中我們看到SR對應的uuid爲4ec639db-6c87-b775-73d1-b54e21b3a31a    
打開xenserver命令行輸入pvsan找到該存儲對應的VG和PV信息

QQ截圖20140727192141    
默認VG的信息保存在/etc/lvm/backup    
#dir

image    
這裏爲了測試,我先備份原來的VG信息,這裏備份到/root目錄下    
#cp VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a /root    
這個時候我們嘗試去刪除虛擬機並且刪除磁盤文件    
刪除之後我們看到存儲上已經沒有對應起數據,因爲我們之前已經備份過VG,所以我們直接通過命令來恢復VG信息    
#vgcfgrestore VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a -f /root/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a    
恢復完成後我們通過lvscan去檢查是否恢復    
#lvscan |grep 4ec6

image    
我們看到這裏的VHD-306128a9-7138-4611-a2c6-b79823e1e58b已經恢復,但是這裏看到該邏輯卷是inactive的,我們需要先激活    
#lvchange –ay /dev/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a/VHD-306128a9-7138-4611-a2c6-b79823e1e58b    
激活以後這個時候還要注意的是這個vhd的屬性是hidden,如果這個時候你執行sr-scan以後會發現這個邏輯卷又不見了,關於vhd的屬性我們可以通過命令來查看    
#vhd-util read –n /dev/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a/VHD-306128a9-7138-4611-a2c6-b79823e1e58b –p

image    
既然這樣,我們必須將此屬性改默認不隱藏,通過以下命令來完成    
#vhd-util set -n /dev/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a/VHD-306128a9-7138-4611-a2c6-b79823e1e58b –f hidden –v 0    
這個時候新建vm,將對應的磁盤掛載上去即可以恢復。    
但是問題的重點在這裏,因爲客戶不可能是手動去備份VG的信息,客戶在刪除vm的同時xenserver上/etc/lvm/backup目錄下的VG信息也對應跟着更新,所以這種情況下恢復就比較困難,但是也不是沒有辦法。    
先找到該VG對應的pv的信息    
#pvscan

image    
這裏我們看到此VG對應的pv的信息爲/dev/sdj    
#dd if=/dev/sdj count=100 |strings

image    
在以上輸出中我們能看到被刪除的VHD的信息(請注意,如果這裏你的存儲上有相當多的vhd的話就必須一個個的對了,我這裏上面的vhd很少,所以很容易發現),記錄下以上信息    
打開/etc/lvm/backup目錄下對應的vg的備份信息    
#cat VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a |more    
我們看到正常VHD的信息在VG的備份信息中的爲以下格式:

image    
根據我們從PV中查到的vhd的信息,按照上述的格式插入到對應的VG信息中並保存退出    
#vi VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a    
插入一下內容:

image    
繼續執行vgcfgrestore    
#vgcfgrestore VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a –f VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a    
這個時候即可以恢復,剩下的就激活邏輯卷,更改vhd屬性hidden爲0,新建VM,掛咋磁盤,即可以完成最終數據恢復!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章