一、磁盘的基本元素
磁盘由多个盘片组成,每个盘片的基本结构为:
各标识含义:
A是磁道,多个磁盘的同一个磁道重叠起来叫做柱面,它包含了很多个扇区。
B是几何上的扇区,只做标示,此处无特殊含义。
C是扇区,扇区是磁盘的最小组成单元,通常是512字节(有的磁盘时4096字节)。
D是磁盘块(簇),块/簇是操作系统虚拟出来的概念,它由多个扇区组成。
读取磁盘数据时,磁盘上的磁头不断旋转变道,然后读取数据。因此寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
关于随机IO和顺序IO
一般在测试磁盘性能的时候,都会额外测试一个功能点就是随机读写的性能。与随机读写相对的是顺序读写,他们的区别在于本次IO和上一次IO地址的差别。如果本次IO给出的初始扇区地址,和上一次IO的结束扇区地址,是不是完全连续的,或者相隔不多,则本次IO算是一个顺序IO。如果相差太大,则算一次随机IO。顺序IO,因为本次初始扇区和上次结束扇区相隔很近,则磁头几乎不用换道或换道时间极短,所以读写速度快;而随机IO中磁头需要很长的换道时间,导致磁头不停换道,读写速度非常慢。
为什么存在磁盘块?(簇)
读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。
我们平常所说的4K对齐也就是指的块大小,它表示操作系统读取磁盘时一次读取的数据大小。如果操作系统一次读取4K,但是块大小只有2K,就相当于一次IO要做2次磁盘寻址。而如果磁盘块大小刚好也是4K,那么一次IO就只需一次寻址。相对而言,磁盘寻址效率是很低的,多一次磁盘寻址肯定会更加导致IO效率低,因此对磁盘进行4K对齐也是提高了系统的IO性能。
二、linux系统下的查看扇区和磁盘块
使用fdisk -l可以看到磁盘的扇区大小:
使用tune2fs -l可以看到读取磁盘的块大小,下面这个磁盘的块大小是4096:
三、参考