购买存储时需要的考虑性能如下:1.磁盘空间,2.磁盘组性能。磁盘空间主要取决于磁盘阵列类型及磁盘个数。而磁盘性能包括吞吐量(传输带宽)和磁盘IOPS。下面我们将一起来探讨磁盘性能的两个方面。

1磁盘阵列的吞吐量(传输带宽)

传输带宽指的是硬盘或设备在传输数据的时候数据流的速度。他主要取决于磁盘阵列的构架,通道的大小以及磁盘的个数。不同的磁盘阵列存在不同的构架,但他们都有自己的内部带宽(如主线型或星型),不过一般情况下,内部带宽都设计足够充足,不会存在瓶颈。磁盘阵列与服务器之间的数据通道便对吞吐量的影响很大。下面是常用通道的带宽:

2Gbps 光纤通道,(250MB/s), 4Gbps 光纤通道(500MB/S),SCSI最高速度是320MB/s,SATA是150MB/s,IED 133MB/s。最后说一下是硬盘的限制,目前SCSI硬盘数据传输率最高在80MB/s,SAS硬盘数据为传输率最高在80-100MB/S。对于数据库小数据的离散写入,其传输率快快达不到这个值。

下面举例来说明。 如果写一个10M的文件需要0.1S,则磁盘计算出磁盘带宽为100M/s,如果写10000个大小 为1KB的文件需要10S,则磁盘带宽只有1M/s.

如果存储内部结构是总线型的,不建议使用超过6个块硬盘。超过6块磁盘后,存储在寻址过程中容易出现丢失的情况,同时6个块磁盘的传输速率大于磁盘阵列接口的传输速度,从而使用存储接口速度成了整个存储传输性能的瓶颈。而光纤存储和光纤硬盘就没有这个问题(DELL MD3000就是主线型的存储)。

2 磁盘阵列的IOPS

决定IOPS的主要取决于磁盘阵列RAID类型,CACHE命中率以及磁盘个数。CACHE的命中率取决于数据的分布,CACHE size的大小,数据访问的规划,以及CACHE的算法。如果要详细讨论才复杂了,这里不做详细说明。但磁盘阵列读Cache的命中率越高,这样可以减少去读取存放在磁盘上的数据,而直接从Cache中直接将数据传送给客户端,从而提高磁盘的IOPS值。

根据厂商网站上给出的规范,数据库服务器的物理驱动器的吞吐能力的理论值为300IOPS,因为吞吐率一旦超过85%,一会出现I/O瓶颈,所以要确定生产环境中每个物理存储器的最大可接受吞吐量是255IOPS(300×85%=255)。但实际情况很难达到这个值。建议硬盘吞吐量按200iops比较好。

同样用上面的例子来说明磁盘IOPS对磁盘性能的影响。写入10000个文件时,根据文件分布情况和大小情况,可能需要做几万甚至,甚至十几万IO才能完成。而一个10MB的大文件,如果这个文件在磁盘上连续存放的话,只需要几十个IO就可以完成了。

综合影响磁盘的两个方面得出:具有高带宽的硬盘在传输大块连续数据时具有优势,而具有高IOPS的硬盘在传输小块不连续的数据时具体优势。而数据库中数据的写入多为不连续小数据,因此建议高IOPS磁盘及RAID类型。下面我们将一起来探讨磁盘RAID类型及特征。