1、磁盘基础知识
1.1 磁头
磁头是利用气流漂浮在盘片上,并没有接触到盘片,因而可以在各轨间高速来回移动,但如果磁头距离盘片太高,读取的信号就会太弱;太低又会磨到盘片表面,所以盘片表面必须相当光滑平整,任何异物和尘埃均会使得磁头摩擦到表面而造成数据永久性损坏。
硬盘读写磁头为了能在磁盘表面高速来回移动读取数据,则需漂浮在磁盘表面上,但是不能接触,接触就会造成划伤。实现这种技术,完全是靠磁盘旋转时,在盘片上空产生气流,利用空气动力学使磁头悬浮于磁片上空。
磁盘每个时刻只允许一个磁头来读写数据,也就是说,不管盘体内盘片和磁头再多,也不可能提高硬盘的吞吐量和IO性能,只能提高容量。
1.2 盘面
硬盘的每一个盘片都有两个盘面,即上、下盘面;每个盘面都能利用,都可以存储数据。
盘面号从上到下的顺序从0开始依次编号。
每个盘片的每个面都有一个对应的读写磁头,磁头起初停在盘片的最内圈,这是一个特殊区域,它不存放任何数据,称为启停区或着陆区,启停区外就是数据区。
在最外圈,离主轴最远的地方是0磁道(track),硬盘数据的存放就是从最外圈开始的。
0磁道存放着用于操作系统启动所必需的程序代码,因为PC启动后BIOS程序在加载任何操作系统或其它程序时,总是默认从磁盘的0磁道读取程序代码来运行。
1.3 磁道
磁盘在格式化时被划分为许多同心圆,这些同心圆轨迹叫做磁道。
磁道从最外圈向内圈从0开始顺序编号。
这些同心圆磁道不是连续记录数据,而是被划分成一段段的圆弧。
在同样的转速下,外圈在相同的时间段里,划过的圆弧长度要比内圈划过的圆弧长度大,因此外圈数据的读写要比内圈块。
每段圆弧叫做一个扇区,扇区从1开始编号,每个扇区中的数据作为一个单元同时读出或写入,是读写的最小单位;不可能发生读写半个或者四分之一个这种小于一个扇区的情况,因为磁头只能定位到某个扇区的开头或者结尾,而不能在扇区内部定位。所以,一个扇区内部的数据是连续流式记录的。
划分磁道和扇区的过程,叫做低级格式化,通常在硬盘出厂时就已经格式化完毕了;相对于低级格式化来说,高级格式化指的对磁盘上所存储的数据进行文件系统的标记,而不是对扇区和磁道进行磁化标记。
1.4 柱面
所有盘面上的同一编号的磁道,在竖直方向上构成一个圆柱,通常称作柱面。
每个圆柱上的磁头由上而下从0开始编号。
数据的读写按柱面进行,即磁头读写数据时首先在同一柱面内从0磁头开始进行操作,依次向下在同一柱面的不同盘面(磁头)上进行操作;只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换,即寻道。
电子切换相当快,比使用机械将磁头向邻近磁道移动要快得多,所以数据的读写按柱面进行,而不按盘面进行。也就是说,一个磁道写满数据后,就在同一柱面的下一个盘面来写。一个柱面写满后,才移到下一个柱面开始写数据,这样可以减少寻道的频繁度。
1.5 扇区
将每个环形磁道等距离切割,形成等长度的圆弧,每个圆弧就是一个扇区。
划分扇区的目的是为了使数据存储更加条理化,就像一个大仓库要划分更多的房间一样。每个扇区可以存放512B的数据和一些其它数据。
一个扇区有两个主要部分:存储数据地点的标识符和存储数据的数据段。
扇区头标包括组成扇区三级地址的三个数字:
(1) 扇区所在的柱面(磁道)
(2) 磁头编号
(3) 扇区在磁道上的位置,即扇区号
柱面(Cylinder)、磁头(Head)和扇区(Sector)三者简称CHS,所以扇区的地址又称为CHS地址。
磁头通过读取当前扇区的头标中的CHS地址,就可以知道当前是处于盘片上的哪个位置,比如内圈还是外圈,哪个磁头正在读写(同一时刻只能有一个磁头在读写)等。
CHS编址方式在早期的小容量硬盘中非常流行,但是目前的大容量硬盘的设计和低级格式化方式已经有所变化,所以CHS编址方式已不再使用,而转为LBA编址方式。LBA编址方式不再划分柱面和磁头号,这些数据由硬盘自身保留,而硬盘对外提供的地址全部为线性的地址,即LBA地址。
所谓线性,指的是把磁盘想象成只有一个磁道,这个磁道是无限长的直线,扇区为这条直线上的等长线段,从1开始编号,直到无限远。
1.6 基于CHS编址方式的磁盘最大容量
柱面数cylinders表示硬盘盘片每一面上有多少条磁道,最大为1023(用10个二进制位存储)。
磁头数heads表示硬盘总共有几个磁头,也就是几个盘面,最大为255(用8个二进制位存储)。
扇区数sectors表示每一条磁道上有多少扇区,最大为63(用6个二进制位存储)。
每个扇区一般是512B,目前很多大型磁盘阵列所使用的硬盘,由于阵列控制器需要做一些诸如校验信息之类的特殊存储,这些磁盘都被格式化为每扇区520B。
如果按照每扇区512B来计算,磁盘最大容量为1023*255*63*512B/(1024*1024)=8024MB,这就是所谓8GB容量限制的原因。
磁盘驱动器内怎样放下255个磁头呢?这是不可能的。目前的硬盘一般可以有1盘片、2盘片或者4盘片,这样就对应着2、4磁头或者8磁头。那么这样算来,硬盘实际容量一定小于8GB了?显然不是这样的,所谓255个磁头,这只是一个逻辑上的说法。而每条磁道上真的最多只有64个扇区么?当然也不是,一条磁道上实际的扇区数远大于64,这样就分摊了磁头数实际少于255个所产生的“容量减小”。CHS编址方式沿袭了老的传统,不愿意去作修改导致的;而这种沿袭达到了极限之后,最终导致LBA编址方式替代了CHS编址方式。
头标中还包括一个字段,其中有显示扇区是否能可靠存储数据,或者是已发现某个故障因而不宜使用的标记。有些硬盘控制器在扇区头标中还记录有指示字,可在原扇区出错时指引磁头跳转到替换扇区或磁道。最后扇区头标以循环冗余校验CRC值作为结束,以供控制器检验扇区头标的读出情况,确保准确无误。
系统在磁盘上写入信息时,写满一个磁道后会转到同一柱面的下一个磁头,当柱面写满时,再转向下一柱面。从同一盘面的一个磁道转到另一个磁道,也就是从一个柱面转到下一个柱面,这个动作叫做换道。
本文参考引用了<<大话存储Ⅱ—存储系统架构与底层原理极限剖析>>
原创文章,作者:yangsh,如若转载,请注明出处:http://www.178linux.com/44427