RAID5和RAID10,哪一種RAID更適合你

【IT168 專稿】2007-06-12html

存儲是目前IT產業發展的一大熱點,而RAID技術是構造高性能、海量存儲的基礎技術,也是構建網絡存儲的基礎技術。專家認爲,磁盤陣列的性能優點得益於磁盤運行的並行性,提升設備運行並行度能夠提升磁盤的性能和數據安全性。前端

   20年來,RAID 推出了一系列級別,包括RAID 0、RAID 一、RAID 二、RAID 三、RAID四、RAID 5,以及各類組合如 RAID 0+1 等。其中最普遍的包括RAID5與RAID10。可是一直以來,關於RAID5與RAID10的性能優劣的爭端仍是很是多的,甚至不少人包括不少公司都那拿出了測試數據。而這些測試數據複雜難懂相互矛盾,更加讓用戶感到迷惑,不知道如何選擇。算法

   在這裏,我將就這兩種RAID的內部運行原理來分析一下,看看咱們在什麼狀況下應當適合選哪種RAID方式。根據個人經驗與分析:象小io的數據庫類型操做,如ERP等等應用,建議採用RAID10,而大型文件存儲,數據倉庫,如醫療PACS系統、視頻編輯系統則從空間利用的角度,建議採用RAID5。下面請看詳細的性能對比:數據庫

   本文分爲上下兩篇,上文側重分析兩種RAID的內部運行原理,下文將根據不一樣的影響磁盤性能的因素來分析,RAID方案對磁盤系統的影響,參考「RAID5和RAID10,哪一種RAID更適合你(下)後端

   爲了方便對比,我這裏拿一樣多驅動器的磁盤來作對比,RAID5選擇3D+1P的RAID方案,RAID10選擇2D+2D的Raid方案,分別如圖:
緩存

2007612105446.jpg


   那麼,咱們分析以下三個過程:讀,連續寫,隨機寫,可是,在介紹這三個過程以前,我須要介紹另一個磁盤陣列中的重要概念:cache。安全

磁盤讀寫速度的關鍵之一:Cache網絡

   cache技術最近幾年,在磁盤存儲技術上,發展的很是迅速,做爲高端存儲,cache已是整個存儲的核心所在,就是中低端存儲,也有很大的cache存在,包括最簡單的RAID卡,通常都包含有幾十,甚至幾百兆的RAID cache。架構

   cache的主要做用是什麼呢?做爲緩存,cache的做用具體體如今讀與寫兩個不一樣的方面:做爲寫,通常存儲陣列只要求數據寫到cache就算完成了寫操做,當寫cache的數據積累到必定程度,陣列才把數據刷到磁盤,能夠實現批量的寫入。因此,陣列的寫是很是快速的。至於cache數據的保護,通常都依賴於鏡相與電池(或者是UPS)。oracle

   cache在讀數據方面的做用同樣不可忽視,由於若是所須要讀取的數據能在cache中命中的話,將大大減小磁盤尋道所須要的時間。由於磁盤從開始尋道到找到數據,通常都在6ms以上,而這個時間,對於那些密集型I/O的應用可能不是太理想。可是,若是能在cache保存的數據中命中,通常響應時間則能夠縮短在1ms之內。

不要迷信存儲廠商的IOPS(每秒的io數)數據,他們可能所有在cache命中的基礎上作到的,可是實際上,你的cache命中率可能只有10%。

   介紹完cache,咱們就能夠解釋RAID5與RAID10在不一樣的模式下,工做效率問題了,那麼咱們來分別分析讀操做、連續寫和離散寫三方面的問題

讀操做方面的性能差別
   如我上文的介紹,磁盤陣列讀操做的關鍵更多的體如今cache的命中率上。因此,RAID5和RAID10在讀數據上面,他們基本是沒有差異的,除非是讀的數據能影響cache命中率,致使命中率不同。

2007612105546.jpg

連續寫方面的性能差別
   連續寫的過程,通常表示寫入連續的大批量的數據,如媒體數據流,很大的文件等等。連續寫操做大多數產生於醫療PACS系統、高教圖書館系統、視頻編輯系統等等應用環境下。

   根據我本人的經驗,在連續寫操做過程,若是有寫cache存在,而且算法沒有問題的話,RAID5比RAID10甚至會更好一些,雖然也許並無太大的差異。(這裏要假定存儲有必定大小足夠的寫cache,並且計算校驗的cpu不會出現瓶頸)。

   由於這個時候的RAID校驗是在cache中完成,如4塊盤的RAID5,能夠先在內存中計算好校驗,同時寫入3個數據+1個校驗。而RAID10只能同時寫入2個數據+2個鏡相。

2007612105639.jpg

   如上圖所示,4塊盤的RAID5能夠在同時間寫入一、二、3到cache,而且在cache計算好校驗以後,我這裏假定是6(實際的校驗計算並非這樣的,我這裏僅僅是假設),同時把三個數據寫到磁盤。而4塊盤的RAID10無論cache是否存在,寫的時候,都是同時寫2個數據與2個鏡相。

   根據我前面對緩存原理的介紹,寫cache是能夠緩存寫操做的,等到緩存寫數據積累到必定時期再寫到磁盤。可是,寫到磁盤陣列的過程是早晚也要發生的,因此RAID5與RAID10在連續寫的狀況下,從緩存到磁盤的寫操做速度會有較小的區別。不過,若是不是連續性的強連續寫,只要不達到磁盤的寫極限,差異並非太大。

離散寫方面的性能差別
   這裏可能會較難理解,可是,這一部分也是最重要的部分。企業中的絕大部分數據庫應用,如ERP系統等等在數據寫入的時候其實都是離散寫。

   例如oracle 數據庫每次寫一個數據塊的數據,如8K;因爲每次寫入的量不是很大,並且寫入的次數很是頻繁,所以聯機日誌看起來會像是連續寫。可是由於不保證可以添滿RAID5的一個條帶(保證每張盤都能寫入),因此不少時候更加偏向於離散寫入。

2007612105930.jpg


   咱們從上圖看一下離散寫的時候,RAID5與RAID10工做方式有什麼不一樣。如上圖:咱們假定要把一個數字2變成數字4,那麼對於RAID5,實際發生了4次io:
   先讀出2與校驗6,可能發生讀命中
   而後在cache中計算新的校驗
   寫入新的數字4與新的校驗8

   如上圖咱們能夠看到:對於RAID10,一樣的單個操做,最終RAID10只須要2個io,而RAID5須要4個io。

   這裏我忽略了RAID5在那兩個讀操做的時候,可能會發生讀命中操做的狀況。也就是說,若是須要讀取的數據已經在cache中,多是不須要4個io的。這也證實了cache對RAID5 的重要性,不只僅是計算校驗須要,並且對性能的提高尤其重要。我本人曾經測試過,在RAID5的陣列中,若是關閉寫cache,RAID5的性能將差不少倍。

   固然,我並非說cache對RAID10就不重要了,由於寫緩衝,讀命中等,都是提升速度的關鍵所在,不過的是,RAID10對cache的依賴性沒有RAID5那麼明顯而已。

   到這裏,你們應當也大體明白了RAID5與RAID10的原理與差異了,通常來講,象小io的數據庫類型操做,建議採用RAID10,而大型文件存儲,數據倉庫,則從空間利用的角度,能夠採用RAID5。

   在本文下篇,咱們將進一步分析影響磁盤性能的不一樣因素,並分析不一樣的RAID方案對磁盤系統的影響,清參考「RAID5和RAID10,哪一種RAID更適合你(下)

陣列的瓶頸主要體如今2個方面,帶寬與IOPS(單位時間傳輸的數據量,和單位時間完成的I/O數)。

影響帶寬的主要因素

   存儲系統的帶寬主要取決於陣列的構架,光纖通道的大小(咱們今天討論的陣列通常都是光纖陣列, SCSI這樣的SSA陣列,暫時不在討論範圍之列)以及硬盤的個數。

   所謂陣列構架影響存儲系統帶寬,指的是存儲系統內部架構會存在一些內部帶寬,相似於PC的系統總線,儘管陣列的構架因不一樣廠商不一樣型號的產品而各有不一樣,不過通常狀況下,內部帶寬都設計的很充足,不會是瓶頸的所在。

   光纖通道對帶寬的影響仍是比較大的,例如數據倉庫環境中,對數據的流量要求很大,而一塊2Gb的光纖卡,所能支撐的最大流量應當是2GB/8=250Mb/s的實際流量,必須配備4塊光纖卡才能達到1Gb/s的實際流量,因此對於數據倉庫的環境來講,升級到光纖4Gb並不是是廠商過於超前的產品更新,在大流量的數據環境下絕對有必要考慮更換4GB的光纖卡。

   可是對於存儲系統的帶寬來講,硬盤接口的帶寬限制是最重要的。當前面的瓶頸再也不存在的時候,帶寬就徹底取決於硬盤的個數了,我下面列一下不一樣規格的硬盤所能支撐的流量大小,數據取自硬盤廠商的標準參數:

2007628115614.jpg

   若是咱們假定一個陣列有120塊15K rpm轉速的光纖硬盤,那麼硬盤上最大的能夠支撐的數據流量爲120*13=1560Mb/s,當前端接口不成爲瓶頸的時候,1560Mb/s就是理論上的最×××量。

   而若是要實現上述的最大帶寬,若是前端採用2GB的光纖卡,可能須要配置6塊纔可以,而4GB的光纖卡,配置3-4塊就夠了。所以咱們能夠知道,前端的光纖接口必須與後端磁盤個數相匹配。

   可是否考慮到這些因素就足夠了呢,存儲系統的總體性能還受到多方面因素的影響,下面咱們將分析存儲系統的另一個重要的性能指標:IOPS。

影響IOPS的主要因素

   咱們前面已經說過了,廠商所提供的IOPS值是在理想狀態下測試出來的,對實際的運行性能的參考並不大,因此咱們有必要經過如下幾個方面來衡量該系統的實際IOPS的可能表現。

   決定IOPS的主要因素取決於陣列的算法,cache命中率,以及磁盤個數。

   陣列的算法也由於不一樣廠商不一樣型號的產品而不一樣,如咱們最近遇到在HDS USP上面,可能由於ldev(lun)存在隊列或者資源限制,而單個ldev的IOPS就上不去。因此,決定採購某型號的存儲以前,有必要了解這個存儲的一些算法規則與限制。

   cache命中率對實際IOPS有決定性的影響,Cache命中率取決於數據的分佈,cache size的大小,數據訪問的規則,以及cache的算法,若是完整的討論下來,這裏將變得很複雜,能夠有一天來慢慢討論。

   咱們這裏把這些內部原理都省略掉,只強調:對於一個存儲陣列來講,讀cache的命中率越高,通常就表示它能夠支持更多的IOPS,爲何這麼說呢?這個就與咱們下面要討論的硬盤IOPS有關係了。

   每一個物理硬盤能處理的IOPS是有限制的,如

2007628115727.jpg

   一樣,若是一個陣列有120塊15K rpm轉速的光纖硬盤,那麼,它能支撐的最大IOPS爲120*150=18000,這個爲硬件限制的理論值,若是超過這個值,硬盤的響應可能會變的很是緩慢而不能正常提供業務。較高的讀cache命中率,能下降硬盤的IOPS負荷,讓硬盤在較小的壓力下良好工做。

在咱們的上一篇文章「RAID5和RAID10,哪一種RAID適合你()中曾經討論過,在RAID5與RAID10的不一樣機制上,讀數據時,IOPS性能其實沒有差異。可是,相同的業務,在寫入數據時,採用不一樣的RAID機制最終落在磁盤上的IOPS是有差異的,咱們評估的正是磁盤的總體IOPS,若是達到了磁盤的限制,性能確定是上不去了。

   那咱們假定一個case,業務應用的IOPS是10000,讀cache命中率是30%,讀IOPS爲60%,寫IOPS爲40%,磁盤個數爲120,那麼分別計算在RAID5與RAID10的狀況下,每一個磁盤的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命中,實際只有4200個讀IOPS。

   而4 * (10000*0.4) 表示寫的IOPS,由於每個寫,在RAID5中,實際發生了4個io,因此寫的IOPS爲16000個。

   爲了考慮RAID5在寫操做的時候,那2個讀操做也可能發生命中,因此更精確的計算應該爲:
   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

   這樣咱們計算出來單個盤的IOPS爲148個,基本達到磁盤IOPS極限,在這種狀況下,磁盤的工做狀態是很是不理想的。

RAID10對IOPS性能的影響
   1. 單塊盤的IOPS = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120
   2.              = (4200 + 8000)/120
   3.              = 102

   能夠看到,由於RAID10對於一個寫操做,只發生2次io,因此,一樣的壓力,一樣的磁盤,每一個盤的IOPS只有102個,還遠遠低於磁盤的極限IOPS。

   這裏回到咱們先前討論的case上來,在咱們先前採用RAID5的時候,經過分析,每一個磁盤的IOPS在高峯時期,快達到200了,致使響應速度巨慢無比。改形成RAID10,每一個磁盤的IOPS降到100左右,很好的避免了這個性能問題。

   所以,綜合本文的上篇「RAID5和RAID10,哪一種RAID適合你」,咱們能夠得出結論:

影響讀數據的關鍵因素是cache命中率,在讀數據的狀況下,RAID5與RAID10性能自己沒有太大差異。可是對於寫數據的一些應用,尤爲是小I/O頻繁寫入的一些應用,如企業ERP生產系統等等,RAID10相比RAID5可能產生較大的性能差別。而大型文件存儲,數據倉庫,如醫療PACS系統、視頻編輯系統則從空間利用的角度,建議採用RAID5。

相關文章
相關標籤/搜索