通過拼資料庫碎片的方式恢復虛擬機器磁碟檔案丟失問題

2021-08-07 05:23:16 字數 2207 閱讀 6175

背景概述

由於伺服器突然斷電,造成我公司

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、驗證資料

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

4、結論

由於資料庫需要結合****才能更好的驗證資料庫的完整性。

我們又開發商

處拿到了****搭建好了環境,然後將恢復好的資料庫

傳送給我們驗證,一切正常,

通過拼資料庫碎片的方式成功將資料庫恢復完成,整個資料恢復成功。

通過拼資料庫碎片的方式恢復虛擬機器磁碟檔案丟失問題

背景概述 由於伺服器突然斷電,造成我公司xen server伺服器中一台vps 即xen server虛擬機器 不可用,虛擬磁碟檔案丟失。硬體環境是dell 720伺服器配戴一張h710p的raid卡,由4塊希捷2t stat硬碟組成的raid 10,上層環境是xen server 6.2版本作業系...

伺服器資料被刪除怎麼通過拼碎片方式恢復

北京有一家公司由於管理員誤操作不小心刪除了xenserver伺服器中的一台虛擬機器,由於這台伺服器中儲存了公司的重要資料,因此聯絡到資料恢復中心進行虛擬機器資料恢復。資料恢復中心資料恢復工程師前往客戶現場進行初檢發現客戶伺服器內的vps不可用,虛擬磁碟中的資料丟失。經過溝通,客戶採取了上門資料恢復的...

Mysql碎片恢復 mysql資料庫碎片整理

1 drop table table name 立刻釋放磁碟空間 不管是 innodb和myisam 2 truncate table table name 立刻釋放磁碟空間 不管是 innodb和myisam 3 delete from table name刪除表的全部資料,對於myisam 會立...