一、RAID的基礎知識
【定義】RAID(Redundant Array of Independent Disk)是一種獨立備援磁盤陣列。
1、為什麼要使用RAID?
我們知道,單塊磁盤無論是從性能上、容量上、還是安全上都存在單點問題,如果把多塊硬碟組成一個group,當成一個邏輯驅動器,進而實作同時從多塊硬碟存取資料,那樣可以提高了存儲的吞吐量,同時也提高了存取速度和擴大存儲容量。
RAID(Redundant Array of Independent Disk 獨立備援磁盤陣列)技術就是專門幹這事的。RAID就是一種由多塊廉價磁盤構成的備援陣列,在作業系統下是作為一個獨立的大型儲存設備出現。RAID可以充分發揮出多塊硬碟的優勢,可以提升硬碟速度,增大容量,提供容錯功能夠確定資料安全性,易于管理的優點,在任何一塊硬碟出現問題的情況下都可以繼續工作,不會受到損壞硬碟的影響,這對于資料庫存儲領域是非常必要的。
2、RAID的幾種工作級别
我們比較常用的RAID級别有RAID-0、RAID-1、RAID-10/RAID-01、RAID-5,其他的如RAID-3、RAID-4、RAID-6就不在此介紹了。
RAID-0
RAID-0采用資料分條技術(Striped)把多塊磁盤串聯成一個更為龐大的磁盤組,可以提高磁盤的性能和吞吐量。它讀寫資料的速度是最快的,要求比較低,要求兩個磁盤即可做RAID-0,相對成本是最低的,但是RAID-0不提供備援或奇偶校驗資料的功能,如果驅動器出現故障,資料将無法恢複,安全性最弱。一般隻是在那些對性能要求高、資料安全性要求不高的情況下才被使用,不适合資料庫的存儲。

RAID-1
RAID-1采用鏡像(Mirroring)的方式備援資料。RAID-1要求至少兩個或2xN個磁盤,每次寫資料時會同時寫入鏡像盤。這種陣列可靠性很高,但其有效容量減小到總容量的一半,同時這些磁盤的大小應該相等,否則總容量隻具有最小磁盤的大小。RAID-1的資料安全性在所有的RAID級别上來說是最好的。但是其磁盤的使用率卻隻有50%,是所有RAID級别中最低的。
RAID-10
由于RAID-0和RAID-1都存在明顯的優點和缺點,為了結合兩者的優點、避免兩者的缺點,進而産生了RAID-10,RAID-10适合用在速度需求高,又要完全容錯,當然成本也很多的應用。不過在做RAID-10時需要注意的是先做RAID-1,再做RAID-0還是先做RAID-0,再做RAID-1,二者還是有差別的。舉個栗子,假如現在有四塊磁盤:
先做RAID-0,再做RAID-1:每兩塊磁盤先做RAID-0,在此基礎上,再把兩個RAID-0做成RAID-1。這時如果A類或者B類磁盤同時有一個故障,整個RAID将不可用。
先做RAID-1,再做RAID-0:每兩塊磁盤先做RAID-1,在此基礎上,再把兩個RAID-1做成RAID-0。這時隻有A類或者B類磁盤兩個都故障時,整個RAID才不可用。
綜合上面來看,先做RAID-1,再做RAID-0相對更安全,建議這種方式,是以我們平時說的RAID-10就是先做RAID-1,再做RAID-0。
RAID-5
RAID-5應該處于RAID-0和RAID-1之間的一種工作模式,它盡量平衡RAID-0和RAID-1的優點和缺點,是我們平時使用比較多的一種模式。做RAID-5至少需要三塊磁盤,它采用校驗碼備援資料,校驗資訊分布在多個磁盤上,當資料每次寫入到磁盤上,同時還需要寫入校驗資訊,是以寫入性能相對不如RAID-0。當某個磁盤出現故障,可以使用其他磁盤上校驗資訊來恢複資料。相對RAID-1,它磁盤空間使用率為(N-1)/N
3、RAID的幾種工作級别優缺點
【注】以上的高、中、低隻是相對于RAID-0、RAID-1、RAID-10、RAID-5而言。
二、如何判斷RAID級别、寫入政策、電池狀況
1、判斷RAID級别:MegaCli64工具輸入磁盤資訊如下:
網上有人僅僅通過RAID Level列中的Primary-1, Secondary-0, RAID Level Qualifier-0來判斷,我認為不是很準确。先來了解下Primary、Secondary、RAID Level Qualifier啥意思?
Primary字段:基本上可以确定RAID的級别,但是無法區分是RAID-1和RAID-10,因為有情況下他們的Primary值都是Primary-1, Secondary-0, RAID Level Qualifier-0
在這種情況下如何區分RAID-1和RAID-10?我認為還得結合另外兩列進行判斷:
【總結:如何判斷RAID級别】:
1) 除了RAID-1和RAID-10,其他級别通過Primary字段值就可以判斷;
2) 至于RAID-1和RAID-10,還需要結合Number Of Drives (per span)、Span Depth兩列的值,如果Span Depth值為1表示為RAID-1,不為1表示RAID-10;還有一種情況:Primary-1, Secondary-3, RAID Level Qualifier-0也是表示RAID-10;
2、判斷RAID寫入政策和電池狀态
RAID的寫入政策對IO性能有很大影響,有兩種寫入政策:
2.1)檢視RAID的寫入政策
Default Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
如果是這個,表示采用WriteThrough政策
2.2)檢視電池狀态
三、MySQL适合的RAID存儲方案
通過上面對RAID的了解,我們已經知道各級别RAID的優缺點,對于MySQL資料庫的存儲,如何選擇RAID級别呢?
我們可以根據MySQL各種檔案類型分别選擇,MySQL資料庫重要的檔案類型有:
本文轉自 bxst 51CTO部落格,原文連結:http://blog.51cto.com/13013670/1947023