Skip to main content

moregeek program

【服务器数据恢复】如何从raid5磁盘阵列层面恢复误删除服务器上卷的数据-多极客编程

服务器数据恢复环境&故障:

某品牌服务器,搭建raid5磁盘阵列。

用户误操作删除服务器上的卷。

经过检测发现服务器不存在物理故障,可以从raid5磁盘阵列层面进行数据恢复。


服务器数据恢复过程:

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

2、分析超级块信息,获取到raid5阵列的逻辑起始块位置号,记录raid5阵列起始块位置。

3、去除raid5阵列的校验盘。经过分析发现raid5阵列数据块大小为8扇区,每个数据块后有一个附加的大小为64字节的数据块描述信息。所以在底层找到0X10位置为FFFF的就是要找的校验块。



【服务器数据恢复】如何从raid5磁盘阵列层面恢复误删除服务器上卷的数据_服务器数据恢复


4、分析aggr盘序。已知raid5阵列中的数据块大小为8扇区,因此按照每块磁盘的8号扇区进行盘序分析,确定每块磁盘各自归属的组,还原磁盘在各自的组内的排序。

5、分析raid磁盘阵列节点信息。服务器的节点分布在不同的数据块内并组成节点组,前面已经分析出每64字节记录一些系统数据,之后用192字节为一项来记录各个文件节点。文件节点根据用户级别可分为两类:“MBFP”系统文件节点和“MBFI”用户文件节点,在恢复数据时一般只取MBFI节点组即可。



【服务器数据恢复】如何从raid5磁盘阵列层面恢复误删除服务器上卷的数据_服务器数据恢复_02


*头部信息64字节(此头部为数据文件的节点文件块头部,大小为64字节)

*“MBFP”为元文件的节点标志,“MBFI”为用户文件的节点标志

6、根据更新序列值获取到最新节点。解析节点中节点类型、逻辑块号、文件数量、文件大小、所占块数量及数据指针。获取节点在节点文件中的逻辑块号,从0开始计数。

7、获取目录项,并根据其节点编号,找到对应节点。



【服务器数据恢复】如何从raid5磁盘阵列层面恢复误删除服务器上卷的数据_服务器数据恢复_03


8、根据分析获取到的raid阵列信息重组raid5阵列,北亚数据恢复工程师编写小程序提取服务器内的数据。


服务器数据验证:

北亚数据恢复工程师在服务器上搭建了与原始服务器相同的环境,在上层应用内验证数据无误后交付给用户,由用户亲自验证,经过用户反复验证后确认数据完整可用。

©著作权归作者所有:来自51CTO博客作者宋国建的原创作品,请联系作者获取转载授权,否则将追究法律责任

秒杀系统设计的5个要点-多极客编程

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心知识点,欢迎star~Github地址:​​https://github.com/Tyson0314/Java-learning​​秒杀系统涉及到的知识点高并发,cache,锁机制基于缓存

【服务器数据恢复】5盘raid5中1块硬盘掉线被误重建为4盘raid5的数据恢复案例-多极客编程

服务器数据恢复环境: 一台服务器上5块硬盘组建raid5磁盘阵列,用于存储公司数据,无备份。 服务器故障&分析: 服务器上一块硬盘故障掉线,用户聘请一家运维公司对服务器进行维护,运维公司技术人员在没有了解清楚服务器原始环境的情况下,将服务器上没有掉线的4块硬盘重新组建为一组新的raid5阵列,导致服务器原有数据全部丢失。 本案例中导致服务器数据丢失的原因就是重建raid5这个操作。用户服务

实时订阅推送设计与实现-多极客编程

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心知识点,欢迎star~Github地址:​​https://github.com/Tyson0314/Java-learning​​什么是领劵的订阅推送?就是用户订阅了该劵的推送,在可领取

leetcode.209 长度最小的子数组-多极客编程

1.题目给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 2.代码实现1.暴力求解 int min=Integer.MAX_VALUE; for(int i=0;

leetcode.27 移除元素-多极客编程

1.题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。2.代码实现class Solution { public int removeElement(int[] nums, int v

nifi集群搭建及基础介绍-多极客编程

一、Nifi配置1)  nifi基本配置1.      jdk配置:nifi新版本要求jdk版本必须1.8以上目录:bin/nifi.env.sh       export JAVA_HOME=/usr/java/jdk1.8   忽略此项配置,nifi将使用系统默认Java环境启动。2.  nifi运行内存配置目录:conf/bootstarp.conf  java.arg.2=-Xms2048

tidb 底层存储结构 lsm 树原理介绍-多极客编程

作者:京东物流 刘家存随着数据量的增大,传统关系型数据库越来越不能满足对于海量数据存储的需求。对于分布式关系型数据库,我们了解其底层存储结构是非常重要的。本文将介绍下分布式关系型数据库 TiDB 所采用的底层存储结构 LSM 树的原理。1 LSM 树介绍LSM 树(Log-Structured-Merge-Tree) 日志结构合并树由 Patrick O’Neil 等人在论文《The Log-St

选择 k3s 还是 rke3?一文读懂!-多极客编程

K3s 和 RKE2 是 SUSE Rancher 容器平台的两个 Kubernetes 发行版,都可以运行生产就绪的集群,但是它们适用的用例不同,两者都有独特的功能。本文将介绍这两个项目的相同点和差异性,帮您了解如何合理选用 RKE2 和 K3s,来满足容器化工作负载的安全性和合规性。K3s 和 RKE2K3s 仅使用一个不到 70MB 的二进制文件来提供生产就绪的 Kubernetes 集群。