目前的磁盘能够分为单碟盘和多碟盘,前者在盘体内有一张盘片,后者在盘体内有多张盘片,前面说过每张盘面有两个磁头,由于盘面是正反两面均可以读写数据的,盘体内有多张盘片的大大的提升了硬盘的容量,可是要注意的是:磁盘中每一个时刻只容许一个磁头读写数据,因此多个磁头和多张盘体是没法提升IO性能的,只能提升容量。缓存
影响硬盘的性能主要有如下因素:网络
转速是影响硬盘连续IO时吞吐量性能的首要因素。转速越快,数据传输时间就越短。在连续IO状况下,磁头寻道次数少,转速就成了首要影响因素了。性能
寻道速度是影响磁盘随机IO性能的首要因素,随机IO时,磁盘更换磁道频繁,传输数据的时间和换道所消耗的时间根本不在一个数量级。spa
单盘容量越大,相同空间内存储的数据量就越大,也就是数据很密集,在相同的转速和寻道条件下,单盘容量大的会读出更多的数据。接口
接口速度是影响硬盘性能的一个最不重要的因素,目前的接口速度在理论上能够知足硬盘所能达到的最高外部传输带宽。内存
目前硬盘提供的物理接口包括如下几种:
用于ATA指令系统的IDE接口
用于ATA指令系统的SATA接口
用于SCSI指令系统的并行SCSI接口
用于SCSI指令系统的串行SCSI接口(SAS)
用于SCSI指令系统的并承载于FC协议的串行FC接口资源
IDE接口也称为PATA接口,即Parallel ATA(并行传输ATA),ATA接口从诞生到如今,工推出了7个版本。IDE传输数据主要有三种模式:
1 PIO模式,经过cpu执行IO指令来进行数据读写的数据交换模式,这种模式cpu占用率高。
2 DMA模式,直接内存访问,不通过cpu,而是直接从内存读取数据,在DMA模式下,cpu受权DMA控制器处理数据。DMA和PIO模式的区别在于DMA模式不过度依赖于CPU,大大的节省了系统资源,两者在传输速度上的差别并不十分明显。
3 Ulta DMA模式,能够理解为DMA的加强版,增长了CRC校验等技术。IDE接口有交叉干扰、信号混乱等缺陷,已经被新一代的SATA接口所取代。flash
SATA接口的全称是Serial ATA,即串行ATA,它使用串行线路传输数据,指令集仍旧用的ATA指令集。SATA与IDE结构在硬件上有本质的区别,SATA的工做原理比较简单:采用连续串行的方式来实现数据传输从而得到较高的传输速率。除了传输速率高,SATA的数据传输线缆比IDE的要瘦不少,利于散热,节省空间。产品
SCSI与ATA是目前现行的两大主机与外设通讯的协议规范,ATA协议对应是IDE接口,SCSI协议对应是SCSI接口。SCSI接口为存储类产品提供了强大、灵活的链接方式,而且还有很高的性能,能够有8个或者16个SCSI设备链接在一个SCSI通道上面。SCSI接口的设备通常须要配置SCSI卡一块儿使用,若是主板上已经集成了SCSI控制器,则不须要额外的控制器。效率
在系统中使用SCSI必需要有专门的SCSI控制器,也就是一块SCSI卡,SCSI控制器上面有一个至关于CPU的芯片,它对SCSI设备进行控制,能处理大部分的工做,减小cpu的负担。
SCSI协议的链路层,利用crc校验码来校验每一个指令或者数据帧。
SCSI协议的网络层,在Ultra 320 SCSI协议中,一条SCSI总线上能够存在16个节点,期中SCSI控制器占用一个节点,ID被恒定设置为7,其余15个节点的ID能够随便设置,但不能重复。ID 为7的具备最高优先级,当控制器要发起传输时,其余15个节点都要把总线的使用权让出。
SCSI总线的寻址方式是按照:控制器-通道-SCSI ID-LUN ID来寻址的。控制器就是指SCSI控制器,无论你的SCSI控制器是插在PCI插槽中,仍是集成在主板上的,他们都须要接到主机IO总线上,有IO接口了,就可让cpu访问到。一个IO总线不必定只有一个SCSI控制器,它能够有多个SCSI控制器,这样系统就会区分每一个SCSI控制器。
每一个SCSI控制器又能够有多个通道,一条SCSI总线就是一个SCSI通道,多条SCSI总线能够被一个控制器管理的,控制器能够被划分为多个虚拟的、能够管理多个通道的控制器,称为多通道控制器。咱们常说的单通道SCSI卡和多通道SCSI卡就是指上面能够接几条SCSI总线,每条总线上面又能够接入8个或者16个SCSI设备。SCSI ID就是针对每一个设备的编号,不一样通道之间的设备ID能够相同,由于它们通道号不一样。
SCSI ID后面还有一个LUN ID,一个SCSI ID也就是一个SCSI设备,它仍是能够再次划分的,这个划分不是物理上的划分,而是逻辑上的划分,这样每一个SCSI ID下面能够再划分出不少LUN ID,在初始化的时候,控制器会收集每一个SCSI ID的LUN信息,这样一条SCSI总线上面能够接入的逻辑存储单元就不少了。
SCSI总线上最常发生的是控制器向其余节点发送和接受数据,而节点间交互数据是比较少的。例如从一块硬盘复制数据到另外一块硬盘,先将数据发送到控制器,控制器再复制到内存,通过cpu运算后再次发给控制器,而后控制器再发给另外一块硬盘。由于硬盘自己不能感知文件的存在,硬盘值理解SCSI指令,因此经过SCSI指令处理硬盘上的LBA块。
在发起方得到总线仲裁后,会发送一个SCSI写命令帧,期中包含对应的LUN号以及LBA地址段,接收端接收后,就知道下一步对方要传输的数据了,而后接收方向发送发发送一个XFER_RDY帧,表示以及准备好了,能够随时发送数据,发起方收到XEFR_RDY后,会当即发送数据,每发送一帧数据,接收方收到后都会回送一个XEFR_RDY帧,表示上一帧成功收到且无错误,能够当即发送下一帧,一直这样持续,直到接收方发送一个RESPONSE帧来表示这条SCSI指令执行完毕。经过这样的流传来达到保障数据成功传输的目的。
磁盘的内部传输速率是指磁头读写磁盘时的最高速率,这个速率不包括寻道以及等待扇区旋转到磁头下所耗费的时间的影响,可是这种状况是不愿能出现的,只是一种理想状况,要读取数据,磁头不多是不须要换道的,为了不磁头被不断打断的问题,人们发明了RAID技术,让一个磁头在换道时,另外一个磁头在读写。磁头从盘片上读出数据,放入缓存中,而后从缓存中取出,经过外部接口传输给主板上的硬盘控制器,从外部接口传输给硬盘控制器时的传输速率是硬盘的外部传输速率。
并行传输就是一次同时传输多个数据给对方,并行传输要求两端的距离比较短,由于若是距离比较长的话,线路会有信号衰减,并行传输看起来比串行传输速率要高,可是并行传输有不可逾越的技术屏障,那就是它的传输频率不可过高,电路在高速震荡时会产生很大的干扰,形成数据出错,因此必须增长屏蔽线,因此并行传输效率高可是速度慢,串行则恰好相反。
IOPS就是硬盘每秒钟能进行多少次IO,每次IO根据写入的数据大小,这个值也是不固定的。同一块盘在读写小块数据时速度比较快,而读写大块数据时速度比较慢。
SSD(soild state drive)是一种使用flash芯片或者dram芯片存储数据的硬盘,他们采用一种叫作"浮动门场效应晶体管"的晶体管来保存数据,这样的一个晶体管叫作一个cell,有两种类型的cell,第一种是SLC,每一个cell保存1B的数据,第二种为MLC,每一个cell保存2B的数据,MLC容量为SLC的二倍,成本却至关,可是MLC复杂度高,容易出错。