RAID10與RAID5比較[轉(zhuǎn)]
http://storage.it168.com/h/2007-06-12/200706121108656_2.shtml
??? 存儲(chǔ)是目前IT產(chǎn)業(yè)發(fā)展的一大熱點(diǎn),而RAID技術(shù)是構(gòu)造高性能、海量存儲(chǔ)的基礎(chǔ)技術(shù),也是構(gòu)建網(wǎng)絡(luò)存儲(chǔ)的基礎(chǔ)技術(shù)。專家認(rèn)為,磁盤陣列的性能優(yōu)勢(shì)得益于磁盤運(yùn)行的并行性,提高設(shè)備運(yùn)行并行度可以提高磁盤的性能和數(shù)據(jù)安全性。
??? 20年來(lái),RAID 推出了一系列級(jí)別,包括RAID 0、RAID 1、RAID 2、RAID 3、RAID4、RAID 5,以及各種組合如 RAID 0+1 等。其中最廣泛的包括RAID5與RAID10。但是一直以來(lái),關(guān)于RAID5與RAID10的性能優(yōu)劣的爭(zhēng)端還是非常多的,甚至很多人包括很多公司都那拿出了測(cè)試數(shù)據(jù)。而這些測(cè)試數(shù)據(jù)復(fù)雜難懂相互矛盾,更加讓用戶感到迷惑,不知道如何選擇。
??? 在這里,我將就這兩種RAID的內(nèi)部運(yùn)行原理來(lái)分析一下,看看我們?cè)谑裁辞闆r下應(yīng)當(dāng)適合選哪一種RAID方式。根據(jù)我的經(jīng)驗(yàn)與分析:象小io的數(shù)據(jù)庫(kù)類型操作,如ERP等等應(yīng)用,建議采用RAID10,而大型文件存儲(chǔ),數(shù)據(jù)倉(cāng)庫(kù),如醫(yī)療PACS系統(tǒng)、視頻編輯系統(tǒng)則從空間利用的角度,建議采用RAID5。下面請(qǐng)看詳細(xì)的性能對(duì)比:
??? 本文分為上下兩篇,上文側(cè)重分析兩種RAID的內(nèi)部運(yùn)行原理,下文將根據(jù)不同的影響磁盤性能的因素來(lái)分析,RAID方案對(duì)磁盤系統(tǒng)的影響,參考“ RAID5和RAID10,哪種RAID更適合你(下) ”
??? 為了方便對(duì)比,我這里拿同樣多驅(qū)動(dòng)器的磁盤來(lái)做對(duì)比,RAID5選擇3D+1P的RAID方案,RAID10選擇2D+2D的Raid方案,分別如圖:
?
???
??? 那么,我們分析如下三個(gè)過(guò)程:讀,連續(xù)寫,隨機(jī)寫,但是,在介紹這三個(gè)過(guò)程之前,我需要介紹另外一個(gè)磁盤陣列中的重要概念:cache。
?
磁盤讀寫速度的關(guān)鍵之一:Cache
??? cache技術(shù)最近幾年,在磁盤存儲(chǔ)技術(shù)上,發(fā)展的非常迅速,作為高端存儲(chǔ),cache已經(jīng)是整個(gè)存儲(chǔ)的核心所在,就是中低端存儲(chǔ),也有很大的cache存在,包括最簡(jiǎn)單的RAID卡,一般都包含有幾十,甚至幾百兆的RAID cache。
??? cache的主要作用是什么呢?作為緩存,cache的作用具體體現(xiàn)在讀與寫兩個(gè)不同的方面:作為寫,一般存儲(chǔ)陣列只要求數(shù)據(jù)寫到cache就算完成了寫操作,當(dāng)寫cache的數(shù)據(jù)積累到一定程度,陣列才把數(shù)據(jù)刷到磁盤,可以實(shí)現(xiàn)批量的寫入。所以,陣列的寫是非常快速的。至于cache數(shù)據(jù)的保護(hù),一般都依賴于鏡相與電池(或者是UPS)。
??? cache在讀數(shù)據(jù)方面的作用一樣不可忽視,因?yàn)槿绻枰x取的數(shù)據(jù)能在cache中命中的話,將大大減少磁盤尋道所需要的時(shí)間。因?yàn)榇疟P從開(kāi)始尋道到找到數(shù)據(jù),一般都在6ms以上,而這個(gè)時(shí)間,對(duì)于那些密集型I/O的應(yīng)用可能不是太理想。但是,如果能在cache保存的數(shù)據(jù)中命中,一般響應(yīng)時(shí)間則可以縮短在1ms以內(nèi)。
??? 不要迷信存儲(chǔ)廠商的IOPS(每秒的io數(shù))數(shù)據(jù),他們可能全部在cache命中的基礎(chǔ)上做到的,但是實(shí)際上,你的cache命中率可能只有10%。
??? 介紹完cache,我們就可以解釋RAID5與RAID10在不同的模式下,工作效率問(wèn)題了,那么我們來(lái)分別分析讀操作、連續(xù)寫和離散寫三方面的問(wèn)題。
?
讀操作方面的性能差異
??? 如我上文的介紹,磁盤陣列讀操作的關(guān)鍵更多的體現(xiàn)在cache的命中率上。所以,RAID5和RAID10在讀數(shù)據(jù)上面,他們基本是沒(méi)有差別的,除非是讀的數(shù)據(jù)能影響cache命中率,導(dǎo)致命中率不一樣。
???
?
連續(xù)寫方面的性能差異
??? 連續(xù)寫的過(guò)程,一般表示寫入連續(xù)的大批量的數(shù)據(jù),如媒體數(shù)據(jù)流,很大的文件等等。連續(xù)寫操作大多數(shù)產(chǎn)生于醫(yī)療PACS系統(tǒng)、高教圖書(shū)館系統(tǒng)、視頻編輯系統(tǒng)等等應(yīng)用環(huán)境下。
??? 根據(jù)我本人的經(jīng)驗(yàn),在連續(xù)寫操作過(guò)程,如果有寫cache存在,并且算法沒(méi)有問(wèn)題的話,RAID5比RAID10甚至?xí)靡恍m然也許并沒(méi)有太大的差別。(這里要假定存儲(chǔ)有一定大小足夠的寫cache,而且計(jì)算校驗(yàn)的cpu不會(huì)出現(xiàn)瓶頸)。
??? 因?yàn)檫@個(gè)時(shí)候的RAID校驗(yàn)是在cache中完成,如4塊盤的RAID5,可以先在內(nèi)存中計(jì)算好校驗(yàn),同時(shí)寫入3個(gè)數(shù)據(jù)+1個(gè)校驗(yàn)。而RAID10只能同時(shí)寫入2個(gè)數(shù)據(jù)+2個(gè)鏡相。
???
??? 如上圖所示,4塊盤的RAID5可以在同時(shí)間寫入1、2、3到cache,并且在cache計(jì)算好校驗(yàn)之后,我這里假定是6(實(shí)際的校驗(yàn)計(jì)算并不是這樣的,我這里僅僅是假設(shè)),同時(shí)把三個(gè)數(shù)據(jù)寫到磁盤。而4塊盤的RAID10不管cache是否存在,寫的時(shí)候,都是同時(shí)寫2個(gè)數(shù)據(jù)與2個(gè)鏡相。
??? 根據(jù)我前面對(duì)緩存原理的介紹,寫cache是可以緩存寫操作的,等到緩存寫數(shù)據(jù)積累到一定時(shí)期再寫到磁盤。但是,寫到磁盤陣列的過(guò)程是遲早也要發(fā)生的,所以RAID5與RAID10在連續(xù)寫的情況下,從緩存到磁盤的寫操作速度會(huì)有較小的區(qū)別。不過(guò),如果不是連續(xù)性的強(qiáng)連續(xù)寫,只要不達(dá)到磁盤的寫極限,差別并不是太大。
?
離散寫方面的性能差異
??? 這里可能會(huì)較難理解,但是,這一部分也是最重要的部分。企業(yè)中的絕大部分?jǐn)?shù)據(jù)庫(kù)應(yīng)用,如ERP系統(tǒng)等等在數(shù)據(jù)寫入的時(shí)候其實(shí)都是離散寫。
??? 例如oracle 數(shù)據(jù)庫(kù)每次寫一個(gè)數(shù)據(jù)塊的數(shù)據(jù),如8K;由于每次寫入的量不是很大,而且寫入的次數(shù)非常頻繁,因此聯(lián)機(jī)日志看起來(lái)會(huì)像是連續(xù)寫。但是因?yàn)椴槐WC能夠添滿RAID5的一個(gè)條帶(保證每張盤都能寫入),所以很多時(shí)候更加偏向于離散寫入。
???
??? 我們從上圖看一下離散寫的時(shí)候,RAID5與RAID10工作方式有什么不同。如上圖:我們假定要把一個(gè)數(shù)字2變成數(shù)字4,那么對(duì)于RAID5,實(shí)際發(fā)生了4次io:
??? 先讀出2與校驗(yàn)6,可能發(fā)生讀命中
??? 然后在cache中計(jì)算新的校驗(yàn)
??? 寫入新的數(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)閉寫cache,RAID5的性能將差很多倍。
??? 當(dāng)然,我并不是說(shuō)cache對(duì)RAID10就不重要了,因?yàn)閷懢彌_,讀命中等,都是提高速度的關(guān)鍵所在,不過(guò)的是,RAID10對(duì)cache的依賴性沒(méi)有RAID5那么明顯而已。
??? 到這里,大家應(yīng)當(dāng)也大致明白了RAID5與RAID10的原理與差別了,一般來(lái)說(shuō),象小io的數(shù)據(jù)庫(kù)類型操作,建議采用RAID10,而大型文件存儲(chǔ),數(shù)據(jù)倉(cāng)庫(kù),則從空間利用的角度,可以采用RAID5。
??? 在本文下篇,我們將進(jìn)一步分析影響磁盤性能的不同因素,并分析不同的RAID方案對(duì)磁盤系統(tǒng)的影響,清參考“ RAID5和RAID10,哪種RAID更適合你(下) ”
?
-------------------------------------------------------------------------------------------------------------------------
?
??? 前一段時(shí)間我寫過(guò)一篇文章“ RAID5和RAID10,哪種RAID適合你 ”,主要從磁盤系統(tǒng)的內(nèi)部運(yùn)行細(xì)節(jié)分析了RAID5與RAID10的異同,以及各自適用的范圍。本文將接續(xù)上篇,繼續(xù)從RAID原理來(lái)分析存儲(chǔ)系統(tǒng)的瓶頸。
??? 我們知道,在存儲(chǔ)系統(tǒng)的采購(gòu)過(guò)程中,廠商往往能夠提供漂亮的性能參數(shù),但實(shí)際運(yùn)行中,該系統(tǒng)的實(shí)際性能表現(xiàn)并不能達(dá)到我們所期望的狀態(tài),那么在運(yùn)行環(huán)境中存儲(chǔ)系統(tǒng)的實(shí)際性能究竟受哪些環(huán)節(jié)和瓶頸的影響呢?
???
??? 之所以要和大家來(lái)討論這個(gè)問(wèn)題,是因?yàn)樵诒救说墓ぷ髦性龅揭粋€(gè)實(shí)際的Case,在這個(gè)case中,一個(gè)恢復(fù)壓力很大的standby(這里主要是寫,而且是小io的寫),采用了RAID5的方案,發(fā)現(xiàn)性能很差,后來(lái)改造成了RAID10,就很好的避免了性能的問(wèn)題。
??? 建議在閱讀本文前,首先閱讀本文上篇“ RAID5和RAID10,哪種RAID適合你 ”,因?yàn)樾阅芷款i的出現(xiàn),本身與RAID方式還是有很大關(guān)系,同時(shí)本文性能討論的基礎(chǔ),本身建立在上文的一些結(jié)論之上。
??? 陣列的瓶頸主要體現(xiàn)在2個(gè)方面,帶寬與IOPS(單位時(shí)間傳輸?shù)臄?shù)據(jù)量,和單位時(shí)間完成的I/O數(shù))。
?
影響帶寬的主要因素
??? 存儲(chǔ)系統(tǒng)的帶寬主要取決于陣列的構(gòu)架,光纖通道的大小(我們今天討論的陣列一般都是光纖陣列, SCSI這樣的SSA陣列,暫時(shí)不在討論范圍之列)以及硬盤的個(gè)數(shù)。
??? 所謂陣列構(gòu)架影響存儲(chǔ)系統(tǒng)帶寬,指的是存儲(chǔ)系統(tǒng)內(nèi)部架構(gòu)會(huì)存在一些內(nèi)部帶寬,類似于PC的系統(tǒng)總線,盡管陣列的構(gòu)架因不同廠商不同型號(hào)的產(chǎn)品而各有不同,不過(guò)一般情況下,內(nèi)部帶寬都設(shè)計(jì)的很充足,不會(huì)是瓶頸的所在。
??? 光纖通道對(duì)帶寬的影響還是比較大的,例如數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中,對(duì)數(shù)據(jù)的流量要求很大,而一塊2Gb的光纖卡,所能支撐的最大流量應(yīng)當(dāng)是2GB/8=250Mb/s的實(shí)際流量,必須配備4塊光纖卡才能達(dá)到1Gb/s的實(shí)際流量,所以對(duì)于數(shù)據(jù)倉(cāng)庫(kù)的環(huán)境來(lái)說(shuō),升級(jí)到光纖4Gb并非是廠商過(guò)于超前的產(chǎn)品更新,在大流量的數(shù)據(jù)環(huán)境下絕對(duì)有必要考慮更換4GB的光纖卡。
??? 但是對(duì)于存儲(chǔ)系統(tǒng)的帶寬來(lái)說(shuō),硬盤接口的帶寬限制是最重要的。當(dāng)前面的瓶頸不再存在的時(shí)候,帶寬就完全取決于硬盤的個(gè)數(shù)了,我下面列一下不同規(guī)格的硬盤所能支撐的流量大小,數(shù)據(jù)取自硬盤廠商的標(biāo)準(zhǔn)參數(shù):
???
??? 如果我們假定一個(gè)陣列有120塊15K rpm轉(zhuǎn)速的光纖硬盤,那么硬盤上最大的可以支撐的數(shù)據(jù)流量為120*13=1560Mb/s,當(dāng)前端接口不成為瓶頸的時(shí)候,1560Mb/s就是理論上的最大數(shù)據(jù)流量。
??? 而如果要實(shí)現(xiàn)上述的最大帶寬,如果前端采用2GB的光纖卡,可能需要配置6塊才能夠,而4GB的光纖卡,配置3-4塊就夠了。因此我們可以知道,前端的光纖接口必須與后端磁盤個(gè)數(shù)相匹配。
??? 但是否考慮到這些因素就足夠了呢,存儲(chǔ)系統(tǒng)的整體性能還受到多方面因素的影響,下面我們將分析存儲(chǔ)系統(tǒng)的另外一個(gè)重要的性能指標(biāo):IOPS。
?
影響IOPS的主要因素
??? 我們前面已經(jīng)說(shuō)過(guò)了,廠商所提供的IOPS值是在理想狀態(tài)下測(cè)試出來(lái)的,對(duì)實(shí)際的運(yùn)行性能的參考并不大,所以我們有必要通過(guò)以下幾個(gè)方面來(lái)衡量該系統(tǒng)的實(shí)際IOPS的可能表現(xiàn)。
??? 決定IOPS的主要因素取決于陣列的算法,cache命中率,以及磁盤個(gè)數(shù)。
??? 陣列的算法也因?yàn)椴煌瑥S商不同型號(hào)的產(chǎn)品而不同,如我們最近遇到在HDS USP上面,可能因?yàn)閘dev(lun)存在隊(duì)列或者資源限制,而單個(gè)ldev的IOPS就上不去。所以,決定采購(gòu)某型號(hào)的存儲(chǔ)之前,有必要了解這個(gè)存儲(chǔ)的一些算法規(guī)則與限制。
??? cache命中率對(duì)實(shí)際IOPS有決定性的影響,Cache命中率取決于數(shù)據(jù)的分布,cache size的大小,數(shù)據(jù)訪問(wèn)的規(guī)則,以及cache的算法,如果完整的討論下來(lái),這里將變得很復(fù)雜,可以有一天來(lái)慢慢討論。
??? 我們這里把這些內(nèi)部原理都省略掉,只強(qiáng)調(diào):對(duì)于一個(gè)存儲(chǔ)陣列來(lái)說(shuō),讀cache的命中率越高,一般就表示它可以支持更多的IOPS,為什么這么說(shuō)呢?這個(gè)就與我們下面要討論的硬盤IOPS有關(guān)系了。
??? 每個(gè)物理硬盤能處理的IOPS是有限制的,如
???
??? 同樣,如果一個(gè)陣列有120塊15K rpm轉(zhuǎn)速的光纖硬盤,那么,它能支撐的最大IOPS為120*150=18000,這個(gè)為硬件限制的理論值,如果超過(guò)這個(gè)值,硬盤的響應(yīng)可能會(huì)變的非常緩慢而不能正常提供業(yè)務(wù)。較高的讀cache命中率,能降低硬盤的IOPS負(fù)荷,讓硬盤在較小的壓力下良好工作。
?
不同RAID對(duì)IOPS性能的影響
??? 在我們的上一篇文章“ RAID5和RAID10,哪種RAID適合你 (上)”中曾經(jīng)討論過(guò),在RAID5與RAID10的不同機(jī)制上,讀數(shù)據(jù)時(shí),IOPS性能其實(shí)沒(méi)有差別。但是,相同的業(yè)務(wù),在寫入數(shù)據(jù)時(shí),采用不同的RAID機(jī)制最終落在磁盤上的IOPS是有差別的,我們?cè)u(píng)估的正是磁盤的整體IOPS,如果達(dá)到了磁盤的限制,性能肯定是上不去了。
??? 那我們假定一個(gè)case,業(yè)務(wù)應(yīng)用的IOPS是10000,讀cache命中率是30%,讀IOPS為60%,寫IOPS為40%,磁盤個(gè)數(shù)為120,那么分別計(jì)算在RAID5與RAID10的情況下,每個(gè)磁盤的IOPS為多少。
??? RAID5:
??? 1. 單塊盤的IOPS = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120
??? 2.???????????? = (4200 + 16000)/120
??? 3.???????????? = 168
??? 這里的10000*(1-0.3)*0.6表示是讀的IOPS,比例是0.6,除掉cache命中,實(shí)際只有4200個(gè)讀IOPS。
??? 而4 * (10000*0.4) 表示寫的IOPS,因?yàn)槊恳粋€(gè)寫,在RAID5中,實(shí)際發(fā)生了4個(gè)io,所以寫的IOPS為16000個(gè)。
??? 為了考慮RAID5在寫操作的時(shí)候,那2個(gè)讀操作也可能發(fā)生命中,所以更精確的計(jì)算應(yīng)該為:
??? 1. 單塊盤的IOPS = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120
??? 2.???????????? = (4200 + 5600 + 8000)/120
??? 3.???????????? = 148
??? 這樣我們計(jì)算出來(lái)單個(gè)盤的IOPS為148個(gè),基本達(dá)到磁盤IOPS極限,在這種情況下,磁盤的工作狀態(tài)是非常不理想的。
???
RAID10對(duì)IOPS性能的影響
??? 1. 單塊盤的IOPS = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120
??? 2.???????????? = (4200 + 8000)/120
??? 3.???????????? = 102
??? 可以看到,因?yàn)镽AID10對(duì)于一個(gè)寫操作,只發(fā)生2次io,所以,同樣的壓力,同樣的磁盤,每個(gè)盤的IOPS只有102個(gè),還遠(yuǎn)遠(yuǎn)低于磁盤的極限IOPS。
??? 這里回到我們先前討論的case上來(lái),在我們先前采用RAID5的時(shí)候,通過(guò)分析,每個(gè)磁盤的IOPS在高峰時(shí)期,快達(dá)到200了,導(dǎo)致響應(yīng)速度巨慢無(wú)比。改造成RAID10,每個(gè)磁盤的IOPS降到100左右,很好的避免了這個(gè)性能問(wèn)題。
??? 因此,綜合本文的上篇“ RAID5和RAID10,哪種RAID適合你 ”,我們可以得出結(jié)論:
??? 影響讀數(shù)據(jù)的關(guān)鍵因素是cache命中率,在讀數(shù)據(jù)的情況下,RAID5與RAID10性能本身沒(méi)有太大差別。但是對(duì)于寫數(shù)據(jù)的一些應(yīng)用,尤其是小I/O頻繁寫入的一些應(yīng)用,如企業(yè)ERP生產(chǎn)系統(tǒng)等等,RAID10相比RAID5可能產(chǎn)生較大的性能差異。而大型文件存儲(chǔ),數(shù)據(jù)倉(cāng)庫(kù),如醫(yī)療PACS系統(tǒng)、視頻編輯系統(tǒng)則從空間利用的角度,建議采用RAID5。
?