固件数据是硬盘正常工作所必需的,这部分数据对用户来说是隐藏的。固件数据可以分为如下几部分。
伺服信息是硬盘中用于磁头驱动的伺服系统所必需的,它们用做磁头定位,保证磁头准确地定位到指定的磁道。
伺服信息在生产过程中通过专门的伺服窗写入已经装配好的硬盘中,伺服窗随后被用标签封闭,标签上写有“警告!禁止打开”。
硬盘出厂前要做低级格式化工作,通过低级格式化将盘片上划分成能够管理数据的单元,包括磁道、扇区等。盘片上磁道的起始位置由标志信息确定,每个磁道被分为扇区和伺服字段,每个扇区的格式则包括ID字段、数据字段、同步Zone和空白空间。
扇区的ID字段包括位置记号、物理扇区地址、标记字节和校验字节。有些硬盘厂家使用伺服字段直接指向磁道上的物理扇区的方法来代替ID字段的功能,这样做需要同时读(写)磁道上所有扇区到(从)RAM中的映像,因此为了读一个扇区,驱动器需要复制整个磁道到RAM中,读取扇区不再是从磁盘上而是从RAM中。写入操作也是同样的过程,在写扇区时驱动器首先读取整个磁道,在RAM中修改后再将整个磁道写回硬盘。
微处理器的固件(微程序)是硬盘部件运转所必需的一些程序,这些程序包括用于初始化诊断、控制主轴电机旋转、控制磁盘控制器、缓冲RAM之间交换数据的程序,等等。
大多数型号硬盘的固件微程序存储在处理器的内部ROM中,现在很多硬盘使用外部Flash ROM,也有很多型号的硬盘将部分固件程序存储在磁盘上专门的固件区,而用来初始化、将固件数据从磁盘载入RAM的基本引导程序则存储在ROM中。
由于实际的固件模块在运行之前需要首先被载入到RAM中,所以它们被称为驻留模块。生产商将部分固件存储在磁盘上不仅是为了节省ROM空间,也是为了在发现微程序有错误时可以容易地修改。
配置表和设置参数负责管理硬盘空间的逻辑结构和物理结构,它们可以实现硬盘容量和型号的灵活配置。
例如,厂家在设计某一特定型号的容量为80GB硬盘时,为该硬盘配置两个盘片,那么厂家还可以同时自动地生产使用1个盘片的容量为40GB的“二分之一容量”型号,以及只使用盘片的一面的容量为20GB的“四分之一容量”型号。这样生产商可以向市场提供不同容量的多种型号的硬盘而不用考虑研究和开发费用。
除此之外,低型号的硬盘可以使用由于某种原因不能用于完全容量型号的盘片,如“二分之一容量”型号可以使用某一面有缺陷的盘片。
现代硬盘的生产技术还无法实现盘片表面零缺陷,不同成分的介质材料、抛光缺陷、磁层的杂质等,都有可能导致盘片读/写数据时出错,这些出错的区域就是盘片的缺陷。
早期的硬盘将缺陷磁道表写在硬盘外面的标签上,并且每个硬盘的盘片上都有一些保留空间。例如,HDD ST225(20MB)实际容量为21.5MB,也就是说,有1.5MB的额外空间分配给缺陷扇区和磁道。
现代硬盘也有额外的空间,不过这些空间对于用户来说是隐藏的,只有硬盘微处理器才可以访问。额外空间的一部分分配给硬盘固件、配置表、S.M.A.R.T.、计数器、工厂信息、缺陷表等,其他部分被保留用于以后代替缺陷扇区。
缺陷表在工厂测试时由生产商填充,检测发现的所有坏扇区都被添加到缺陷表,这一过程被称为缺陷调整(也叫作更新缺陷)。之后,如果在硬盘使用过程中发现新的缺陷扇区,硬盘就会自主重定向到保留扇区。因此,所有的现代硬盘出厂时都没有(可见的)缺陷扇区。
大部分型号的硬盘有两个缺陷表,第一个是基本缺陷表,也称P表(P-List);另一个是可增长的缺陷表,也称G表(G-List)。P表在工厂测试时由SELFSCAN程序填充,G表不是在工厂中填充,它被设计用于添加硬盘使用过程中出现的缺陷。
为了使用G表的功能,几乎所有硬盘的用户命令中都包含“指派”命令,即用保留扇区替代缺陷扇区。很多处理坏扇区的程序中都包含“指派”命令,例如西部数据硬盘的Data Lifeguard系统就可以自动地在硬盘空闲时使用保留扇区替换缺陷扇区。
有了这种功能,在数据被写入缺陷扇区时,硬盘会自动地重定向到保留扇区,并将缺陷扇区标记为坏区,然后将缺陷扇区的编号添加到G表。