關於RAID10和RAID5的認識
獨立磁碟冗餘陣列(RAID, Redundant Array of Independent Disks)簡稱磁碟陣列,其基本思想就是把多個相對便宜的硬碟組合起來,成為一個磁碟陣列組,使效能達到甚至超過一個價格昂貴、容量巨大的硬碟。根據選擇的版本不同,RAID比單顆硬碟有以下一個或多個方面的好處:增強資料整合度,增強容錯功能,增加處理量或容量。另外,磁碟陣列組對於電腦來說, 看起來就像一個單獨的硬碟或邏輯儲存單元。分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50。
簡單來說,RAID把多個硬碟組合成為一個邏輯扇區,因此,作業系統只會把它當作一個硬碟。RAID常被用在伺服器電腦上,並且常使用完全相同的硬碟作為組合。由於硬碟價格的不斷下降與RAID功能更加有效地與主機板整合,它也成為了玩家的一個選擇,特別是需要大容量儲存空間的工作,如:視訊與音訊製作。
象小io的資料庫型別操作,如ERP等等應用,建議採用RAID10,而大型檔案儲存,資料倉儲,如醫療PACS系統、視訊編輯系統則從空間利用的角度,建議採用RAID5。下面請看詳細的效能對比:
本文上部分側重分析兩種RAID的內部執行原理,下部分將根據不同的影響磁碟效能的因素來分析,RAID方案對磁碟系統的影響
為了方便對比,我這裡拿同樣多驅動器的磁碟來做對比,RAID5選擇3D+1P的RAID方案,RAID10選擇2D+2D的Raid方案,分別如圖:
那麼,我們分析如下三個過程:讀,連續寫,隨機寫,但是,在介紹這三個過程之前,我需要介紹另外一個磁碟陣列中的重要概念:cache。
磁碟讀寫速度的關鍵之一:Cache
cache技術最近幾年,在磁碟儲存技術上,發展的非常迅速,作為高階儲存,cache已經是整個儲存的核心所在,就是中低端儲存,也有很大的cache存在,包括最簡單的RAID卡,一般都包含有幾十,甚至幾百兆的RAID cache。
cache的主要作用是什麼呢?作為快取,cache的作用具體體現在讀與寫兩個不同的方面:作為寫,一般儲存陣列只要求資料寫到cache就算完成了寫操作,當寫cache的資料積累到一定程度,陣列才把資料刷到磁碟,可以實現批量的寫入。所以,陣列的寫是非常快速的。至於cache資料的保護,一般都依賴於鏡相與電池(或者是UPS)。
cache在讀資料方面的作用一樣不可忽視,因為如果所需要讀取的資料能在cache中命中的話,將大大減少磁碟尋道所需要的時間。因為磁碟從開始尋道到找到資料,一般都在6ms以上,而這個時間,對於那些密集型I/O的應用可能不是太理想。但是,如果能在cache儲存的資料中命中,一般響應時間則可以縮短在1ms以內。
不要迷信儲存廠商的IOPS(每秒的io數)資料,他們可能全部在cache命中的基礎上做到的,但是實際上,你的cache命中率可能只有10%。
介紹完cache,我們就可以解釋RAID5與RAID10在不同的模式下,工作效率問題了,那麼我們來分別分析讀操作、連續寫和離散寫三方面的問題。
讀操作方面的效能差異
如我上文的介紹,磁碟陣列讀操作的關鍵更多的體現在cache的命中率上。所以,RAID5和RAID10在讀資料上面,他們基本是沒有差別的,除非是讀的資料能影響cache命中率,導致命中率不一樣。
連續寫方面的效能差異
連續寫的過程,一般表示寫入連續的大批量的資料,如媒體資料流,很大的檔案等等。連續寫操作大多數產生於醫療PACS系統、高教圖書館系統、視訊編輯系統等等應用環境下。
根據我本人的經驗,在連續寫操作過程,如果有寫cache存在,並且演算法沒有問題的話,RAID5比RAID10甚至會更好一些,雖然也許並沒有太大的差別。(這裡要假定儲存有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。
因為這個時候的RAID校驗是在cache中完成,如4塊盤的RAID5,可以先在記憶體中計算好校驗,同時寫入3個資料+1個校驗。而RAID10只能同時寫入2個資料+2個鏡相。
如上圖所示,4塊盤的RAID5可以在同時間寫入1、2、3到cache,並且在cache計算好校驗之後,我這裡假定是6(實際的校驗計算並不是這樣的,我這裡僅僅是假設),同時把三個資料寫到磁碟。而4塊盤的RAID10不管cache是否存在,寫的時候,都是同時寫2個資料與2個鏡相。
根據我前面對快取原理的介紹,寫cache是可以快取寫操作的,等到快取寫資料積累到一定時期再寫到磁碟。但是,寫到磁碟陣列的過程是遲早也要發生的,所以RAID5與RAID10在連續寫的情況下,從快取到磁碟的寫操作速度會有較小的區別。不過,如果不是連續性的強連續寫,只要不達到磁碟的寫極限,差別並不是太大。
離散寫方面的效能差異
這裡可能會較難理解,但是,這一部分也是最重要的部分。企業中的絕大部分資料庫應用,如ERP系統等等在資料寫入的時候其實都是離散寫。
例如oracle 資料庫每次寫一個資料塊的資料,如8K;由於每次寫入的量不是很大,而且寫入的次數非常頻繁,因此聯機日誌看起來會像是連續寫。但是因為不保證能夠添滿RAID5的一個條帶(保證每張盤都能寫入),所以很多時候更加偏向於離散寫入。
我們從上圖看一下離散寫的時候,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方案對磁碟系統的影響
陣列的瓶頸主要體現在2個方面,頻寬與IOPS(單位時間傳輸的資料量,和單位時間完成的I/O數)。
影響頻寬的主要因素
儲存系統的頻寬主要取決於陣列的構架,光纖通道的大小(我們今天討論的陣列一般都是光纖陣列, SCSI這樣的SSA陣列,暫時不在討論範圍之列)以及硬碟的個數。
所謂陣列構架影響儲存系統頻寬,指的是儲存系統內部架構會存在一些內部頻寬,類似於PC的系統匯流排,儘管陣列的構架因不同廠商不同型號的產品而各有不同,不過一般情況下,內部頻寬都設計的很充足,不會是瓶頸的所在。
光纖通道對頻寬的影響還是比較大的,例如資料倉儲環境中,對資料的流量要求很大,而一塊2Gb的光纖卡,所能支撐的最大流量應當是2GB/8=250Mb/s的實際流量,必須配備4塊光纖卡才能達到1Gb/s的實際流量,所以對於資料倉儲的環境來說,升級到光纖4Gb並非是廠商過於超前的產品更新,在大流量的資料環境下絕對有必要考慮更換4GB的光纖卡。
但是對於儲存系統的頻寬來說,硬碟介面的頻寬限制是最重要的。當前面的瓶頸不再存在的時候,頻寬就完全取決於硬碟的個數了,我下面列一下不同規格的硬碟所能支撐的流量大小,資料取自硬碟廠商的標準引數:
如果我們假定一個陣列有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是有限制的,如
同樣,如果一個陣列有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左右,很好的避免了這個效能問題。
影響讀資料的關鍵因素是cache命中率,在讀資料的情況下,RAID5與RAID10效能本身沒有太大差別。但是對於寫資料的一些應用,尤其是小I/O頻繁寫入的一些應用,如企業ERP生產系統等等,RAID10相比RAID5可能產生較大的效能差異。而大型檔案儲存,資料倉儲,如醫療PACS系統、視訊編輯系統則從空間利用的角度,建議採用RAID5。
相關文章
- 關於UI設計行業的認識再到認識UI行業
- 磁碟陣列關於Raid0,Raid1,Raid5,Raid10陣列AI
- RAID10與RAID5的異同比較AI
- 關於NAND FLASH解釦的認識NaN
- 關於enqueue的一些認識ENQ
- 關於不完全型別的認識型別
- 關於 MySQL 索引的一些認識MySql索引
- 關於Inlist iterator操作的一點認識
- RAID5和RAID10在磁碟讀寫選擇對比AI
- 關於跨平臺的一些認識
- 關於洗牌演算法的錯誤認識演算法
- 關於dbms_metadata.get_ddl的認識
- 關於負載均衡的一些認識負載
- 轉載:RAID5和RAID10,哪種RAID更適合你AI
- 關於 Laravel 框架事件系統的一點認識Laravel框架事件
- 【Linux】關於bind_ip的一點認識Linux
- 關於vmware下網路卡型別的個人認識型別
- [zt]磁碟 RAID10 / RAID5 配置下的IOPS對比AI
- 關於os認證和口令檔案認證
- 重新認識“物件”和“行為”之間的關係物件
- 關於os認證和口令檔案認證(轉)
- wifi認證的相關知識WiFi
- 物件導向:關於我?認識你就知道了物件
- 關於Flume拓撲結構--Flink進階認識
- 關於shiro安全框架和shiro的認證流程框架
- 認識類和物件物件
- 消除認識誤區--關於我國MRPⅡ應用的思考(轉)
- 關於Hibernate和hql語句的相關知識點
- 關於animation和transition一點知識
- 關於Redis的常識Redis
- 掃盲:Raid0、Raid1、Raid5及Raid10的區別AI
- 關於c語言中堆、棧認識的彙總(參考論壇回帖)C語言
- oracle orion 壓測磁碟效能raid10 raid5 raid50 資料OracleAI
- 對於HOOK函式的一點認識Hook函式
- 關於ppp、PPPoE、PPTP、L2TP、IPSec協議的簡單認識pptp協議
- 關於高水位的知識
- 關於ORACLE登陸認證Oracle
- 對於HOOK函式的一點認識 (轉)Hook函式