我们今天来认识下磁盘的结构。
1、盘片
一个磁盘(如一个 1T 的机械硬盘)由多个盘片(如下图中的 0 号盘片)叠加而成。
盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据。因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面。
2、磁道、扇区
每个盘片被划分为一个个磁道(一个一个半径不同的同心圆环),每个磁道又划分为一个个扇区(磁道上的一个弧段)。扇区是磁盘的最小组成单元,通常是512字节。如下图:
其中,最内侧磁道上的扇区面积最小,因此数据密度最大。
3、柱面
每个盘面对应一个磁头。所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”。
所有盘面中半径相同的磁道组成柱面。如下图:
4、磁盘容量计算
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
上图中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区,所以此磁盘的容量为:
存储容量 6 * 7 * 12 * 512 = 258048
5、磁盘的物理地址
由上,可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。
可根据该地址读取一个“块”,操作如下:
① 根据“柱面号”前后移动磁臂,让磁头指向指定柱面;
② 旋转磁盘,让磁头抵达待读的起始扇区。
③ 激活指定盘面对应的磁头;
④ 旋转磁盘,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写。
6、磁盘读取响应时间
寻道时间:磁头从接收到指令开始,移动到数据所在磁道(柱面)所需要的时间,寻道时间越短,I/O操作越快。目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。
数据传输时间:完成传输所请求的数据所需要的时间。
所以读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。
7、块/簇
磁盘块/簇(虚拟出来的)。 块是操作系统中最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘块。
通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。