载入中,请稍候..

您的位置: 回到首页 > 存储技术专题

硬盘存储原理

磁存储技术包含硬盘,软盘和磁带等。软盘基本上谈出人们的视野了,磁带只是在 服务器存储备份上有所作用,平常最为常见的便是硬盘。不过硬盘和软盘的原理倒是 比较相近的。 二、硬盘的简单分类 按 接口 PATA(IDE) SATA SCSI 按用途 PC硬盘,笔记本硬盘(移动硬盘),服务器硬盘 三、硬盘的外部物理结构 硬盘主要由盘体、控制电路板和接口部件组成。 盘体是一个密封的腔体。(后续将介绍硬盘的内部物理结构即是指盘体的内部结构)。 控制电路板上主要有硬盘BIOS、硬盘缓存(Cache)和主控制芯片等单元。硬盘接口 包括插座、数据接口和主、从跳线等。 四、硬盘的内部物理结构 硬盘盘体是完全密封的,里面主要有磁头、盘片等部件。 硬盘的盘片材料硬度和耐磨性要求很高,所以一般采用合金材料,多数为铝合金。 (早期有塑料,陶瓷的,现在也出现了玻璃材料的)。盘基上涂上磁性材料。硬盘盘片 厚一般在0.5mm左右,盘片的转速与盘片大小有关,考虑到惯性及盘片稳定性,盘片 越大转速越低。 有些硬盘只装一张盘片,有此则有多张。硬盘盘片安装在主轴电机的转轴上,在主 轴电机的带动下作高速旋转。每张盘片的容量称为单碟容量,而一块硬盘的总容量就是 所有盘片容量的总和。早期硬盘由于单碟容量低,所以盘片较多。现代的硬盘盘片一般 只有少数几片。一块硬盘内的所有盘片都是完全一样的,否则控制部分就太复杂了。 盘片上的记录密度很大,而且盘片工作时会高速旋转,为保证其工作的稳定,数据 保存的长久,所以硬片都是密封在硬盘内部的,内部并非真空。不可自行拆卸硬盘, 在普通环境下空气中的灰尘,都会对硬盘造成永久损害。 以上介绍的是盘片,一张单面的盘片需要一个磁头,双面的盘片则需要两个磁头。 硬盘采用高精度、轻型磁头驱动和定位系统。这种系统能使磁头在盘面上快速移动,读 写硬盘时,磁头依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离 不到1微米(约为头发直径的百分之一),可以在极短的时间内精确定位到计算机指令指定 的磁道上。 注意:由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样的 圆周为一个磁道(Track)。 由于定位系统限制,磁头臂只能在盘片的内外磁道之间移动。因此,不管开机还是关机, 磁头总在盘片上。所不同的是,关机时磁头停留在盘片启停区,开机时磁头“飞行”在磁盘 片上方。 五、硬盘存储的逻辑结构 我们常说硬盘有面,柱面,磁道和扇区,这些只不过是虚拟的逻辑概念。 面(盘面): 上面已经了解,硬盘一般会有一个或多个盘片,每个盘片可以有两个面(Side),依此可 称为0面,1面等。每个面对应一个磁头,用于读写数据。 磁道: 盘片在中心轴带动下做高速旋转,磁头连续写入的数据是排列在一个圆周上的。我们称 这样的圆周为一个磁道(Track)。可以假想有很多个同心圆,大小不同的磁道组成盘面。 每个盘片的每个面都有一个读写磁头。磁道离主轴最近的,即线速度最小的地方,是一 个特殊的区域,它不存放任何数据,称为启停区或着陆区(Landing Zone),启停区外就是数 据区。在最外圈,离主轴最远的地方是“0”磁道,硬盘数据的存放就是从最外圈开始的。 硬盘有一个“0”磁道检测器,由它来完成硬盘的初始定位。“0”磁道十分重要,很多硬盘仅 仅因为“0”磁道损坏就报废了,十分可惜。 磁头: 磁头用来读取或者修改盘片上磁性物质的状态,一般说来,每一个磁面都会有一个磁头, 从最上面起由0开始编号。磁头在停止工作时与磁盘是接触的停放在启停区,但是在工作 时呈飞行状态。启停区不存放任何数据,磁头在此区域启停,不会损害任何数据。读取数据 时盘片高速旋转,对磁头运动采用的空气动力学设计。此时磁头离盘面数据区0.2到0.5微米 高度进行飞行。这样既不与盘面接触,又能很好的读取数据。磁头之所以能够飞起来,完全 是靠空气的“浮力”。如果没有空气的话磁头将与磁盘直接接触,除非能生产出无磨檫的光滑 平面,否则在一瞬间就会使整个磁盘表面划伤。目前来看,绝对光滑的平面是不现实的。 柱面: 我们认为离圆心最远的磁道为0磁道,依此往里为1磁道....。不同面上相同磁道编号则组 成了一个圆柱面,即所称的柱面(Cylinder)。 每个柱面上的磁头由上而下从“0”开始编号。数据读写按柱面进行,即磁头读写数据时首 先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面(即磁头上)进行操 作,只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面,因为选取磁头只需 通过电子切换即可,而选取柱面则必须通过机械切换。电子切换比从在机械上磁头向邻近磁 道移动快得多。因此,数据的读写按柱面进行,而不按盘面进行。 读写数据都是按照这种方式进行,尽可能提高了硬盘读写效率。 当然现今硬盘多半只有一个盘片两个盘面。 扇区: 根据硬盘规格的不同,磁道数可以从几百到成千上万不等。一个磁道上可以容纳数KB 的数据,但计算机并不需要一次读写这么多数据。这这基础上,又把磁道划分成若干段, 每段称为一个扇区(Sector)。扇区是硬盘上存储的物理单位,包括512个字节的数据和一些 其他信息。即使计算机只需要硬盘上存储的某个字节,也须一次把这个字节所在的扇区中 的全部512字节读入内存,再选择所需的那个字节。 扇区数据主要有两个部分:存储数据的标识符和存储数据的数据段。 标识符包括组成扇区三维地址的三个数字:扇区所在的磁头(或盘面)、磁道(或柱面号) 以及扇区在磁道上位置(即扇区编号)。标识符还包括一个字段,显示扇区是否可以存储数 据或者已有故障不宜使用的标记。有些硬盘控制器在扇区标志符中还记录提示信息,可在 原扇区出错时指引磁盘转到对应替换扇区或磁道。最后,标识符以循环冗余校验(CRC) 值作为结束,以供控制器检验扇区标识符读出情况,确保准确无误。 扇区的第二个主要部分是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。 要注意硬盘在划分扇区时,和软盘是有一定区别的。软盘的一个磁道中,扇区号一般依次 编排,如挨着来是1号,2号,3号...以此类推。但在硬盘磁道中,扇区号是按照某个间隔跳跃 着编排。如,2号扇区并不是1号扇区后的按顺序的第一个而是第八个,3号扇区又是2号扇区 后的按顺序的第八个,依此类推,这个“八”称为交叉因子。 这个交叉因子的来历有必要详述一下,我们知道,数据读取经常需要按顺序读取一系列相 邻的扇区(逻辑数据相邻)。如对磁道扇区按物理顺序进行编号,很有可能出现当磁头读取完第 一个扇区后,由于盘片转速过快来不及读取下一个扇区,(要知道物理相邻扇区位置距离是极 小的),必须等待转完一圈,这极大浪费了时间。在N年前,就有工程师想到用交叉因子这个办 法来解决这个问题。一个特定硬盘驱动器的交叉因子取决于:磁盘控制器的速度、主板的时钟 速度、与控制器相连的输出总线的操作速度等。如果磁盘的交叉因子值太高,就需多花一些时 间等待数据在磁盘上存入和读出。而如果交叉因子值太低,就会大大降低磁盘性能。 早期的硬盘管理工作中,设置交叉因子需要用户自己完成。有时还需要设置几种不同的值来 比较其性能。现在的硬盘BIOS已经解决这个问题,一般低级格式化程序不再提供这一选项设置。 前面已经提及,系统在磁盘上写入读取数据时,写满一磁道后转向同一柱面的下一个磁头,当 柱面写满时,再转向下一柱面。这些转换都需要时间,而在此期间磁盘始终保持高速旋转,这就 会带来又一个问题。 假定系统刚刚结束对一个磁道最后一个扇区的写入,并且已经设置了最佳交叉因子值,现在准 备在下一磁道的第一个扇区写入,这时就要等到磁头部件重新准备定位并按径向方向到达下一磁 道。如果这个操作占用时间超过了一点点,尽管有交叉存取,磁头仍会延迟到达?饩稣飧鑫侍? 的办法是以原先磁道所在位置为基准,把新磁道(下一磁道)上全部扇区号移动约一个或几个扇区 位置,这就是磁头扭斜。磁头扭斜可以理解为柱面与柱面之间的交叉因子,硬盘出厂便设置好, 用户一般不用去改变它。磁头扭斜只在文件较长超过磁道结尾进行读出和写入时才发挥作用。所 以,扭斜设置不正确所带来的时间损失比交叉因子小得多。 簇: 我们上边已经了解扇区是实际物理单位,簇就是硬盘上存储文件的一个逻辑单位。物理相邻 的若干个扇区其实就组成了一个簇。操作系统读写磁盘的基本单位是扇区,而文件系统的基本 单位是簇(Cluster)。 在你的Windows下,随便找个几十字节的文件,右键属性,看看实际大小与占用空间两项内 容,如大小:15 字节 (15 字节) 占用空间:8.00 KB (8,192 字节)。这里的占用空间就是你机器 分区的簇大小,因为再小的文件都会占用空间,逻辑基本单位是8K,所以都会占用8K。 簇一般有这几类大小 4K,8K,16K,32K,64K等。 簇越大存储性能越好,但空间浪费严重。簇越小性能相对越低,但空间利用率高。 注意:这里引入一个概念文件系统,稍后的文章会详细说明。 六、硬盘读写数据的过程  硬盘读取数据时,读写磁头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间 称为寻道时间(seek time)。因读写磁头的起始位置与目标位置之间的距离不同,寻道时间 也不同。目前硬盘一般为2到30毫秒,平均约为9毫秒。 磁头到达指定磁道后,然后通过盘片的旋转,使得要读取的扇区转到读写磁头的下方, 这段时间称为旋转延迟时间(rotational latency time)。一个7200(转/每分钟)的硬盘,每 旋转一周所需时间为60×1000÷7200=8.33毫秒,则平均旋转延迟时间为8.33÷2=4.17毫 秒(平均情况下,需要旋转半圈)。 七、写在最后 本文以最为常见简单的硬盘容量描述作为结尾。 硬盘容量=盘面数×柱面数×扇区数×512字节 硬盘容量单位:KB(Kilobyte),MB(Megabyte),GB(Gigabyte),TB(Terabyte), PB(Petabyte),EB(Exabyte)为单位。 换算关系如下: 2^10=1024 1KB=1024Byte 1MB=1024KB 1GB=1024MB 1TB=1024GB 1PB=1024TB 1EB=1024PB