[转] 关于硬盘修复以及低级格式化的一些文章

**************************************************
一般来说如果硬盘出现物理的故障是很难修复的,你唯一可以做的事情只有更换,但是在更换之前还有最后一个方法值得试试,那就是低级格式化
低级格式化的作用是将空白的磁片划分一个个同心圆、半径不同的磁道,还将磁道划分为若干个扇区,每个扇区的容量为512字节。在这里要说明的是,低级格式化是硬盘高损耗的操作,将大大缩短硬盘的使用寿命,因此,如非十分必要,建议不要进行低级格式化。
以前要进行低级格式化有两种方法,一是通过主板BIOS中所支持的功能,但是现在的主板一般都不带有次项功能。或者使用专用的软件进行,其中DM就是其中一款。

默认启动DM是无法进行低级格式化的,你需要打开DM的高级菜单。可以在启动时加上参数“dm/m”或者在DM的主界面中按“Alt+M”切换到高级菜单。
选择菜单中的“(M)aintenance Options”,进入高级菜单:
然后选择“(U)tilities”,进入低级格式化界面:
接着选择你需要低级格式化的硬盘,如果你只有一个硬盘直接回车即可,如果有多个需要进行从中进行选择:
选择硬盘后,然后再选择“Low Level Format”,进行低级格式化:
这是会弹出警告的窗口,你需要按“Alt+C”进行确认:
确认之后,还会显示让你再次确认的窗口,选择“YES”:
选择完毕,就开始硬盘低级格式化的操作,其中用百分比显示进度:
低级格式化是很耗时间的事情,这个要依据你硬盘的大小以及硬盘损坏情况来定。
再次提醒大家,低级格式化是对硬盘有损坏的操作,不是万不得已最好不要进行。
**************************************************
硬盘低格格式化是对硬盘最彻底的初始化方式,经过低格后的硬盘,原来保护的数据将全部丢失,所以一般来说低格硬盘是非常不可取的,只有非常必要的时候才能低格硬盘。而这个所谓的必要时候有两种,一是硬盘出厂前,硬盘厂会对硬盘进行一次低级格式化;另一个是当硬盘出现某种类型的坏道时,使用低级格式化能起到一定的缓解或者屏蔽作用。
对于第一种情况,这里不用多说了,因为硬盘出厂前的低格工作只有硬盘工程师们才会接触到,对于普通用户而言,根本无须考虑这方面的事情。至于第二种情况,是什么类型的坏道时才需要低格呢?在说明这个关键性问题前,先来看看硬盘坏道的类型。
总的来说,坏道可以分为物理坏道逻辑坏道。其中逻辑坏道相对比较容易解决,它指硬盘在写入时受到意久干扰,造成有ECC错误。从过程上讲,它是指硬盘在写入数据的时候,会用ECC的逻辑重新组合数据,一般操作系统要写入512个字节,但实际上硬盘会多写几十个字节,而且所有的这些字节都要用ECC进行校验编码,如果原始字节算出的ECC校正码和读出字节算出的ECC不同,这样就会产生ECC错误,这就是所谓的物理坏道产生原因。
至于物理坏道,它对硬盘的损坏更具致命性,它也有软性和硬性物理坏道的区别,磁盘表面物理损坏就是硬性的,这是无法修复的。而由于外界影响而造成数据的写入错误时,系统也会认为是物理坏道,而这种物理坏道是可以使用一些硬盘工具(例如硬盘厂商提供的检测修复软件)来修复,此外,对于微小的硬盘表面损伤,一些硬盘工具(例如西部数据的Data Lifeguard Tools)就可以重新定向到一个好的保留扇区来修正错误。
对于这些坏道类型,硬性的物理坏道肯定是无法修复的,它是对硬盘表面的一种最直接的损坏,所以即使再低格或者使用硬盘工具也无法修复(除非是非常微小的损坏,部份工具可以将这部份坏道保留不用以此达到解决目的)。
对于硬盘上出现逻辑坏道或者软性物理坏道,用户可以试试使用低级格式化来达到屏蔽坏道的作用,但这里需要指出,屏蔽坏道并不等于消除坏道了,低格硬盘能把原来硬盘内所有分区都删除,但坏道却依然存在,屏蔽只是将坏道隐藏起来,不让用户在存储数据时使用这些坏道,这样能在一定程度上保证用户数据的可靠性,但坏道却会随着硬盘分区、格式化次数的增长而扩散蔓延。
所以笔者并不推荐用户对硬盘进行低格,如何硬盘在保修期内最好去保修或者找经销商换一块,那可以说是最佳解决方案,也是最彻底的解决方案了。如果硬盘过了保修期不让换,那可以试试低格硬盘,以防止将数据存储到坏道导致数据损失。
对于如何进行硬盘低格,一般来说是使用低格工具来操作,这个将在下面的章节中详细介绍,这里再说一些相关话题。即低格工具跟硬盘检测工具是有着本质的区别,低格工具就是对硬盘进行低格的作用,而硬盘检测工具一般来说是硬盘厂商推出的用来检测硬盘,及早发现硬盘错误,以提醒用户备份重要数据或者检修硬盘用的,它不是用于低格硬盘。
用Debug汇编语言进行低级格式化
低级格式化硬盘能完成销毁硬盘内的数据,所以在操作前一定要谨慎。硬盘低格有许多方法,例如直接在CMOS中对硬盘进行低格,或者使用汇编语言进行硬盘低格,而最常见的莫过于使用一些工具软件来对硬盘进行低格,常见低格工具有lformat、DM及硬盘厂商们推出的各种硬盘工具等。
汇编是比较低级的一种编程语言,它能非常方便地直接操作硬件,而且运行效率很高,如果软件系统中需要直接操作硬件时,经常使用的就是汇编语言。使用汇编也可以对硬盘进行低级格式化,它比DM等工具软件显得更为灵活,具体应用时就是使用debug程序,而具体操作就是在debug环境下,调用存放在BIOS中的低级格式化程序(CMOS中直接低格硬盘调用的也是此段低格程序)。实现方法通常有如下三种:
(1)、直接调用BIOS ROM中的低格程序
在很多计算机的BIOS ROM中存放着低格程序,存放地址从C8005H地址开始,具体操作如下:
A:\>Debug
-G C800 :0005(//这时屏幕显示信息(不同版本的BIOS显示的信息可能不同),回车后提示:)
Current Interleave is 3 select new interleave or Return for current(//这是要求用户选择交叉因子,按回车表示取默认值3,也可输入新的交叉因子值,硬盘的交叉因子一般是3,所以直接回车即可。屏幕接着提示:)
Are you dynamically configuring the drive-answer Y/N t
Press“Y”to begin formatting the drive C: with interleave 03(//键入“Y”后开始对硬盘进行低格)
Formatting ……(//完成后询问是否处理坏磁道)
Do you want to format bad track-answer Y/N?
若没有则用“N”回答。屏幕显示:
Format Successful,system will new restart,Insert Dos diskette indrive A:
插入系统盘到A驱动器,即可进行分区,高级格式化等操作来安装系统了。
(2)、通过调用INT 13H中断的7号功能对硬盘进行低格
操作如下:
A:\>DEBUG
-A 100
-XXXX:0100 MOV AX,0703;(//交叉因子为3)
-XXXX:0103 MOV CX,0001;(//0磁道0扇区起)
-XXXX:0106 MOV DX,0080;(//C盘0磁道)
-XXXX:0109 INT 13
-XXXX:010B INT 3
-XXXX:010D
-G 100
这样硬盘就被低格了。
(3)、调用INT 13H中断的5号功能
对硬盘调用INT 13H中断的5号功能只低格0面0道1扇区,而不必低格整个硬盘,从而使低格在很短的时间内完成。具体操作如下:
A:>DEBUG
-A 100
-XXXX:0100 MOV AX,0500;(//调用5号功能)
-XXXX:0103 MOV BX,0180;(//设置缓冲区地址)
-XXXX:0106 MOV CX,0001;(//0磁道1扇区起)
-XXXX:0109 MOV DX,0080;(//C盘0磁道)
-XXXX:010B INT 13
-XXXX:010D INT 3
-E 0180 0 0 0002;(//写入参数)
-G 100
用DM进行低级格式化
DM的全名是Hard Disk Management Program,它能对硬盘进行低级格式化、校验等管理工作,可以提高硬盘的使用效率。总的来说,DM具有如下几个功能:硬盘低级格式化、分区、高级格式化、硬盘参数配置及其它功能。
在实际应用时,dm工具跟普通DOS命令(如fdisk或format)一样,它的命令格式为:A:>DM [参数] 。其中的参数可取以下值:
<> /M DM软件以手工方式进入,如无该参数,DM以自动方式运行,依次执行INITIALIZE. PARTITIONG. PREPARAFION。
<> /C DM软件以彩色方式执行,即运行于彩色显示器上。
<> /P DM软件以PC/XT方式管理硬盘。
<> /A DM软件以PC/AT方式管理硬盘。
<> /2 DOS 2.XX版本方式。
<> /3 DOS 3.XX版本方式。
<> /4 DOS 4.XX版本方式(仅DM 5.01版有此参数)。
<> /V DM运行于可改变簇长度、根目录项方式。
在实际使用中常用以下两种方式启动:
1、A:>DM (自动方式。初始化硬盘时很多参数都用默认值几乎不要人工干预)。
2、A:>DM (手动方式。作格式化时一些参数要人工指定)。
启动dm工具后,用户就可以根据自己的需要选择相应的操作,由于它也是以DOS用户界面的形式存,所以使用起来也十分简捷、明了。
其它低级格式化方法
除了上面介绍的两种低格工具外,还有许多其它低级格式化方法。
1、CMOS中直接操作
如果主板支持,用户可以直接在CMOS对硬盘进行低级格式化,这种方法非常简单、方便,因此如果可能的话,笔者推荐使用这种方法进行硬盘低格。具体操作方法:在开机时根据系统提示进入CMOS Setup(如果是Award等BIOS,会提示按DEL进入CMOSSetup,如果是Intel主板,一般是按F2进入CMOS Setup),接着在CMOS菜菜单内选择low formatted HardDisk Drive选择,然后根据程序提示进行待低格硬盘,同时回答一些程序提问即可进行硬盘低级格式化。
2、lformat.com程序低格硬盘
除了dm工具外,还有一款比较常见的低格程序是lformat.exe,它是由迈拓公司推出的低级格式化硬盘工具。在DOS状态下运行lformat.exe后,程序即启动警告界面。在该画面中说明的大概意思是,如果用户使用这个工具时,硬盘内所有数据将丢失,因此推荐在运行它之前备份必要的数据,同时推荐移走所有其它硬盘。如果用户忘记备份数据,而希望退出该程序,则可以按除Y之外的任意键即可,如果用户确认对硬盘进行低棍,请按“Y”键。
如果选择了“Y”后,程序将要求用户选择硬盘或者就对当前硬盘进行低格,接着,问答几个提问,即可开始硬盘低级格式化过程。
**************************************************
硬盘主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT)
--------------------------------------------------------------
物理位置:0面0道1扇区(clindyer 0, side 0, sector 1)
大小: 512字节
其中:MBR 446字节(0000--01BD),DPT 64字节(01BE--01FD),结束标志2字节(55 AA)
功能:MBR通过检查DPT分区信息引导系统跳转至DBR;
读取: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>PHYSICAL DISK-—HARD DISK,
然后, 在OBJECT菜单中选择DISK PARTITION TABLE即可读取, 并使用TOOLS菜单中的WRITE OBJECT TO 选项存入指定文件备份;
写入: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>FLOOPY DISK, 选择备份的DPT
文件, 然后使用TOOLS菜单中的WRITE OBJECT TO——>PHYSICAL SECTOR 选项写入001
(clindyer 0, side 0, sector 1);
详解:
000H--08AH MBR启动程序(寻找开机分区)
08BH--0D9H MBR启动字符串
0DAH--1BCH 保留("0")
1BEH--1FDH 硬盘分区表
1FEH--1FFH 结束标志(55AA)
活动分区主引导扇区(DBR)
--------------------------
物理位置:1面0道1扇区(clindyer 0, side 1, sector 1)
大小: FAT16 1扇区 512字节
FAT32 3扇区 1536字节
功能:包含机器CMOS等信息(0000--0059), 核对该信息并引导指定的系统文件, 如NTLDR等;
读取: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>LOGICAL DISK-—DISK C,
然后, 在OBJECT菜单中选择BOOT RECORD即可读取, 并使用TOOLS菜单中的
WRITE OBJECT TO 选项存入指定文件备份;
写入: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>FLOOPY DISK, 选择备份的DBR
文件, 然后使用TOOLS菜单中的WRITE OBJECT TO——>PHYSICAL SECTOR 选项写入011
(clindyer 0, side 1, sector 1);
详解:
000H--002H 3 BYTE的跳转指令(去启动程序, 跳到03EH)
003H--03DH BIOS参数区
03EH--19DH DOS启动程序
19EH--1E5H 开机字符串
1E6H--1FDH 文件名(IO.SYS, MSDOS.SYS)
1FEH--1FFH 结束标记(55AA)
硬盘分区表(DPT)
---------------------
偏移地址 字节数 含义分析
01BE 1 分区类型:00表示非活动分区:80表示活动分区;其他为无效分区。
01BF~01C1 3 *分区的起始地址(面/扇区/磁道),通常第一分区的起始地址开始
于1面0道1扇区,因此这三个字节应为010100
01C2 1 #分区的操作系统的类型。
01C3~01C5 3 *该分区的结束地址(面/扇/道)
01C6~01C9 4 该分区起始逻辑扇区
01CA~01CD 4 该分区占用的总扇区数
注释: * 注意分区的起始地址(面/扇区/磁道)和结束地址(面/扇/道)中字节分配:
00000000 01000001 00010101
~~~~~~~~ ==^^^^^^ ========
~ 面(磁头) 8 位
^ 扇区 6 位
= 磁道 10 位
# 分区的操作系统类型(文件格式标志码)
4---DOS FAT16<32M
5---EXTEND
6---DOS FAT16>32M
7---NTFS(OS/2)
83---LINUX>64M
DPT 总共64字节(01BE--01FD), 如上所示每个分区占16个字节, 所以可以表示四个分区, 这也
就是为什么一个磁盘的主分区和扩展分区之和总共只能有四个的原因.
逻辑驱动器
-----------
扩展分区的信息位于以上所示的硬盘分区表(DPT)中, 而逻辑驱动器的信息则位于扩展分区的
起始扇区, 即该分区的起始地址(面/扇区/磁道)所对应的扇区, 该扇区中的信息与硬盘主引导
扇区的区别是不包含MBR, 而16字节的分区信息则表示的是逻辑驱动器的起始和结束地址等.
所以, 在磁盘仅含有一个主分区, 一个扩展分区(包含多个逻辑驱动器)的情况下, 即使由于病毒
或其他原因导致硬盘主引导扇区的数据丢失(包括DPT), 也可以通过逻辑驱动器的数据来恢复整个硬盘.
例如: 以下是一个硬盘的分区情况.
道 面 扇 道 面 扇 起始扇(逻辑) 结束扇 总共扇区
MBR 0 0 1 - - - - - -
C 0 1 1 276 239 63 63 4,188,239 4,188,177
扩 277 0 1 554 239 63 4,188,240 8,391,599 4,203,360
D 277 1 1 554 239 63 4,188,303 8,391,599 4,203,297
如果主分区表损坏, 则可以通过手工查找扩展分区表中所包含的逻辑驱动器数据, 在本例中就是D盘所对应的数据, 然后将其起始扇(逻辑)减去63就是所对应的扩展分区的起始扇(逻辑), 将其起始地址(面/扇区/磁道)改为0面就是扩展分区的起始地址. 然后通过扩展分区就可以得到主分区C的信息, 然后就可以使用FDISK/MBR命令和手工填写分区表恢复整个硬盘.
实际使用这种方法比较麻烦, 如果知道每个分区的大小, 则可以通过使用PQ MAGIC 5 将磁盘重新分区为原来大小(注意: 千万不能应用, 我们只是通过它来获得数据), 并查看INFO来获得以上
数据, 记录以后取消该分区操作, 然后使用NORTON DISK2000手工修改DPT表, 恢复整个硬盘.
该例所对应的分区表数据:
80 01
01 00 06 EF 7F 14 3F 00 00 00 11 E8 3F 00 00 00
41 15 05 EF BF 2A 50 E8 3F 00 60 23 40 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
扩展分区表数据:
00 01
41 15 07 EF BF 2A 8F E8 3F 00 21 23 40 00
注意: 逻辑起始扇区和总共分区数是左边为低位, 如该例的扩展分区的起始地址为50 E8 3F 00转换十进制时要先变为00 3F E8 50, 总共占用分区数60 23 40 00要先变为00 40 23 60, 同理当手工填写该值时也要进行高低位转换.

posted @ 2007-10-18 09:46  temptation  阅读(2525)  评论(0编辑  收藏  举报