服务器数据恢复环境:
某市教育局同友存储,存储中有一组由数块磁盘组建的raid5阵列,存储空间划分若干lun。每个lun中有若干台虚拟机,其中有数台linux操作系统的虚拟机为重要数据。
存储结构:
服务器故障:
raid崩溃导致存储无法启动。
服务器数据恢复流程:
1、将存储中所有磁盘编号后取出,由硬件工程师检测后没有发现有硬盘存在明显的硬件故障。以只读方式将所有磁盘进行扇区级全盘镜像,镜像完成后将所有磁盘按照编号还原到原存储中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有磁盘底层数据,获取重组raid所需要的相关信息,利用获取到的raid信息重组raid。在重组raid过程中发现该raid5缺失2块盘(还原存储raid崩溃的过程:第一块盘掉线后热备盘顶替,第二块盘掉线让RAID5处于降级状态,第三块盘掉线RAID崩溃),无法通过校验直接获取掉线盘的数据,只能使用与缺失磁盘同等大小的全0镜像进行重组(此方法只可用于紧急情况,通过全0镜像组建的raid结构会被严重破坏,相当于每个条带都会缺失两个块的数据)。
重建raid:
3、基于组建完成的raid分析存储结构,获取存储划分的MAP块。找到MAP块之后通过解析获取到各个LUN的数据块指针,北亚企安数据恢复工程师编写数据提取程序提取LUN碎片。碎片提取完成后通过拼接碎片组成完整LUN。
提取LUN:
4、导出LUN内所有虚拟机后尝试启动,由于操作系统被破坏,虚拟机无法成功启动。
5、由于虚拟机无法启动,数据恢复工程师只能对虚拟机内文件进行提取,对提取出的文件进行测试后发现大多数文件被破坏,只有少量的小文件可以打开。
虚拟机内取出的图片:
6、与用户方沟通后得知有虚拟机内有mysql数据库,基于数据库存储的特殊性,可以尝试通过扫描数据页来提取数据。找到这台有数据库的虚拟机后发现此虚拟机启用快照。在父盘和快照文件都被损坏的情况下,常规合并操作无法完成,尝试使用北亚企安自主研发VMFS快照合并程序进行快照合并。
7、根据mysql数据页特征扫描&导出数据页。分析系统表获取各用户表信息,根据各个表的id分割数据页。
8、由于数据库使表结构曾多次变更,系统表也有部分数据丢失,记录提取过程充满坎坷。首先获取最初版本数据库各个表的表结构:合并快照前的父盘因为写入较早,使用第一块掉线盘进行校验获取到这个文件的完整数据,然后提取出其中数据库各个表的表结构。用户方提供了最新版的数据库建表脚本。
9、分别使用两组不同表结构提取数据记录并导入恢复环境中的mysql数据库内,剔除各个表中因为表结构变更导致的乱码数据,最后将两组数据分别导出为.sql文件。
10、因为两个版本的数据库表结构不同,所以联系了用户方的应用工程师进行调试。调试完成后导入平台,经过用户方检测后确认绝大部分数据已经恢复出来,认可数据恢复结果。本次数据恢复工作完成。