• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

机械磁盘原理与性能基准

微机原理 彭东稳 9年前 (2015-08-03) 41777次浏览 已收录 0个评论

一、背景

我们都知道目前来说硬盘是电脑主要的存储媒介之一,目前硬盘种类主要有固态硬盘(SSD)、机械硬盘(HDD )、混合硬盘(HHD,一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘是把磁性硬盘和闪存集成到一起的一种硬盘。

计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘(机械硬盘)虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。硬盘性能的制约因素是什么?这就是下面我们要说的问题。

二、硬盘发展简史

19569月,IBM向世界展示了第一台磁盘存储系统IBM 350 RAMAC至今。磁盘存储系统已经已经经历了近半个世纪的发展,最早的那台RAMAC容量只有5MB,需要使用50个直径为24英尺的磁盘,现在一块容量高达1000GB的硬盘只需要3张磁盘片即可IBM 305 RAMAC可以说是硬盘的开山鼻祖,与现代硬盘差别很大。

机械磁盘原理与性能基准

而现代硬盘的真正原刑,是1973IBM公司推出的winchester(温氏)硬盘,它的特点是:工作时,磁头悬浮在高速转动的盘片上方,而不与盘片直接接触,使用时磁头延高速旋转的盘片上做径向移动,这便是当今所有硬盘的雏形。现在的硬盘容量虽然更大了,但是依然在沿用温彻斯特的动作模式。

机械磁盘原理与性能基准

当今硬盘的发展趋势是体积更小、速度更快、容量更大、使用更安全。改进的方法如下,研究读写更灵敏的磁头、更先进的接口类型、存储密度更高的磁盘盘片及更有效的数据保存技术等。目前针对机械磁盘接口类型可谓五花八门,并且随着磁盘阵列的出现,容量基本已经不是问题。

为了提升磁盘性能,出现了Raid技术,随之出现了磁盘阵列。并且在TCP/IP基础上出现了大型化网络存储,比如DAS、NAS、SAN等。

三、机械硬盘结构介绍

  • 机械硬盘外部介绍

在硬盘的一端有电源接口插座,主从设置跳线器和数据接口插座,而硬盘的背面则是控制电路板。

机械磁盘原理与性能基准

大多数的控制电路板都采用贴片式焊接,包括主轴调速电路、磁头驱动与伺服定位电路、读写电路、控制与接口电路等。在电路板上还有一块ROM芯片,里面固话的程序可以进行硬盘的初始化执行加电和启动主轴电机,加电初始寻道,定位以及故障检测等。在电路板上还安装有容量不等的告诉数据缓存芯片。

固定面板,即硬盘正面的面板,它与地板结合成一个密封的整体,保证了硬盘盘片和机构的稳定运行。在面板上最显眼莫过于产品标签、上面印着产品型号、产品序列号、产品、生产日期等信息、还有一个透气孔、它的作用就是使硬盘内部气压与大气气压保持一致。

机械磁盘原理与性能基准

  • 机械硬盘内部结构

机械硬盘内部主要部件为磁盘盘片(platter)、传动手臂(arm)、读写磁头(read-write head)和磁盘臂装置(arm assembly)。实际数据都是写在盘片上,盘片是硬盘存储数据的真正载体,硬盘盘片大多采用金属薄膜材料也有玻璃材料,这种金属薄膜较软盘的不连续颗粒载体具有更高的存储密度。然后读写主要是通过传动手臂上的读写磁头来完成。实际运行时,主轴让磁盘盘片以每分钟数千转的速度在高速转动,然后传动手臂可伸展让读取头在盘片上进行读写操作。

硬盘工作原理,是利用特定的磁粒子的急性来记录数据。磁头在读取数据时将磁粒子的不通极性转换成不通的电脉冲信号、再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反。

物理结构如下图所示:

机械磁盘原理与性能基准

由于单一盘片(platter)容量有限,一般硬盘都有两张以上的盘片,每个盘片有两面,都可记录信息,所以一张盘片对应着两个磁头(read-write head)。盘片被分为许多扇形(sector)的区域,每个区域叫一个扇区,硬盘中每个扇区的大小固定为512字节。盘片表面上以盘片中心为轴心(spindle),不同半径的同心圆称为磁道(track),不同盘片相同半径的磁道所组成的圆柱称为柱面(cylinder)。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用。

磁盘垂直视角如下图所示:

机械磁盘原理与性能基准

早期的硬盘每磁道扇区数相同,此时由磁盘基本参数可以计算出硬盘的容量:存储容量=磁头数*磁道(柱面)数*每道扇区数*每扇区字节数。由于每磁道扇区数相同,外圈磁道半径大,里圈磁道半径小,外圈和里圈扇区面积自然会不一样。同时,为了更好的读取数据,即使外圈扇区面积再大也只能和内圈扇区一样存放相同的字节数(512字节)。这样一来,外圈的记录密度就要比内圈小,会浪费大量的存储空间。

如今的硬盘都使用ZBR(Zoned Bit Recording,区位记录)技术,盘片表面由里向外划分为数个区域,不同区域的磁道扇区数目不同,同一区域内各磁道扇区数相同,盘片外圈区域磁道长扇区数目较多,内圈区域磁道短扇区数目较少,大体实现了等密度,从而获得了更多的存储空间。此时,由于每磁道扇区数各不相同,所以传统的容量计算公式就不再适用。实际上如今的硬盘大多使用LBA(Logical Block Addressing)逻辑块寻址模式,知道LBA后即可计算出硬盘容量。

四、机械硬盘类型与接口

硬盘是个复杂的技术,目前只有少数发达国家掌握了关键技术能够制造。但不管硬盘内部多么复杂,它必须要给使用者一个简单的接口,用来对其访问读取数据,而不必关心这串数据到底该什么时候写入,写入到哪个盘片,用哪个磁头等等。

下面就来看一下硬盘向用户提供的是什么样的接口。注意,这里所说的接口不是说物理上的接口,而是包括物理、逻辑在内的抽象出来的接口。也就是说,一个事物面向外部的时候,为达到被人使用的目的而向外提供的一种打开的、抽象的协议,类似于说明书。

硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的优势直接影响着程序运行快慢和系统性能的好坏。从整体的角度上,硬盘接口分为IDE,SATA,SCSI,SAS和光纤通道五种。IDE接口硬盘早起多用于家用产品中,部分应用与服务器;SCSI接口的硬盘应用与服务器上;而光纤应用与高端服务器和存储上价格昂贵。SATA是一种新生的硬盘接口类型,已经逐渐取代IDE及SCSI接口。

1. IDE接口

IDE的英文全称为“integrated drive electronics”即“电子集成驱动器”本意是指把硬盘控制器与盘体集成在一起的硬盘驱动器,把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要在担心自己的硬盘是否与其它厂商生产的控制器兼容。对用户而言硬盘安装起来更为方便。如今的IDE接口已逐渐退出硬盘领域。

IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘的ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、UItraATA、DMA、UItra DMA、等接口都属于IDE接口。IDE速率54MB/S。

2. SATA接口

SATA

2001年,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1.0规范,2002年,虽然串行ATA的相关设备还未正式上市,但Serial ATA委员会已抢先确立了Serial ATA 2.0规范。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查如果发现错误会自动矫正。

SATA Ⅱ

SATA Ⅱ是芯片巨头Intel英特尔与硬盘巨头Seagate希捷在SATA的基础上发展起来的,其主要特征是外部传输率从SATA的150MB/s进一步提高到了300MB/s,此外还包括NCQ(Native Command Queuing,原生命令队列)、端口多路器(Port Multiplier)、交错启动(Staggered Spin-up)等一系列的技术特征。但是并非所有的SATA硬盘都可以使用NCQ技术,除了硬盘本身要支持NCQ之外,也要求主板芯片组的SATA控制器支持NCQ。

SATA Ⅲ

正式名称为“SATARevision3.0”,是串行ATA国际组织(SATA-IO)在2009年5月份发布的新版规范,主要是传输速度翻番达到6Gbps,同时向下兼容旧版规范“SATARevision2.6”(也就是现在俗称的SATA3Gbps),接口、数据线都没有变动。SATA3.0接口技术标准是2007上半年英特尔公司提出的,由英特尔公司的存储产品架构设计部技术总监Knut Grimsrud负责。Knut Grimsrud表示,SATA3.0的传输速率将达到6Gbps,将在SATA2.0的基础上增加1倍。

3. SCSI接口

SCSI的英文全称为“Small Computer System Interface”(小型计算机系统接口),是同IDE(ATA)完全不同的接口,IDE接口是普通PC的标准接口,而SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。

4. SAS接口

SAS(Serial Attached SCSI)即串行连接SCSI,是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,并且提供与SATA硬盘的兼容性。

SAS的接口技术可以向下兼容SATA。具体来说,二者的兼容性主要体现在物理层和协议层的兼容。在物理层,SAS接口和SATA接口完全兼容,SATA硬盘可以直接使用在SAS的环境中,从接口标准上而言,SATA是SAS的一个子标准,因此SAS控制器可以直接操控SATA硬盘,但是SAS却不能直接使用在SATA的环境中,因为SATA控制器并不能对SAS硬盘进行控制;在协议层,SAS由3种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。其中串行SCSI协议(SSP)用于传输SCSI命令;SCSI管理协议(SMP)用于对连接设备的维护和管理;SATA通道协议(STP)用于SAS和SATA之间数据的传输。因此在这3种协议的配合下,SAS可以和SATA以及部分SCSI设备无缝结合。

SAS系统的背板(Backplane)既可以连接具有双端口、高性能的SAS驱动器,也可以连接高容量、低成本的SATA驱动器。所以SAS驱动器和SATA驱动器可以同时存在于一个存储系统之中。但需要注意的是,SATA系统并不兼容SAS,所以SAS驱动器不能连接到SATA背板上。由于SAS系统的兼容性,使用户能够运用不同接口的硬盘来满足各类应用在容量上或效能上的需求,因此在扩充存储系统时拥有更多的弹性,让存储设备发挥最大的投资效益。

在系统中,每一个SAS端口可以最多可以连接16256个外部设备,并且SAS采取直接的点到点的串行传输方式,传输的速率高达3Gbps,估计以后会有6Gbps乃至12Gbps的高速接口出现。SAS的接口也做了较大的改进,它同时提供了3.5英寸和2.5英寸的接口,因此能够适合不同服务器环境的需求。SAS依靠SAS扩展器来连接更多的设备,扩展器以12端口居多,不过根据板卡厂商产品研发计划显示,未来会有28、36端口的扩展器引入,来连接SAS设备、主机设备或者其他的SAS扩展器。

和传统并行SCSI接口比较起来,SAS不仅在接口速度上得到显著提升(主流Ultra 320 SCSI速度为320MB/sec,而SAS才刚起步速度就达到300MB/sec,未来会达到600MB/sec甚至更多),而且由于采用了串行线缆,不仅可以实现更长的连接距离,还能够提高抗干扰能力,并且这种细细的线缆还可以显著改善机箱内部的散热情况。

5. FC

Fibre Channel(FC,光纤通道),和SCSI接口一样光纤通道最初也不是为硬盘设计开发的接口技术,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中。光纤通道硬盘是为提高多硬盘存储系统的速度和灵活性才开发的,它的出现大大提高了多硬盘系统的通信速度。光纤通道的主要特性有:热插拔性、高速带宽、远程连接、连接设备数量大等。

光纤通道是为在像服务器这样的多硬盘系统环境而设计,能满足高端工作站、服务器、海量存储子网络、外设间通过集线器、交换机和点对点连接进行双向、串行数据通讯等系统对高数据传输率的要求。

五、影响硬盘性能的因素

影响磁盘的关键因素是磁盘服务时间,即磁盘完成一个I/O请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成。一个磁盘可以由多个盘片,每个盘片正反面都可以存放数据,所以每个盘片有两个磁头,各读写一面。然而有一点需要澄清,磁盘每个时刻只允许一个磁头来读写数据,也就是说,不论你磁盘内盘片,磁头再多,也不可能提高硬盘的吞吐量和IO性能,只能提高容量。

对于磁盘来说一个完整的IO操作是这样进行的:当控制器对磁盘发出一个IO操作命令的时候,磁盘的驱动臂(Actuator Arm)带读写磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻道(Seeking),对应消耗的时间被称为寻道时间(Seek Time)。但是找到对应磁道还不能马上读取数据,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay),接下来就随着盘片的旋转,磁头不断的读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time)。完成这三个步骤之后一次IO操作也就完成了。

1. 寻道时间

考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时间。目前磁盘的平均寻道时间一般在3-15ms。

2. 旋转延时

和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时。

旋转延迟取决于磁盘转速,通常用磁盘旋转一周所需时间的1/2表示。硬盘转速以每分钟多少转来表示,单位表示为RPM,RPM是Revolutions Per minute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。比如:每分钟7200rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为每分钟15000rpm的磁盘其平均旋转延迟为2ms。

3. 传送时间

磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。

目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,SATA III更是达到6GB/s的接口数据传输率,数据传输时间通常远小于前两部分消耗时间。简单计算时可忽略。

六、衡量性能的指标

机械硬盘的连续读写性能很好,但随机读写性能很差,这主要是因为磁头移动到正确的磁道上需要时间,随机读写时,磁头需要不停的移动,时间都浪费在了磁头寻址上,所以性能不高。衡量磁盘的重要主要指标是IOPS和吞吐量以及响应时间。

1. IOPS

IOPS(Input/Output Per Second)即每秒的输入输出量(或读写次数),即指每秒内系统能处理的I/O请求数量。随机读写频繁的应用,如小文件存储等,关注随机读写性能,IOPS是关键衡量指标。理论上是可以计算出随机读写最大的IOPS。

根据上面我们得出的寻道时间、旋转延时、传输时间;现在我们就可以得出这样的计算单次IO时间的公式。

IO Time = (Seek Time) + (60 sec*1000/Rotational Speed/2) + (IO Chunk Size/Transfer Rate)

于是我们可以这样计算出IOPS。

IOPS = (1/IO Time) = 1/(Seek Time + 60 sec*1000/Rotational Speed/2 + IO Chunk Size/Transfer Rate)

以Seagate Savvio 2.5” SAS 15K RPM为例,磁盘的寻道平均时间是3ms,15000转,则旋转延迟时间为60*1000/15000/2=2ms,磁盘接口带宽是150MB/s,假设数据块大小为4KB。则磁盘的响应时间是5ms,IOPS为200,吞吐量为0.800MBPS(由于是小块随机读,吞吐量很小)。

计算方式:

IO Time = 3+(60*1000/15000/2)+(4/(150*1024)) = 5ms

IOPS = 1*1000/5 = 200 IOPS

可以多弄一些数据测试,基本就是当单次IO越小的时候,单次IO所耗费的时间也越少,相应的IOPS也就越大。

上面我们的数据都是在一个比较理想的假设下得出来的,这里的理想的情况就是磁盘要花费平均大小的寻址时间和平均的旋转延时,这个假设其实是比较符合我们实际情况中的随机读写,在随机读写中,每次IO操作的寻址时间和旋转延时都不能忽略不计,有了这两个时间的存在也就限制了IOPS的大小。现在我们考虑一种相对极端的顺序读写操作,比如说在读取一个很大的存储连续分布在磁盘的的文件,因为文件的存储的分布是连续的,磁头在完成一个读IO操作之后,不需要从新的寻址,也不需要旋转延时,在这种情况下我们能到一个很大的IOPS值。

使用相同的方法,我们可以为希捷和东芝的不同类型的企业级磁盘驱动器计算IOPS,结果显示在下表中,以及从其他来源获得的IOPS数值。

Drive

(Type / RPM )

IOPS

(4KB block, random)
[WintelGuy.com]

IOPS

[1]*

IOPS

[2]*

IOPS

[3]*

FC / 15 K

163 -178

175

150 – 190

SAS / 15 K

188 – 203

175

150 – 190

180

FC / 10 K

142 – 151

125

100 – 130

SAS / 10 K

142 – 151

125

100 – 130

140

SAS/SATA / 7200

73 – 79

75

75 – 100

30 – 80

SATA / 5400

57

50

磁盘IOPS一般指随机磁盘读写,顺序IO一般指磁盘的带宽,主要因为顺序IO跟随机IO不在一个量级上,并且实际业务中可能90%都是随机IO。细分的话,IOPS可细分为如下几个指标:

  1. Toatal IOPS,混合读写和顺序随机I/O负载情况下的磁盘IOPS,这个与实际I/O情况最为相符,大多数应用关注此指标。
  2. Random Read IOPS,100%随机读负载情况下的IOPS。
  3. Random Write IOPS,100%随机写负载情况下的IOPS。
  4. Sequential Read IOPS,100%顺序读负载情况下的IOPS。
  5. Sequential Write IOPS,100%顺序写负载情况下的IOPS。

现在固态硬盘SSD也基本成为服务器配置存储介质,它属于一种电子装置,避免了传统磁盘在寻道和旋转上的时间花费,存储单元寻址开销大大降低,因此IOPS可以非常高,能够达到数万甚至数十万。实际测量中,IOPS数值会受到很多因素的影响,包括I/O负载特征(读写比例,顺序和随机,工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等。

2. 响应时间

对主机上的进程来说,完成一个IO请求所需的时间,也叫做latency延迟时间,一般响应时间应该小于10ms。公式如下:IO Time = (Seek Time) + (60 sec*1000/Rotational Speed/2) + (IO Chunk Size/Transfer Rate)。

3. 吞吐量

吞吐量(Throughput),指单位时间内可以成功传输的数据数量,如果用公式表达就是:IOPS * IO Chunk Size。对于顺序读写频繁的应用,如视频点播,关注连续读写性能、数据吞吐量是关键衡量指标。它主要取决于磁盘阵列的架构,通道的大小以及磁盘的个数。不同的磁盘阵列存在不同的架构,但他们都有自己的内部带宽,一般情况下,内部带宽都设计足够充足,不会存在瓶颈。磁盘阵列与服务器之间的数据通道对吞吐量影响很大,比如一个2Gbps的光纤通道,其所能支撑的最大流量仅为250MB/s。最后,当前面的瓶颈都不再存在时,硬盘越多的情况下吞吐量越大。

测量吞吐量,下表列出了大块顺序IO操作的磁盘吞吐量计算。

Drive

(Type / RPM )

MB/s
(large block, sequential)

FC / 15 K

73.5 – 127.5

SAS / 15 K

91.5 – 126.3

FC / 10 K

58.1 – 107.2

SAS / 10 K

58.1 – 107.2

SAS/SATA / 7200

43.4 – 97.8

<参考>

http://www.sgidepot.co.uk/diskdata.html

http://wintelguy.com/2013/20130406_disk_perf.html


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!