测试环境

IP RAID级别 DISK number 具体配置
172.20.10.112 RAID1+0 10 2+2+2+2+2
172.20.10.113 RAID5 10 10个盘组R5

测试工具——Iometer

操作系统——CentOs5.4_x64

文件系统——无,裸设备

RAID配置——全部禁用缓存(包括RAID卡级别和磁盘层面的缓存)

172.20.10.112配置如下

Virtual Disk: 1 (Target Id: 1)  
Name:  
RAID Level: Primary-1, Secondary-0, RAID Level Qualifier-0  
Size:9.089 TB  
State: Optimal  
Stripe Size: 64 KB  
Number Of Drives per span:2  
Span Depth:5  
Default Cache Policy: WriteThrough, ReadAhead, Direct, Write Cache OK if Bad BBU  
Current Cache Policy: WriteThrough, ReadAhead, Direct, Write Cache OK if Bad BBU  
Access Policy: Read/Write  
Disk Cache Policy: Disabled
Encryption Type: None

172.20.10.113配置如下

Virtual Disk: 1 (Target Id: 1)  
Name:  
RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3  
Size:16.362 TB  
State: Optimal  
Stripe Size: 64 KB  
Number Of Drives:10  
Span Depth:1  
Default Cache Policy: WriteThrough, ReadAhead, Direct, Write Cache OK if Bad BBU

Current Cache Policy: WriteThrough, ReadAhead, Direct, Write Cache OK if Bad BBU

Access Policy: Read/Write  
Disk Cache Policy: Disabled
Encryption Type: None

测试结果——

RAID5-172.20.10.113  

block

size

read/write

IOPS

MBps

Average Response

(ms)

Maximum Response Time(ms)

4K

100%write,seq

65.33

0.26

30.6

153

16K

100%write,seq

68.40

1.07

29.23

127

64k

100%write,seq

33.85

2.12

59

175


RAID1+0-172.20.10.112  

block

read/write

IOPS

MBps

Average Response

(ms)

Maximum Response Time(ms)

4k

100%write,seq

244.30

0.95

8.18

158

16k

100%write,seq

246.97

3.86

8.09

116

64k

100%write,seq

259

16.24

7.69

109.88


用数据说话——IOPS:RAID1+0 > RAID5_第1张图片

说明——横轴表示Block size,纵轴表示IOPS


分析


RAID5如下——

用数据说话——IOPS:RAID1+0 > RAID5_第2张图片

stripe size=64K,共10个盘,可以推断出stripe depth=6.4K

block size=4K,即一次IO写入4K

现在IOmeter一直在以4K/IO的速度写,不考虑缓存,第1个IO写4K,那么第一个stripe depth还剩6.4K-4K=2.4K,那第二个IO再写4K,则要写到两个stripe depth中,分别写2.4K+1.6K。那么假如写1G的文件,则需要262144个IO。中间还有一个IO中磁头移动的速度(比如第二个IO,需要写在2个磁盘中)。

再看RAID1+0,

用数据说话——IOPS:RAID1+0 > RAID5_第3张图片

stripe size=64K,共10个盘,但是做2-2-2-2-2可以推断出stripe depth=12.8K

block size=4K,即一次IO写入4K

第1个IO写4K,那么第一个stripe depth还剩12.8-4=8.8K,第二个、三个IO都可以写到一个stripe depth中,三个IO写完后,第一个stripe depth还剩0.8K。第4个IO分开写(0.8+3.2K)。则相对比RAID5来说就省去了2个磁头在不同磁盘间移动的时间。RAID5中,第2个IO就需要移动磁头,而RAID1+0中,第4个IO才需要移动磁头。

因此从这个角度RAID1+0比RAID5的IOPS性能应该要好。因为我们知道IOPS=1/(s/IO),即每个IO处理时间的倒数。 还有一个原因就是RAID5花在校验上的时间,而RAID1+0只是单纯的条带,并不做校验。

还有为什么RAID5下,block size越大,IOPS越小。这是因为存储系统的吞吐量是一定的(MBps),而吞吐量=IOPS*block size,因此block size变大,IOPS固然要变小。

注——本篇只是单纯地比较相同硬件配置下RAID1+0和RAID5的性能。以上测试结果均为真实数据!