磁盘结构

物理结构

一块硬盘有多个构成,一个盘上下两面对应两个磁盘面,一个磁盘面对应一个磁头,每个磁盘以磁盘中心划分不同的圈圈,叫做磁道,各个磁盘同一位置的磁道构成柱面,每个磁道细分为不同的扇区

磁盘简图

   lcj@lcj:~$ sudo fdisk -l

   Disk /dev/sda: 256.1 GB, 256060514304 bytes
   255 heads, 63 sectors/track, 31130 cylinders, total 500118192 sectors
   Units = 扇区 of 1 * 512 = 512 bytes
   Sector size (logical/physical): 512 bytes / 512 bytes
   I/O size (minimum/optimal): 512 bytes / 512 bytes
   Disk identifier: 0x000a89d8

      设备 启动      起点          终点     块数   Id  系统
   /dev/sda1   *        2048   483534847   241766400   83  Linux
   /dev/sda2       483536894   500117503     8290305    5  扩展
   /dev/sda5       483536896   500117503     8290304   82  Linux 交换 / Solaris

255个heads(磁盘面),31130个cylinders(柱面,也就是说每个磁盘面上有31130个磁道),然后每个磁道上有63个sectors(扇区),每个扇区有512个字节

2553113063*512=256052966400 bytes差的那些我也不知道

磁盘io

磁盘io过程:

  1. 寻道:磁头径向移动来寻找数据所在的磁道,寻道时间,现代磁盘大概在3-9ms
  2. 盘面旋转:找到目标磁道后,通过盘面旋转,将目标扇区移动到磁头的正下方,旋转时间,现在主流服务器上经常使用的是1W转/分钟的磁盘,旋转一周时间为60*1000/10000=6ms
  3. 存取数据:向目标扇区存取数据,传送时间,一般耗时较短,为0.x ms 那么

    单次io时间 = 寻道时间 + 旋转延迟 + 传送时间
    

磁盘分区是按照柱面来分的,不是按照磁盘面来分的,降低磁盘寻道时间,提高性能.

来道题目

某磁盘的转速为7200转/分,传输速度为4MB/s,控制器开销为1ms。要保证读或写一个512字节的扇区的平均时间为11.3ms。 那么,该磁盘的平均寻道时间最大应不超过()ms。

A.3.9 B.4.7 C.5.5 D.6

解:7200转/分 = 120转/s,传输速度 4MB/s = 4096KB/s 读写时间=寻道时间 + 旋转时间 + (传送时间 + 控制器时间)  这两个一般可以忽略 11.3 = x + 1000 / 120 / 2 + 512 / 4000 + 1 所以选D

参考 

  [1]http://djt.qq.com/article/view/620