http://www.stor-age.com/stor-age/2004/0423/400025.shtml
包容有道——SAS环境中的SATA设备
SAS兼容SATA的能力非常重要,系统集成商和用户可以根据实际需要在大容量/高性价比的SATA硬盘与高性能/高可用性的SAS硬盘之间自由选择。不过,串行互连技术促进存储接口融合说起来容易,但真正实现起来要解决的问题还是很多的。
SAS对SATA的支持可以从软件和硬件两个层面来讨论,其中双端口格外值得我们关注。
STP铺路 OOB识别
SAS定义了3个协议:串行SCSI协议(Serial SCSI Protocol,SSP),全双工,让SCSI运行在增强的SATA物理层上;串行ATA隧道协议(Serial ATA Tunneled Protocol,STP),为SATA增加多目标寻址和多发起者访问,以适应SAS环境的需要;串行管理协议(Serial Management Protocol,SMP),用于发现和管理扩展器(Expander)。
扩展器把SATA的点对点连接扩展至SAS的多发起者/多目标,然而SATA协议仅支持单发起者/单目标,STP的任务就是让发起者能够通过扩展器访问SATA目标。STP在发起者与最远的、也就是连接SATA设备的扩展器端口(STP目标端口)之间建立起一条通路(隧道),传输标准的SATA 1.0帧,因此在SATA设备看来,自己连接的就是SATA主机适配器。如果发起者端口识别出与其直接相连的是一台SATA设备,则只使用SATA协议通信。
发起者端口怎么知道自己连接的是SATA设备或SAS设备呢?在连接初始化时,发起者送出OOB(Out of band)慢速脉冲信号,检测目标对COMSAS脉冲的响应情况——如果目标也返回COMSAS脉冲,就是SAS设备,反之即为SATA设备。需要注意的是,由于在SAS协议中发起者和目标是对等的,外围设备(如硬盘)也可以作为发起者,主动送出COMSAS脉冲,向目标(主机适配器)表明自己的身份。以硬盘为例,能否生成COMSAS脉冲即辨别SAS与SATA的依据。
STP发起者端口经过OOB协商确认与自己相连的是SATA设备后即进入SATA模式,严格遵循SATA主机适配器的行为规范。STP并不关心SATA FIS(Frame Information Structure,帧信息结构)的内容,SATA命令排队可以在FIS中传输——前提当然是STP发起者端口和SATA设备必须支持命令排队功能。不过,SATA Ⅱ中的其他扩展功能不是被STP排除在外,就是以另外的方式实现。
传输完成后由SAS主机适配器或扩展器决定是否用STP断开与SATA设备的连接,以后需要时再重新连接。整个过程中该SATA设备始终以为自己通过正常的流控机制直接连在某个SATA主机适配器上,实际情况却是SAS主机适配器进行了SATA“翻译”工作。在Windows操作系统中,这个SAS主机适配器将与使用Miniport驱动程序的SATA主机适配器一样被归类为SCSI控制器。
由于单端口的带宽(3.0Gb/s,甚至1.5Gb/s)已经能够满足硬盘的要求,SAS硬盘增加第二端口并不是为了支持宽链接(2-wide),而是通过给它们赋予不同的SAS地址(WWN),让双端口分属两个(冗余的)域以防系统出现单点故障,从而提高可用性。
在SAS环境中,SATA设备同样有高可用性需求,即允许两个主机适配器连接到一台SATA硬盘上,避免主机适配器成为单点故障源(图3)。与SAS的双端口不同,在任何时刻都只能由一个主机适配器独享此SATA硬盘的控制权(由系统软件检测哪个主机适配器处于“活动”状态)。这种通路切换机制由两端口到单端口的适配器——端口选择器(Port Selector,PS)——实现,SATA Ⅱ工作组负责开发规范,工作草案已经递交T10网站供参考。在任何时刻只有一个端口处于活动状态,在切换端口之前硬盘的所有行为都必须停止(队列中无请求)。端口选择器的设计取决于子系统厂商,可以两边分别是SAS(双端口)和SATA连接器,也有可能把端口选择器放在背板上,或者干脆将其集成到硬盘上配合统一的背板连接器使用。SATA Ⅱ工作组还有意将端口选择器用于静态负载均衡。不过,这样一来也对该SATA硬盘的工作周期(7×24)和平均无故障时间(MTBF)提出了更高的要求。
防止单点失效的典型SAS配置
为了更好地兼容SATA,SAS的物理层也提供了对时钟频谱扩展(Spread Spectrum Clocking)的支持。时钟频谱扩展通过将时钟发生器脉冲波的尖峰衰减为相对平滑的曲线来降低EMI(ElectroMagnetic Interference,电磁干扰),SATA加入这项功能是为了满足PC对电磁辐射的严格要求;SAS所面向的服务器和网络存储设备辐射标准没有那么苛刻,SAS设备并不需要它,但SAS系统却必须能接收来自SATA设备的时钟频谱扩展信号。
发起者和目标
对SATA来说,发起者(initiator)必须是主机控制器,目标(target)只能是外围(存储)设备;SAS却灵活许多,外围设备同样能够成为发起者,主机控制器也可以当做目标。
造成这种差别的根源在于SAS继承了SCSI对等(peer-to-peer)的传统,即发起者和目标地位平等,在建立连接和传输数据时没有主从之分。对等是SAS很容易地就能在单个物理链接上实现全双工的主要原因,但它的优点并不限于此。
SAS硬盘执行SCSI扩展拷贝命令时,(SSP)协议允许一块硬盘直接与其他硬盘建立连接,在没有主机参与的情况下发送SCSI命令并传输数据。
另一个对等的例子是RAID卡。SAS允许两块(冗余的)RAID卡连接到同一SAS域中互相通信,这个通信路径将两块RAID卡联系在一起,如果其中一块RAID卡发生故障,另一块就会接替它的动作而不用担心数据损坏。
相比之下,SATA和PATA一样由主机起控制作用,外围设备只是被动地响应请求,即所谓“非对等”。也就是说,SATA协议没有允许两块主机适配器相互沟通或在两块硬盘间建立直接通信路径的机制。
SAS规范并没有限制SAS硬盘作为发起者与SATA硬盘通信的能力,然而实际设计中不会出现这种情况,因为SAS硬盘要为此提供对STP和SATA发起者协议的支持,从而提高复杂性和成本。
Port Multiplier:量比质优先
2003年4月29日,SATA Ⅱ工作组在WinHEC会议上公布了Serial ATA Ⅱ: Port Multiplier 1.0规范。Port Multiplier(端口增加器)的作用是把一个活动主机连接多路复用(multiplexed)至多个设备连接,相当于一个SATA的Hub。
Port Multiplier的链路层与物理层兼具SATA 1.0主机和(外围)设备的能力,连接到其上的SATA 1.0设备无需做出改变,也不用增加新的FIS类型。Port Multiplier采用4位(bit)宽度的PM端口字段,其控制端口占用一个地址,因此最多能输出15个设备连接——与并行SCSI相当。
Port Multiplier不允许级联,而且只能有一个活动的主机连接,这就限制了其上行带宽,主要用于为端口不足的系统增加可连接设备的数量。Port Multiplier 1.0规范列举了以下几种典型应用:
1.采用SATA外部接口的驱动器箱体(下图)。SATA外部线缆可以包括多路SATA链接,但它们不能合并为一个(宽)链接,每路SATA链接对应一个Port Multiplier(的上行端口)。
采用SATA外部接口的Port Multiplier示例
2.采用FC-AL、GbE、SAS等其他外部接口的驱动器箱体(下图)。箱体内部有一个将外部接口转为SATA接口的主机控制器,它的每个SATA端口连接一个Port Multiplier或其他SATA设备。
采用其他外部接口的Port Multiplier示例
3.笔记本电脑的移动坞站(docking station,见下图)。坞站中的Port Multiplier上行端口与主机相连,下行端口用来接外部硬盘、光驱或其他SATA外围设备。
用于坞站的Port Multiplier示例
Port Multiplier的上行和(所有)下行端口带宽均为150MB/s(信号速率1.5Gb/s),明显领先于任何SATA设备(包括硬盘)的实际速度,因此在下行连接设备较少(或速度较慢,如光驱)的情况下上行接口未必会成为性能瓶颈——何况将来可以把上行端口的带宽先行提高到300MB/s(信号速率3.0Gb/s)。但不管怎么说,现在的Port Multiplier仍只是一个功能受限(不能级联)的SATA Hub而已。
SAS:复杂奠定优势
如果把SATA的Port Multiplier比做Hub,那么将SAS的扩展器形容为交换机(Edge Expander,边沿扩展器)和路由器(Fanout Expander,扇出扩展器)就再合适不过了。
扩展器利用可多达128个的Phy(发送器和接收器各一、能够接受1个物理链接的最小单元,譬如1个4宽度端口即由4个Phy组成)连接发起者/目标设备或其他扩展器,组成星形拓扑架构。扇出扩展器是SAS域的核心,一个SAS域只能有一个扇出扩展器,它可以随意连接边沿扩展器(只要不超过Phy数目上限);一个边沿扩展器只能连接到一个扇出扩展器上,而在没有扇出扩展器的情况下最多仅允许两个边沿扩展器互连;在不超过Phy数目上限的前提下,扩展器可以随意连接发起者/目标设备。也就是说,在一个SAS域中,任意两个设备(发起者或目标)之间最多可以有3个扩展器(边沿-扇出-边沿,下图)。此外,一个具有多个端口的设备还能跨越不同的SAS域。
扩展器与设备的关系
SAS制订初期的目标是每个扩展器可连接64个设备,一个SAS域最多4096个(64×64)设备;后来规范制订者们意识到没有必要把扩展器的端口数目限制在64个,于是便改为每个扩展器能够寻址128个Phy,整个SAS域形成一个物理连接数目可达16k(128×128=16384)的点对点交换式拓扑架构。这种从基于路径向基于寻址的转变允许在不使用扇出扩展器的情况下获得更大规模的配置——通过多个边沿扩展器组成“边沿扩展器集”的方法,将能够以Phy数目较少但却廉价的芯片构建起一个大型的逻辑扩展器。
SAS连接器类型对比表
扩展器强大的连接能力不仅是为设备数量服务的,它还可以用多达4个的物理链接(消耗的Phy数目也随之上升)组成宽链接来获得成倍的带宽(见上表)。以4宽度内部串行附属连接器(下图)为例,SATA只能通过4根相互间没有逻辑联系的线缆获得4个独立的SATA链接,SAS却可以得到一个4宽度链接(在一个扩展器上)、两个2宽度链接(在两个扩展器上)、四个1宽度链接(在四个独立的扩展器或设备上),甚至还能够是一个3宽度链接和一个1宽度链接……性能与灵活度都远胜于SATA。
SAS 1.1和SATA Ⅱ共同增加的4宽度内部连接器
当然,扩展器引入的复杂度也不尽是优点,譬如它将原本直接相连的两个设备分隔开就隐藏着潜在的风险。假想有两个设备,支持的最高速率分别是1.5Gb/s和3.0Gb/s,当它们直接相连的时候,会在经过协商后以1.5Gb/s的速率通信,没有什么不妥。若断开这个连接,在中间插入一个3.0Gb/s的扩展器,情况会怎样呢?问题来了——两个设备分别与扩展器(上的相应端口)协商后以各自的最高速率连接,即3.0Gb/s对1.5Gb/s,(当各自处于接收状态时)快的吃不饱,慢的吃不消。为此,SAS在链路层引入了速率匹配(rate matching)的概念,即在高速连接一侧(视需要)插入ALIGN,降低其实际数据速率,维持扩展器吞吐量的平衡。这一功能对SAS主机控制器(3.0Gb/s)通过扩展器连接SATA外围设备(1.5Gb/s)的应用显得尤为重要(下图)。
速率匹配示意图
要让一个可能多达16k个Phy的域顺利地运作,必须有一个足够大的地址分配空间。通过为每个SAS端口分配一个8字节的WWN(World Wide Name,全局名)作为SAS地址,这个问题得到了解决。WWN包括24位的IEEE公司ID和36位制造商标识符,可以保证其惟一性。
在SAS环境中,SAS主机控制器使用自己和SAS硬盘的WWN来建立SSP通路,可是对于并不支持WWN的SATA硬盘该怎么办呢?解决办法是用(与SATA硬盘直接相连的)STP目标端口的WWN来代替。STP目标端口不仅能够让多个STP发起者(主机控制器)通过它访问同一SATA硬盘,还应具备追踪每一个STP发起者SAS地址的能力,否则访问该STP目标端口的STP发起者必须在命令完成之前保持连接——因为SATA硬盘本身并不支持多主机,若STP发起者送出命令后即断开连接,而STP目标端口又不能追踪其地址的话,那么SATA硬盘准备好数据后将不知道该传输给谁。虽说让STP发起者在命令执行过程中始终保持连接也不失为一种解决之道,但这无疑将导致SATA硬盘的命令排队能力得不到充分利用。
融合亦有界
毫无疑问,SAS的多级交换架构明显地优于并行SCSI、SATA和FC-AL,但另一方面,它的应用范围又被严格限定在机内(In-box)和短距离DAS。也就是说,SAS可以在机内(硬盘级)接口的较量中击败FC-AL,但在外部(子系统间)接口的层面上却只有给FC和iSCSI打下手的份儿。
在SAS面前,SATA的功能的确显得有些小儿科,可这并不妨碍它打入传统SCSI市场的低端。Adaptec和LSI Logic这两家传统意义上的SCSI控制器供应商都相当关注SATA技术, Adaptec中国区业务发展经理吴刚先生就认为SATA将挤压Ultra160 SCSI的市场空间,迫使后者加快向Ultra320 SCSI升级的速度。此外,Adaptec还计划在一年之内推出4/8端口的SATA RoC(RAID on Chip)和8/12端口的SATA卡,进一步迫近并行SCSI。
不过,就主机控制器而言,SATA也只能在SAS无暇顾及的低端生存。为SATA主机控制器服务的Port Multiplier能力无法与SAS的扩展器相提并论固然是一个重要原因,SAS兼容SATA的单向性也不容忽视。换句话说,SAS主机控制器能够使用SATA硬盘,SATA主机控制器却不能使用SAS硬盘,这意味着前者具有丰富的设备资源,简直是如虎添翼;而后者除了价格优势外,就仅剩下(相对)可怜的扩展能力和平平的性能。
硬盘端的情况似乎不太一样。虽然总的趋势仍将是SAS硬盘以性能和功能领先,SATA硬盘的容量和性价比占优,但后者可以在SAS主机控制器的帮助下进入一些以前不敢奢望的领域。事实上,高端应用环境中也未必处处都需要无与伦比的性能和极高的可用性,相对廉价且大容量的硬盘同样会有用武之地(如盘基备份)。以前,由于并行SCSI主机控制器不兼容PATA硬盘,而PATA控制器的能力又实在不能令人满意,限制了ATA硬盘的应用范围。现在有了SAS主机控制器对SATA硬盘的兼容,情况可望改观(下图)。
SAS与SATA在企业级市场共存示例
具有低端SCSI产品特征的SATA硬盘可能会成为一个例子。有些企业级应用并不一定在乎双端口或大容量,但主流SATA硬盘的性能又满足不了需要,这时“采用SATA接口的中低端SCSI(或SAS)硬盘”也许倒很适合。本报2002年6月23日B10版介绍过的WD Raptor硬盘(10000RPM,36.7GB,“ESATA”接口)算是这方面的先行者,2003年春季IDF上对比未来两年各类硬盘产品的规格时,也专门列出了SATA-Enterprise(企业级SATA,10000RPM/100万小时MTBF),以与SATA-Desktop(桌面级SATA,7200RPM/50万小时MTBF)相区别。
另一个机会来自于一些高端存储系统对参考数据应用的需求。所谓参考数据,是指重要但不频繁访问的归档/备份等数据,这种应用强调每兆字节最低(购置)成本和可扩展性,性能不是最关键的因素,按说正适合ATA硬盘。然而多数高端存储系统都会对扇区添加用于数据完整性检查的元数据,这就要求扇区尺寸大于512字节(通常会是520字节或528字节),可是PATA偏偏不支持非512字节的扇区尺寸……现在SATA提供了对非512字节扇区尺寸的支持,配合SAS超强的扩展能力,在参考数据应用领域取得成功的把握大增。不过,SCSI/FC硬盘的扇区尺寸能够在格式化时指定,非512字节扇区尺寸的SATA硬盘则很可能需要特别定制。
以上我们讨论了SAS与SATA在企业级应用领域可能的一些动态,SATA在PC市场的优势不是本专题所关心的。有一点是肯定的,那就是对SAS(系统)兼容SATA(外围设备)的重大意义怎么强调都不算过分。身为SATA始作俑者之一的Intel,从去年秋季IDF公开把SAS与SATA相提并论,到2003年春季IDF上将SAS作为串行存储接口讲座的核心,也许就是机内存储设备接口在串行时代走向融合大势的一个缩影。