提供一个思路哈,可在只读情况下确认数据是否仍然存在。
4T硬盘分成一个大分区,那么应该是GPT分区表,文件系统为NTFS。
1.快速确认丢失分区是否正常
假定当时你用win7自带的磁盘管理对硬盘分区,且第一个分区就是你的大分区,
那么第一个分区的起始字节应该是1024 KB 处
(
https://msdn.microsoft.com/en-us/library/windows/desktop/hh848035(v=vs.85).aspx)
那么winhex或者dskprobe跳转到1024KB处,
开头应该会有NTFS字样,
512字节前应该会有 disk read error occurred BOOTMGR is missing BOOTMGR is compressed Press Ctrl+Alt+Del to restart字样
512字节处十六进制会有55AA
找到这个标记,可以确认仅仅是分区表被破坏,分区数据问题不大。
如果用dskprobe打开这个扇区,可以选择功能 view as ntfs partition table(大致是这个字样吧)
将会把这个扇区按照ntfs扇区头来解释,将显示分区大小等信息,如果和你原来的分区一致,那么
可以确认没有问题了
2.假如上述流程不可行,那么可以尝试寻找GPT分区表备份
按照http://
en.wikipedia.org/wiki/GUID_Partition_Table的说明硬盘最后一个扇区应该是GPT分区表的备份,楼主可尝试使用winhex或者dskprobe读取最后一个扇区(4T硬盘应该是4k扇区。按照wiki的说法,应该是最后一个4k扇区,当然也可能是512字节,都尝试一下),看看有没有GPT分区表的标识
"EFI PART"
如果找到,那么可以按照wiki的说明,看一看你的分区表描述是否反应了之前你记住的大概分区结构
(也就是你说的一个超大分区。不过GPT分区的磁盘也可能在头部多一个小分区,可以忽略)。再跳转到
这个超大分区的起始扇区,按照1的流程来确认是否找到的就是丢失的分区
3.GPT分区表备份找不到或者与你原来的分区结构不相符(某些分区工具不会可能不会更新备份的GPT分区表,将导致这个问题),那只有raw搜索了 。在winhex里面搜55AA的hex (可选cond %512 = 510意即只搜512扇区结尾),直到找到NTFS的分区起始处。 NTFS分区的起始扇区在NTFS分区的结尾也有一个备份(与分区头的一样),因为你分成了一个整个的大分区,所以也可以在硬盘的结尾处搜索。找到这个扇区后使用dskprobe的view as ntfs partition table打开之后,用jump to partition start ,即可跳转到ntfs分区的起始扇区。
4.已经确认分区起始位置后如何操作?
切换到linux系统,使用losetup 配合你找到的分区起始扇区的*字节位置*
将sdx (插入硬盘后的序号) 挂载为loop device(比如/dev/loop0),然后用mount -t ntfs-3g /dev/loop0 /mnt/xxx -o ro (只读挂载) (这一段就是大概,具体命令楼主完成前面的步骤之后再详细确认)
如果没有问题的话,原来的分区已经可以在/mnt/xxx下可以直接访问了。这个流程不需要写入磁盘,也不用恢复分区表 。可以说是无损恢复。如果为了保险,就把文件全部拷贝出来,格式化了再写入(是否考虑换个硬盘?)。要是敢于折腾,可以linux 下gdisk写入一个新的gpt分区表,再手动把分区的起始结束扇区写入,如果正确,硬盘直接恢复成可读状态。