磁盘分区也是隐含了技术技巧的

图片

在前文《磁盘开篇:扒开机械硬盘坚硬的外衣!》中,咱们了解了机械硬盘的物理构造,是由磁盘面,磁道、扇区等更小的单位组成的,以下图:
服务器

图片

图1 机械磁盘内部构造app

分区是操做系统对磁盘进行管理的第一步,这也是咱们任何一个计算机使用者都很是熟悉的概念。例如Windows下的C、D、E、F盘。那么请思考一下,若是你是操做系统的设计者,让你把整块磁盘分红C、D等分区,你会怎么分呢?ide

为了方便讨论,咱们这里假设你要分的硬盘是有50个盘面,3000个柱面。咱们给出两种方案性能

  • 方案一:50个盘面,C盘是0-10盘面, D盘是10-20个盘面,……spa

  • 方案二:3263个柱面,C盘0-1000个柱面,D盘1001-20001个柱面,……操作系统

接下来咱们来讨论下那种方案更优秀,这得从磁盘的读写延时角度提及。读写原理提及来也简单,就是磁头要找到指定的磁道,指定的扇区,进而把数据读取出来或者写入进去的过程。这个过程分红以下三步:设计

  • 第一步,首先是磁头径向移动来寻找数据所在的磁道。这部分时间叫寻道时间。寻道时间,现代磁盘大概在3-15ms,其中寻道时间大小主要受磁头当前所在位置和目标磁道所在位置相对距离的影响orm

  • 第二步,找到目标磁道后经过盘面旋转,将目标扇区移动到磁头的正下方,这部分时间叫旋转延迟。如今主流服务器上常常使用的是1W转/分钟的磁盘,每旋转一周所需的时间为60*1000/10000=6ms,故其旋转延迟为(0-6ms)blog

  • 第三步,向目标扇区读取或者写入数据,这部分时间叫存取时间。这个是电磁操做,因此通常耗时较短,为零点几ms。图片

到此为止,单次磁盘IO时间 = 寻道时间 + 旋转延迟 + 存取时间

分区上采用哪种方案,最主要看的是那种方式性能更快。在磁盘分区的使用中,存在一个基本事实,那就是同一分区下的数据常常会一块儿读取。两种方案的对于旋转延迟、和存取时间上表现的性能是同样的,主要区别是在寻道时间的表现上:

假如采用第一种,那么这样磁头就须要在3000多个磁道间不停地跳来跳去,这样磁盘的寻道时间就降不下来。而对于方案二,假如对于磁盘C,只须要在磁头在1-1000个磁道间移动就能够了,大大下降了寻道时间。

因此全部的操做系统采用的都是方案二,没有用方案一的。若是你在Linux下使用过fdisk进行过度区的话能够注意到如下信息。

图片

图2 fdisk分区开始柱面选取

图片图3 fdisk分区结束柱面选取

分区的过程就是你输入起始柱面号和截至柱面号的过程。不过在实际中,分区并不能从0号柱面开始的,由于磁盘的第一个磁道对应的柱面会被用来安装引导加载程序以及磁盘分区表。

因此,操做系统经过按磁道对应的柱面划分分区,来下降磁盘IO所花费的的寻道时间 ,最终提升磁盘的读写性能。

相关文章
相关标签/搜索