存储 频道

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

        今年是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)。

硬盘

 

西部数据 Raptor SATA硬盘

 

希捷 Cheetah捷豹SCSI硬盘

 

rpm

 

10000

 

15000

 

介质传输率MTR

 

89

 

135

 

寻道时间(ms)

 

4.6

 

3.5

 

延迟(ms)

 

3

 

2

 

 

1004KB数据块

 

14MB数据块

 

1004KB数据块

 

14MB数据块

 

解码时间decode(ms)

 

30

 

0.3

 

40

 

0.4

 

寻道时间seektime(ms)

 

460

 

4.6

 

350

 

3.5

 

延迟latency(ms)

 

300

 

3

 

200

 

2

 

传输时间transfer(ms)

 

4.6

 

46.02

 

3.03

 

30.34

 

总时间(ms)

 

794.6

 

53.92

 

593.03

 

36.24

 

STR(MB/s)

 

0.5

 

74.18

 

0.67

 

110.37

 

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每秒也是很平常的。

0
相关文章