虛擬機器卡死檔案會丟失怎麼辦(虛擬機器裡面的檔案刪除了怎麼找回)

虛擬機器磁碟檔案丟失恢復教程

因伺服器突然斷電原因導致Xen Server伺服器中一臺VPS(即Xen Server虛擬機器)不可用,虛擬磁碟檔案丟失,通過電話聯絡北亞資料來進行恢復。硬體環境是Dell 720伺服器配戴一張H710P的RAID卡,由4塊希捷2T STAT硬碟組成的RAID 10,上層環境是Xen Server 6.2版本作業系統,虛擬機器是Windows Server 2003系統,10G系統盤 5G資料盤兩個虛擬機器磁碟,上層是Web伺服器(ASP SQL 2005的網站架構)。

【資料恢復過程】
   將客戶資料盤以磁碟底層扇區的方式映象到備份空間上後,仔細分析底層資料發現Xen Server伺服器中虛擬機器的磁碟都是以LVM的結構存放的,即每個虛擬機器的虛擬磁碟都是一個LV,並且虛擬磁碟的模式是精簡模式的。LVM的相關資訊在Xen Server中都有記載,檢視“
   /etc/lvm/backup/frombtye.com “下LVM的相關資訊發現並沒有存在損壞的虛擬磁碟資訊,因此可以斷定LVM的資訊已經被更新了。接著分析底層看能否找到未被更新的LVM資訊,在底層發現了還未更新的LVM資訊。
   根據未被更新的LVM資訊找到了虛擬磁碟的資料區域,發現該區域的資料已被破壞。分析後發現造成虛擬機器不可用的最終原因是因為虛擬機器的虛擬磁碟被破壞,從而導致虛擬機器中的作業系統和資料丟失。而導致這種情況的發生很有可能是虛擬機器遭遇網路攻擊或hack入侵後留下惡意程式造成的。仔細核對這片區域後發現,雖然該區域有很多資料被破壞了,但還是發現了很多資料庫的頁碎片。因此可以嘗試將許多資料庫的頁碎片拼成一個可用的資料庫。

1、實施方案一

按照方案一的思路進行底層分析,根據RAR壓縮包的結構可以找到很多壓縮包的資料開始位置,而RAR壓縮包檔案的第一個扇區中會記錄此RAR的檔名。因此根據從客戶那裡得知備份資料庫的壓縮包檔名和目前找到的壓縮包位置的檔名相匹配,即可找到備份資料庫壓縮包的開始位置。找到壓縮包的位置後仔細分析這片區域的資料,然後將此區域的資料恢復出來重新命名為一個RAR格式的壓縮檔案。然後嘗試解壓此壓縮包,發現解壓報錯。
   仔細分析恢復出來的壓縮包發現中有部分資料被破壞了,因此解壓的時候報錯。嘗試使用RAR的修復工具看能否忽略錯誤,解壓部分資料。結果修復完成之後解壓的資料庫只有網站的部分程式碼,並沒有資料庫的備份檔案。因此可以判斷資料的備份檔案在RAR壓縮包中是損壞的。

2、實施方案二

由於方案一併沒有將資料庫恢復出來,因此採用方案二來恢復資料。根據SQL Server資料庫的結構去底層分析資料庫的開始位置,在資料庫的結構中,第9個頁會記錄本資料庫的資料庫名。因此在客戶那裡獲取資料庫的名稱之後,再分析底層找到此資料庫的開始位置。因為在資料庫的每個頁中都會記錄資料庫頁編號以及檔案號,所以可以根據這些特徵編寫程式去底層掃描符合資料庫頁的資料。
   然後將掃描出來的碎片按順序重組成一個完整MDF檔案,再通過MDF校驗程式檢測整個MDF檔案是否完整。

3、驗證資料

檢測沒問題之後再由我們的資料庫工程師搭建資料庫環境,將重組後的資料庫附加到搭建好的資料庫環境中。然後查詢相關表資料是否正常,查詢最新資料是否存在。截圖如下:

由於資料庫需要結合網站程式碼才能更好地驗證資料庫的完整性。客戶從開發商裡拿到了網站程式碼搭建好了環境,然後將恢復好的資料庫發給使用者。經使用者驗證後,資料庫沒問題,通過拼資料庫碎片的方式成功將資料庫恢復完成,整個資料恢復成功。