1、磁盘的IO单位
(1)磁盘读写的时候都是以扇区为最小寻址单位的,一个扇区的大小是512字节,每次磁头连续读写的时候,即使一次只写了一个字节的数据,那么下一次就不能再向这个扇区剩余的部分接着写入,而是要寻找一个空扇区来写。对于磁盘来说,一次磁头的连接读或者写叫做一次IO
2、影响磁盘性能的因素
目前磁盘可以分为单碟盘和多碟盘,前者在盘体内只有一张盘片,后者则有多张。每张盘片的正反两面都可以存放数据,所以每张盘片需要有2个磁头,各读写一面。但是不管有多少盘面和磁头,同一时刻只允许一个磁头来读写数据,因此提高磁盘面数量只能提高容量,下面列举几个影响磁盘性能的因素:转速、寻道速度、单碟容量、接口速度
3、内部传输速率和外部传输速率
内部传输速率:指的是磁头读写磁盘时的最高速率,它不包含磁头寻道所花费的时间,是理想化得速率,理论上 10000转的scsi磁盘内部传输速率大概是1000MB/s,但实际上只有80MB/s左右,中间这些损耗都花费在换道上了。raid出现后,很多磁盘可以联合起来,同一时刻总有至少一块磁盘的磁头在读写状态,这就大大 提升了磁盘的性能,避免了换道所带来的损耗,所以raid能够显著提升传输速率
外部传输速率:磁盘从盘片将数据读出,然后存放到磁盘驱动器的缓存芯片中,再将数据从缓存中取出,通过外部接口传送给主板上的磁盘控制器,从接口道磁盘控制器的传输速率,就是硬盘的外部传输速率。外部接口速率通常大于实际磁头读写数据的速率
4、io延迟与Queue Depth
IO延迟指控制器将IO指令发出之后,直到IO完成的过程中所消耗的时间,目前业界有不成文的规定,只要IO延迟在20ms以内,此时IO的性能对于应用程序来说都是可以接受的,但是如果大于20ms,应用的性能将会受到比较大的影响
我们可以推算存储,存储设备应当满足的最低IOPS要求应该为1000/20=50,即要求存储设备最低能够提供每秒50次IO。
思考一个问题:如果延迟是1ms,那么IOPS=1000/1,就是每秒1000次IO,这个数值和刚才提到的十几万IOPS有出入,为什么?因为IO指令是批量发送的,只要存储设备肚量和消化能力足够,每个肚量是=由Queue Depth(QD)决定的,一般主机控制器端可以将该值设置为64,128等。随着QD的增加,IO延迟也会随机增加,公式如下:IOPS=QD/IO延迟
5、传输带宽
传输带宽指的是磁盘在传输数据时数据流的速度:
写入10000个1KB的文件需要10s,传输带宽只能达到每秒1MB
写入一个10MB的文件用了0.1s,传输带宽就是100MB/s
6、MBR与分区表
硬盘的主引导扇区(mbr)位于硬盘的物理扇区0柱面,0磁头,1扇区(512字节(主引导记录446字节,分区表64字节,55AA(2字节保留))),而硬盘分区表在主引导扇区之中占64字节。那意思就是硬盘分区表也是在0柱面,0磁头,1扇区中