磁盘结构
物理结构
一块硬盘
有多个盘
构成,一个盘上下两面对应两个磁盘面
,一个磁盘面对应一个磁头
,每个磁盘以磁盘中心划分不同的圈圈,叫做磁道
,各个磁盘同一位置的磁道构成柱面
,每个磁道细分为不同的扇区
。
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过程:
寻道
:磁头径向移动来寻找数据所在的磁道,寻道时间
,现代磁盘大概在3-9ms盘面旋转
:找到目标磁道后,通过盘面旋转,将目标扇区移动到磁头的正下方,旋转时间
,现在主流服务器上经常使用的是1W转/分钟的磁盘,旋转一周时间为60*1000/10000=6ms-
存取数据
:向目标扇区存取数据,传送时间
,一般耗时较短,为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