RAID5和RAID10,哪種RAID更適合你(下)

本文將接續上篇,繼續從RAID原理來分析存儲系統的瓶頸。

    我們知道,在存儲系統的採購過程中,廠商往往能夠提供漂亮的性能參數,但實際運行中,該系統的實際性能表現並不能達到我們所期望的狀態,那麼在運行環境中存儲系統的實際性能究竟受哪些環節和瓶頸的影響呢?

200762811544.jpg

    之所以要和大家來討論這個問題,是因爲在本人的工作中曾遇到一個實際的Case,在這個case中,一個恢復壓力很大的standby(這裏主要是寫,而且是小io的寫),採用了RAID5的方案,發現性能很差,後來改造成了RAID10,就很好的避免了性能的問題。

    建議在閱讀本文前,首先閱讀本文上篇“RAID5和RAID10,哪種RAID適合你”,因爲性能瓶頸的出現,本身與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負荷,讓硬盤在較小的壓力下良好工作。

不同RAID對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。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章