存储 频道

揭开SATA和SCSI之间的恩怨情仇(上)

    【IT168 专稿】今年是IBM磁盘发明50周年。早在1956年9月13日,IBM公司就在305 RAMAC计算机上推出了世界上的第一款磁盘。这个磁盘的体积足足有两个大冰箱那么大,但总容量仅有4.4MB,每MB的造价达到1万美元。时至今日,尽管磁盘的容量已经获得了成千上万倍的增长,每GB的造价成本也得到了显著的下降,但要构建一个完整的企业级存储解决方案,成本仍然高得惊人。

    今天,如果用户的预算吃紧,要想找到能满足需求的最好的存储方案还是相当困难的。一般来说,大公司的产品售价都比较高,而许多二流小公司推出的价格低廉的方案却并不能真正满足你的需求。由于存储的基础技术中有99.9%都跟磁盘相关,所以我们就从磁盘入手。本文试图帮助大家认清存储的本质,并重点讨论存储的性能和不同种类的磁盘接口,揭开SATA和SCSI之间的恩怨情仇。

一、磁盘性能,谁说了算?

    为了弄清磁盘的基本性能,我们先看一下磁盘的基本工作流程:

1. 磁盘控制器把逻辑地址转换成物理地址(柱面、磁道、扇区)。数据请求的时间只不过数几十个十亿分之一秒,而指令的解码和传输则占用1毫秒(ms)。
2. 磁头由调节臂移到正确的磁道上方。平均寻道时间在3.5-10ms之间。
3. 旋转电机把磁头确定在正确的扇区上方。这称作旋转延迟,大约占用5.6毫秒(5400rpm)到2毫秒(15000rpm),旋转延迟是由旋转电机的转速快慢来决定的。
4. 然后数据才被读和写。读写数据的时间由读写磁盘的扇区数目决定。访问数据的速率称为介质传输率(MTR),MTR取决于电机旋转速度和数据存储的密度。存储密度越高,在相同时间内磁头下移动的数据就越多。
5. 在读数据的时候,数据会先进入磁盘缓冲区,然后通过磁盘接口被传输到系统中。

    那么,对磁盘性能而言,上述哪种操作是最关键的呢?这要取决于读或写的数据本身。如果我们需要的数据是分散在整个磁盘上的小数据碎片,那么数据寻道时间和延迟是最重要的因素。相反,如果传输的是大块、连续性的数据(例如紧密分布在磁盘驱动器表面的数据),介质传输率(MTR)则是最重要的。

    为了验证这一点,我们针对上述两种情况进行了测试:一种情况是传输一个4MB大小的数据块,即类似于在电脑上打开一首MP3歌曲;另一种情况是读取100个4KB大小的不同数据块,如100个用户同时向数据库服务器发送一个很简单的查询请求。结果如下表所示,表的最下面两行分别是总时间和数据持续传输率(STR)。

SATA和SCSI磁盘分别完成数据库和典型桌面任务的时间对比

    从上表可见,数据库任务所花费的总时间是桌面任务的15倍甚至更多。在访问数据库时,寻道时间和延迟占了总时间的90-95%,而传输时间几乎可以忽略不计,仅为1%。如果改变数据块的大小,比如增加到16KB,情况不会有太多变化:可能传输时间会翻四倍,但总的时间不会增加。但如果增加数据块的数量,也就是说会产生更多的“I/O操作”次数,完成上述任务的总时间几乎会呈线性增长:I/O操作增加两倍,所需时间也翻两倍。

    而在“打开桌面MP3”的测试中,传输时间占到了总时间的85%,这说明MB/s是最重要的因素。文件和FTP服务器则介于桌面任务和数据库服务器之间:每次I/O操作所传输的数据块大小一般要比数据库应用中的大,但I/O操作请求也同样是并发性质的。

    由此可见,我们可以用两种方法来衡量存储性能:

1. 数据传输率(兆字节每秒,MB/s)
2. 每秒的I/O操作次数 

    值得注意的是,在最坏的情况下,数据库存储服务器的性能会不到1MB/s。但目前已经有一些技术可以降低并发访问导致的影响,如全速命令排队(Native Command Queuing),预先读取缓冲区,无序数据转移,智能缓存等等。然而,对数据库应用来说,把高速磁盘的持续传输率(STR)降至数MB每秒也是很平常的。

二、企业级磁盘:SCSI面临多重挑战

    目前硬盘其实只有两种:以SCSI命令工作和以(S)ATA命令工作。但SCSI命令可以通过三种磁盘接口进行传输:

16位并行SCSI(SCSI-320)
串行连接SCSI(SAS)
光线通道(FC)

    光纤通道其实不仅仅是一种接口,它跟TCP/IP一样,是一种完整的网络协议。但由于本文所讨论的是磁盘,所以我们不妨把它当作接口来看待——SCSI命令通过这一接口进行传输。当前,在企业级市场上,FC磁盘已经占据了近20%的份额,而且绝大多数是用在高端领域。SCSI-320大约占据了70%的份额,但正被SAS快速地取代。有些厂商预计SAS硬盘已经占到了近40%的企业市场份额。SATA在企业级磁盘市场上的份额不是很清楚,估计在20%左右。

1)SATA会取代SCSI吗?

     看一下企业级磁盘的价格就知道——无论是SCSI、FC或SAS,每GB所花费的成本比(S)ATA要高出5倍甚至10倍。但用户花这么多钱却并不能获得线性增加的性能——访问时间(寻道时间+延迟)只能减少2-2.5倍,最大传输率只能提高20-50%。

    过去,ATA硬盘和SCSI硬盘之间的巨大价差很容易被人接受,因为在面对大量随机并发访问请求时,PATA磁盘慢得可怜,很容易发生堵塞。但实践证明,随着全速命令排队(NCQ)技术的引入,当前的SATA硬盘完全能够胜任企业级工作负载。采用NCQ技术后,每秒并发I/O访问次数轻易就能提升50%,比如,在一个典型的I/O密集型文件服务应用中,即使在最糟糕的情况下,SATA磁盘也能获得SCSI一半快的速度。

    更重要的是,阻碍SATA进入企业级市场的少数几个障碍也有望被清除。SATA一个最大的问题就是点对点特性:每块磁盘都需要有单独的线缆连接到控制器。这无疑会导致大量的线缆管理问题,使得SATA-I不适合部署在服务器或存储的机柜环境中。

    但有两种方法可以解决这个问题。第一种是采用带有SATA端口集合器(Port multiplier)的底板。一个端口集合器相当于一个交换机,一个SATA的点对点连接至多可以对应15块硬盘。在实际应用中,端口集合器的每个端口可以连接4-8块硬盘。尽管最好的SATA硬盘在外部区域只能维持40-80MB/s的速率,但一个有着四个磁盘端口的集合器已经能够用于流计算(streaming)领域。对于更多的随机性应用来说,连接8块或15块300 MB/s的SATA硬盘也不会导致瓶颈产生。如下图所示,端口集合器大多用在服务器背板或者存储架的底板上。

    第二种方法是在SAS机箱环境中使用SATA硬盘,下文会讨论。

2)并行SCSI的麻烦

    就象P-ATA的速率被限制在133MB/s一样,各种各样的问题导致并行SCSI也无法采用160 MHz的时钟频率。但对于速率可达到640 MB/s的下一代并行SCSI——SCSI-640而言,160 MHz的时钟频率又是必须的。这样一来,就导致SCSI-640胎死腹中。

    因为我们可以在一个共享的SCSI总线上使用多达14块磁盘,而且最快的SCSI硬盘速率只有100MB/s,这样一来,在许多文件服务应用中,320 MB/s的传输速率开始成为瓶颈。在设计上,SCSI在原始带宽方面并不是很有效。测试表明,2 Gb/s或200 MB/s的FC可以比SCSI 320提供更大的原始带宽。当然,在运行一个OLTP数据库负载时,14块SCSI磁盘每秒并不需要传输数百MB的数据。

    另外,由于SCSI-320为了向后兼容早期的SCSI版本,命令是以5 MB/s发送——这可是上世纪八十年代的速率了。这么低的速率浪费掉了SCSI总线多达30%的性能。还有一个大问题就是,在一个主机总线适配器上只能连接14块硬盘,这大大限制了DAS存储的扩展性。

3)SAS带来的新特性

    SAS不仅仅是SCSI-320的串行版。在这里讨论SAS协议的新特性可能有些枯燥,让我们来看看SAS产品和应用带来了哪些新功能。下图是LSI Logic公司的SAS产品——3442X-R 。

LSI Logic SAS3442X-R: a 8-port 3Gb/s SAS, PCI-X HBA

    如上图所示,LSI Logic SAS3442X-R提供了两种内部硬盘接口:一个SATA口和一个SAS口。SAS HBA卡上的接口(阳)可以连接SATA和SAS线缆的接口(阴)。一般来说,SAS HBA同时支持SAS和SATA两种磁盘,而SATA HBA仅支持SATA磁盘。

上面的接口可以将内置SATA硬盘连接到HBA卡,下面的接口可以连接SAS硬盘

    跟TCP/IP或FC一样,SAS也是一种分层协议。在SAS传输层,有三种协议均采用相同的物理层和链路层协议:

1. 串行SCSI协议(SSP),通过链路层传输SCSI命令(类似于FC协议)
2. 串行ATA管道协议(STP),把SATA桢传输到SATA磁盘驱动器
3. 串行管理协议 (SMP),该协议用于扩展存储和获取诊断信息,如确定硬盘是否在工作,硬盘是否已经接好等等。

    SAS的分层模型如下图所示:

    串行管理协议(SMP)使得SAS具有很高的灵活性和可扩展性。“端口层”允许宽端口提供比SCSI-320和640更大的带宽。串行SCSI协议(SSP)和串行ATA管道协议(STP)使用的是同样的链路层和物理层,这使得SATA和SAS均可以实现扩展。

    下篇将具体介绍SAS和SATA对并行SCSI的冲击。

0
相关文章