找回密码
 立即注册
搜索
查看: 15368|回复: 15

GUID分区表(GPT)修复实战

[复制链接]
发表于 2009-8-4 00:39 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

     
发表于 2009-8-4 11:07 | 显示全部楼层
技术贴MARK


我自己从来不记得分区是多大。。
回复

使用道具 举报

发表于 2009-8-4 12:15 | 显示全部楼层
做个记号,回头再看
回复

使用道具 举报

     
发表于 2009-8-4 13:33 | 显示全部楼层
技术贴MARK
回复

使用道具 举报

 楼主| 发表于 2009-8-4 13:44 | 显示全部楼层
回2楼,你不必记得分区有多大,NTFS分区在分区的起始扇区与结束扇区都有Header(头信息),通过偏移量计算便可
回复

使用道具 举报

     
发表于 2009-8-4 14:26 | 显示全部楼层
由于MBR分区表无法支持超过2TB的单个分区
pig_10 发表于 2009-8-4 00:39

所有分区加起来也不能超过2TB吧
回复

使用道具 举报

 楼主| 发表于 2009-8-4 14:42 | 显示全部楼层
回6楼:我没尝试过,不过应该可以,仅仅是单个磁盘分区上限为2TB才是
回复

使用道具 举报

     
发表于 2009-8-4 17:33 | 显示全部楼层
这个得mark,学习
回复

使用道具 举报

发表于 2009-8-4 17:39 | 显示全部楼层
标记,排队学习
回复

使用道具 举报

     
发表于 2009-8-4 19:16 | 显示全部楼层
技术贴
lz,我有一只7200.9,开机自检缓慢但能通过,操作系统无法认出、ghost无法认出,disgen报告0磁道出错,mhdd可以认出,但扫描缓慢兼基本全是坏道。这软故障还是硬故障可能性大?
回复

使用道具 举报

 楼主| 发表于 2009-8-4 19:29 | 显示全部楼层
本帖最后由 pig_10 于 2009-8-4 19:36 编辑

从头到尾全是坏道的话有可能是软件故障,特别是固件问题,可以用mhdd随机指定一个扫描起始扇区,多换几个地方,如果全是错误那可能就是了
可以尝试用破解版PC-3000(骡子上有下)重新刷一遍固件,或者找找Seagate官网看看有没有更新版固件
或者尝试用HDD Regenerator(要用破解版,最新版本1.71)修复一下,看看是否有改善
还有一个极为悲观的预测,如果你的硬盘受到过强力冲击或者强力电流冲击,那可能磁头完蛋了……

不要尝试低格与填零,没用的
回复

使用道具 举报

     
发表于 2009-8-4 23:07 | 显示全部楼层
请问,重建分区表是否不适用于我这只硬盘?
因为是突然崩溃的,我越发直觉它是走你所说的强电冲击杯具路线...
海门官网现在也没开放firmware下载了,真杯具
HDD Regenerator未试过,先试试好了
回复

使用道具 举报

 楼主| 发表于 2009-8-4 23:55 | 显示全部楼层
如果你之后没有尝试任何低级格式化或者清零之类的写入行为,那还是可能的

你的盘该不会是那批R了P的盘吧…………你可以试试看PC3000刷Firmware,具体Firmware你可以找一个同型号无故障的硬盘Dump一个,破解版PC3000需要一个比较老的主板,比如845,如果你的硬盘是SATA你可以尝试找一个转换器(好用的)
回复

使用道具 举报

     
发表于 2009-8-5 03:45 | 显示全部楼层
突然有种早些年看电脑报的感觉
回复

使用道具 举报

发表于 2009-8-5 23:43 | 显示全部楼层
太技术了,很多地方看不明白...
回复

使用道具 举报

发表于 2009-8-6 00:04 | 显示全部楼层
进来问下楼主NTFS 分区修复的问题
硬盘西数640G SATA
原来是一个NTFS 30G的主分区+一堆扩展分区(100G,25G,200G,150G,30G 大概如此)
经人数次“误操作”后现在在disk genius里只能重建出主分区(WINDOWS里看还是未格式化的)和第一个100G的扩展分区,请问有什么方法能修复吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-19 19:19 , Processed in 0.156967 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表