服务器数据恢复—异常断电导致RAID6阵列中磁盘出现坏扇区的数据恢复案例

服务器存储数据恢复环境:
一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列,划分为一个卷,分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机,这些虚拟机系统盘是统一大小,数据盘大小不确定,数据盘是精简模式。

服务器存储故障:
机房断电导致服务器存储异常关机,加电后存储无法使用。

服务器存储数据恢复过程:
1、将故障服务器存储的所有磁盘和备份数据的目标磁盘接入到Windows Server服务器上。将磁盘都设为脱机(只读)状态,看到的连接状态如下所示(HD1-HD12为目标备份磁盘,HD13-HD24为源故障磁盘,型号为HUS723030ALS640):

2、使用工具在底层读取HD13-HD24扇区,发现了大量损坏扇区,数据恢复工程师初步推断出现这种情况的原因是这种硬盘的读取机制与常见硬盘不一样。尝试更换主机、HBA卡、扩展柜,并将操作系统更换为Linux,均呈现相同故障表现。与用户方工程师沟通,用户方工程师回应此控制器对磁盘没有特殊要求。
检测硬盘损坏扇区的分布规律,服务器数据恢复工程师发现以下规则:
a、损坏扇区分布以256个扇区为单位。
b、除损坏扇区片断的起始位置不固定外,后面的损坏扇区都是以2816个扇区为间隔。
所有磁盘的损坏扇区(部分)分布:

北亚企安数据恢复工程师编写小程序,绕过处理每个磁盘的损坏扇区,将所有盘的数据做只读镜像。
3、基于镜像文件分析所有磁盘的底层数据。
经过分析发现损坏扇区呈规律性出现:
-每段损坏扇区区域大小总为256。
-损坏扇区分布为固定区域,每跳过11个256扇区遇到一个坏的256扇区。
-损坏扇区的位置一直存在于RAID的P校验或Q校验区域。
-所有硬盘中只有10号盘中有一个自然坏道。
分析HD13、HD23、HD24的0-2扇区得知分区大小为52735352798扇区,按RAID6的模式计算,将分区大小除以9等于5859483644扇区,与物理硬盘大小以及DS800控制器中保留的RAID信息区域大小吻合。根据物理硬盘底层表现,分区表大小为512字节,后面无8字节校验,大量的0扇区也无8字节校验。故原存储并未启用存储中常用的DA技术(520字节扇区)。
分区大小如下图(GPT分区表项底层表现,涂色部分表示分区大小,单位512字节扇区,64bit):

4、存储使用的是标准RAID6阵列,只需要分析出RAID成员盘数量以及RAID走向就可以重组RAID。
-分析RAID条带大小
整个存储被划分为一个大的卷,分配给几台ESXI做共享存储,卷的文件系统是VMFS。该VMFS卷中存放了大量的Windows虚拟机。Windows虚拟机大多使用NTFS文件系统,因此可以根据NTFS中MFT的顺序分析出RAID条带大小以及RAID走向。
-分析RAID是否存在掉线盘
镜像完所有磁盘后发现最后一块硬盘中并没有像其他硬盘一样有大量的坏道。最后一块硬盘中有大量未损坏扇区,这些未损坏扇区大多是全0扇区,因此可以判断这块硬盘是热备盘。
5、根据分析出来的RAID结构重组RAID。重组完成后能看到目录结构,但不确定是否为最新状态。随机检测几个虚拟机发现部分虚拟机数据异常,初步判断RAID中存在掉线的磁盘。依次将RAID中的每一块磁盘踢掉,然后查看刚才数据异常的地方,没有找到问题原因。
6、分析底层数据后发现问题不是出在RAID层面,而是出在VMFS文件系统层面。由于VMFS文件系统如果大于16TB会存在一些其他的记录信息,因此在组建RAID的时候需要跳过这些记录信息。再次重组RAID后查看以前数据异常的地方,已经没有问题了。
针对其中的一台虚拟机做验证,将所有磁盘加入RIAD中后,这台虚拟机是可以启动的,但缺盘的情况下启动有问题,因此可以判断整个RAID处在不缺盘的状态为最佳。

验证数据:
1、验证虚拟机
验证较为重要的虚拟机,发现大多数虚拟机都可以开机,进入登录界面。部分虚拟机开机蓝屏或开机检测磁盘,但是使用光盘修复之后都可以正常启动。
部分虚拟机开机如下:

2、验证数据库
验证重要虚拟机中的数据库,发现数据库都正常。通过查询master数据库中的系统视图,查出所有数据库信息如下:

3、检测整个VMFS卷是否完整
由于虚拟机数量很多,每台都验证的话,所需的时间会很长,因此检测整个VMFS卷,在检测VMFS卷的过程中发现部分虚拟机或虚拟机的文件被破坏。

批量恢复数据:
1、和用户方沟通并且通报了目前恢复数据的情况。用户对几台重要的虚拟机进行验证后,认可恢复的数据。于是北亚企安数据恢复工程师着手恢复所有数据。
准备好目标RAID,将重组的RAID数据镜像到目标阵列上,然后使用工具解析整个VMFS。
2、将恢复出来的VMFS卷连接到虚拟化环境中的一台ESXI5.5主机上,尝试将该VMFS卷挂载到的ESXI5.5的环境中。由于版本(用户方的ESXI主机是5.0版本)原因或VMFS本身有损坏,导致挂载不成功。

移交数据:
北亚企安数据恢复工程师将目标阵列上的数据带到用户方现场,使用工具导出VMFS卷中的虚拟机。
1、将目标阵列上的数据通过HBA卡连接到用户的VCenter服务器上。
2、在VCenter服务器安装工具,然后使用工具解释VMFS卷。
3、使用工具将VMFS卷中的虚拟机导入到VCenter服务器上。
4、使用VCenter的上传功能将虚拟机上传到ESXI的存储中。
5、将上传完的虚拟机添加到清单,开机验证。
6、如果有虚拟机开机出现问题,则尝试使用命令行模式修复;或者重建虚拟机并将恢复的虚拟机磁盘(既VMDK文件)拷贝过去。
7、由于部分虚拟机的数据盘很大,而数据很少。这种情况就可以直接导出数据,然后新建一个虚拟磁盘,最后将导出的数据拷贝至新建的虚拟磁盘中即可。
统计了一下整个存储中虚拟机的数量,整个存储中大约有200台虚拟机。目前的情况只能通过上述方式将恢复出来的虚拟机一台一台的恢复到用户的ESXI中。

总结:
所有磁盘坏道的规律如下表:

经过分析后得到关于坏道的规则表现:
-除去SN:YHJ6LEUD上的一个自然坏道外,其余坏道均分布于RAID6的Q校验块中。
-坏道区域多数表现为完整的256个扇区,正好是当时创建RAID6时的一个完整RAID块大小。
-活动区域表现为坏道,非活动区域坏道有可能不出现,如热备盘,由于上线不足10%,所以坏道数量就比其他在线盘少。
-其他非Q校验区域完好,无任何故障。
结论:通过上述坏道规则表现可推断:坏道为控制器生成Q校验,向硬盘下达IO指令时,可能表现为非标指令,硬盘内部处理异常,导致出现规律性坏道。
存储故障是由坏道引起的,导致恢复出来的数据有部分破坏,但不影响整体,结果也在可接受范围内。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】静态库、动态库

动静态库里面包含的是源文件通过汇编阶段生成的后缀为.o的可重定位目标文件。我们在使用C语言,包含一个stdio.h头文件就可以使用scanf方法,其实都是系统调用了相应的头文件和库,库里面有开发者已经写好各种方法。也就是说我们在使用C语言时&a…

在MySQL中,定义字段为TINYINT(1)、TINYINT(2) 和 INT(2)的区别

在MySQL中,定义字段为 TINYINT(1)、TINYINT(2) 和 INT(2) 的区别: 1. TINYINT(1) 和 TINYINT(2) 范围: TINYINT 是一个 1 字节(8 位)的整数类型。它的取值范围是 -128 到 127(有符号)或者 0 到…

RabbitMQ实践——Stream队列的使用方法

大纲 什么是Stream队列创建Stream发布消息消费从第一条消息开始读取从最后一条消息开始读取从某个时间戳开始读取从某个偏移量开始读取 样例长度控制长度控制时间控制服务端筛选消息发布方设定过滤值消费方设置服务端过滤,且要二次过滤 工程代码参考资料 在 《Rabb…

Lua网站开发之文件表单上传

这个代码示例演示如何上传文件或图片,获取上传信息及保存文件到本地。 local fw require("fastweb") local request require("fastweb.request") local response require("fastweb.response") local cjson require("cjson&q…

生成式人工智能发展现状和发展趋势

ChatGPT 的出现标志着人工智能发展的新拐点。 它背后的大语言模型技术,能够理解和生成语言,并学习上下文含义和表述意图,这将对工作模式、商业形态乃至社会产生颠覆性影响。 生成式人工智能的发展历程 可以分为三个阶段: 机器学习阶段: 20世纪50年代,机器学习开始兴起,…

wps的domain转为shp矢量

wps的namelist制作、python出图和转矢量 简介 wps(WRF Preprocessing System)是中尺度数值天气预报系统WRF(Weather Research and Forecasting)的预处理系统。 wps的安装地址在GitHub上:https://github.com/wrf-model/WPS 下载完成后&…

巴中市红色旅游地管理系统

摘 要 随着红色旅游的兴起,越来越多的人开始对巴中市的红色旅游地产生兴趣。巴中市作为中国革命的重要发源地之一,具有丰富的红色旅游资源。然而,目前巴中市红色旅游地的管理仍然存在许多问题,如信息不对称、资源利用效率低等。为…

Robust semi-supervised segmentationwith timestep ensembling diffusion models

时间步合成扩散模型的鲁棒半监督分割 摘要 医学图像分割是一项具有挑战性的任务,由于许多数据集的大小和注释的限制,使得分割更加困难。消噪扩散概率模型(DDPM)最近在模拟自然图像的分布方面显示出前景,并成功地应用于各种医学成像任务。这…

如何给小语种视频生成字幕

目前我们常看的有视频有中、英、日、韩这四种语言,如果我们想给其他的不常用的语言生成字幕怎么办?今天教大家如何给其他语言生成视频字幕文件 打开智游剪辑(zyjj.cc)搜索字幕生成,选择多语种那个就可以了 然后上传我们…

nginx常见问题——新手向

一.nginx命令不生效 nginx命令生效需要在指定目录下: /usr/local/nginx/sbin 二.nginx配置文件在哪 /usr/local/nginx/conf/nginx.conf 三.反向代理 如何实现简单的反向代理? 如www.abc.com 转到反向代理服务器192.111.111.111最终转发到127.0.0.1:8080…

10.XSS绕过之htmlspecialchars()函数

XSS绕过之htmlspecialchars()函数 首先可以测试一下是否将字符被转移成html实体&#xff0c;输入字符测试 1111"<>$点击提交 查看页面元素代码&#xff0c;发现单引号不变&#xff0c;可以利用 重新输入攻击代码&#xff0c;用单引号闭合前面的&#xff0c;进…

【PostgreSQL】启航PostgreSQL之旅:基础构建与环境配置

目录 PostgreSQL概述 核心特性 安装与配置 Linux环境安装示例 Windows环境安装 基本命令与界面介绍 命令行界面&#xff08;psql&#xff09; PostgreSQL概述 PostgreSQL&#xff0c;通常简称为Postgres&#xff0c;是一种开源的对象关系型数据库管理系统&#xff08;OR…

AI学习指南机器学习篇-随机森林(Random Forests)算法简介

AI学习指南机器学习篇-随机森林&#xff08;Random Forests&#xff09;算法简介 1. 引言 在机器学习领域&#xff0c;随机森林&#xff08;Random Forests&#xff09;是一种集成学习方法&#xff0c;通过组合多个决策树来进行分类和回归任务。它是一种强大且灵活的算法&…

python爬虫-爬虫的基础知识储备

爬虫就是一个不断的去抓去网页的程序&#xff0c;根据我们的需要得到我们想要的结果&#xff01;但我们又要让服务器感觉是我们人在通过浏览器浏览不是程序所为&#xff01;归根到底就是我们通过程序访问网站得到html代码&#xff0c;然后分析html代码获取有效内容的过程。下面…

【Python实战因果推断】1_因果效应异质性1

目录 From ATE to CATE Why Prediction Is Not the Answer CATE and ITE 本文将介绍应用于行业的因果推理中最有趣的发展&#xff1a;效应异质性。在此之前&#xff0c;你们了解的是一种治疗方法的一般影响。现在&#xff0c;你将专注于发现它如何对不同的人产生不同的影响。…

Java | Leetcode Java题解之第198题打家劫舍

题目&#xff1a; 题解&#xff1a; class Solution {public int rob(int[] nums) {if (nums null || nums.length 0) {return 0;}int length nums.length;if (length 1) {return nums[0];}int first nums[0], second Math.max(nums[0], nums[1]);for (int i 2; i <…

【Oracle篇】逻辑备份工具expdp(exp)/impdp(imp)和物理备份工具rman的区别和各自的使用场景总汇(第八篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

链表数组遍历输出的辨析(二者都含指针的情况下)----PTA期末复习题

输入输出三位学生的学号和信息 一开始我认为是指针&#xff0c;直接背了指针输出的方式&#xff1b;p;p!NULL;pp->next 这个是错误的 下面这个输出是正确的方式 分析怎么区分这两个 举个例子来 数组遍历&#xff1a; 链表遍历&#xff1a; 输出的结果&#xff1a; 如果将…

Android小技巧:利用动态代理自动切换线程

日常开发中&#xff0c;多线程编程是个难以避免的话题&#xff0c;开发者可以小心翼翼、谨慎地、严谨地编程来编写出高效的、安全的多线程程序&#xff0c;但是在长时间的维护中&#xff0c;难免因为其中某个人的某个疏忽而导致出现预料之外的并发问题&#xff0c;比如下面这个…

【XCharts插件】5-1、从Json中读取数据并更新图表案例(v3.0)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 XCharts插件是一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。 【Unity3D…