1. 程式人生 > >RAID0 RAID1 RAID01 RAID10 四種硬碟陣列區別及資料吞吐量

RAID0 RAID1 RAID01 RAID10 四種硬碟陣列區別及資料吞吐量

 RAID 0又稱為Stripe或Striping,它代表了所有RAID級別中最高的儲存效能。RAID 0提高儲存效能的原理是把連續的資料分散到多個磁碟上存取,這樣,系統有資料請求就可以被多個磁碟並行的執行,每個磁碟執行屬於它自己的那部分資料請求。這種資料上的並行操作可以充分利用匯流排的頻寬,顯著提高磁碟整體存取效能。

raid0

RAID 1又稱為Mirror或Mirroring,它的宗旨是最大限度的保證使用者資料的可用性和可修復性。 RAID 1的操作方式是把使用者寫入硬碟的資料百分之百地自動複製到另外一個硬碟上。由於對儲存的資料進行百分之百的備份,在所有RAID級別中,RAID 1提供最高的資料安全保障。同樣,由於資料的百分之百備份,備份資料佔了總儲存空間的一半,因而,Mirror的磁碟空間利用率低,儲存成本高。Mirror雖不能提高儲存效能,但由於其具有的高資料安全性,使其尤其適用於存放重要資料,如伺服器和資料庫儲存等領域。

raid1

RAID 1+0是先鏡射再分割槽資料。是將所有硬碟分為兩組,視為是RAID 0的最低組合,然後將這兩組各自視為RAID 1運作。RAID 1+0有著不錯的讀取速度,而且擁有比RAID 0更高的資料保護性。

raid10

RAID 0+1則是跟RAID 1+0的程式相反,是先分割槽再將資料鏡射到兩組硬碟。它將所有的硬碟分為兩組,變成RAID 1的最低組合,而將兩組硬碟各自視為RAID 0運作。RAID 0+1比起RAID 1+0有著更快的讀寫速度,不過也多了一些會讓整個硬碟組停止運轉的機率;因為只要同一組的硬碟全部損毀,RAID 0+1就會停止運作,而RAID 1+0則可以在犧牲RAID 0的優勢下正常運作。

raid01

RAID 10/01巧妙的利用了RAID 0的速度以及RAID 1的保護兩種特性,不過它的缺點是需要的硬碟數較多,因為至少必須擁有四個以上的偶數硬碟才能使用。

吞吐量與IOPS

陣列的瓶頸主要體現在2個方面,吞吐量與IOPS。

1、吞吐量

吞吐量主要取決於陣列的構架,光纖通道的大小(現在陣列一般都是光纖陣列,至於SCSI這樣的SSA陣列,我們不討論)以及硬碟的個數。陣列的構架與每個陣列不同而不同,他們也都存在內部頻寬(類似於pc的系統匯流排),不過一般情況下,內部頻寬都設計的很充足,不是瓶頸的所在。

光纖通道的影響還是比較大的,如資料倉庫環境中,對資料的流量要求很大,而一塊2Gb的光纖卡,所能支撐的最大流量應當是2Gb/8(小B)=250MB/s(大B)的實際流量,當4塊光纖卡才能達到1GB/s的實際流量,所以資料倉庫環境可以考慮換4Gb的光纖卡。

最後說一下硬碟的限制,這裡是最重要的,當前面的瓶頸不再存在的時候,就要看硬碟的個數了,我下面列一下不同的硬碟所能支撐的流量大小:

          10K rpm     15K rpm       ATA
          ———         ———           ———
          10M/s       13M/s         8M/s

那麼,假定一個陣列有120塊15K rpm的光纖硬碟,那麼硬碟上最大的可以支撐的流量為120*13=1560MB/s,如果是2Gb的光纖卡,可能需要6塊才能夠,而4Gb的光纖卡,3-4塊就夠了。

2、IOPS

決定IOPS的主要取決與陣列的演算法,cache命中率,以及磁碟個數。陣列的演算法因為不同的陣列不同而不同,如我們最近遇到在hds usp上面,可能因為ldev(lun)存在佇列或者資源限制,而單個ldev的iops就上不去,所以,在使用這個儲存之前,有必要了解這個儲存的一些演算法規則與限制。

cache的命中率取決於資料的分佈,cache size的大小,資料訪問的規則,以及cache的演算法,如果完整的討論下來,這裡將變得很複雜,可以有一天好討論了。我這裡只強調一個cache的命中率,如果一個陣列,讀cache的命中率越高越好,一般表示它可以支援更多的IOPS,為什麼這麼說呢?這個就與我們下面要討論的硬碟IOPS有關係了。

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

      10K rpm     15K rpm       ATA
      ———         ———           ———
      100         150           50

同樣,如果一個陣列有120塊15K rpm的光纖硬碟,那麼,它能撐的最大IOPS為120*150=18000,這個為硬體限制的理論值,如果超過這個值,硬碟的響應可能會變的非常緩慢而不能正常提供業務。

另外,我們上一篇也討論了,在raid5與raid10上,讀iops沒有差別,但是,相同的業務寫iops,最終落在磁碟上的iops是有差別的,而我們評估的卻正是磁碟的IOPS,如果達到了磁碟的限制,效能肯定是上不去了。

那我們假定一個case,業務的iops是10000,讀cache命中率是30%,讀iops為60%,寫iops為40%,磁碟個數為120,那麼分別計算在raid5與raid10的情況下,每個磁碟的iops為多少。

raid5:

單塊盤的

iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120

= (4200 + 16000)/120

= 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個讀操作也可能發生命中,所以更精確的計算為:

單塊盤的

iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120

= (4200 + 5600 + 8000)/120

= 148

計算出來單個盤的iops為148個,基本達到磁碟極限

raid10:

單塊盤的

iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120

= (4200 + 8000)/120

= 102

可以看到,因為raid10對於一個寫操作,只發生2次io,所以,同樣的壓力,同樣的磁碟,每個盤的iops只有102個,還遠遠低於磁碟的極限iops。

在一個實際的case中,一個恢復壓力很大的standby(這裡主要是寫,而且是小io的寫),採用了raid5的方案,發現效能很差,通過分析,每個磁碟的iops在高峰時期,快達到200了,導致響應速度巨慢無比。後來改造成raid10,就避免了這個效能問題,每個磁碟的iops降到100左右。

磁碟陣列 磁碟陣列(Redundant Arrays of Inexpensive Disks,RAID),有“價格便宜且多餘的磁碟陣列”之意。原理是利用陣列方式來作磁碟組,配合資料分散排列的設計,提升資料的安全性磁碟陣列是由很多便宜、容量較小、穩定性較高、速度較慢磁碟,組合成一個大型的磁碟組,利用個別磁碟提供資料所產生加成效果提升整個磁碟系統效能。同時利用這項技術,將資料切割成許多區段,分別存放在各個硬碟上。磁碟陣列還能利用同位檢查(Parity Check)的觀念,在陣列中任一顆硬碟故障時,仍可讀出資料,在資料重構時,將資料經計算後重新置入新硬碟中。 主要技術 RAID技術主要包含RAID 0~RAID 7等數個規範,它們的側重點各不相同,常見的規範有如下幾種: RAID 0:RAID 0連續以位或位元組為單位分割資料,並行讀/寫於多個磁碟上,因此具有很高的資料傳輸率,但它沒有資料冗餘,因此並不能算是真正的RAID結構。RAID 0只是單純地提高效能,並沒有為資料的可靠性提供保證,而且其中的一個磁碟失效將影響到所有資料。因此,RAID 0不能應用於資料安全性要求高的場合。 RAID 1:它是通過磁碟資料映象實現資料冗餘,在成對的獨立磁碟上產生互 為備份的資料。當原始資料繁忙時,可直接從映象拷貝中讀取資料,因此RAID 1可以提高讀取效能。RAID 1是磁碟陣列中單位成本最高的,但提供了很高的資料安全性和可用性。當一個磁碟失效時,系統可以自動切換到映象磁碟上讀寫,而不需要重組失效的資料。 RAID 0+1: 也被稱為RAID 10標準,實際是將RAID 0和RAID 1標準結合的產物,在連續地以位或位元組為單位分割資料並且並行讀/寫多個磁碟的同時,為每一塊磁碟作磁碟映象進行冗餘。它的優點是同時擁有RAID 0的超凡速度和RAID 1的資料高可靠性,但是CPU佔用率同樣也更高,而且磁碟的利用率比較低。 RAID 2:將資料條塊化地分佈於不同的硬碟上,條塊單位為位或位元組,並使用稱為“加重平均糾錯碼海明碼)”的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁碟存放檢查及恢復資訊,使得RAID 2技術實施更復雜,因此在商業環境中很少使用。 RAID 3:它同RAID 2非常類似,都是將資料條塊化分佈於不同的硬碟上,區別在於RAID 3使用簡單的奇偶校驗,並用單塊磁碟存放奇偶校驗資訊。如果一塊磁碟失效,奇偶盤及其他資料盤可以重新產生資料;如果奇偶盤失效則不影響資料使用。RAID 3對於大量的連續資料可提供很好的傳輸率,但對於隨機資料來說,奇偶盤會成為寫操作的瓶頸。 RAID 4:RAID 4同樣也將資料條塊化並分佈於不同的磁碟上,但條塊單位為塊或記錄。RAID 4使用一塊磁碟作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,這時奇偶校驗盤會成為寫操作的瓶頸,因此RAID 4在商業環境中也很少使用。 RAID 5:RAID 5不單獨指定的奇偶盤,而是在所有磁碟上交叉地存取資料及奇偶校驗資訊。在RAID 5上,讀/寫指標可同時對陣列裝置進行操作,提供了更高的資料流量。RAID 5更適合於小資料塊和隨機讀寫的資料。RAID 3與RAID 5相比,最主要的區別在於RAID 3每進行一次資料傳輸就需涉及到所有的陣列盤;而對於RAID 5來說,大部分資料傳輸只對一塊磁碟操作,並可進行並行操作。在RAID 5中有“寫損失”,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的資料及奇偶資訊,兩次寫新的資料及奇偶資訊。 RAID 6:與RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗資訊塊。兩個獨立的奇偶系統使用不同的演算法,資料的可靠性非常高,即使兩塊磁碟同時失效也不會影響資料的使用。但RAID 6需要分配給奇偶校驗資訊更大的磁碟空間,相對於RAID 5有更大的“寫損失”,因此“寫效能”非常差。較差的效能和複雜的實施方式使得RAID 6很少得到實際應用。 RAID 7:這是一種新的RAID標準,其自身帶有智慧化實時作業系統和用於儲存管理軟體工具,可完全獨立於主機執行,不佔用主機CPU資源。RAID 7可以看作是一種儲存計算機(Storage Computer),它與其他RAID標準有明顯區別。除了以上的各種標準(如表1),我們可以如RAID 0+1那樣結合多種RAID規範來構築所需的RAID陣列,例如RAID 5+3(RAID 53)就是一種應用較為廣泛的陣列形式。使用者一般可以通過靈活配置磁碟陣列來獲得更加符合其要求的磁碟儲存系統。 RAID 5E(RAID 5 Enhencement): RAID 5E是在 RAID 5級別基礎上的改進,與RAID 5類似,資料的校驗資訊均勻分佈在各硬碟上,但是,在每個硬碟上都保留了一部分未使用的空間,這部分空間沒有進行條帶化,最多允許兩塊物理硬碟出現故障。看起來,RAID 5E和RAID 5加一塊熱備盤好象差不多,其實由於RAID 5E是把資料分佈在所有的硬碟上,效能會與RAID5 加一塊熱備盤要好。當一塊硬碟出現故障時,有故障硬碟上的資料會被壓縮到其它硬碟上未使用的空間,邏輯盤保持RAID 5級別。 RAID 5EE: 與RAID 5E相比,RAID 5EE的資料分佈更有效率,每個硬碟的一部分空間被用作分佈的熱備盤,它們是陣列的一部分,當陣列中一個物理硬碟出現故障時,資料重建的速度會更快。 開始時RAID方案主要針對SCSI硬碟系統,系統成本比較昂貴。1993年,HighPoint公司推出了第一款IDE-RAID控制晶片,能夠利用相對廉價的IDE硬碟來組建RAID系統,從而大大降低了RAID的“門檻”。從此,個人使用者也開始關注這項技術,因為硬碟是現代個人計算機中發展最為“緩慢”和最缺少安全性的裝置,而使用者儲存在其中的資料卻常常遠超計算機的本身價格。在花費相對較少的情況下,RAID技術可以使個人使用者也享受到成倍的磁碟速度提升和更高的資料安全性。個人電腦市場上的IDE-RAID控制晶片主要出自HighPoint和Promise公司,此外還有一部分來自AMI公司。 面向個人使用者的IDE-RAID晶片一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID規範的支援,雖然它們在技術上無法與商用系統相提並論,但是對普通使用者來說其提供的速度提升和安全保證已經足夠了。隨著硬碟介面傳輸率的不斷提高,IDE-RAID晶片也不斷地更新換代,晶片市場上的主流晶片已經全部支援ATA 100標準,而HighPoint公司新推出的HPT 372晶片和Promise最新的PDC20276晶片,甚至已經可以支援ATA 133標準的IDE硬碟。在主機板廠商競爭加劇、個人電腦使用者要求逐漸提高的今天,在主機板上板載RAID晶片的廠商已經不在少數,使用者完全可以不用購置RAID卡,直接組建自己的磁碟陣列,感受磁碟狂飆的速度。 RAID 50:RAID50是RAID5與RAID0的結合。此配置在RAID5的子磁碟組的每個磁碟上進行包括奇偶資訊在內的資料的剝離。每個RAID5子磁碟組要求三個硬碟。RAID50具備更高的容錯能力,因為它允許某個組內有一個磁碟出現故障,而不會造成資料丟失。而且因為奇偶位分部於RAID5子磁碟組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快資料讀取速率的潛力。需要注意的是:磁碟故障會影響吞吐量。故障後重建資訊的時間比映象配置情況下要長。 Windows Server 2003中建立RAID 5 在Windows Server 2003系統中建立RAID-5卷的方法: 第1步,開啟“計算機管理”視窗,選中“磁碟管理”目錄。在右窗格中用滑鼠右鍵單擊準備建立RAID-5卷的動態磁碟,在彈出的快捷選單中選擇“新建卷”命令。 第2步,在嚮導歡迎頁中單擊“下一步”按鈕,開啟“選擇卷型別”對話方塊。在“選擇要建立的卷”區域中選中RAID-5單選框,並單擊“下一步”按鈕。 第3步,在“選擇磁碟”對話方塊中,將“可用”磁碟列表中的所有磁碟通過“新增”按鈕新增到“已選的”磁碟列表中(在“已選的”磁碟列表中至少要有三塊磁碟),其他引數保持預設值。單擊“下一步”按鈕。 第4步,開啟“指派驅動器號和路徑”對話方塊,選中“指派以下驅動器號”單選框。單擊右側的下拉三角按鈕,為該RAID-5卷指派驅動器號,以便於訪問和管理。單擊“下一步”按鈕。 第5步,在“卷區格式化”對話方塊中保持“按下列設定格式化這個卷”單選框為選中狀態,“檔案系統”和“分配單位大小”選項均採用預設值。在“卷標”編輯框中輸入一個卷標用於和其他捲進行區別,並選中“快速格式化複選框。單擊“下一步”按鈕。 第6步,“正在完成新建卷嚮導”對話方塊的“使用者已選擇下列設定”列表中顯示了以上所有的設定。如果沒有問題,則單擊“完成”按鈕,系統開始建立RAID-5卷並對其進行格式化操作以及進行資料同步操作。同步操作所需的時間視卷的容量和系統性能而定,所實現的RAID-5卷會以特殊顏色標識出來。 完成格式化操作並進行資料同步後,RAID-5卷所包含的各個磁碟卷將顯示“狀態良好”的狀態資訊。[1] RAID5故障分析 RAID-5故障原因分析這裡說的RAID-5故障,是指RAID-5邏輯盤丟失或不可訪問。導致RAID-5故障的原因主要有以下幾種: (1)RAID控制器出現物理故障 RAID控制器如果出現物理故障,將不能被計算機識別,也就無法完成對RAID-5中各個物理成員盤的控制,在這種情況下,通過RAID控制器虛擬出來的邏輯盤自然就不存在了。 (2)RAID資訊出錯 RAID控制器將物理盤配置為RAID-5後,會生成一些引數,包括該RAID-5的盤序、條帶大小、左右結構情況、同步非同步情況、RAID-5在每塊物理盤中的起始地址等,還會記錄有關該RAID-5的相關資訊,包括組成該RAID-5的物理盤數目、物理盤的容量大小等,所有這些資訊和引數就被稱為RAID資訊,也稱為RAID元資料,它們會被儲存到RAID控制器中,有時候也會儲存到RAID-5的成員盤中。 RAID資訊出錯就是指該RAID-5的配置資訊和引數出現錯誤,導致RAID程式不能正確地組織管理RAID-5中的成員盤,從而導致RAID-5邏輯盤丟失或不能訪問。 (3)RAID-5成員盤出現物理故障 RAID-5可以允許其中一塊成員盤離線而不影響資料的完整性,如果RAID-5中的某一塊成員盤出現物理故障,比如電路損壞、磁頭損壞、韌體損壞、出現壞扇區等,該成員盤就不能正常使用,但剩下的成員盤可以利用異或運算計算出離線成員盤中的資料,所以RAID-5還不會崩潰。 如果系統管理員沒有及時替換出現故障的成員盤,當再有一塊成員盤再出現故障離線後,RAID-5將徹底崩潰。 (4)人為誤操作 如果誤將RAID-5中兩塊以上成員盤同時拔出、或者給RAID-5除塵時將成員盤拔出後忘了原來的順序、以及不小心刪除了RAID-5的配置資訊等,都會造成RAID-5崩潰。 (5)RAID控制器的穩定性 RAID-5的資料分佈結構中有校驗塊的存在,當RAID-5中有成員盤離線時,演算法將變得更加複雜,RAID控制器將會工作在一個比較吃力的狀態。而RAID控制器的負載太重便會極大地增加資料讀寫時出現I/O滯留的可能性,從而導致更多成員盤離線,或者導致RAID資訊出錯。 RAID5資料恢復 RAID-5資料恢復思路RAID-5陣列中資料的分佈與RAID-0類似,資料也是分佈到每塊硬碟上,與RAID-0不同的是,RAID-5中每個條帶組中總有一個條帶是校驗塊,如圖中的“P0、P1、P2、P3”就是校驗塊。 RAID5結構圖

RAID5結構圖

RAID-5能夠支援在一塊盤離線的情況下保證資料的正常訪問,如果有兩塊或兩塊以上硬碟同時離線,或者RAID資訊出錯等原因,陣列便會失效,這時就需要對資料進行重組。 RAID-5的結構圖 對RAID-5的資料進行重組,也需要先把物理盤區RAID化,作為單盤進行分析,如圖中的四塊物理盤,把四塊物理盤中的資料按照“A、B、C、D、E、F、G、H……”的順序拼接好,就是RAID-5邏輯盤中完整的資料。 因為RAID-5的每塊物理盤中都有校驗資訊,所以分析RAID-5就需要比RAID-0多一個因素,即校驗塊的位置和方向,另外,RAID-5中資料塊的走向也會不一樣,分為非同步和同步,也就是說,RAID-5 有四個因素很重要,第一個是RAID中每個條帶的大小,也就是 “A”或“B” 這些資料塊所佔用的扇區數;第二個因素是RAID中硬碟的排列順序,也就是盤序;第三個因素是校驗塊的迴圈方向;第四個因素是資料塊的走向。 以圖中四塊物理盤組成的RAID-5為例,假設條帶的大小為32個扇區,物理盤的順序就按照圖中的排列順序,那麼只要到硬碟0中取0-31扇區的資訊,再到硬碟1中取0-31扇區的資訊,再到硬碟2中取0-31扇區的資訊,硬碟3中0-31扇區的資訊是校驗塊,跳過不取。接下來再回到硬碟0中取32-63扇區的資訊,就這樣依次按順序取下去,把所有取出來的資料按照順序銜接成一個映象檔案或者是映象盤,這就成為完整的原RAID-5邏輯盤的結構了,直接訪問這個重組出來的映象檔案或映象盤,就得到了原RAID-5邏輯盤中的資料。