【儲存】RAID 知識之二

楊奇龍發表於2012-11-26
      從 章中我們瞭解到多個磁碟驅動器透過可以透過RAID卡並行傳輸資料,達到單個的磁碟篇文驅動器幾倍、幾十倍甚至上百倍的速率。而除了並行傳輸資料提高系統io效能之外還有 RAID快取--cache 。cache具有兩大功能: 
   a) 預讀:根據一定的預讀演算法提前將系統將要讀取的資料存放到cache中,以便提高命中率,減少磁碟訪問。預讀有兩種方式:
Read Ahead
     由於資料在磁碟中經常是以一族連續的扇區組織起來的,所以如把系統所請求的扇區隨後的一個扇區裡的資料同時讀到快取中。
Pre-Fetch
    當RAID卡發現系統要讀的是先前已經讀過的資料時,便將這一個資料塊的資料寫到CACHE裡。
    b) 回寫:作業系統發出的一系列寫 IO 命令並未真正的執行而是暫時將資料存在CACHE中,然後再一次性的將快取的中的資料寫入磁碟。這樣可以達到合併小IO為大IO,同時也可以將多個小的隨機IO轉換為順序寫IO,減少磁碟尋道時間,提高寫入效率。
    讀快取雖然可以提高效率,但是也存在資料安全問題,對於WB策略,由於作業系統發出的寫IO命令寫入到快取中後即被認為寫入成功,而實際上資料是沒有被真正寫入磁碟的,此時如果掉電,快取中的資料就會永遠的丟失了,對於資料安全性要求極高的資料庫應用而言這是不可接受的。目前解決掉電最好的方法是給快取配備電池,保證儲存掉電之後依然有足夠的電源將快取中的資料寫入磁碟。說道這裡必須介紹一下RAID 卡的三種Write policy:
   Write Through :控制器只在資料成功寫入磁碟後才傳送寫入請求完成訊號給上層系統,因此WT的資料安全性要高於WB.
   Write Back    :在資料進入控制器快取記憶體但尚未寫入磁碟時,控制器會傳送寫入請求完成訊號。回寫快取記憶體可以改善效能,因為後續的讀取請求可以更快地從控制器快取記憶體檢索資料,而不必從磁碟檢索。不過,回寫快取記憶體也需要資料安全保護磁碟,因為系統故障可能會使資料無法寫入磁碟,即使控制器已傳送了寫入請求完成訊號。此時,可能會遺失資料。其它應用程式如果假定資料在磁碟上而採取相應的操作,也可能會遇到問題。
   Force Write Back:不管控制器是否有電池,寫入快取記憶體都會啟用。如果控制器沒有電池並且使用強制回寫式快取記憶體,在出現電源故障時就可能會發生資料丟失。 
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-750014/,如需轉載,請註明出處,否則將追究法律責任。

相關文章