存储IDE/SATA/SCSI接口知识

    目前的磁盘可以分为单碟盘和多碟盘,前者在盘体内有一张盘片,后者在盘体内有多张盘片,前面说过每张盘面有两个磁头,因为盘面是正反两面都可以读写数据的,盘体内有多张盘片的大大的提高了硬盘的容量,但是要注意的是:磁盘中每个时刻只允许一个磁头读写数据,所以多个磁头和多张盘体是无法提高IO性能的,只能提高容量。

影响硬盘的性能主要有以下因素:

    转速是影响硬盘连续IO时吞吐量性能的首要因素。转速越快,数据传输时间就越短。在连续IO情况下,磁头寻道次数少,转速就成了首要影响因素了。

    寻道速度是影响磁盘随机IO性能的首要因素,随机IO时,磁盘更换磁道频繁,传输数据的时间和换道所消耗的时间根本不在一个数量级。

    单盘容量越大,相同空间内存储的数据量就越大,也就是数据很密集,在相同的转速和寻道条件下,单盘容量大的会读出更多的数据。

    接口速度是影响硬盘性能的一个最不重要的因素,目前的接口速度在理论上可以满足硬盘所能达到的最高外部传输带宽。

目前硬盘提供的物理接口包括以下几种:
    用于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接口所取代。


    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复杂度高,容易出错。


你可能感兴趣的:(存储IDE/SATA/SCSI接口知识)