服务器数据恢复—异常断电导致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指令时,可能表现为非标指令,硬盘内部处理异常,导致出现规律性坏道。
存储故障是由坏道引起的,导致恢复出来的数据有部分破坏,但不影响整体,结果也在可接受范围内。
相关文章:
服务器数据恢复—异常断电导致RAID6阵列中磁盘出现坏扇区的数据恢复案例
服务器存储数据恢复环境: 一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列,划分为一个卷,分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机,这些虚拟机系统盘是统一大小,数据盘大小不确定&…...
前端工程化08-新的包管理工具pnpm
1、历史原因解读 pnpm这个东西发布的时间是比较早的,但是在最近一两年的时候才开始流行,甚至是可以说非常的盛行,那么这个包到底是个什么东西的,那么我们先说下,原来的包管理工具到底有那些问题?比如说我们…...
章十九、JavaVUE —— 框架、指令、声明周期、Vue-cli、组件路由、Element
目录 一、 框架 ● vue.js 框架 ● 特点 ● Vue 安装 二、 第一个vue程序 ● 创建项目 编辑 ● 导入 vue.js ● 创建vue对象,设置属性,使用模版渲染到页面 介绍 — Vue.js (vuejs.org) 三、 vue指令 ● v-text ● v-html ● v-…...
正则表达式阅读理解
这段正则表达式可以匹配什么呢? 超级复杂的一段正则表达式。 ((max|min)\\s*\\([^\\)]*(,[^\\)]*)*\\)|[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z][a-zA-Z0-9]*)?(\\*||%)?|[0-9](\\.[0-9])?|\\([^\\)]*(,[^\\)]*)*\\))(\\s*[-*/%]\\s*([a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z][…...
Apache Calcite Linq4j学习
Lin4j简介 Linq4j是Apache Calcite项目中的一个模块,它提供了类似于LINQ(Language-Integrated Query)的功能,用于在Java中进行数据查询和操作。Linq4j可以将逻辑查询转换为物理查询,支持对集合进行筛选、映射、分组等…...
FPGA SATA高速存储设计
今天来讲一篇如何在fpga上实现sata ip,然后利用sata ip实现读写sata 盘的目的,如果需要再速度和容量上增加,那么仅仅需要增加sata ip个数就能够实现增加sata盘,如果仅仅实现data的读写整体来说sata ip设计比较简单,下面…...
MySQL----为什么选择使用MySQL
在我们日常做项目的过程中,不论是个人还是企业,大多数会选择使用MySQL数据库作为后端数据库存储,它到底有什么优势,能够做到如此广为流传呢? 优点 稳定性:MySQL具有良好的稳定性和可靠性,能够保…...
01.音视频小白系统入门(新专栏)
目录 一、基础知识 二、音频 三、视频 四、流媒体服务器 五、收获 音视频技术在远程办公、在线教育、远程医疗等领域的应用广泛。 学习音视频技术有助于提升职业竞争力,满足市场需求。 掌握音视频基础知识对未来发展至关重要,基础不牢会导致后续学习…...
C++:enum枚举共用体union
enum枚举 C继承C的枚举用法 (1)典型枚举类型定义,枚举变量定义和使用 (2)枚举类型中的枚举值常量不能和其他外部常量名称冲突: 举例1宏定义,举例2另一个枚举 // 定义一个名为Color的枚举类型 enum Color {RED, // 红色,默认值…...
动手学深度学习(Pytorch版)代码实践 -计算机视觉-47转置卷积
47转置卷积 import torch from torch import nn from d2l import torch as d2l# 输入矩阵X和卷积核矩阵K实现基本的转置卷积运算 def trans_conv(X, K):h, w K.shapeY torch.zeros((X.shape[0] h - 1, X.shape[1] w - 1))for i in range(X.shape[0]):for j in range(X.shap…...
LinkedIn被封原因和解封方法
对于初识领英和对领英生态规则不熟悉的人来说,很容易造成领英账号被封号(被限制登录)的情况,那么如何才能避免和解决领英帐号被封号(被限制登录)的难题呢? 领英帐号被封号或被限制登录主要会有两类情况。 首先要搞清楚, Linkedi…...
redis sentinel 部署
安装Redis 建议版本不要太低 > 6.2,我这里是redis 7.2.5 curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by/usr/share/keyrings/redis-archive-keyring.gpg] http…...
spring boot (shiro)+ websocket测试连接不上的简单检测处理
1、用前端连接测试的demo一切正常,但是到了项目中连接不上了 一开始以为是地址错,但是换了apifox测试也是不可以。 2、考虑是shiro进行了拦截了,所以就访问不到了地址,那么就放行。 3、再次用apifox测试,成功了。 当然…...
Jenkins - Python 虚拟环境
Jenkins - Python 虚拟环境 引言Python 虚拟环境创建 Python 虚拟环境安装 virtualenv(可选)创建虚拟环境激活虚拟环境安装依赖包退出虚拟环境(可选)注意 Python 虚拟环境实践 引言 Automation 脚本通常会部署到 Jenkins 上运行&…...
每日一道算法题 面试题 08.08. 有重复字符串的排列组合
题目 面试题 08.08. 有重复字符串的排列组合 - 力扣(LeetCode) Python class Solution:def permutation(self, S: str) -> List[str]:# 以索引记录字符是否用过lelen(S)idx[_ for _ in range(le) ]# 组合得到的字符串combine[]*leans[]# 递归def fu…...
Apache Kylin资源管理全指南:优化你的大数据架构
标题:Apache Kylin资源管理全指南:优化你的大数据架构 摘要 Apache Kylin是一个开源的分布式分析引擎,旨在为大规模数据集提供高性能的SQL查询能力。在Kylin中进行有效的资源管理对于确保查询性能和系统稳定性至关重要。本文将详细介绍如何…...
计算机网络微课堂(湖科大教书匠)TCP部分
计算机网络微课堂(湖科大教书匠)TCP部分 【计算机网络微课堂(有字幕无背景音乐版)】 TCP的流量控制 一般来说,我们希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收&#…...
C++ 字符串介绍
在C编程中,字符串是非常重要的数据类型之一。字符串用于表示文本信息,处理字符串是许多程序的基本需求。C提供了多种方式来处理字符串,包括C风格的字符串(C-strings)和C标准库中的std::string类。本文将介绍这两种字符…...
[Cloud Networking] BGP
1. AS (Autonomous System) 由于互联网规模庞大,所以网络会被分为许多 自治系统(AS-Autonomous system)。 所属类型ASN名称IPv4 数量IPv6数量运营商ISPAS3356LEVEL3 - Level 3 Parent, LLC, US29,798,83273,301,954,048互联网企业AS15169GO…...
Typora failed to export as pdf. undefined
变换版本并没有用,调整图片大小没有用 我看到一个博客后尝试出方案 我的方法 解决:从上图中的A4,变为其他,然后变回A4 然后到处成功,Amazing! 参考: Typora 导出PDF 报错 failed to export…...
windows 10 安装tcping 使用教程
1 官网下载:tcping下载 2 复制tcping 到win10系统目录C:\Windows\System32 3 tcping 网址测试,可以指定端口 4 tcping 测试端口联通 5 tcping http模式...
[leetcode hot 150]第一百二十二题,买卖股票的最佳时机Ⅱ
题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大…...
openstack Y版在ubuntu22.04上不能创建超过8个cpu的虚拟机问题解决
环境 openstack 版本: Y版25.2.1 操作系统:ubuntu22.04 问题 创建16 vcpu的虚拟机,报错: Failed to build and run instance: libvirt.libvirtError: error from service: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs…...
全国31省细分产品出口数据集(2002-2022年)
数据简介:整理全国31个省直辖市自治区按hs码分的22类细分产品的出口数据,只包含22类的细分,不包含更细的类目。可用来计算出口产品质量,出口产品技术复杂度等指标,数据区间为2002-2022年。 数据名称:31省细…...
1,Windows-本地Linux 系统(WSL)
目录 第一步电脑设置 第二步安装Ubuntu 第三文件传递 开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arc…...
K8S 角色/组件及部署方式的简单概述
1.宏观架构图 2.角色详情 2.1 Master(Controller Plane) 早期是叫 Master 节点,后期改名为 Controller Plane,负责整个集群的控制和管理 Master 不会干活的(当然你让它干也是会干的,涉及到污点容忍),而是起到访问入口ÿ…...
堆【模板】小根堆堆【模板】大根堆(回)
目录 堆【模板】小根堆 题目描述1 输入1 输出1 样例输入 1 样例输出 1 提示1 代码1 堆【模板】大根堆 题目描述2 输入 输出 样例输入2 样例输出2 提示2 代码2 堆【模板】小根堆 题目描述1 初始小根堆为空,我们需要支持以下3种操作: 操作…...
【JavaScript】JavaScript简介
希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 JavaScript入门(1)————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…...
pg_rman:备份和恢复管理工具#postgresql培训
pg_rman 是 PostgreSQL 的在线备份和恢复工具。 pg_rman 项目的目标是提供一种与 pg_dump 一样简单的在线备份和 PITR 方法。此外,它还为每个数据库集群维护一个备份目录。用户只需一个命令即可维护包括存档日志在内的旧备份。 #PG培训#PG考试#postgresql考试#pos…...
【小学期】常用基于Swing的七个静态界面
示例1:基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…...
凡客诚品购物官网/福建seo快速排名优化
当我试图在多个点计算一个函数并将其存储在数组中时,我遇到了内存错误。我读过其他一些关于类似问题的文章,我不认为我超出了系统的内存限制:total used free shared buff/cache availableMem: 131898384 8964068 122074628 15128 859688 121…...
南宁旅游网站建设/app推广拉新平台
导包(使用maven的话,采用坐标的方式) <!-- redis nosql 内存数据库 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.6.2</version></dependency>Spring中的配置文件(spring…...
个人网站备案简介/十大流量平台
主要讲解了80x86cpu在启动的时候时bios如何工作,以及如何最终转换到保护模式。 1.1 启动bios 80x86作为冯诺依曼结构下的cpu,工作模式也是取指执行,即cpu根据cs:ip寄存器的值‘计算’出一个真正的物理地址,在8086实模式的情况下这…...
网站打开风险怎么解决/销售的技巧与口才
文章目录一、特征选择1.1 Filter 方法1.2 Wrapper 方法1.3 Embedded 方法一、特征选择 特征选择主要有三种方式: 1.1 Filter 方法 主要思想: 对每一维特征进行“打分”,即给每一维的特征赋予权重,这样的权重即代表了该维特征的重要…...
网站怎样绑定域名访问/深圳网络推广网站
微信小程序在做地图功能时 用常规的办法height:100%;来设置高度来占满屏幕是不行的 它不会生效 应该改用单位vh 例如 height:100vh 这样就可以是地图占满整个屏幕高度 转载于:https://www.cnblogs.com/Iven-zhang/p/8822408.html...
wordpress 图片 存储/百度企业推广怎么收费
按照C11的标准,to_string函数对每个基础算术类型均有重载函数。但是VC2010的C库中没有实现所有的重载函数,而是只实现了其中的几个。 参见:http://connect.microsoft.com/VisualStudio/feedback/details/576750/c-0x-std-to-string-is-non-c…...