服务器数据恢复—RAIDZ上层ZFS文件系统数据恢复案例

简介: 一台服务器有32块硬盘,采用Windows操作系统。服务器在正常运行的时候突然变得不可用。没有异常断电、进水、异常操作、机房不稳定等外部因素。服务器管理员重启服务器,但是服务器无法进入系统。管理员联系北亚企安数据恢复工程师要求恢复服务器数据。

服务器数据恢复环境&故障:
一台服务器有32块硬盘,采用Windows操作系统。
服务器在正常运行的时候突然变得不可用。没有异常断电、进水、异常操作、机房不稳定等外部因素。服务器管理员重启服务器,但是服务器无法进入系统。管理员联系北亚企安数据恢复工程师要求恢复服务器数据。

服务器数据恢复过程:
1、将故障服务器上所有硬盘做好标记后取出,经过硬件工程师检测后没有发现有硬盘存在硬件故障。将所有硬盘以只读方式进行扇区级完整镜像,镜像完成后将所有硬盘根据标记按照原样还原到原服务器中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有磁盘底层数据,经过分析发现:故障服务器采用zfs文件系统。所有磁盘组建了几组RAIDZ。热备盘全部启用。
在服务器ZFS文件系统中,池被称为ZPOOL。ZPOOL的子设备可以有很多种类,包括块设备、文件、磁盘等等,本案例中就是三组RAIDZ作为子设备。
经过分析发现,三组RAIDZ中的两组RAIDZ分别启用1个和3个热备盘。热备盘启用后,第一组RAIDZ又有一块盘离线,第二组RAIDZ则有两块硬盘离线。
通过上述分析结果模拟故障:三组RAIDZ中的两组RAIDZ出现离线盘,热备盘自动上线替换。热备盘无冗余状态下,其中一组RAIDZ出现离线硬盘的RAIDZ又有一块盘离线,另外一组RAIDZ中又出现两块离线盘。ZPOOL进入高负荷状态;2块盘离线的RAIDZ中又有第三块盘离线,RAIDZ崩溃、ZPOOL下线、服务器崩溃。
3、重组ZPOOL,追踪数据入口。
ZFS对所有磁盘进行统一管理。在数据存储时,ZFS会为每次写入的数据分配适当大小的空间,并计算得到指向子设备的数据指针。这种精细化的管理方式使得ZFS能够更高效地利用磁盘空间,并且在数据存储和检索时更加灵活和智能。
当出现缺盘情况时,常规RAID和ZFS的处理方式也截然不同。常规RAID通常可以通过校验机制,利用剩余磁盘上的数据来恢复丢失的数据,因为它在存储时已经按照固定的规则分布了校验信息。
但对于ZFS管理的存储池,当RAIDZ(ZFS的一种RAID实现方式)缺盘时,无法直接进行校验得到数据。这是因为ZFS的存储特性使得数据和校验信息的分布更为复杂,必须将整个ZPOOL(ZFS存储池)作为一个整体进行解析,才能尝试恢复数据。这种方式虽然在缺盘恢复时相对复杂,但也保证了数据的完整性和一致性。
北亚企安数据恢复工程师手工截取事务块数据,编写程序获取最大事务号入口。
获取文件系统入口:
1副本.jpg

获取到文件系统入口后,北亚企安数据恢复工程师编写数据指针解析程序进行地址解析。
解析数据指针:
2副本.jpg

获取到文件系统入口点在各磁盘分布情况后,数据恢复工程师开始手工截取并分析文件系统内部结构。经过分析发现入口分布所在的磁盘组无缺失盘,可直接提取信息。根据ZFS文件系统的数据存储结构顺利找到映射的LUN名称,进而找到其节点。
4、经过分析发现此存储中的ZFS版本与开源版本有较大差别,无法使用原先开发的解析程序进行解析,所以数据恢复工程师重新编写数据提取程序。
3副本.jpg

由于磁盘组内缺盘个数较多,每个IO流都需要通过校验得到,提取进度极为缓慢。与用户方沟通后得知,此ZVOL卷映射到XenServer作为存储设备,用户方所需的文件在其中一个vhd内。提取ZVOL卷头部信息,按照XenStore卷存储结构进行分析,发现该vhd在整个卷的尾部,计算得到其起始位置后从此位置开始提取数据。
5、Vhd提取完成后,验证其内部的压缩包及图片、视频等文件,均可正常打开。
交由用户方验证数据,经过验证发现文件数量与系统自动记录的文件个数一致。验证文件可用性,文件全部可正常打开,服务器数据恢复工作完成。

相关文章
|
1天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1055 0
|
10天前
|
人工智能 运维 安全
|
1天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
240 0
|
8天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
720 23