RAID基礎(chǔ),RAID10與RAID01比較,RAID10與RAID5比較
文檔中,RAID10與RAID5抄襲了piner的文章,敬請(qǐng)諒解。
文檔內(nèi)容3部分:
1、基本的RAID級(jí)別介紹
2、RAID10和RAID01的比較
3、RAID10和RAID5的比較
RAID10和RAID01的比較
? RAID10是先做鏡象,然后再做條帶。
? RAID01則是先做條帶,然后再做鏡象。
比如以6個(gè)盤(pán)為例,RAID10就是先將盤(pán)分成3組鏡象,然后再對(duì)這3個(gè)RAID1做條帶。RAID01則是先利用3塊盤(pán)做RAID0,然后將另外3塊盤(pán)做為RAID0的鏡象。
下面以4塊盤(pán)為例來(lái)介紹安全性方面的差別:
1、RAID10的情況
這種情況中,我們假設(shè)當(dāng)DISK0損壞時(shí),在剩下的3塊盤(pán)中,只有當(dāng)DISK1一個(gè)盤(pán)發(fā)生故障時(shí),才會(huì)導(dǎo)致整個(gè)RAID失效,我們可簡(jiǎn)單計(jì)算故障率為1/3。
2、RAID01的情況
這種情況下,我們?nèi)匀患僭O(shè)DISK0損壞,這時(shí)左邊的條帶將無(wú)法讀取。在剩下的3塊盤(pán)中,只要DISK2,DISK3兩個(gè)盤(pán)中任何一個(gè)損壞,都會(huì)導(dǎo)致整個(gè)RAID失效,我們可簡(jiǎn)單計(jì)算故障率為2/3。
因此RAID10比RAID01在安全性方面要強(qiáng)。
從數(shù)據(jù)存儲(chǔ)的邏輯位置來(lái)看,在正常的情況下RAID01和RAID10是完全一樣的,而且每一個(gè)讀寫(xiě)操作所產(chǎn)生的IO數(shù)量也是一樣的,所以在讀寫(xiě)性能上兩者沒(méi)什么區(qū)別。而當(dāng)有磁盤(pán)出現(xiàn)故障時(shí),比如前面假設(shè)的DISK0損壞時(shí),我們也可以發(fā)現(xiàn),這兩種情況下,在讀的性能上面也將不同,RAID10的讀性能將優(yōu)于RAID01。
BTxigua 上傳了這個(gè)圖片:
document.body.clientWidth-230) this.width=document.body.clientWidth-230" border="0" />
RAID10和RAID5的比較
為了方便對(duì)比,這里拿同樣多驅(qū)動(dòng)器的磁盤(pán)來(lái)做對(duì)比,RAID5選擇3D+1P的RAID方案,RAID10選擇2D+2D的RAID方案,如圖:
1、安全性方面的比較
其實(shí)在安全性方面,勿須質(zhì)疑,肯定是RAID10的安全性高于RAID5。我們也可以從簡(jiǎn)單的分析來(lái)得出。當(dāng)盤(pán)1損壞時(shí),對(duì)于RAID10,只有當(dāng)盤(pán)1對(duì)應(yīng)的鏡象盤(pán)損壞,才導(dǎo)致RAID失效。但是對(duì)于RAID5,剩下的3塊盤(pán)中,任何一塊盤(pán)故障,都將導(dǎo)致RAID失效。
在恢復(fù)的時(shí)候,RAID10恢復(fù)的速度也快于RAID5。
2、空間利用率的比較
RAID10的利用率是50%,RAID5的利用率是75%。硬盤(pán)數(shù)量越多,RAID5的空間利用率越高。
3、讀寫(xiě)性能方面的比較
主要分析分析如下三個(gè)過(guò)程:讀,連續(xù)寫(xiě),離散寫(xiě)。
在介紹這三個(gè)過(guò)程之前,先介紹一個(gè)特別重要的概念:cache。
cache已經(jīng)是整個(gè)存儲(chǔ)的核心所在,就是中低端存儲(chǔ),也有很大的cache存在,包括最簡(jiǎn)單的raid卡,一般都包含有幾十,甚至幾百兆的raid cache。
cache的主要作用是什么呢?體現(xiàn)在讀與寫(xiě)兩個(gè)不同的方面,如果作為寫(xiě),一般存儲(chǔ)陣列只要求寫(xiě)到cache就算完成了寫(xiě)操作,所以,陣列的寫(xiě)是非常快速的,在寫(xiě)cache的數(shù)據(jù)積累到一定程度,陣列才把數(shù)據(jù)刷到磁盤(pán),可以實(shí)現(xiàn)批量的寫(xiě)入,至于cache數(shù)據(jù)的保護(hù),一般都依賴于鏡相與電池(或者是UPS)。
cache的讀一樣不可忽視,因?yàn)槿绻x能在cache中命中的話,將減少磁盤(pán)的尋道,因?yàn)榇疟P(pán)從尋道開(kāi)始到找到數(shù)據(jù),一般都在6ms以上,而這個(gè)時(shí)間,對(duì)于那些密集型io的應(yīng)用可能不是太理想。但是,如果cache能命中,一般響應(yīng)時(shí)間則可以在1ms以內(nèi)。兩者應(yīng)該相差3個(gè)數(shù)量級(jí)(1000倍)。
1)讀操作方面的性能差異
RAID10可供讀取有效數(shù)據(jù)的磁盤(pán)個(gè)數(shù)為4,RAID5可供讀取有效數(shù)據(jù)的磁盤(pán)個(gè)數(shù)也為4個(gè)(校驗(yàn)信息分布在所有的盤(pán)上),所以兩者的讀的性能應(yīng)該是基本一致的。
2)連續(xù)寫(xiě)方面的性能差異
在連續(xù)寫(xiě)操作過(guò)程,如果有寫(xiě)cache存在,并且算法沒(méi)有問(wèn)題的話,RAID5比RAID10甚至?xí)靡恍m然也許并沒(méi)有太大的差別。(這里要假定存儲(chǔ)有一定大小足夠的寫(xiě)cache,而且計(jì)算校驗(yàn)的cpu不會(huì)出現(xiàn)瓶頸)。
因?yàn)檫@個(gè)時(shí)候的RAID校驗(yàn)是在cache中完成,如4塊盤(pán)的RAID5,可以先在內(nèi)存中計(jì)算好校驗(yàn),同時(shí)寫(xiě)入3個(gè)數(shù)據(jù)+1個(gè)校驗(yàn)。而RAID10只能同時(shí)寫(xiě)入2個(gè)數(shù)據(jù)+2個(gè)鏡相。
如上圖所示,4塊盤(pán)的RAID5可以在同時(shí)間寫(xiě)入1、2、3到cache,并且在cache計(jì)算好校驗(yàn)之后,這里假定是6,同時(shí)把三個(gè)數(shù)據(jù)寫(xiě)到磁盤(pán)。而4塊盤(pán)的RAID10不管cache是否存在,寫(xiě)的時(shí)候,都是同時(shí)寫(xiě)2個(gè)數(shù)據(jù)與2個(gè)鏡相。
根據(jù)前面對(duì)緩存原理的介紹,寫(xiě)cache是可以緩存寫(xiě)操作的,等到緩存寫(xiě)數(shù)據(jù)積累到一定時(shí)期再寫(xiě)到磁盤(pán)。但是,寫(xiě)到磁盤(pán)陣列的過(guò)程是遲早也要發(fā)生的,所以RAID5與RAID10在連續(xù)寫(xiě)的情況下,從緩存到磁盤(pán)的寫(xiě)操作速度會(huì)有較小的區(qū)別。不過(guò),如果不是連續(xù)性的強(qiáng)連續(xù)寫(xiě),只要不達(dá)到磁盤(pán)的寫(xiě)極限,差別并不是太大。
3)離散寫(xiě)方面的性能差異
例如oracle 數(shù)據(jù)庫(kù)每次寫(xiě)一個(gè)數(shù)據(jù)塊的數(shù)據(jù),如8K;由于每次寫(xiě)入的量不是很大,而且寫(xiě)入的次數(shù)非常頻繁,因此聯(lián)機(jī)日志看起來(lái)會(huì)像是連續(xù)寫(xiě)。但是因?yàn)椴槐WC能夠添滿RAID5的一個(gè)條帶,比如32K(保證每張盤(pán)都能寫(xiě)入),所以很多時(shí)候更加偏向于離散寫(xiě)入(寫(xiě)入到已存在數(shù)據(jù)的條帶中)。
我們從上圖看一下離散寫(xiě)的時(shí)候,RAID5與RAID10工作方式有什么不同。如上圖:我們假定要把一個(gè)數(shù)字2變成數(shù)字4,那么對(duì)于RAID5,實(shí)際發(fā)生了4次io:先讀出2與校驗(yàn)6,可能發(fā)生讀命中然后在cache中計(jì)算新的校驗(yàn)寫(xiě)入新的數(shù)字4與新的校驗(yàn)8。
如上圖我們可以看到:對(duì)于RAID10,同樣的單個(gè)操作,最終RAID10只需要2個(gè)io,而RAID5需要4個(gè)io.
這里我忽略了RAID5在那兩個(gè)讀操作的時(shí)候,可能會(huì)發(fā)生讀命中操作的情況。也就是說(shuō),如果需要讀取的數(shù)據(jù)已經(jīng)在cache中,可能是不需要4個(gè)io的。這也證明了cache對(duì)RAID5 的重要性,不僅僅是計(jì)算校驗(yàn)需要,而且對(duì)性能的提升尤為重要。
當(dāng)然,并不是說(shuō)cache對(duì)RAID10就不重要了,因?yàn)閷?xiě)緩沖,讀命中等,都是提高速度的關(guān)鍵所在,只不過(guò)RAID10對(duì)cache的依賴性沒(méi)有RAID5那么明顯而已。
4)磁盤(pán)的IOPS對(duì)比
假定一個(gè)case,業(yè)務(wù)的iops是10000,讀cache命中率是30%,讀iops為60%,寫(xiě)iops為40%,磁盤(pán)個(gè)數(shù)為120,那么分別計(jì)算在raid5與raid10的情況下,每個(gè)磁盤(pán)的iops為多少。
raid5:
單塊盤(pán)的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120
= (4200 + 16000)/120
= 168
這里的10000*(1-0.3)*0.6表示是讀的iops,比例是0.6,除掉cache命中,實(shí)際只有4200個(gè)iops。
4 * (10000*0.4) 表示寫(xiě)的iops,因?yàn)槊恳粋€(gè)寫(xiě),在raid5中,實(shí)際發(fā)生了4個(gè)io,所以寫(xiě)的iops為16000個(gè)
為了考慮raid5在寫(xiě)操作的時(shí)候,那2個(gè)讀操作也可能發(fā)生命中,所以更精確的計(jì)算為:
單塊盤(pán)的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120
= (4200 + 5600 + 8000)/120
= 148
計(jì)算出來(lái)單個(gè)盤(pán)的iops為148個(gè),基本達(dá)到磁盤(pán)極限
raid10
單塊盤(pán)的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120
= (4200 + 8000)/120
= 102
可以看到,因?yàn)?/span>raid10對(duì)于一個(gè)寫(xiě)操作,只發(fā)生2次io,所以,同樣的壓力,同樣的磁盤(pán),每個(gè)盤(pán)的iops只有102個(gè),還遠(yuǎn)遠(yuǎn)低于磁盤(pán)的極限iops。
4、小結(jié)
所以要求較高的空間利用率,對(duì)安全性要求不是特別高、大文件存儲(chǔ)的系統(tǒng)采用RAID5比較好。
相反,安全性要求很高,不計(jì)成本,小數(shù)據(jù)量頻繁寫(xiě)入的系統(tǒng)采用RAID10的方式比較好。