RAID-5與RAID-10內(nèi)部分析(轉(zhuǎn)載自piner)
Posted on 2009-01-23 00:37 logicgate 閱讀(152) 評(píng)論(0) 編輯 收藏一直以來(lái),看到關(guān)于raid5與raid10的性能之爭(zhēng)還是非常多的,甚至很多人那拿出了測(cè)試數(shù)據(jù),但是,到底誰(shuí)是誰(shuí)非。這里,我就這兩種raid的內(nèi)部運(yùn)行原理來(lái)分析一下,我們?cè)谑裁辞闆r下應(yīng)當(dāng)適合選哪一種raid方式。
?
為了方便對(duì)比,我這里拿同樣多驅(qū)動(dòng)器的磁盤(pán)來(lái)做對(duì)比,raid5選擇3D+1P的raid方案,raid10選擇2D+2D的Raid方案,分別如圖:
那么,我們分析如下三個(gè)過(guò)程:讀,連續(xù)寫(xiě),隨機(jī)寫(xiě),但是,在介紹這三個(gè)過(guò)程之前,我需要介紹一個(gè)特別重要的概念:cache 。
?
cache技術(shù)最近幾年,在磁盤(pán)存儲(chǔ)技術(shù)上,發(fā)展的非常迅速,作為高端存儲(chǔ),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ù),一般都依賴(lài)于鏡相與電池(或者是 UPS)。
?
cache的讀一樣不可忽視,因?yàn)槿绻x能在cache中命中的話(huà),將減少磁盤(pán)的尋道,因?yàn)榇疟P(pán)從尋道開(kāi)始到找到數(shù)據(jù),一般都在6ms以上,而這個(gè)時(shí) 間,對(duì)于那些密集型io的應(yīng)用可能不是太理想。但是,如果cache能命中,一般響應(yīng)時(shí)間則可以在1ms以?xún)?nèi)。
不要迷信存儲(chǔ)廠商的iops(每秒的io數(shù))數(shù)據(jù),他們可能全部在cache命中的基礎(chǔ)上做到的,但是實(shí)際上,你的cache命中率可能只有10%。
?
介紹完cache,我們就可以解釋raid5與raid10在不同的模式下,工作效率問(wèn)題了,那么我們來(lái)分別分析以上三個(gè)問(wèn)題。
?
1、讀操作
因?yàn)閞aid5與raid10的磁盤(pán)都可以提供服務(wù),所以,在讀上面他們基本是沒(méi)有差別的,除非是讀的數(shù)據(jù)能影響cache命中率,導(dǎo)致命中率不一樣。
?
2、連續(xù)寫(xiě)
連續(xù)寫(xiě)的過(guò)程,一般表示寫(xiě)入連續(xù)的大批量的數(shù)據(jù),如媒體數(shù)據(jù)流,很大的文件等等,這個(gè)寫(xiě)操作過(guò)程,如果有寫(xiě)cache存在,并且算法沒(méi)有問(wèn)題的 話(huà),raid5比raid10甚至?xí)靡恍ㄟ@里要假定存儲(chǔ)有一定大小足夠的寫(xiě)cache,而且計(jì)算校驗(yàn)的cpu不會(huì)出現(xiàn)瓶頸)。因?yàn)檫@個(gè)時(shí)候的校驗(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è)鏡相。
但是,我前面也說(shuō)過(guò)了,寫(xiě)cache是可以緩存寫(xiě)操作的,等到一定時(shí)期再寫(xiě)到磁盤(pán),但是,寫(xiě)操作不比讀操作,這個(gè)寫(xiě)是遲早也要發(fā)生的,也就是說(shuō),最后落到磁盤(pán)上的寫(xiě)還是避免不了的,不過(guò),如果不是連續(xù)性的強(qiáng)連續(xù)寫(xiě),只要不達(dá)到磁盤(pán)的寫(xiě)極限,差別都不是太大。
?
3、離散寫(xiě)
這里可能是最難理解,但是,也是最重要的部分,數(shù)據(jù)庫(kù),如oracle 數(shù)據(jù)庫(kù)大部分操作就是離散寫(xiě),如每次寫(xiě)一個(gè)數(shù)據(jù)塊的數(shù)據(jù),如8K;聯(lián)機(jī)日志雖然看起來(lái)是連續(xù)寫(xiě),但是因?yàn)槊看螌?xiě)的量不多,不保證能添滿(mǎn)raid5的一個(gè)條 帶(保證每張盤(pán)都能寫(xiě)入),所以很多時(shí)候也是離散寫(xiě)入。
我們?cè)俳由蠄D,假定要把一個(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ì)性能的提升由為重要。曾經(jīng)測(cè)試過(guò),在raid5的陣列中,如果關(guān)閉寫(xiě)cache,raid5的性能將差很多倍。
?
這里,并不是說(shuō)cache對(duì)raid10就不重要了,因?yàn)閷?xiě)緩沖,讀命中等,都是提高速度的關(guān)鍵所在,不過(guò)的是,raid10對(duì)cache的依賴(lài)性沒(méi)有raid5那么明顯而已。
?
到這里,大家應(yīng)當(dāng)也大致明白了raid5與raid10的原理與差別了,一般來(lái)說(shuō),象小io的數(shù)據(jù)庫(kù)類(lèi)型操作,建議采用raid10,而大型文件存儲(chǔ),數(shù)據(jù)倉(cāng)庫(kù),則從空間利用的角度,可以采用raid5。
已有 0 人發(fā)表留言,猛擊->>這里<<-參與討論
JavaEye推薦
- 加入阿里巴巴,發(fā)展?jié)摿o(wú)限
- 上海: 巨人網(wǎng)絡(luò)誠(chéng)聘Java, JS, 網(wǎng)頁(yè)游戲工程師
- 浙江:百世物流科技有限公司誠(chéng)聘資深Java工程師