天天看點

用資料說話——IOPS:RAID1+0 > RAID5

測試環境

IP

RAID級别

DISK number

具體配置

172.20.10.112

RAID1+0

10

2+2+2+2+2

172.20.10.113

RAID5

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配置如下

RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3  

Size:16.362 TB  

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

測試結果——

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

68.40

1.07

29.23

127

64k

33.85

2.12

59

175

RAID1+0-172.20.10.112  

4k

244.30

0.95

8.18

158

16k

246.97

3.86

8.09

116

259

16.24

7.69

109.88

<a href="http://taotao1240.blog.51cto.com/attachment/201203/13/731446_1331623079mRZC.png" target="_blank"></a>

說明——橫軸表示Block size,縱軸表示IOPS

分析

RAID5如下——

<a href="http://taotao1240.blog.51cto.com/attachment/201203/13/731446_1331623079vNsA.png" target="_blank"></a>

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,

<a href="http://taotao1240.blog.51cto.com/attachment/201203/13/731446_1331623080AfBx.png" target="_blank"></a>

stripe size=64K,共10個盤,但是做2-2-2-2-2可以推斷出stripe depth=12.8K

第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的性能。以上測試結果均為真實資料!

本文轉自 taojin1240 51CTO部落格,原文連結:http://blog.51cto.com/taotao1240/804646,如需轉載請自行聯系原作者

繼續閱讀