Linux 4TB*2 组成JBOD 使用winhex手工分析重组恢复数据案例

Linux 4TB*2 组成JBOD 使用winhex手工分析重组恢复数据案例

一:案例描述:2块4TB硬盘组成一个JBOD分区,系统Linux。 其中有一个硬盘损坏。

 


二:恢复方法:


1:先恢复损坏的硬盘。

2:用winhex分析,两块硬盘JBOD结构。

在两块硬盘上查找十六进制“53EF” 方向:向下,偏移调制:512=56,查找超极块。
 

3:找到正确的超极块

 

4:打开查看中模板查看超极块信息。这里主要查看这个JBOD分区的,块总数与,块大小。

 

5:打开模板

 

6:上面是块总数,下面是块大小。块总数:1953507328   块大小:2=4k,就是8扇区 (Block size (0=1K, 1=2K, 2=4K)  2 )
那这个JBOD分区大小为:1953507328*8=15628058624 每个硬盘大小为15628058624/2=7814029312

 

 

7:用UFS组JBOD

 

8:数据直接可以查看,7.4TB分区

 

时间: 2024-08-07 20:54:06

Linux 4TB*2 组成JBOD 使用winhex手工分析重组恢复数据案例的相关文章

在Linux 中如何从进程相关的文件描述中恢复数据

在Linux中误删除了某个文件,但是 ps-ef|grep 文件名 发现某个进程还在使用该文件,那么可以通 过以下方式恢复文件. 例如:创建一个简单文件/tmp/test.txt, 随便向里面写点内容 两个client模拟,client1 负责打开文件less /tmp/test.txt(模拟占用线程) client2 负责恢复文件,恢复步骤(均在client2上执行) 1. 查看/tp/test.txt被占用的进程id [[email protected] tmp]# ps -ef|grep

Linux下电骡aMule Kademlia网络构建分析3

将本节点加入Kademlia网络 连接请求的发起 aMule在启动的时候,会起一些定时器,以便于定期的执行一些任务.其中比较重要的就是core_timer,相关code如下(amule-2.3.1/src/amule-gui.cpp): // Create the Core timer core_timer = new CTimer(this,ID_CORE_TIMER_EVENT); if (!core_timer) { AddLogLineCS(_("Fatal Error: Failed

《linux 内核完全剖析》 exit.c 代码分析笔记

exit.c 代码分析笔记 release 释放进程的函数release() 主要根据指定进程的任务数据结构指针,在任务数组中删除指定的进程指针,释放相关内存页,并立刻让内核重新调度进程的运行. void release(struct task_struct * p) //释放p指向的进程 { int i; if (!p) //常规检测p是否为0 return; if (p == current) { //不能把自己给释放了 printk("task releasing itself\n\r&q

Linux下电骡aMule Kademlia网络构建分析5 —— 资源的发布

资源发布请求消息的发送 在aMule中,主要用CSharedFileList class来管理共享给其它节点的文件.如我们前面在 Linux下电骡aMule Kademlia网络构建分析3 一文中分析的那样,aMule在启动的时候,会起一些定时器,以便于定期的执行一些任务.CamuleApp::OnCoreTimer()是其中之一,在这个函数中,我们可以看到这样的几行: // Publish files to server if needed. sharedfiles->Process(); 由

4.windows和Linux下创建oracle用户名表空间,表,插入数据,用户管理表等操作

进入超级管理员,执行以下命令 Window下创建数据库,表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 根据实际安装环境进行调整 CREATE TABLESPACE ts_myscott LOGGING DATAFILE 'F:/app/to-to/oradata/orcl/ts_myscott.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL; CREATE TABLESPACE ts_myscott2 LOGGING DATAFILE

嵌入式linux QT开发(三)——GUI原理分析

嵌入式linux QT开发(三)--GUI原理分析 一.命令行程序 命令行程序是面向过程的程序设计. 命令行程序的特点: A.基于顺序结构执行 B.程序执行过程中不需与用户交互 C.程序执行结束给出最终运行结果 命令行程序适用场合: A.单任务场合 B.无交互.简单交互场合 C.服务器应用场合 二.GUI程序 GUI程序的特点: A.基于消息驱动模型的程序 B.程序执行依赖用户交互过程 C.程序执行过程中实时响应用户操作 D.一般程序执行后不会主动退出 GUI程序适用场合: A.多任务场合 B.

《linux 内核完全剖析》 fork.c 代码分析笔记

fork.c 代码分析笔记 verifiy_area long last_pid=0; //全局变量,用来记录目前最大的pid数值 void verify_area(void * addr,int size) // addr 是虚拟地址 ,size是需要写入的字节大小 { unsigned long start; start = (unsigned long) addr; //把地址强制类型转换之后,赋值给start size += start & 0xfff; //取addr在当前虚拟地址中4

Linux内核中的list用法和实现分析

这些天在思考知识体系的完整性,发现总是对消息队列的实现不满意,索性看看内核里面的链表实现形式,这篇文章就当做是学习的i笔记吧.. 内核代码中有很多的地方使用了list,而这个list的用法又跟我们平时在教科书中常见的用法有很大的不同,所以有必要详细了解下这里面的门道. 内核里面的list(如没有特殊说明,下文说的list都是指内核里面的list)可称之为侵入式链表.这种list最突出的特征就是其节点中不含有任何数据,相反,list节点是嵌入到特定的数据结构中的.大家自然就会问了,这样实现有什么好

《linux 内核完全剖析》 signal.c 代码分析笔记

signal.c 代码分析笔记 sgetmask int sys_sgetmask()// 获取当前进程阻塞的信号 { returncurrent->blocked; } sys_ssetmask int sys_ssetmask(int newmask) //设置当前进程阻塞信号,确保SIGKILL 和SIGSTOP不被阻塞 { int old=current->blocked; current->blocked= newmask & ~(1<<(SIGKILL-1