摘要:
日常实施工作中,经常会听到HBA卡或是光纤网卡之类的硬件设备。到底什么是HBA卡呢?光纤网卡跟它有啥区别?
为啥要有HBA和网卡?
要理解HBA卡和网卡的概念,遵从第一性原理还需要从根源讲起。
这里先讲一个知识点:总线。
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus),分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
总线是连接各个部件的一组信号线。通过信号线上的信号表示信息,通过约定不同信号的先后次序来约定操作如何实现。
举个“栗子”:
如果说主板(Mother Board)是一座城市,总线就像是城市里的公共汽车(bus),能按照固定行车路线,传输来回不停运作的比特(bit)。一条线路在同一时间内都仅能负责传输一个比特。因此,必须同时采用多条线路才能传送更多数据,而总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度愈大,传输性能就愈佳。工作时钟频率以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。
总线带宽,是总线所能达到的最高传输率,单位是MB/S
总线按功能和规范可分为五大类型:
1. 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
2. 地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
3. 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备。
4. 扩展总线(Expansion Bus):外部设备和计算机主机进行数据通信的总线,例如ISA总线,PCI总线。
5. 局部总线(Local Bus):取代更高速数据传输的扩展总线。
按照传输数据的方式划分,可分为串行总线和并行总线。串行总线中,二进制数据逐位通过一根数据线发送到目的器件;并行总线的数据线通常超过2根。
简要讲述了总线的概念,接下来再讲下总线标准。
为啥要有总线标准?一句话“为了落地和推广”。
为便于机器的扩充和新设备的添加,不同厂商能按照同样的标准和规范生产各种不同功能的芯片、模块和整机,用户可以根据功能需求去选择不同厂家生产的、基于同种总线标准的模块和设备。这样可使芯片级、模块级、设备级等各级别的产品都具有兼容性和互换性,以使整个计算机系统的可维护性和可扩充性得到充分保证。
为了提高计算机的可拓展性,以及部件及设备的通用性,各个部件或设备都采用标准化的形式连接到总线上,并按标准化的方式实现总线上的信息传输。而总线的这些标准化的连接形式及操作方式,统称为总线标准。如ISA、PCI、USB总线标准等,相应采用这些标准的总线为ISA总线、PCI总线、USB总线等。
这就是标准的力量。
目前有哪些总线标准?
因本文主要讲述存储,这里说下硬盘总线,一般有PCI、SCSI、SATA、IEEE1394、USB(Universal Serial Bus)等。
这里简要介绍下5种常用的总线标准:SATA、PCI、PCI-e、SCSI、iSCSI。
1. 总线标准-SATA
SATA的全称是Serial Advanced Technology Attachment,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范,在IDF Fall 2001大会上,Seagate宣布了Serial ATA 1.0标准,正式宣告了SATA规范的确立。
SATA线缆是全双工线缆,最大长度为1米。STAT线缆两端只各有一个连接器,一端与主机SATA控制器提供的端口相连,另一端与设备的串行端口相连。两端连接器完全相同,不存在方向接反的问题。一条SATA串行总线只连接一个驱动器。
Serial ATA 1.0规范定义SATA单向数据线的比特流速率为1.5Gbps,即相当于工作时钟频率为1.5GHz。由于采用8b/10b编码,每10个时钟周期传送一个8位(1B)数据,故最大数据传输速率为150MB/s。从一开始,就比PATA的最大数据传输速率(100MB/s或133MB/s)高。第二代和第三代SATA的比特流速率预定为3.0Gbps和6.0Gbps,最大数据传输速率将分别达到300MB/s和600MB/S。
2. 总线标准-PCI
PCI(PeripheralComponentInterconnect)总线
是一种高性能的32位局部总线。它由Intel公司于1991年底提出,后来又联合IBM、DEC等100多家PC业界主要厂家,于1992年成立PCI集团,称为PCISIG,进行统筹和推广PCI标准的工作。
用于高速外设的I/O接口和主机相连。采用自身33MHz的总线频率,数据线宽度为32位,可扩充到64位,所以数据传输率可达132MB/s~264MB/s。
3. 总线标准-PCI-e
PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,简称“PCI-e”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽。PCI-Express的接口是PCIe 3.0接口,其比特率为8Gbps。
PCIe的主要优势在于其减少延迟的能力。PCIe设备和PCIe总线直接相连,使缓存和数据更接近CPU。消除了传统存储协议的开销,并且EMC认为在合适的条件下能实现远远优于从08年开始销售的串列SCSI和SATA的固态硬盘SSD性能。
4. 总线标准-SCSI
SCSI(Small Computer System Interface):小型电脑系统接口协议,主要是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI协议可谓是最重要的脊梁。
操作系统对外部设备(如磁盘、磁带、光存储、打印机和扫描仪)的I/O操作,可以通过SCSI协议来实现,一般情况下SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。
SCSI-3:1995年推出了SCSI-3,俗称Ultra SCSI,全称为SCSI-3 Fast-20 Parallel Interface(数据传输率为20M/S)它采用了同步传输时钟频率提高到20MHZ以提高数据传输的技术,因此使用了16位传输的Wide模式时,数据传输即可达到40MB/s。其允许接口电缆的最大长度为1.5米。
5. 总线标准-iSCSI
iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:
1. 把原来只用于本机的SCSI协议透过TCP/IP网络发送,使连接距离可作无限的地域延伸;
2. 连接的服务器数量无限(原来的SCSI-3的上限是15);
3. 由于是服务器架构,可实现在线扩容以至动态部署。
iSCSI使用 TCP/IP 协议(一般使用TCP端口860和3260)。 本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换SCSI命令。iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。不像某些 SAN 协议,iSCSI 不需要专用的电缆;它可以在已有的交换和 IP 基础架构上运行。但不使用专用的网络或者子网( LAN 或者 VLAN ),iSCSI SAN 的部署性能可能会严重下降。于是,iSCSI 常常被认为是光纤通道(Fiber Channel)的一个低成本替代方法。
接下来再讲述下几种主流内存主机控制器接口接口规范:AHCI、NVMe、SCSI。
1. AHCI接口规范,全称为Serial ATA Advanced Host Controller Interface(串行ATA高级主控接口),AHCI本质是一种PCI类设备,在系统内存总线和串行ATA设备内部逻辑之间扮演一种通用接口的角色(即它在不同的操作系统和硬件中是通用的)。AHCI模式则与IDE模式相反,装系统时需要安装SATA驱动。
在AHCI 1.0规范中,Intel引入了NCQ(Native Command Queuing)功能和热插拔技术。支持NCQ技术的硬盘在接到读写指令后,会根据指令对访问地址进行重新排序,减少了读取时间,使数据传输更为高效,同时也有效地延长了硬盘的使用寿命。
场景:HDD 磁盘和早期 SSD 磁盘的传输协议一般采用AHCI(高级主机控制器接口,Advanced Host Controller Interface)。AHCI 为单队列模式,主机和 HDD/SSD 之间通过单队列进行数据交互。对于 HDD 这种慢速设备来说,主要瓶颈在存储设备,而非 AHCI协议。
不同于 HDD 的顺序读写特点,SSD 可以同时从多个不同位置读取数据,具有高并发性;因此对于 SSD,AHCI 的单队列模式成为了限制并发性的瓶颈。随着存储介质的演进,SSD 盘的 IO 带宽越来越大,访问延时越来越低。
AHCI 协议已经不能满足高性能和低延时 SSD 的需求, NVMe(NVM Express 非易失性内存主机控制器接口规范)应运而生。
2. NVM Express(NVMe)接口规范,或称非易失性内存主机控制器接口规范(Non Volatile Memory Host Controller Interface Specification,缩写:NVMHCIS),是一个逻辑设备接口规范。其与AHCI类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器),虽然理论上不一定要求 PCIe 总线协议。
依托于PCIe总线,NVMe设备可适用于各种支持PCIe总线的物理插槽上,包括标准尺寸的PCIe扩展卡(一般是4个PCIe通道)、采用U.2物理连接界面(SFF-8639)的2.5英寸/3.5英寸标准尺寸固态硬盘驱动器、SATA Express总线(兼容于PCIe)的设备、M.2规格扩展卡等。
大多数SSD使用如SATA、SAS或光纤通道等接口与计算机接口的总线连接。随着固态硬盘在大众市场上的流行,SATA已成为个人计算机中连接SSD的最典型方式;但是,SATA的设计主要是作为机械硬盘驱动器(HDD)的接口,并随着时间的推移越来越难满足速度日益提高的SSD。随着在大众市场的流行,许多固态硬盘的数据速率提升已经放缓。不同于机械硬盘,部分SSD已受到SATA最大吞吐量的限制。
值得注意的是:在NVMe出现之前,高端SSD只得以采用PCI Express总线制造,但需使用非标准规范的接口。若使用标准化的SSD接口,操作系统只需要一个驱动程序就能使用匹配规范的所有SSD。这也意味着每个SSD制造商不必用额外的资源来设计特定接口的驱动程序。NVMe就是干这个用的。
讲完了上面的概念,接下站在使用的角度来回顾下为啥要有HBA卡和光纤卡。
早期的SAN存储系统中,服务器与交换机的数据传输是通过光纤进行的,因服务器要把SCSI指令传输到存储设备上,不能走普通LAN网的IP协议,所以需要使用FC光纤通道(Fibre Channel),简称FC,也叫fc光缆)传输,因此,这种SAN就叫做FC-SAN。
后来出现了用IP协议封装的SAN,可通过LAN网络把SCSI指令传输到存储设备上,因此,被称为IP-SAN。其中最典型的就是现在热门的ISCSI。
如只支持 SCSI 协议的磁盘,由于这种磁盘不能与服务器直接,就需要在服务器扩展槽上插入一块 SCSI 卡,以便SCSI 磁盘可以与 SCSI 卡连接。SCSI 卡实现了PC 总线到 SCSI 的转换,使得服务器能够通过PC总线和SCSI总线连接到磁盘设备。这种 SCSI 卡实现的功能就是主机总线适配卡的功能。
如只支持光纤通道协议的磁盘,服务器上需要支持光纤通道协议,但因光纤通道的高速特性一般服务器主板不支持,需要专门支持光纤通道协议的主机总线适配卡,服务器插入这种适配卡后,就可与支持光纤通道的磁盘通过光纤通道连接。
上述两种方式都需服务器对数据块进行频繁读包解包操作,耗费服务器CPU资源,为缓解CPU压力,在服务器上安装一块专门设备来负责解包工作,来减轻处理器负担。根据数据传输协议的不同,这种设备通常被称为HBA卡或网卡。
HBA卡除了执行解包工作外,还提供一个光纤接口(如果是ISCSI HBA卡就是提供普通的RJ45接口)用来跟对应的交换机连接。另,HBA物理上可以把它当作网卡一样插在PCI-E槽位里,用法非常像一张网卡,故也就把它跟普通网卡或者普通的光纤网卡混淆。
HBA卡和光纤网卡的定义
HBA 卡定义:
HBA卡全称主机总线适配器(Host Bus Adapter,HBA)是一个在服务器和存储装置间提供输入/输出(I/0)处理和物理连接的电路板和/或集成电路适配器。
HBA 卡的作用就是实现内部通道协议 PCI或 SBus 和光纤通道协议之间的转换。
网卡定义:
网卡是大家常提到的一个类型设备的总称,是指安装在主机里,通过网络连接线与网络交换机(以太网交换机、FC交换机、ISCSI交换机等),或是与其他网络设备(存储设备、服务器、工作站等)连接,从而形成一个网络的硬件设备环境。
总结
HBA 卡和光纤网卡的区别,通讯协议不同。
HBA 卡是专门用于 IO 扩展,光纤网卡是用于TCP/IP 协议的存储。