`

硬盘原理与IO吞吐量计算

阅读更多

盘面

硬盘的盘片一般用铝合金材料做基片,高速硬盘也可能用玻璃做基片。硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都会利 用,都可以存储数据,成为有效盘片,也有极个别的硬盘盘面数为单数。每一个这样的有效盘面都有一个盘面号,按顺序从上至下从“0”开始依次编号。在硬盘系 统中,盘面号又叫磁头号,因为每一个有效盘面都有一个对应的读写磁头。

磁道

磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开始顺序编号。硬盘的每一个盘面有300~1 024个磁道,新式大容量硬盘每面的磁道数更多。信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧,这些圆弧 的角速度一样。由于径向长度不一样。

所以,线速度也不一样,外圈的线速度较内圈的线速度大,即同样的转速下,外圈在同样时间段里,划过的圆弧长度要比内圈划过的圆弧长度大。每段圆弧叫做一个扇区 ,扇区从“1”开始编号,每个扇区中的数据作为一个单元同时读出或写入。一个标准的3。5寸硬盘盘面通常有几百到几千条磁道。磁道是“看”不见的,只是盘面上以特殊形式磁化了的一些磁化区,在磁盘格式化时就已规划完毕。

柱面

所有盘面上的同一磁道构成一个圆柱,通常称做柱面(Cylinder),每个圆柱上的磁头由上而下从“0”开始编号。数据的读/写按柱面进行,即磁 头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头 才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。

电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据 的读/写按柱面进行,而不按盘面进行。也就是说,一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开始写数据。读数 据也按照这种方式进行,这样就提高了硬盘 的读/写效率。

一块硬盘驱动 器的圆柱数(或每个盘面的磁道数)既取决于每条磁道的宽窄(同样,也与磁头的大小有关),也取决于定位机构所决定的磁道间步距的大小。

 

硬盘容量计算: 磁头数 * 每盘面磁道数 * 每磁道扇区数 * 每扇区字节数(512B)

 

硬盘性能参数与高效IO

  • 转速:当前的服务器硬盘一般都是15000转/分钟
  • 平均延时:平均延时就是磁道上的那段数据转到磁头下面需要的时间,这直接由转速决定。比如15000转/分钟的硬盘,也就是每秒250转,每转一圈需要4毫秒,因此平均延时就是转半圈的时间,等于2毫秒。
  • 平均寻道时间:服务器硬盘一般平均寻道时间是4毫秒。
  • 持续传输速率:服务器硬盘一般在80M每秒,也就是80K每毫秒(为了方便计算,单位都用毫秒)。


因此读取一次数据需要的时间等于:定位时间(平均延时2ms+寻道4ms)+数据传送时间(要读的数据/80k*ms)

IO大小
定位时间(毫秒)
传送时间(毫秒)
数据传输效率
(传送时间/总时间)
8K
6
0.1
1.6%
128K
6
1.6
21%
512K
6
6.4
52%
1M
6
12.8
68%
2M
6
25.6
81%

准则:数据传送时间 > 5*定位时间;换句话说就是: 数据传输效率大于80% ,否则大部分时间都用在“寻道定位”上显然是不合算的。
(我们回想一下十年前的硬盘技术:容量大约是1.2GB;转速大约在5400转/分钟;持续传输速率大约在10M每秒;平均寻道时间大约在15毫秒。)
    硬盘的技术进步带给持续传输速率好处要远大于平均寻道时间的好处,因此差不多越高级的硬盘“IO大小”要设定的越大才好。


RAID 0,或者RAID 10的stripe size计算公式:

RAID的技术介绍:

  • stripe width(条带宽度):RAID中的磁盘数,就是组成这个stripe的磁盘数。如,4个磁盘组成的RAID 0,条带宽度就是4。
  • stripe depth(条带深度):单块磁盘上条带的大小,有时也称为stripe unit。
  • stripe size(条带大小):stripe depth*stripe width。
  • 还有一种说法:有时也称为block size块大小 , chunk size簇大小 , stripe length条带长度, granularity粒度, 单块磁盘上的每次IO的最小单位。


RAID条带大小的另一个计算公式为:(参见:Oracle and RAID Usage

条带大小 = (0.25*平均定位时间*数据传输速率*(并发用户数-1)*1.024)+0.5K

平均定位时间=(平均延时+平均寻道时间)  (milliseconds);数据传输速率单位为:Megabyte/sec;1.024 = 1s/1000ms*1024K/1M (单位转换因子)

举例来说,磁盘寻道时间是6ms,传输速率80MB,且有20个并发用户的条带大小应该为:

(0.25*6*80*19*1.024)+0.5=2335.22K(差不多2M)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics