網站首頁 編程語言 正文
?環境:?
- Dell PowerEdge服務器;
- XenServer虛擬化平臺;
- 4塊希捷2T STAT硬盤用RAID卡組成的RAID10;
- XenServer虛擬機操作系統:Windows Server系統;
- 虛擬機磁盤:1個10G系統盤和1個5G數據盤,部署的Web服務器(ASP +SQL)。
?故障:?
- 服務器突然斷電導致服務器中一臺XenServer虛擬機不可用,虛擬磁盤文件丟失,服務器管理員聯系北亞數據恢復中心尋求幫助。
?故障檢測和分析:?
- 1、拿到原始數據盤后,北亞數據恢復工程師將原始盤連接到北亞數據恢復服務器上,準備超過原始盤總容量的空間作為備份原始盤數據使用,將原始盤以磁盤底層扇區的方式鏡像到備份空間上,以后操作都在備份數據上操作,以確保原始盤數據安全。
- 2、分析底層數據,北亞數據恢復工程師發現
XenServer
中虛擬機的磁盤都是以LVM結構存放,即每個虛擬機的虛擬磁盤都是一個LV,虛擬磁盤模式是精簡模式。
LVM的相關信息在Xen Server
中都有記載,查看“/etc/lvm/backup/frombtye.com
“下LVM的相關信息發現并沒有存在損壞的虛擬磁盤信息,因此北亞數據恢復工程師判斷LVM的信息已經被更新了。因此,北亞數據恢復工程師只能接著分析底層看能否找到未被更新的LVM信息,經過一番努力,終于在底層發現還未更新的LVM信息。
如下圖:
- 3、根據獲取到的未被更新的LVM信息找到虛擬磁盤存放數據的區域,發現該區域的數據已被破壞。北亞數據恢復工程師經過分析后
發現,造成虛擬機不可用的原因是虛擬機的虛擬磁盤被破壞,虛擬機中的操作系統和數據丟失。這種情況很有可能是由虛擬機遭遇網絡入侵后留下惡意程序造成的。仔細核對這片區域后,北亞工程師發現雖然該區域很多數據被破壞,但還是找到很多數據庫的頁碎片,可以嘗試將這些數據庫的頁碎片拼接成一個可用的數據庫。
?服務器數據恢復過程:?
1、數據恢復方案一
按照方案一的思路進行底層分析,根據RAR壓縮包的結構可以找到很多壓縮包的數據開始位置,而RAR壓縮包文件的第一個扇區中會記錄此RAR的文件名。因此通過從管理員那里獲知的備份數據庫的壓縮包文件名和目前找到的壓縮包位置的文件名相匹配,可找到備份數據庫壓縮包的開始位置。找到壓縮包的位置后仔細分析這片區域的數據,然后將此區域的數據恢復出來重命名為一個RAR格式的壓縮文件,嘗試解壓此壓縮包,解壓報錯。
報錯如下圖所示:
仔細分析恢復出來的壓縮包,北亞數據恢復工程師發現有部分數據被破壞,因此解壓的時候報錯。嘗試使用RAR的修復工具看能否忽略錯誤,解壓出來部分數據。結果修復完成之后解壓出來的數據只有網站的部分代碼,并沒有發現數據庫的備份文件。因此可以判斷數據庫備份文件在RAR壓縮包中是損壞的。
如下是解壓出來的部分網站代碼:
2、數據恢復方案二
由于方案一并沒有成功將數據庫恢復出來,因此采用方案二來恢復數據。根據SQL Server數據庫的結構去底層分析數據庫的開始位置。在SQL Server數據庫的結構中,第9個頁會記錄本數據庫的數據庫名。因此從服務器管理員那里獲知到數據庫名稱之后,北亞數據恢復工程師再分析底層找到此數據庫的開始位置。因為在SQL Server
數據庫的每個頁中都會記錄數據庫頁編號以及文件號,北亞數據恢復工程師根據這些特征編寫程序去底層掃描符合數據庫頁的數據。
然后將掃描出來的碎片按順序重組成一個完整MDF文件,再通過MDF校驗程序檢測整個MDF文件是否完整。
重建的MDF文件如下:
?驗證數據:?
經過檢測確定恢復出來的數據沒問題之后,由北亞工程師搭建數據庫環境,將重組后的數據庫附加到搭建好的數據庫環境中,查詢相關表數據是否正常,查詢最新數據是否存在。
截圖如下:
由于數據庫需要結合網站代碼才能更好的驗證數據庫的完整性。管理員從網站開發商那里拿到網站代碼搭建好環境,然后將恢復出來的數據庫配置好后去驗證,沒有發現問題,本次數據恢復成功。
原文鏈接:https://blog.51cto.com/sun510/5072270
相關推薦
- 2022-09-07 Python和C語言利用棧分別實現進制轉換_python
- 2022-11-24 Clickhouse系列之整合Hive數據倉庫示例詳解_數據庫其它
- 2022-11-05 python?pandas?query的使用方法_python
- 2023-01-18 Python函數的參數列表解析_python
- 2022-09-15 windows中cmd下添加、刪除和修改靜態路由實現_DOS/BAT
- 2022-07-25 C++全面精通類與對象_C 語言
- 2022-06-08 ASP.NET?Core中MVC模式實現路由一_實用技巧
- 2022-07-08 python編寫WAF與Sqlmap結合實現指紋探測_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支