Chinaunix首页 | 论坛 | 博客
  • 博客访问: 337279
  • 博文数量: 587
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5905
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-02 14:16
文章分类

全部博文(587)

文章存档

2024年(152)

2023年(218)

2022年(181)

2020年(12)

2019年(24)

我的朋友

分类: 服务器与存储

2023-05-05 14:26:29

服务器数据恢复环境:
同友存储,底层由数块物理硬盘组建的raid5磁盘阵列,存储池划分若干lun,每个lun下有数台虚拟机。


服务器故障:
未知原因导致存储崩溃,无法启动,虚拟机全部丢失,其中一个lun中的3台虚拟机数据尤为重要,需要恢复其中的数据。


服务器数据恢复过程:
1、将故障存储中的所有磁盘以只读方式进行全盘镜像备份,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始数据造成二次破坏。


2、基于镜像文件分析raid5阵列,发现故障存储中的raid5阵列缺失2块磁盘,热备盘已经启用。通过实际情况可以推断故障发生的大致过程:{BANNED}中国第一块硬盘掉线后raid5启动热备盘替换。第二块硬盘掉线后raid5降级,第三块硬盘掉线导致raid5阵列崩溃。这种情况下一般是无法通过校验直接获取到缺失盘的数据,只能使用磁盘同等大小的全0的空镜像进行raid重组(依赖空镜像组建的raid的文件系统结构会严重损坏,相当于每个条带都缺失两个块的数据,所以除特殊情况外不建议如此操作)。


重建raid:



3、通过重组出来的raid5阵列提取LUN。通过对存储结构的进一步分析获取到存储划分的MAP块,对各个LUN的数据块指针进行解析并由北亚企安数据恢复工程师编写程序提取LUN碎片。碎片提取完成后进行碎片拼接,组成完整的LUN。


提取LUN:



4、导出LUN内所有虚拟机并尝试启动,结果由于操作系统被破坏,虚拟机无法启动。
5、提取虚拟机内的文件,但虚拟机内的文件多数损坏严重,只有少数文件可用,只能通过其他方案进行恢复。
6、本次需要进行数据恢复的虚拟机内有mysql数据库,可以根据mysql数据库底层存储的特殊性扫描数据页并提取数据。


数据恢复过程截图:



7、根据mysql数据页特征扫描数据页并导出数据(仅适用于innodb引擎数据库,myisam引擎数据库没有“数据页”概念),分析系统表获取各用户表信息,根据各个表的id分割数据页。
8、因为该数据库的表结构变更过多次,存储故障导致系统表的部分数据丢失,所以记录提取过程非常痛苦(这里不赘述)。
获取{BANNED}最佳早版本数据库各个表的表结构。由于合并快照前的父盘因为写入较早,使用{BANNED}中国第一块掉线盘进行校验获取到完整数据,然后提取出其中数据库各个表的表结构。用户方提供了{BANNED}最佳新版本数据库的建表脚本。
分别使用两组不同表结构提取数据记录并导入到搭建好的环境中的mysql数据库内,剔除各个表中因为表结构变更所导致的乱码数据,{BANNED}最佳后将两组数据分别导出为.sql文件。


数据验证:
两个版本的数据库表结构不同,先联系用户方工程师进行调试,调试完成后导入平台进行测试,平台测试成功,本次数据恢复工作完成。
阅读(272) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~