进入PC时代以后,硬盘的物理结构发生了一些变化,直接影响到相应的硬盘指令实现方式的变化。其中最重要的就是硬盘寻道方式的变化导致的格式化指令的变化。
什么是磁盘低级格式化:磁盘为了达到随机存取的目的,需要在盘的磁道上规划出扇区,每个扇区以引导标记和扇区标记作为扇区的起始,然后才是扇区的内容,后面还有校验标记。低级格式化就是在磁道上标上这些标记而已。所以低级格式化的操作实际上仅仅是一个简单的写过程,写的不是数据而是标记。低级格式化既不相当于对盘片的修整更不是盘片的再生。在软盘和硬盘使用前都有低级格式化的过程,这个过程需也仅需一次,硬盘的低级格式化是在工厂里完成的。
硬盘曾经象软盘一样,是利用步进电机来控制磁头的位置,进行寻道操作的。但是,随着磁道密度的增加,步进电机的精度满足不了更加精密的磁头定位的需要了,这样,硬盘生产商发明了一种更加先进的定位方式,即利用一个特殊的机器,在硬盘表面写上同心的密集的伺服编码,这种编码代表了相应位置和硬盘旋转中心的距离,密度是一般磁道密度的一倍到几倍,利用音圈电机来线性地控制磁头的移动,磁头在移动过程中,不断地读取伺服编码的信息,这样硬盘的控制系统就能随时掌握硬盘磁头的位置。这样,早期的硬盘的寻道指令的执行是靠向步进电机发相应的指令,而现代的硬盘的寻道是靠一个硬盘上先期写入的伺服信息和对音圈电机的指令来定位。最重要的是:伺服信息是在工厂利用特殊的仪器写入的,硬盘内部的以音圈电机驱动的磁头组件是无法写入这重信息的。因为现在的的硬盘都有几万到几十万个磁道,磁道的宽度非常小,普通硬盘的磁头无法在没有定位基准的情况下写入定位信息。
除了这些信息,硬盘的磁道间距和每磁道的扇区数量现在都是随着磁道距离圆心的距离变化的,一般来说,目前的硬盘这种变化有100次或更多。也就是说,硬盘表面分成了很多的区,在这些区域里,硬盘的磁道间距和每扇区的扇区数量是一样的,但不同的区域,就是不一样的了。
另外,硬盘上数据的编码也不仅仅是将主机传来的数据直接写到介质上,在每个扇区的起始,都有一些记录这个扇区状态的编码,俗称灰码,在扇区后面,都有一些ECC校验码。一般来说,ECC纠错可以纠正大约10多个含有错误的字节的读出错误。 从上面的讨论能够知道,目前的硬盘在bios的配置里看到的扇区,磁道,磁头的数量都是一种逻辑值。很明显,目前的硬盘虽然很多是1个磁头或2个磁头的,但是在bios里,或者在硬盘的调用指令里面,磁头的数量都是15或者16。这是因为硬盘内部有个将实际的物理扇区转换为逻辑扇区的算法,用户能访问的,是经过转化后的逻辑扇区,而不是实际的和物理磁头对应的物理扇区。这样,用户其实是无法对物理意义上的硬盘进行操作的,就更不用说低级格式化了。
现在,市面上的一些所谓的低级格式化软件,其实就是在调用硬盘的一个叫做‘格式化磁道’的指令,这个指令是IDE硬盘的标准指令。老式的硬盘在执行这个指令的时候,是将某个磁道检验一遍,并将有问题的扇区标记为坏扇区,再将这个磁道里的一个标记为未使用的扇区的标记改成那个坏扇区的标记,这个操作其实就是将一个好扇区替代一个坏扇区,并不是真正意义上的格式化,因为在此之前,磁道已经由工厂的写伺服系统划分好了。在这个指令之后,一般硬盘会将这些扇区重新写零,并将后面的ECC编码重置,这样,经过这个操作,这个磁道上的数据就会被清零了。还有,这个指令实际上不是对物理的磁头和磁道进行操作的,它所调用的磁道,扇区,磁头表,是经过转换后的。另外,在LBA 方式下,这个指令也可以执行,但是是利用经过了LBA到CHS转换的CHS表。而现在的硬盘,对这个指令的实现仅仅是将相应的扇区写零,并重置ECC码而已。
因此,市面上的低级格式化软件,其实无非是实现了重新置零和将坏扇区重定向两个功能。
需要指出的是,近期的硬盘内部都已经有了自我检测的功能,可以自行完成这种重定向的操作了,所以,基本上在单碟3G后的硬盘,都不必执行这个指令了。很多硬盘公司提供的自我检测软件,在检测到有硬盘的错误后,已经能自动调用这个指令,将一个备用扇区替换有损坏的扇区。
实际上,在硬盘里本身就有个叫P-List的表,记录的是出厂时实际的物理坏扇区位置,而硬盘的固件本身还在维护着一个叫G-List的列表,这个表记录着在使用中发生了错误的扇区位置,在这两个表里的扇区,是真实的物理坏扇区,但是这两个表是无法用一般的硬盘指令来获得以及修改的。当然,硬盘厂家的一些程序能够修改这两个表,但是,没有各个厂家都通用的这个坏区表的修改程序。所以,外面的所谓低级格式化程序,其实都不是真正的低级格式化。
还有一种流传的观点:低级格式化会损伤硬盘。这个观点是错误的。因为在执行格式化磁道的指令的时候,硬盘的物理状态:磁头飞行高度,硬盘旋转的速度,读写电平等等都和正常读写一样,这样,硬盘并不会被这个指令所损伤。可能的情况是:有些用户在执行DM或LFORMAT 等软件的时候,难以忍受其运行速度,用强行关电源的方式来终止其运行,这样,硬盘可能就发生了不可修复的错误。其实,在硬盘进行任何写操作的时候,强行关闭电源,都有可能发生这种不可修复的错误。这种错误可能是由于写磁头将伺服信息抹掉,或者是造成磁头和硬盘表面接触而导致划伤,或者是硬盘在做扇区标记时写错误等等。这种损伤其实是不规范操作造成的,而不是格式化磁道这个指令本身造成的。
文章评论