作者:奎哥;來源:不止思考 在單機(jī)時代,采用單塊磁盤進(jìn)行數(shù)據(jù)存儲和讀寫的方式,由于尋址和讀寫的時間消耗,導(dǎo)致I/O性能非常低,且存儲容量還會受到限制。另外,單塊磁盤極其容易出現(xiàn)物理故障,經(jīng)常導(dǎo)致數(shù)據(jù)的丟失。因此大家就在想,有沒有一種辦法將多塊獨(dú)立的磁盤結(jié)合在一起組成一個技術(shù)方案,來提高數(shù)據(jù)的可靠性和I/O性能呢。 在這種情況下,RAID技術(shù)就應(yīng)運(yùn)而生了。 一、RAID 是什么? RAID ( Redundant Array of Independent Disks )即獨(dú)立磁盤冗余陣列,簡稱為「磁盤陣列」,其實就是用多個獨(dú)立的磁盤組成在一起形成一個大的磁盤系統(tǒng),從而實現(xiàn)比單塊磁盤更好的存儲性能和更高的可靠性。 二、RAID 有哪些? RAID方案常見的可以分為:
下面來分別介紹一下。
RAID0 是一種非常簡單的的方式,它將多塊磁盤組合在一起形成一個大容量的存儲。當(dāng)我們要寫數(shù)據(jù)的時候,會將數(shù)據(jù)分為N份,以獨(dú)立的方式實現(xiàn)N塊磁盤的讀寫,那么這N份數(shù)據(jù)會同時并發(fā)的寫到磁盤中,因此執(zhí)行性能非常的高。 RAID0 的讀寫性能理論上是單塊磁盤的N倍(僅限理論,因為實際中磁盤的尋址時間也是性能占用的大頭) 但RAID0的問題是,它并不提供數(shù)據(jù)校驗或冗余備份,因此一旦某塊磁盤損壞了,數(shù)據(jù)就直接丟失,無法恢復(fù)了。因此RAID0就不可能用于高要求的業(yè)務(wù)中,但可以用在對可靠性要求不高,對讀寫性能要求高的場景中。 那有沒有可以讓存儲可靠性變高的方案呢? 有的,下面的RAID1就是。
如圖, RAID1 是磁盤陣列中單位成本最高的一種方式。因為它的原理是在往磁盤寫數(shù)據(jù)的時候,將同一份數(shù)據(jù)無差別的寫兩份到磁盤,分別寫到工作磁盤和鏡像磁盤,那么它的實際空間使用率只有50%了,兩塊磁盤當(dāng)做一塊用,這是一種比較昂貴的方案。 RAID1其實與RAID0效果剛好相反。RAID1 這種寫雙份的做法,就給數(shù)據(jù)做了一個冗余備份。這樣的話,任何一塊磁盤損壞了,都可以再基于另外一塊磁盤去恢復(fù)數(shù)據(jù),數(shù)據(jù)的可靠性非常強(qiáng),但性能就沒那么好了。 了解了RAID0和RAID1之后,我們發(fā)現(xiàn)這兩個方案都不完美啊。 這時候就該 性能又好、可靠性也高 的方案 RAID5 登場了。
這是目前用的最多的一種方式。 因為 RAID5 是一種將 存儲性能、數(shù)據(jù)安全、存儲成本 兼顧的一種方案。 在了解RAID5之前,我們可以先簡單看一下RAID3,雖然RAID3用的很少,但弄清楚了RAID3就很容易明白RAID5的思路。 RAID3的方式是:將數(shù)據(jù)按照RAID0的形式,分成多份同時寫入多塊磁盤,但是還會另外再留出一塊磁盤用于寫「奇偶校驗碼」。例如總共有N塊磁盤,那么就會讓其中額度N-1塊用來并發(fā)的寫數(shù)據(jù),第N塊磁盤用記錄校驗碼數(shù)據(jù)。一旦某一塊磁盤壞掉了,就可以利用其它的N-1塊磁盤去恢復(fù)數(shù)據(jù)。 但是由于第N塊磁盤是校驗碼磁盤,因此有任何數(shù)據(jù)的寫入都會要去更新這塊磁盤,導(dǎo)致這塊磁盤的讀寫是最頻繁的,也就非常的容易損壞。 RAID5的方式可以說是對RAID3進(jìn)行了改進(jìn)。 RAID5模式中,不再需要用單獨(dú)的磁盤寫校驗碼了。它把校驗碼信息分布到各個磁盤上。例如,總共有N塊磁盤,那么會將要寫入的數(shù)據(jù)分成N份,并發(fā)的寫入到N塊磁盤中,同時還將數(shù)據(jù)的校驗碼信息也寫入到這N塊磁盤中(數(shù)據(jù)與對應(yīng)的校驗碼信息必須得分開存儲在不同的磁盤上)。一旦某一塊磁盤損壞了,就可以用剩下的數(shù)據(jù)和對應(yīng)的奇偶校驗碼信息去恢復(fù)損壞的數(shù)據(jù)。 RAID5校驗位算法原理:P = D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn為數(shù)據(jù)塊,P為校驗,xor為異或運(yùn)算) RAID5的方式,最少需要三塊磁盤來組建磁盤陣列,允許最多同時壞一塊磁盤。如果有兩塊磁盤同時損壞了,那數(shù)據(jù)就無法恢復(fù)了。
為了進(jìn)一步提高存儲的高可用,聰明的人們又提出了RAID6方案,可以在有兩塊磁盤同時損壞的情況下,也能保障數(shù)據(jù)可恢復(fù)。 為什么RAID6這么牛呢,因為RAID6在RAID5的基礎(chǔ)上再次改進(jìn),引入了雙重校驗的概念。 RAID6除了每塊磁盤上都有同級數(shù)據(jù)XOR校驗區(qū)以外,還有針對每個數(shù)據(jù)塊的XOR校驗區(qū),這樣的話,相當(dāng)于每個數(shù)據(jù)塊有兩個校驗保護(hù)措施,因此數(shù)據(jù)的冗余性更高了。 但是RAID6的這種設(shè)計也帶來了很高的復(fù)雜度,雖然數(shù)據(jù)冗余性好,讀取的效率也比較高,但是寫數(shù)據(jù)的性能就很差。因此RAID6在實際環(huán)境中應(yīng)用的比較少。
RAID10其實就是RAID1與RAID0的一個合體。 我們看圖就明白了: RAID10兼?zhèn)淞薘AID1和RAID0的有優(yōu)點(diǎn)。首先基于RAID1模式將磁盤分為2份,當(dāng)要寫入數(shù)據(jù)的時候,將所有的數(shù)據(jù)在兩份磁盤上同時寫入,相當(dāng)于寫了雙份數(shù)據(jù),起到了數(shù)據(jù)保障的作用。且在每一份磁盤上又會基于RAID0技術(shù)講數(shù)據(jù)分為N份并發(fā)的讀寫,這樣也保障了數(shù)據(jù)的效率。 但也可以看出RAID10模式是有一半的磁盤空間用于存儲冗余數(shù)據(jù)的,浪費(fèi)的很嚴(yán)重,因此用的也不是很多。 整體對比一下 RAID0、RAID1、RAID5、RAID6、RAID10 的幾個特征: |
|