正是SCSI-3指令集的出现,使得SCSI通讯出现了分层结构,并使SCSI指令通过其他物理媒介传输成为可能。事实上,SCSI-3指令自诞生之日就被一批新技术相中,此后出现的光纤通道技术、SSA技术、IEEE1394火线技术等,均受益于这一进步。 这些串行技术虽然从名字上看与SCSI毫不相干,但其实它们都支持SCSI-3作为应用层逻辑指令。下面是这些串行技术的简要回顾。
除了并行SCSI和几种应用SCSI-3指令集的串行技术,我们再简单回顾一下ATA技术的历史。
之所以罗列出以上三个表格,是因为SAS技术正是以串行机制为基础,同时支持SCSI和SATA的协议栈。了解以上三个方面的历史,有助于更方便的理解SAS技术的特点。为了增强感性熟悉,我们先从外观入手,慢慢走进SAS技术内部。
上面这张照片就是SAS外部接口的样子。使用过InfiniBand交换设备的朋友一定觉得眼熟,没错,SAS外部接口和线缆就是借用了InfiniBand线缆的设计。不要小看这个只有并行SCSI一半大的接口。这种端口名叫"四路宽端口",以目前3Gb的SAS标准,它可以达到12Gb的带宽,也就是4 x 3Gb SAS通道。SAS技术与光纤通道一样,都采用8位到10位的编码机制,12Gb的物理层带宽换算到应用层就是1.2GB/s,这一根线就比目前主流的64位133MHz PCI-X总线还要快。
SAS磁盘上的端口也与并行SCSI有很大区别,倒是跟SATA磁盘的端口外观非常像。接脚最多的一组是电源接口,接脚较少的一组是SAS磁盘主端口,位置都与SATA磁盘电源和通讯端口完全一致。SAS磁盘与SATA磁盘接口的唯一区别是SAS磁盘还有第二个冗余端口,而SATA磁盘则只有一个端口。 说到这里,细心的读者会发现一个问题。既然SAS磁盘与SATA磁盘的端口数量都不一致,SAS背板又如何完整的兼容SATA磁盘呢? 不错,假如将SATA磁盘直接插入SAS背板,那么背板上的冗余端口将会悬空,也就是说SATA磁盘只连接在一个控制器上。这样虽然阵列控制器或主机可以使用这些SATA磁盘,但从结构上将无法实现冗余。
为此,一些提供SAS磁盘阵列的厂商,在兼容SATA磁盘时都在SATA磁盘托架上附加一个小小的电路板,我们姑且称之为"端口选择器"。其作用就是将SATA磁盘上的单端口与两路SAS同时连接,从而保证前端控制器或主机故障切换时,SATA磁盘仍然能保持连接。
当然物理连接的一致,只是SAS兼容SATA的必要条件。实际上,在整个SAS协议栈中从物理层到应用层,都贯穿着一套用来兼容SATA的协议。这套协议被称为STP(Serial ATA Tunneling PRotocol)即"SATA隧道协议"。从这个命名就可以看出,SAS兼容SATA的方式其实就是在从磁盘端到主机端整条链路上,为SATA磁盘特地开辟出一条隧道。
除了端口设计,SAS和SATA磁盘的供电接口也可能是读者的疑问。假如SAS和SATA接口中已经包含有供电接脚,传统的四针式电源是否还有用呢? 对磁盘阵列来说,答案显然是没有。外置磁盘阵列早在SCSI和IDE年代,就已经不使用四针式电源接口了。但是服务器内部的非热插拔磁盘一般都采用这种接口,而且目前市面上一些SATA磁盘也带有这种电源接口。这是因为SATA 1.0标准刚刚颁布的时候,还没有完全取代四针电源。无法摆脱四针式电源,就无法直接支持热插拔,因此SATA 1.0在当时被定义为仅主机内部连接的协议,不支持外部连接。不过这些都已经是历史,现在的SAS和SATA II版本中,四针电源完全没有存在的必要。
前面只是简单的罗列出设备、端口和phy各自的大致含义,很多问题还需要进一步说明一下。 前面我们已经提到,每颗SAS磁盘可以提供两个SAS连接。那么这两路SAS连接是同一个端口的两个phy,还是两个独立的窄端口呢?答案是后者。每颗SAS磁盘上有两个phy,这两个phy相互独立,被两个不同的端口使用。再明确点说,每颗SAS磁盘有两个地址,而不是一个。记住!每个地址,就对应一个端口。 地址和端口的对应关系,还能帮我们辨清SAS有效连接。Phy之间连通,并不等于端口之间能够正常通讯。只有当一个端口中所有phy都与对方端口中的phy连通后,两个宽端口的通讯才能正常进行。目前宽端口中最常见的,就是前面提到过的四路宽端口,不过一些SAS适配器厂商正在设计八路宽端口,未来可能会出现单根线缆2.4GBps甚至4.8GBps的SAS连接。 说到SAS适配器,还有个有趣的问题。目前主流SAS适配器一般支持8个phy,那么大家猜猜一般适配器支持多少端口地址呢?答案是可以动态设定。当适配器用来连接外部SAS设备时,需要用外部宽端口,这时适配器将8个phy划分成两个宽端口,支持两个端口地址。而当适配器连接内部SAS磁盘时,每个phy各自属于自己的端口,适配器将支持8个端口地址。 至此,我们虽然明确了一些关于SAS的技术概念,但是还不能说对SAS技术有所了解。SAS技术的重点部分--Expander及其工作原理,才是熟悉SAS技术的要害。 SAS的连接模式与光纤通道的Fabric交换在很多方面十分相似。每一个SAS Expander就像一台光纤通道交换机,整个交换结构被称为"域"(Domain),其意义跟光纤通道技术中的"域"几乎完全一样。在光纤通道Fabric交换结构中,每个域有一个主成员,负责维护整个域的路由信息。在SAS域中,起中心交换作用的Expander叫做"扇出Expander"(Fanout Expander)。SAS域中的"扇出Expander"既可以直接连接终端设备,也能连接其它"边缘Expander"(Edge Expander)。唯一与光纤通道Fabric不同的是,SAS域中可以没有"扇出Expander",而光纤通道Fabric域则不能没有主成员。没有"扇出Expander"的SAS域,最多只可以有两个"边缘Expander"。
理论上,每个"边缘Expander"可以支持128个端口,每个SAS域可以有128个"边缘Expander",这样每个SAS域中最多可以有128 x 128 = 16384个端口。当然,这并不是说每个SAS域可以连接16384个磁盘和SAS适配器,因为"扇出Expander"与"边缘Expander"相连接时,会占用一部分端口。假如128个"边缘Expander"全部连接到"扇出Expander",内部互联至少要占用256个端口。也就是说,一个SAS域理论上可以连接16384 - 256 = 16128个终端SAS设备。对比光纤环路126个设备的上限,16128这个数字仍然是非常可观。 一些接触过SAS存储产品的读者,可能此时会心存迷惑。为什么SAS单域就可以支持如此众多设备,但实际应用中却经常看到多域模式的产品呢?这其实跟目前SAS芯片的制造工艺有关。假如想制造出一个"扇出Expander"来支持128个"边缘Expander"的连接,那这款"扇出Expander"至少要支持128个phy(每端口至少一个phy)。而Expander之间的互联一般应采用至少四路宽端口,那就需要中心的"扇出Expander"支持4 x 128 = 512个phy(每端口四个phy)。而现在的实际情况是LSI公司的首款SAS芯片只能支持12个phy,刚刚好是个零头。虽然SAS技术支持多个Expander芯片组成一个"Expander组"(Expander Set)来模拟一个Expander,但过多的芯片无疑会在制造工艺和成本方面带来麻烦。正是基于目前SAS芯片工艺水平,一些磁盘阵列厂商在设计阵列扩展时,大多采用多域结构。虽然在软件设计上费力多些,但却可以避开单芯片phy数量有限的问题。 所谓多域模式,在大多数情况下,其实也只不过是两个域而已,即每个阵列控制器各自属于自己的SAS域。因为目前的SAS交换技术还不支持域之间的路由,所以要想保证每个阵列控制器都能访问到所有磁盘,最多只能引入两个SAS域。 新闻热点
疑难解答