分类: 服务器与存储
2013-08-29 22:21:07
SAS是P2P连接,即独享总线,而SCSI则是共享总线。
SAS initiator和expander兼容SATA设备。
SCSI提速越来越困难,由于SCSI是并行传输,速率一直无法有效提升,因为时钟控制更加困难。位数增加也会带来数据线不断变宽,而且电磁串扰会更加严重。如下图所示。
虽然,传输位数少,但速率可以非常容易提高。目前,普遍在3Gbit/s速率。传输距离远。
可支持128*128个硬盘。容错机制(SCSI总线下一旦某个硬盘坏,可能会导致整个BUS失败)。更小的硬盘接口,降低成本(SCSI为68pin),支持2.5英寸硬盘。支持硬盘2个phy实现冗余备份。
SAS支持SCSI命令传输,因此兼容SCSI-3架构,也支持SATA(通过 SATA Tunneled protocol即STP协议传输)。
SAS域可由expander、target、initiator一起组成。
Initiator:发起者,往往是服务器,或通过专业的HBA卡,或通过网口,获得FC-SAN或者IP-SAN存储设备共享的block设备,HBA卡往往会会包含多个PHY,如LSI1068E芯片。
Target:目标设备,毫无疑问,肯定是SATA或SAS组合柜或单个硬盘。
Expander:即交换板,可是专业的SAS交换机,也可以是JBOD里面的那个交换背板(含交换芯片,如PM8377,支持36个PHY接入)。
Port:可包含一个或多个PHY接口,每个Port包含一个独一无二的64-bit地址。含多个phy的称为wide port,只含一个phy的为narrow port。wide port可支持链路冗余以及并发操作设备,每个链路为initiator与target的phy之间。像8087 mini sas接口则为含4个PHY的wide port,而连接硬盘终端的则是narrow port。
PHY:每个phy有一个ID,从0 to N-1(第一个PHY为0,范围从00-7Fh)。一个PHY只能接一个硬盘。
SMP:SAS设备之间的信息。
SSP:SAS 域中兼容SCSI命令。
STP:SAS 域中兼容SATA命令。
设备必须命名,不管是initiator,target 还是expander,都必须有独一无二的名称(64-bit)。端口、phy也都必须命名,如下图所示:(注意00:00:00:00:00:00:00:00h是不合格的SAS地址)。
同OSI七层模型一样,SAS也有分层。
Application layer:使不同协议命令能够被认识,即兼容SMP,SSP,STP。
Transport layer:定义传输的各种信息格式和结构,以及任何相关的控制信息,如流控制和acknowledgement。还有就是定义了SSP和SMP的报文格式。说白了就是对各种报文的封装。
Port layer:选择哪个PHY进行通信连接。并进行open/close 连接操作。有点像OIS里面的网络层,即路由。
Link layer:对报文添加/摘除头(SOF)和尾(CRC,EOF)。同时也定义了SSP的流控制和acknowledgement。如果是SMP/STP,则流控制和acknowledgement依靠协议自身实现,而不是link layer。有点混乱了,和transport layer的功能比较。
网络分层和报文封装示意图如下所示:
SAS其实也是在传输SCSI命令。因为SCSI命令已经相当成熟,没有必要推到重来。事实上,利用SAS进行SCSI操作的报文就像利用Fibre channel接口进行SCSI操作的报文一样,非常相似。
我们知道,SCSI BUS是共享机制,所以必须存在仲裁机制以防止多个设备同时发起请求。
在SAS expan中,仲裁也是需要的。因为存在多个PHY同时去连接某一个PHY。
SAS有两种通信操作模式,即circuit和frame。
circuit:就是在两个PHY之间建立circuit连接,则paht和resources将会被分配给该连接,无论是否有数据包进行传输。在SAS下,通过OPEN 地址帧在两个PHY之间建立circuit。当通信完成后,就关闭该circuit。
frame:在该模式下,报文可以独立路由。不需要circuit或connection的建立,也不需要path或resources的分配。一旦frame发送出去,它可以路由到available path,只要resources允许。说白了就是路由器的功能。