本帖最后由 pig_10 于 2009-8-4 13:40 编辑

我有一个用两个1.5TB硬盘组成的RAID卷,由于MBR分区表无法支持超过2TB的单个分区,所以我使用了GUID分区表

某日,我用diskpart命令的时候选错了硬盘,然后毫不犹豫的执行了clean指令,很好,灰飞烟灭,将近3TB的数据跟我886了

心里那个悔阿,但是木已成舟,或者说生米已煮成熟饭,又能如何?考虑恢复吧。

祭出Winhex,磁盘编辑!一看,傻眼了,diskpart的clean命令整整抹掉了1M的数据,想直接找回分区表是不大可能了

然后就是各种Try and Error,n种方案失败之后终于成功了

我首先想到的是能否手动编辑GPT分区表?答案是:可以,但是比MBR分区表复杂,而且GPT主索引区还保存了分区清单部分的CRC32值

我把这个卷重新初始化,然后建立了一个非常小的分区(10M),以确保数据不会被覆盖,之后手动编辑这个分区的起始LBA与结束LBA,保存,好,Winhex能够认出这个分区了,但是Windows打死也不认,就是那10M,这怎么办?Winhex的NTFS遍历(Traverse)又没有办法拿来大规模的用,会丢文件,完整性(Integrity)也无法保障,看起来微软把自己用的分区表存在了别的什么地方,不过后来我知道了在哪里。

后来想到的是能否再建立一个同等,或者更大的分区,然后用Winhex的扇区复制将原硬盘的扇区复制到新硬盘?正好我还有两块1.5T的硬盘,我赶紧把数据倒到我淘汰下来的三块共计1TB的硬盘之中(谢天谢地这两块硬盘里的数据只有800G),然后用这两块硬盘再建立一个3TB的Raid卷。

但这时候Winhex就傻X了,指定扇区数量无法超过2TB!行不通,又失败了

我接下来继续查了些资料,发现Windows在处理GPT的时候必须留出128M的Microsoft Reserved(微软预留),我猜测Windows采用的分区表是否在这里?后来的实验证明我对了,但是我直到最后也不知道这里的结构,我实在是没精力去分析128M的数据,这个分区是没有文件系统(File System)的,想找数据无异于大海捞针。

查资料的途中发现事实上Diskpart之中create partition命令可以通过offset=x与size=y来精确指定分区偏移量与其大小(单位是MB),我如获至宝,赶紧打开Winhex根据我找到的分区的起始偏移量与大小创建了一个参数与原丢失分区完全一样的分区,这样我的系统之中就存在了一个Windows可识别的参数又与原来相同的分区,然后我尝试性的将这个卷的0扇区开始的128M数据(包括了微软预留分区)全部复制到丢失分区的硬盘上(用Winhex的Clone Disk(克隆磁盘)的指定扇区功能),重起,找到了!分区回来了!我赶紧分配了一个盘符,运行chkdsk,谢天谢地,没有数据丢失(其实也说不准,可能文件系统没有任何改动但是在各种实验中有数据被覆盖),剩下的就是往回倒数据了,oh yeah!这个实验的成功也说明了Windows承认的分区表确实存在于那128M的微软预留分区之中!

这次的经验表明了GPT分区表也并不是那么难以触及,只要有思路,仍然可以进行数据恢复以及分区恢复,不过比较麻烦的是因为没有像编辑MBR的PTEDIT32那样的工具所以很多事情只能手工来。

以下是几点经验:

1、Windows存储在内存之中的分区与文件系统的挂载(Mount)信息(不要惊讶,Windows也有这说法,这不是Linux的专利),除非在Diskmgmt.msc或者diskpart或者其他分区软件的操作之下,不然不会改变,即使你在Winhex等磁盘编辑器中做出了相应的修改也不会被Windows所识别,只有重起并且让Windows重新扫描所有分区才会识别并挂在你手动恢复了的(如果成功了)分区,MBR亦然,并不仅限于GPT

2、各种可能性都要尝试一下,不过注意备份,不过这个备份并不是要让你备份全部数据,而是只要备份被修改部分前后数兆就可以

3、慎用Diskpart,里面的破坏性指令是不需要确认的

4、……想不出来了

主要资料来源:

GPT详细资料:

http://en.wikipedia.org/wiki/GUID_Partition_Table

没有中文,不过将就看吧

Diskpart命令列表:

http://technet.microsoft.com/zh-cn/library/cc766465(WS.10).aspx

guid linux 识别的分区表_GUID分区表(GPT)修复实战相关推荐

  1. guid linux 识别的分区表_磁盘管理—MBR分区与GPT分区总结

    描述: 1,什么是磁盘分区 磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分,盘片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区. ...

  2. guid linux 识别的分区表_Linux系统MBR和GPT分区的区别介绍

    主引导记录(Master Boot Record , MBR)是指一个存储设备的开头 512 字节.它包含操作系统的引导器和存储设备的分区表. 全局唯一标识分区表(GUID Partition Tab ...

  3. guid linux 识别的分区表_GUID分区与MBR分区有什么区别?

    展开全部 GUID分区与MBR分区是两种磁盘的组织方式,主要是分区信息信息储存方式.备份功能和分62616964757a686964616fe4b893e5b19e31333431366238区数量和 ...

  4. guid linux 识别的分区表_教你硬盘分区表格式GUID和MBR怎么区分

    我们的电脑硬盘分区格式一共有两种,一种是GUID(GPT),一种是MBR.现在购买的新电脑大多是预装有Win10系统,用户会发现电脑上500G的硬盘大多只有两个分区C盘和D盘,这时用户们都会想多分出几 ...

  5. linux parted新建分区表,Parted 创建 GPT 分区

    对于磁盘的分区表 MBR与GPT区别. MBR:MBR分区表(即主引导记录)大家都很熟悉,是过去我们使用windows时常用的. 所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一 ...

  6. 转换固态+机械硬盘分区表格式为GPT,UEFI启动,重装WIN10+Ubuntu18.04双系统

    UEFI+GPT,重装win10+ubuntu18.04双系统 一.问题描述 1.Ubuntu系统停留在循环登录界面,无法进入 2.错误删除ubuntu,引导页消失,无法进入任何系统 3.安装grub ...

  7. 实现Linux与Windows双系统共存下修复磁盘分区表

    前段时间,上班的时候闲的无聊的很,就想找点事干,打发一下时间.突然想起好久没有玩linux系统了,于是就将Windows的一个逻辑分区给删除了,就安装了比较流行的桌面版的linux系统ubuntu.过 ...

  8. linux硬盘分区损坏,用Linux拯救损坏的硬盘分区表

    用Linux拯救损坏的硬盘分区表 作者: 网络转载 CNETNews.com.cn 2008-05-22 20:10:09 本人有一块西部数据80GB的硬盘,因为不小心感染了病毒,使硬盘分区表遭到了严 ...

  9. Linux重新读写分区的命令,用partprobe、blockdev、hdparm、partx命令在Linux中重新加载分区表...

    本文介绍Linux操作系统重新加载分区表的方法:使用partprobe.blockdev.hdparm.partx命令. 背景 作为Linux管理员,你可以在一天内多次执行磁盘分区任务.大多数情况下, ...

最新文章

  1. cocos studio和cocos creator关系
  2. 汽车常识全面介绍 - 车身
  3. SQLAlchemy 使用经验
  4. java集合的某项相加_java8实现list集合中按照某一个值相加求和,平均值等操作代码...
  5. postgresql定义访问ip与用户_PostgreSQL 设置允许访问IP的操作
  6. java接口测试工具_【分享】接口工具对比(apipost、jmeter、postman、swagger等)
  7. es6-super关键字
  8. Javascript语言精粹--The Excellence in Javascript
  9. 64位userdata.dll丢失_因为计算机中丢失OCI.dll尝试重新安装该程序以解决此问题
  10. mysql 循环 索引值,mysql:循环遍历表和alter table添加索引
  11. 估计理论(1):最小方差无偏估计(第2章)
  12. 手机群控系统电脑/手机硬件配置相关测试参数
  13. Linux中cinder的作用,11-cinder块存储服务部署
  14. 单例模式(DCL、holder等)
  15. Python:nii格式的核磁共振图像(MRI)的读取、处理、显示操作(以缩放操作举例)
  16. lineageos没有信号解决方法
  17. 【面试系列三】面试是面试者与面试官的双向沟通,如何抓住面试官的小尾巴以及面试过程中需要避开的一些减分项!
  18. codeforces round#517
  19. C语言与JAVA区别
  20. Karma-Protractor 学习

热门文章

  1. 如何做好会员管理与维护?
  2. 【Unity】Obi插件系列(七)—— Obi Emitters
  3. 六十六条经典禅语提升人生境界
  4. 频率响应、零极点、稳定性专题
  5. 学生个人消费系统设计C语言,个人消费管理系统C语言课程设计毕业设计word格式.doc...
  6. 做中台,我从一名产品经理做成了合伙人
  7. Python自动化测试常用库整理
  8. 【Hibernate步步为营】--映射合集汇总
  9. 新人转行IC该怎么选择岗位?(内附各岗位学习视频)
  10. 开源PHP微信通用sdk,支持微信支付及所有基础接口(强烈推荐)