天天看點

raid5和raid10 哪種适合你(2)

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

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

   之是以要和大家來讨論這個問題,是因為在本人的工作中曾遇到一個實際的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的光纖卡。

    但是對于存儲系統的帶寬來說,硬碟接口的帶寬限制是最重要的。目前面的瓶頸不再存在的時候,帶寬就完全取決于硬碟的個數了,我下面列一下不同規格的硬碟所能支撐的流量大小,資料取自硬碟廠商的标準參數:

raid5和raid10 哪種适合你(2)

    如果我們假定一個陣列有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是有限制的,如

raid5和raid10 哪種适合你(2)

    同樣,如果一個陣列有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。

繼續閱讀