第九章 天翻地覆——FC协议的巨大 力量

第四节 SAS大革命

9.4 SAS大革命

    SAS技术是近一两年来才被普遍使用的技术,其相对FC技术有多种优点,也有其缺点。本节向大家介绍一下SAS技术的底层架构。

9.4.1  SAS物理层

    适用于存储系统的网络不只FC一个,同档次的网络传输系统还有一个叫做SAS的,全称为Serial Attached SCSI,即串行SCSI。FCP也属于串行SCSI,SAS只是一个名称,不要太较真。SAS是于2001年被Compaq、IBM、LSI Logic、Maxtor和Seagate联合提上日程的。大家都知道,现在普遍用于PC的SATA硬盘,也是从2001年之后才逐渐崭露头角的。的确,当时几大厂家在开发串行ATA时就考虑到:为何不将SCSI一同纳入开发范围呢?于是SAS便悄悄的被开发了。正是由于这种因缘关系,今天普遍用于PC服务器和小型机的本地硬盘的SAS磁盘的接口形状与SATA盘是相同的,只是比SATA盘多了一个数据接口,像FC磁盘一样用来连接两路控制器。第二数据接口位于第一数据接口靠背的位置,需要翻过来才能看到,如图9-25所示。
图9-25  SAS和SATA接口的区别
 
图9-25  SAS和SATA接口的区别

    SAS网络与FC有一个本质区别,即SAS为全交换式架构,不像FC一样有Fabric和FCAL两种架构。如果让一个控制器(Initiator)和多块磁盘作为网络节点直接连接到SAS网络中的话,那么控制器和所有磁盘之间都是全双工线速无阻塞交换的,控制器可以直接向任何一块磁盘收发数据;同样,磁盘也可以在任何时刻直接向控制器发送数据。这一切过程都是没有冲突的,也不需要像FCAL那样的仲裁机制,而且每个节点都独享传输带宽,系统整体带宽=节点数量×每个节点享有的带宽。

    在SAS网络中,每一个物理接口都需要有一套底层编解码器负责对数据进行8/10b编解码。每个物理接口又称为PHY,即Physical的简写。SAS 1.0时代,每个物理接口的编解码速度为3Gb/s,SAS 2.0时代(2010年初才有产品正式宣布),这个速率被提升至6Gb/s。换算一下就可得知,SAS 1.0的每个接口数据带宽为300MB/s,SAS 2.0则翻倍。相比之下,同时代的FC接口物理速率已经普遍为4Gb/s,而且8Gb/s的产品已经上市,SAS慢了一小步,而且还相差2Gb/s。但是SAS的一项设计却比FC走到了前面,即可以将多个PHY捆绑成一个逻辑接口,数据并行地在多个PHY中传输,就像PCI-E一样,每个PHY速率2.5Gb/s,4XPCIE便是4个PHY捆绑。4X的SAS接口,其速率就变成了12Gb/s(SAS 1.0)或者24Gb/s(SAS 2.0)。而目前FC是做不到这一点的。多个PHY经过捆绑之后形成的逻辑端口称为“宽端口”,不捆绑的独立单一PHY称为“窄端口”。宽端口一般用于主机SAS适配器连接SAS接口外置磁盘阵列时使用,因为宽端口可以提供更高的带宽,消除瓶颈,同时,连接使用的线缆也借用了Infiniband网络的设计,如图9-26所示为一个4X宽端口所用的线缆接头实物图。

    图9-27所示的是一块主机SAS适配卡的连接示意图。此适配卡有两个SAS通道,每个通道又有4个PHY,其中一个通道用于连接主机箱内部的SAS或者SATA磁盘,通过线缆连接到转接背板上,然后4块磁盘可以以热插拔方式插到背板上对应的接口。另一个通道使用上文所述的4X SAS线缆连接外置SAS接口的磁盘阵列。如果在这块SAS卡上设计有独立的Raid芯片或者直接集成到SAS IO Processor中,那么这块卡就变为了一块可接SAS或者SATA硬盘的Raid卡了。
 
图9-26  SAS的4X宽端口                图9-27  SAS适配器内部连线示意图
   
图9-26  SAS的4X宽端口                图9-27  SAS适配器内部连线示意图

    由于SAS和SATA硬盘的接口是相同的,所以自然想到是否SATA硬盘也可以接入SAS网络呢?答案是肯定的。SAS协议利用STP(SATA Tunneling Protocol)来兼容SATA协议,对SATA节点的数据收发,SAS是将数据封装在SAS协议帧中传递的,数据到达SATA节点后,解封装,然后再由SATA节点处理。这一点FC自身是无法做到的,而需要一个SCSI-ATA协议转换器(前文所述的SR1216芯片)以及一个SATA-FC接口转换器(前文所述的SATA-SCA2转换板)来实现。对于物理接口转换器,有一点需要了解,即SATA盘只有一个数据接口,而FC磁盘有两个逻辑数据接口(包含在一个物理SCA2接口中),所以接口转换器又被称为Port Multiplexer,即前端实现两个逻辑接口(对于FC来讲)或者两个物理PHY(对于SAS来讲),而后端连接同一个SATA物理接口,转换器将前端的所有接口都映射到后端的一个接口,并且在前端虚拟出两个物理接口地址以用于前端网络的寻址操作。这种接口转换板又被某些厂家称为“Dongle”。

    SAS作为一个交换网络,那么理所当然的就应该有对应的交换媒介,即交换机,或者交换芯片。让我们来看一张PMC-Sierra公司所设计的一款36端口SAS交换芯片(PM8387)的架构,如图9-28所示。
 
图9-28  SAS交换芯片架构

图9-28  SAS交换芯片架构

    图中XBAR代表Crossbar,即这款芯片内包含一个基于Crossbar架构的交换矩阵用来在各个PHY之间进行高速交换。XBAR左侧连接了36个PHY,每个PHY前端是8/10b Serdes(串化解串化器),由于数据在芯片内部都是并行传递的,到芯片外部之前都需要经过串化过程和8/10b编码过程,而从芯片外部到内部的数据则执行相反过程。SXL表示SAS Expander Link,其中Expander就表示SAS交换芯片,因为交换芯片可以让众多节点所连接并且通信,所以又叫做Expander,即扩展器。芯片中包含的另一个部件为一个32b的MIPS核心处理器,这个处理器执行Firmware以实现SES、SMP(下文描述)和其他一些外部信号(比如指示灯、Debug接口、监控)处理工作。XBAR右侧为各种信号总线和接口。XBAR中的Arbiter,即仲裁器,负责协调各个PHY之间发起的通信并控制Crossbar将数据交换到正确的目的。这里不要被其名称所误导,SAS不使用仲裁共享方式,具体数据收发方式后文描述。