测试环境
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 |
说明――横轴表示Block size,纵轴表示IOPS
分析
RAID5如下――
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,
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的性能。以上测试结果均为真实数据!