也谈WINDOWS下分区类型变为RAW

简介:
 看到网上有很多人提到,在正常使用电脑的情况下,分区类型变为RAW,双击时提示"驱动器X未被格式化,是否格式化",导致数据无法读取。应对这类情况,网友们的恢复方案往往是各执一词,各有各的道理,大家似乎都有恢复成功的理论依据。但实际上,所有的解决方案都是建立在适当的数据结构理论基础上的,并不能一概而论。
  开门见山地说吧。既然提示"驱动器X未被格式化,是否格式化",那重点就在于这个X(就用这个盘符假定吧)是未被格式化的,或者说不知道是什么格式。那格式又是什么呢?简单的解释,把一个分区划分出结构,以便于组织文件。这个"格式"实际上就是文件系统。合起来,把这句话翻译一下,就是"X分区不知道是什么文件系统,是不是强制规划一个文件系统?"
  那系统为什么不知道X是一个什么文件系统呢?(再通俗一点,就是分区格式,如FAT还是NTFS)
  FAT或是NTFS(或是LINUX UNIX下的文件系统)实际上是一种把文件如何放到连续(有时候是逻辑连续,但我们认为他连续就可以了)的一片磁盘空间的一种方法。这个方法听起来简单,真正做起来要考虑的事情是很多的,比如放进去怎么取出来?怎么很高效的取出来?删了数据怎么把空间挪出来等等。这些做法我们不详细说明(有兴趣看看我写过的《FAT文件系统原理》,地址网上一查,到处都有)。单单说一个事情,既然FAT和NTFS都是组织文件的不同形式,那系统在读的时候肯定是要知道它是FAT还是NTFS,再调用不同的驱动去解释它。这部分用来标记是NTFS还是FAT,包括NTFS或FAT的参数的结构,一般叫做DBR(LINUX/UNIX里叫做SUPER BLOCK)。
  因为DBR是申明文件系统类型的结构,所以FAT/NTFS的DBR一定要位置相同。毕竟驱动要先到一个固定的地方读出DBR,才能判断是NTFS还是FAT。这个固定的地方是分区的最前面,即0扇区。
  如果0扇区是错的,文件系统驱动读取0扇区时,发现既不满足FAT规则,也不满足NTFS规则,那自然地会抛出异常,询问用户"我不知道是什么文件系统,是不是要强制规划一个指定的文件系统?",就是文中的错误提示。
  知道问题所在了,看如何解决?
  既然0扇区是错的,那把结构改成原来的0扇区不就可以了吗?
  是的,大多数情况这样就可以搞定了。FAT32系统的6扇区会有一个格式化后便做好的DBR的备份,NTFS同样在分区的最后留有一个DBR的备份。用磁盘编辑工具,找到这个备份,把它贴回0扇区,重新识别文件系统即可。
  当然事情有时候不是这样简单的。比如如果是FAT就没有DBR的备份,或者如果FAT32的6扇区也被破坏(这是非常正常的),或者不光DBR损坏,其它结构也有问题(结构不匹配,即使DBR正确,系统照样不知道是什么文件系统)。如果不幸真得被我言中的话,事情会变得稍麻烦一些。专业的做法是根据文件系统数据区的存储结构,重新计算出原来是什么文件系统,文件系统的参数是什么,但这个对普通用户而言是困难的。那只能用数据恢复软件了吗?
  用什么软件,以及软件的用法我不详述,网上能查到的我没必要再费力去写。但有时候你还是会发现软件也解决不了,归一下原因,事实上是大部分数据恢复软件也要依靠DBR去进行扫描(很傻),那这样就惨了,排除找专业数据恢复公司恢复以外,我只能给出这样的建议了:
  1、在磁盘管理里,先把盘符删掉。
  2、无论如何,有空间的话,先对故障区域或全盘做完整备份。见:《 如何对磁盘做完整的全盘镜像备份? 》
  3、按原来的文件系统结构对一个无用的大小相等或稍大的分区做格式化(希望你记得对,也希望你运气好,这实在不是专业的做法),然后把0扇区拷贝到故障分区里。或者备份后对故障分区直接格式化,格完后,从镜像把前3.5G数据还原回来。(注:做完后最好不要急着加盘符)
  4、可以在CMD下执行CHKDSK(没有备份过的,可千万别贸然做)。或者再用数据恢复软件进行处理。
  5、如果用第4步处理不成功,比如导出来的文件名称都对,就是数据全部不对,那应该是格式化参数不对,可以手动重新格式化一下。如果没有专业分析方法,那就只能簇大小512B,1KB,2KB,4KB,8KB,16KB,32KB这样试试了。
 
  辟几个谣:
  1、出现此类故障后,按系统提示,格式化后,用数据恢复软件就能全部恢复出来了。
  结论:大错特错,完全不重视数据安全。
  原因:格式化是一定会写一些数据进去的,只是写进去的这些数据会不会覆盖你所需的数据。有些人成功过,只是因为格式化操作没有覆盖他需要的数据,或者说命好,但如果格式化覆盖了重要数据,那可就麻烦大了(目前找谁都没用)。尤其是FAT文件系统,格式化后数据的恢复很难做到100%,而且越是重要的频繁修改的文件越不容易恢复。
  2、出现此类故障后,在CMD下直接执行CHKDSK。
  结论:错误,依然是危险操作
  原因:CHKDSK的目的是将结构不一致的文件系统一致化,那这中间便会有一套算法。为了傻瓜型操作,微软并不会提供更专业的修正建议,所以程序难免会“一根筋”,修好皆大欢喜,修不好哭都来不及。如果不幸执行了CHKDSK,同时屏幕上出现大量的错误提示,那就赶紧强制结束吧,否则,就等着给数据收尸吧。




本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/143025,如需转载请自行联系原作者
目录
相关文章
|
Windows
Mac 技术篇-Windows Remote Desktop远程连接windows系统时键盘输入字母自动变为快捷键操作问题解决方法
Mac 技术篇-Windows Remote Desktop远程连接windows系统时键盘输入字母自动变为快捷键操作问题解决方法
1107 0
Mac 技术篇-Windows Remote Desktop远程连接windows系统时键盘输入字母自动变为快捷键操作问题解决方法
|
3天前
|
运维 安全 Linux
使用阿里云搭建幻兽帕鲁服务器操作系统类型Windows和Linux有区别吗?
使用阿里云搭建幻兽帕鲁服务器操作系统类型Windows和Linux有区别吗?性能有差异?同配置的游戏服务器,如4核16G或8核32G配置等,选择Windows和Linux操作系统差异不太大,如果非要对比的话,Linux系统相对Windows更少占用计算资源,当然如果对Linux不熟悉的话,可以选择Windows。另外,即便是幻兽帕鲁服务器创建成功后,也是可以免费修改操作系统的
121 1
|
7月前
|
程序员 API Windows
[笔记]Windows核心编程《番外篇》几种Hook类型
[笔记]Windows核心编程《番外篇》几种Hook类型
|
7月前
|
Windows
北亚数据恢复-WINDOWS还原系统后分区出现问题的数据恢复方案
故障: 1、WINDOWS还原系统后,原来的多个分区合并成了一个分区; 2、WINDOWS还原系统后,原分区与现在分区的数量/大小不一致; 3、WINDOWS还原系统后,原数据分区丢失。
|
程序员 API Windows
[笔记]Windows核心编程《番外篇》几种Hook类型
Windows核心编程《番外篇》几种Hook类型
307 0
|
Windows
命名空间“System”中不存在类型或命名空间名称“Windows”(是缺少程序集引用吗?)
命名空间“System”中不存在类型或命名空间名称“Windows”(是缺少程序集引用吗?)
命名空间“System”中不存在类型或命名空间名称“Windows”(是缺少程序集引用吗?)
|
数据安全/隐私保护 Windows
Windows 10访问局域网提示“未授予用户在此计算机上的请求登录类型”
Windows 10访问局域网提示“未授予用户在此计算机上的请求登录类型”
514 0
Windows 10访问局域网提示“未授予用户在此计算机上的请求登录类型”
|
存储 Windows
Win系统 - Windows 10 磁盘如何分区?
Win系统 - Windows 10 磁盘如何分区?
248 0
Win系统 - Windows 10 磁盘如何分区?
|
JSON Android开发 数据格式
【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )
【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )
155 0
【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )