上海华客博思数据恢复中心

上海华客博思数据恢复中心

当前位置:首页 > 技术文章 > 正文

硬盘的软故障的判断与排除

编辑:上海华客博思数据恢复中心  时间:2011/07/27

1、硬盘空间丢失 

  首先我们要正确认识硬盘容量大小的有关问题。硬盘的实际容量一般都小于其标称容量。造成这种情况的主要原因是,生产厂家一般按每兆1000K字节计算容量,而大多数主板的BIOS及测试软件是以1048K为一兆计算。这样一来二者间便出现了大约5%的差异。而硬盘容量又有纯粹由磁头数、柱面数等物理参数计算得到的物理盘容量以及在经过分区、格式化 

等操作后实际可用空间的逻辑盘容量之分。此外在CMOS中选择不同的工作模式(NORMA、LBA、LARGE),也会造成容量的不一致。由于有这些因素的影响,一般而言硬盘测试容量与标称容量存在5%-10%左右的差距是基本正常的。

  和硬盘容量有关的是主板CMOS中NORMAL、LBA、LARGE的三种硬盘模式 ,简单说由于最早的BIOS只支持不大于528M容量的硬盘,BIOS中的 C/H/S参数与硬盘实际的完全一样,这时硬盘的模式就是NORMAL,后来为解决528M的限制出现了LARGE模式,它通过增加逻辑柱面的数目,使BIOS支持的容量扩大了一倍,但这是个过度的模式,很快就没有使用了。随着大容量硬盘的流行,现在CMOS的硬盘模式中,实际上只有LBA一项有实用意义,而设为NORMAL、LARGE都不能正常识别及使用大容量硬盘。

  硬盘空间丢失的原因有很多,如误操作、程序非正常退出、非正常关机、病毒感染、程序运行中的错误或者对硬件分区的不合理等情况都会造成硬盘空间的丢失。 

  1)、临时文件造成硬盘空间的浪费 

  应用程序在运行时非正常退出,会使很多.TMP类型的文件继续存放在硬盘中,在Windows窗口环境中运行应用程序时,会自动产生以~GRB开头的用于存放有关屏幕信息的文件,别外,还有一个用于Windows本身临时交换文件的win386.swp。当程序正常退出运行之前,应用程序会将这些文件删除,而非正常退出时,应用程序无法删除它们。可以定期清理这些文件。 

  2)、簇的丢失使硬盘空间丢失

  文件分配表(FAT)是软盘或硬盘上的一个隐含表。FAT记录如何将文件存储在特定的(不一定是连续的)簇上。文件分配表采用一种简单的方法不停地跟踪数据。在FAT中,第一簇的入口是用于存储文件的第二簇的地址。在第二个簇入口处则是第三个簇的地址,等等,直到包含文件结束码的最终簇入口。 很明显,如果FAT表数据因为某种原因遭到破坏,就会导致硬盘数据的逻辑连续性发生紊乱,从而发生硬盘空间丢失的问题。这种空间丢失的故障用一般的磁盘修复工具都可以解决,但数据往往无法修复。 由于传统FAT格式的缺陷,若某个簇没有在任何文件分配链中出现,而且该簇在相应的文件分配表中又被标记为非零时,这时该簇既没有被任何文件使用,又不可以再为其他文件所用,这样就发生了"簇丢失"现象。簇的丢失必然导致硬盘空间的丢失。这种"丢失"空间的现象通常是由于程序在运行中非正常终止、在Win98环境中非正常关机等原因造成的。

   3)、分区过大造成硬盘空间的浪费

  对硬盘的逻辑分区是否合理,这不仅关系到硬盘文件的分类管理,而且也直接关系到硬盘空间的充分利用。下表就是使用FAT16的簇和硬盘物理空间的关系:

  磁盘空间或分区大小 簇的大小 

  16M至128M      2K 

  128M至256M      4K 

  256M至512M      8K 

  512M至1GB      16K 

  1GB至2GB     32K 

  2GB至4GB     64K

  我们知道文件的存储是以簇为单位的,也就是说一个文件要占用一个或多个簇,而簇是由一个或多个扇区构成。如果一个簇只有一个字节被一个文件占用,那么该簇的其他部分即使是空闲的,也不能被别的文件所利用,这样空间就被浪费了。由此可见对硬盘分区在大小划分上是否合理,直接关系到硬盘空间的使用情况。 

  4、)合理使用硬盘空间的设置

  回收站空间设置直接影响到硬盘上可用空间的大小,最好你的回收站大小设置为硬盘空间的5%,并且你要定期清空你的回收站。再有一点就是,IE中的Internet文件临时存放空间的设置,如果你将它设置得太大,它存储的Internet文件就会占用你的硬盘空间。 

  5、)硬盘出现坏道

  如果硬盘出现了坏道也会导致容量减少,这种问题就是硬盘的硬件问题了。坏道是有传染性的。一旦发现一个坏道,基本表明你硬盘的寿命不长了。用软件处理只是权宜之计。如果你的硬盘还在保修期内的话,赶紧备份重要数据,然后找经销商换。毕竟很多时候盘上的数据比硬盘本身更值钱。 

  2、加装双硬盘后出现故障 

  有些朋友在新加了一个硬盘,WIN98就无法启动了,取下新加的硬盘后一切又正常了。这是因为你的WIN98装在原硬盘的非C盘(如D盘)上,而加装双硬盘后在原硬盘存在多分区的情况下,要引起盘符交错,导致原硬盘的盘符发生变化变,WIN98在启动时找不到安装时默认的相关系统文件及众多应用程序,自然不可能正常启动。

  在多分区的情况下,硬盘分区的排列顺序有些古怪:主硬盘的主分区仍被计算机认为是C盘,而第二硬盘的主分区则被认为是D盘,接下来是第一硬盘的其他分区依次从E盘开始排列,然后是第二硬盘的其他分区接着第一硬盘的最后盘符依次排列。要使加上第二硬盘后盘符不发生变化,解决的办法有两个:如果你只使用WIN98的话,比较简单,在CMOS中将第二硬盘设为NONE即可,但在纯DOS下不认第二个硬盘。第二种方法是接上双硬盘后,给第二个硬盘重新分区,删掉其主DOS分区,只分扩展分区。这样盘符也不会交错。当然若第一硬盘只有一个分区的话,也不存在盘符交错的问题。 

  3、硬盘无法引导

  硬盘无法引导系统的故障是非常常见的。原因一般是因为操作系统的重要文件被病毒破坏,或操作失误,导致破坏。引导区和分区表损坏。   一般情况下遇到此类问题处理的过程如下:首先你应该确认电源和信号电缆连接无误(尤其注意信号电缆的方向不要接反),然后进入主板BIOS的硬盘设置,选择自动识别硬盘,看能否正确识别硬盘,若BIOS在识别时长时间停留不动,最后无法识别该硬盘,则多半是硬盘硬件故障,你自己是无法处理的,赶紧退还你朋友了事^_^。如果主板能正确识别该盘你就不用着急了,首先向朋友问清楚该盘是否是新硬盘,若是新硬盘你应该分区格式化后才能识别,如果是已做好的硬盘则很可能是因为该盘采用了FAT32分区。用DOS6.22启动当然是不能识别的,建议换用WIN98的启动盘。 

  一旦出现无法引导的故障,首先应该用软盘启动,如果硬盘还能识别,处理起来比较简单, 一般用SYS A: C:命令即可。如果无效的话可以试试Ndd软件包中的一个工具MAKEDISKBOOT。

  如果问题比较严重的话,最好先想法备份出重要数据,然后分区格式化。你先试试fdiak/mbr重写主引导区, 另外用FDISK检查并激活分区。最后执行format c:/s。

  4、逻辑锁的处理 

  被“逻辑锁”锁住硬盘是比较严重的故障。最直接的后果是,用普通将办法无法启动系统。其原因在于:

  计算机在引导DOS系统时将会搜索所有逻辑盘的顺序,当DOS被引导时,首先要去找主引导扇区的分区表信息,位于硬盘的零头零柱面的第一个扇区的OBEH地址开始的地方,当分区信息开始的地方为80H时表示是主引导分区,其他的为扩展分区,主引导分区被定义为逻辑盘C盘,然后查找扩展分区的逻辑盘,被定义为D盘,以此类推找到E,F,G.....“逻辑锁”就是在此下手,修改了正常的主引导分区记录将扩展分区的第一个逻辑盘指向自己,DOS在启动时查找到第一个逻辑盘后,查找下一个逻辑盘总是找到是自己,这样一来就形成了死循环,这就是使用软驱,光驱,双硬盘都不能正常启动的原因。实际上这“逻辑锁”只是利用了DOS在启动时的一个小小缺陷,便令不少高手都束手无策。知道了“逻辑锁”的“上锁”原理,要解锁也就比较容易了。以前我看到有位朋友采用“热拔插”硬盘电源的方法来处理:就是在当系统启动时,先不给被锁的硬盘插上电源线,等待启动完成后再给硬盘“热插”上电源线,这时如果硬盘没有烧坏的话,系统就可以控制硬盘了。当然这是一种非常危险的方法,大家不要轻易尝试,下面介绍两种比较简单和安全的处理方法。 

  方法一:修改DOS启动文件 

  首先准备一张DOS6.22的系统盘,带上debug、pctools5.0、fdisk等工具。然后在一台正常的机器上,使用你熟悉的二进制编辑工具(debug、pctools5.0,或者Windows下的ultraedit都行)修改软盘上的IO.SYS文件(修改前记住改该文件的属性为正常),具体是在这个文件里面搜索第一个“55aa”字符串,找到以后修改为任何其他数值即可。用这张修改过的系统软盘你就可以顺利地带着被锁的硬盘启动了。不过这时由于该硬盘正常的分区表已经被黑客程序给恶意修改了,你无法用FDISK来删除和修改分区,而且仍无法用正常的启动盘启动系统,这时你可以用DEBUG来手工恢复。使用DEBUG手工修复硬盘步骤如下:

  a:\>debug

  -a

  -xxxx:100 mov ax,0201 读一个扇区的内容

  -xxxx:103 mov bx,500 设置一个缓存地址

  -xxxx:106 mov cx,0001 设置第一个硬盘的硬盘指针

  -xxxx:109 mov dx,0080 读零磁头

  -xxxx:10c int 13 硬盘中断 

  -xxxx:10e int 20

  -xxxx:0110 退出程序返回到指示符

  -g 运行

  -d500 查看运行后500地址的内容 

  这时候会发现地址6be开始的内容是硬盘分区的信息,发现此硬盘的扩展分区指向自己,这就使DOS或Windows启动时查找硬盘逻辑盘进去死循环,在DEBUG指示符下用E命令修改内存数据 具体如下:

  E6BE

  xx.0 xx.0 xx.0...............

  .............................

  .......................55 AA 

  55 AA表示硬盘有效的标记,不要修改,xx0表示把以前的数据“xx”改成0

  再用硬盘中断13把修改好的数据写入硬盘就可以了,具体如下:

  A:\>debug

  a 100 表示修改100地址的汇编指令

  -xxxx:100 mov ax,0301 写硬盘一个扇区

  -xxxx: 这里直接按回车

  -g 运行

  -q 退出

  然后运行 FDISK/MBR(重置硬盘引导扇区的引导程序),再重新启动电脑就行了。

  怎么样?用这种方法处理够简单的吧?而且这种方法还有一个好处就是可以保住盘上的数据!如果你不需要保存数据的话,还有更加简单的处理方法:   方法二:巧设BIOS,用DM解锁

  大家知道DM软件是不依赖于主板BIOS的硬盘识别安装软件,(所以在不能识别大硬盘的老主板上也可用DM来安装使用大容量硬盘)。就算在BIOS中将硬盘设为“NONE”,DM也可识别并处理硬盘。

  首先你要找到和硬盘配套的DM软件(找JS或去网上下载),然后把DM拷到一张系统盘上。接上被锁硬盘,开机,按住DEL键,进CMOS设置,将所有IDE硬盘设为NONE(这是关键所在!),保存设置,重启动,这时系统即可 “带锁”启动。启动后运行DM,你会发现DM可以绕过BIOS,识别出硬盘,选中该硬盘,分区格式化,就OK了。这么简单?不过这种方法的弱点是硬盘上的数据将全部丢失。

上一条:辨别硬盘硬故障

下一条:暂时没有!