服務(wù)器數(shù)據(jù)恢復(fù)-斷電導(dǎo)致Xen server虛擬磁盤文件丟失的數(shù)據(jù)恢復(fù)案例

服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境:
一臺某品牌服務(wù)器通過一張同品牌某型號RAID卡將4塊STAT硬盤組建為一組RAID10陣列。上層部署Xen Server虛擬化平臺,虛擬機上安裝的是Windows Server操作系統(tǒng),包括系統(tǒng)盤 +數(shù)據(jù)盤兩個虛擬機磁盤,作為Web服務(wù)器使用,存放網(wǎng)站代碼、SQL Server數(shù)據(jù)庫以及其他網(wǎng)站數(shù)據(jù)。
服務(wù)器故障&故障原因分析:
機房意外斷電導(dǎo)致服務(wù)器中一臺VPS(Xen Server虛擬機)不可用,虛擬磁盤文件丟失。
北亞企安數(shù)據(jù)恢復(fù)工程師將故障服務(wù)器中所有磁盤編號后取出,以只讀方式將所有磁盤完整鏡像到準備好的備份空間,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進行,避免對原始磁盤數(shù)據(jù)造成二次破壞。備份完成后將所有磁盤按照編號還原到原服務(wù)器中。
基于鏡像文件分析底層數(shù)據(jù)發(fā)現(xiàn)故障服務(wù)器中的虛擬機磁盤是以LVM結(jié)構(gòu)管理的,即每個虛擬機的虛擬磁盤都是一個LV,虛擬磁盤模式是精簡模式。
LVM的相關(guān)信息在Xen Server中都有記載。查看“/etc/lvm/backup/“下LVM的相關(guān)信息,并沒有發(fā)現(xiàn)存在損壞的虛擬磁盤,可以初步判斷LVM的信息已經(jīng)被更新了。繼續(xù)分析底層,查找到還未更新的LVM信息。

根據(jù)未更新的LVM信息找到虛擬磁盤的數(shù)據(jù)區(qū)域,發(fā)現(xiàn)該區(qū)域的數(shù)據(jù)已被破壞?,F(xiàn)在可以確定虛擬機不可用的原因是虛擬機的虛擬磁盤被破壞,導(dǎo)致虛擬機中的操作系統(tǒng)和數(shù)據(jù)丟失。核對這片區(qū)域,發(fā)現(xiàn)該區(qū)域有很多數(shù)據(jù)被破壞了,但還是發(fā)現(xiàn)了很多數(shù)據(jù)庫的頁碎片。因此可以嘗試將許多數(shù)據(jù)庫的頁碎片拼接為一個可用的數(shù)據(jù)庫。
服務(wù)器數(shù)據(jù)恢復(fù)方案:
方案a:根據(jù)RAR壓縮包的結(jié)構(gòu)可以找到很多壓縮包的數(shù)據(jù)開始位置,RAR壓縮包文件的第一個扇區(qū)中會記錄此RAR的文件名。因此將從用戶那里拿到的備份數(shù)據(jù)庫的壓縮包文件名和目前找到的壓縮包文件第一個扇區(qū)所記錄的文件名相匹配,即可找到備份數(shù)據(jù)庫壓縮包的開始位置。找到壓縮包的位置后仔細分析這片區(qū)域的數(shù)據(jù),然后將此區(qū)域的數(shù)據(jù)恢復(fù)出來并重命名為一個RAR格式的壓縮文件。嘗試解壓此壓縮包,發(fā)現(xiàn)解壓報錯。

仔細分析恢復(fù)出來的壓縮包,發(fā)現(xiàn)其中有部分數(shù)據(jù)被破壞,解壓報錯。嘗試使用RAR的修復(fù)工具處理后解壓。結(jié)果修復(fù)完成之后解壓出來的數(shù)據(jù)只包含網(wǎng)站的部分代碼,并沒有發(fā)現(xiàn)數(shù)據(jù)庫的備份文件。因此可以判斷在RAR壓縮包中的數(shù)據(jù)庫的備份文件已經(jīng)是損壞的。
解壓出來的部分網(wǎng)站代碼:

方案b:
方案a沒有將數(shù)據(jù)庫恢復(fù)出來。北亞企安數(shù)據(jù)恢復(fù)工程師采用方案b。根據(jù)SQL Server數(shù)據(jù)庫的結(jié)構(gòu)分析數(shù)據(jù)庫的開始位置。SQL Server數(shù)據(jù)庫第9個頁會記錄本數(shù)據(jù)庫的數(shù)據(jù)庫名。在用戶那里獲取到數(shù)據(jù)庫的名稱之后,分析底層找到此數(shù)據(jù)庫的開始位置。在SQL Server數(shù)據(jù)庫的每個頁中都會記錄數(shù)據(jù)庫頁編號以及文件號,根據(jù)這些SQL Server數(shù)據(jù)庫特征,北亞企安數(shù)據(jù)恢復(fù)工程師編寫程序去底層掃描符合數(shù)據(jù)庫頁的數(shù)據(jù)。將掃描出來的數(shù)據(jù)庫頁碎片按順序重組成一個完整MDF文件。通過MDF校驗程序檢測整個MDF文件的完整性。

驗證數(shù)據(jù):
檢測沒問題之后,由數(shù)據(jù)庫工程師搭建數(shù)據(jù)庫環(huán)境,將重組后的數(shù)據(jù)庫附加到搭建好的數(shù)據(jù)庫環(huán)境中。查詢相關(guān)表數(shù)據(jù)是否正常以及最新數(shù)據(jù)是否存在。檢測沒有問題后,在網(wǎng)站開發(fā)商的幫助下用網(wǎng)站代碼搭建好環(huán)境,將恢復(fù)好的數(shù)據(jù)庫發(fā)給用戶在環(huán)境中配置好。經(jīng)過用戶驗證后沒有發(fā)現(xiàn)問題,確認恢復(fù)數(shù)據(jù)完整有效。本次數(shù)據(jù)恢復(fù)工作完成。
