對于磁盤陣列很多不知道它是干什么的,有時候會聽別人說把硬件組成一個Raid,這個Raid又是個啥?它和磁盤陣列是一回事嗎?部分似懂非懂朋友可能又會問磁盤陣列常用到的是哪里幾種呢?為了給大家講的清楚我就從磁盤陣列的工作原理來給大家詳細(xì)的了解這個磁盤陣列。 一、什么是JBOD 假設(shè)我們有多塊磁盤如果我不組建磁盤陣列的話磁盤與磁盤之間是沒有任何關(guān)系的,我們把文件放進(jìn)磁盤A里那么跟磁盤B一點關(guān)系沒有,同樣的把文件放進(jìn)磁盤B里它跟磁盤A也是沒有什么關(guān)系的,兩塊磁盤是完全獨立存在的,這種傳統(tǒng)的沒有任何聯(lián)系的磁盤關(guān)系用英文來講就是Just a bunch of disk,簡稱JBOD結(jié)構(gòu)(意思是說只是一堆磁盤)。這種結(jié)構(gòu)有很大的弊端,我們調(diào)取磁盤A里的數(shù)據(jù)時只是磁盤A在工作而磁盤B是空間的,調(diào)取磁盤B里的數(shù)據(jù)時只是磁盤B在工作而磁盤A是空閑的;除非我們同時獲取兩塊磁盤的數(shù)據(jù),不然總有一塊磁盤是空閑的,這無形當(dāng)中浪費了部分磁盤性能,所以為了讓多塊磁盤協(xié)調(diào)工作一塊運轉(zhuǎn)發(fā)揮它的全部性能就有了磁盤陣列這個東西。 二、磁盤陣列是什么 磁盤陣列在電腦當(dāng)中我們通常稱之為Raid,給多塊磁盤組建Raid后我們電腦內(nèi)就只會看到一個Raid的陣列盤,它的子磁盤我們是看不到的,我們就跟使用普通磁盤一樣去使用這個由多塊磁盤組合起來的Raid磁盤,Raid有很多的等級,目前行業(yè)公認(rèn)的Raid等級為0-7,不同的Raid等級之間并沒有優(yōu)劣之分,它們僅僅是不同功能的陣列,只是在我們實際使用的時候需要根據(jù)不同的情況和不同的需求去靈活的決定用哪個等級的Raid,下面給大家講解一個不同等級的Raid之間的區(qū)別、工作原理和優(yōu)劣。 三、磁盤陣列有幾種 (一)Raid0: 它的工作原理類似于內(nèi)存的雙通道,它至少要用兩塊磁盤,工作原理就是將一個完整的數(shù)據(jù)拆分后分別放到兩塊磁盤中,寫入時兩塊磁盤同時寫入,讀取時兩塊磁盤同時讀取,和內(nèi)存雙通道一個道理,帶寬翻倍速度翻倍的效果,比之更強的地方在于我有多少塊磁盤就是可以翻多少倍的性能,不像內(nèi)存那樣有IMC的限制,甚至可以把南橋芯片的帶寬跑到上限。但這里翻倍的速度只是連續(xù)讀寫的速度,Raid是無法提高隨機讀寫性能的,因為隨機讀寫主要考驗的是硬盤的尋道和尋址能力,所以我們組建了Raid仍然改變不了硬盤隨機讀寫性能低下的問題。硬盤還是要花大量的時間去尋道和尋址,所以組Raid隨機讀寫性能的提高相對于單塊磁盤來說提升的幅度是微弱的,也有可能是某一塊磁盤拖了后腿導(dǎo)致木桶短板效應(yīng),以至于組Raid0后反而隨機讀寫性能居然會弱于單塊磁盤的現(xiàn)象,Raid0是所有陣列里速度最快的同樣也是最不安全的,因為我們的數(shù)據(jù)被拆分到了多塊磁盤當(dāng)中,比如我們組了6塊磁盤的Raid0,數(shù)據(jù)就會被拆分成6塊分散在6個磁盤中,萬一其中一塊磁盤出了故障我們只有其他5塊磁盤的數(shù)據(jù)是無法正常讀取的,這就導(dǎo)致了整個數(shù)據(jù)全部報廢,由此可見Raid0的優(yōu)缺點都很極端,加的磁盤越多速度就是越快,同樣的磁盤越多數(shù)據(jù)就越危險。 (二)Raid1: 又被叫做鏡像,他也至少需要2塊磁盤才能實現(xiàn),其工作原理是把一份完整的數(shù)據(jù)復(fù)制到其它的磁盤當(dāng)中,假設(shè)我們把2塊磁盤組成Raid1,在往這個Raid1里存放數(shù)據(jù)時2塊磁盤內(nèi)部都會存入完全一模一樣的數(shù)據(jù),所以說Raid1就是我們平時說的自動備份。當(dāng)然我們也可以手動的去復(fù)制手動備份,但手動操作是需要時間的,而我們組建好了Raid1后,就可以實現(xiàn)全自動實時備份了,而且組建完了Raid1以后我們在系統(tǒng)里只會看見1塊磁盤的,這種陣列和Raid0一樣也是一種極端,是所有陣列當(dāng)中最安全的,但是相應(yīng)的空間利用率和速度是最低的。因為,如有2塊磁盤組成了Raid1,我們在系統(tǒng)內(nèi)只能看到1塊容量的磁盤,同樣速度也是1塊磁盤的速度。 (三)Raid2: 一種利用海明碼校驗的一種陣列,其主要目的是在Raid0的基礎(chǔ)上增加了數(shù)據(jù)糾錯能力,注意這里是糾錯而非容災(zāi)。Raid2其數(shù)據(jù)的第2的n次方為校驗文件,如1、2、4、8、16、32位就是用來糾錯的校驗碼,其他的位置才是原始數(shù)據(jù)。假設(shè)我們有一個四位編碼的數(shù)據(jù)需要存儲,那就需要7塊磁盤,其1、2、4存放校驗碼,只有3、5、6、7是存放數(shù)據(jù)的。如果有一個八位編碼的數(shù)據(jù),需要存儲那么1、2、4、8是校驗碼,而3、5、6、7、9、10、11、12是存儲數(shù)據(jù)的。所以我們發(fā)現(xiàn)Raid2當(dāng)中編碼數(shù)據(jù)位數(shù)越少磁盤利用率就越低。由于一次寫入數(shù)據(jù)可以往多塊磁盤寫入所以他具有和Raid0比較相似的并發(fā)性能,但是由于寫入還需要計算校驗碼,讀取時也需要讀取校驗碼用于糾錯,所以實際上其性能開銷還是比較大的,因此使用Raid2的人還是很少的。 (四)Raid3: 它的實現(xiàn)至少需要3塊磁盤,既然Raid0不安全,只要壞其中一塊磁盤所有數(shù)據(jù)全部報廢,那我們就想辦法讓他有一定的容災(zāi)能力。假設(shè)我用3塊磁盤組了Raid0,然后我們再增加一塊磁盤做為第4塊,這里面存放著前面3塊磁盤的恢復(fù)碼,當(dāng)前面3塊磁盤任意一個磁盤出現(xiàn)故障的時候,靠著剩下2個磁盤的數(shù)據(jù)再加上恢復(fù)碼我們就可以恢復(fù)丟失磁盤的數(shù)據(jù)了,而恢復(fù)碼的磁盤要是損壞了也不是會影響到前面3個磁盤,所以說Raid3相對于Raid0來說容災(zāi)能力從0塊增加到了1塊,由于前面3塊磁盤和Raid0一樣,只是多了1塊校驗碼磁盤,和Raid2海明碼那種一下一堆糾錯碼不同,恢復(fù)碼的性能還是消耗比較少的,所以Raid3的性能非常接近Raid0。 (五)Raid4: 和Raid3很像,也是在Raid0的基礎(chǔ)上增加一塊恢復(fù)碼磁盤,假設(shè)Raid3和Raid4都是3個數(shù)據(jù)盤+1個恢復(fù)盤,這時我有一個文件它被分成了3組,這3組數(shù)據(jù)需要分別存儲到磁盤內(nèi)。Raid3就是第一組拆分加上第一組恢復(fù)碼,寫入;第二組拆分以后加上第二組恢復(fù)恢復(fù)碼,寫入;第三組拆分以后加上第三組恢復(fù)碼,寫入。而Raid4則是1、2、3組直接準(zhǔn)備好,然后把1、2、3組的數(shù)據(jù)整體準(zhǔn)備一個恢復(fù)碼,再把三組數(shù)據(jù)和整體的恢復(fù)碼寫入進(jìn)去。他們的區(qū)別是Raid3是將一個數(shù)據(jù)塊拆分分別存儲,校驗碼也是針對拆分的這一部分去進(jìn)行計算的;而Raid4是直接按區(qū)塊去進(jìn)行存儲,校驗碼是針對幾個塊一塊進(jìn)行計算,其容災(zāi)能力也是一塊磁盤。 (六)Raid5: 因為Raid4也有自己的問題,3塊磁盤對應(yīng)1塊恢復(fù)盤,如果我增加到了5塊磁盤他還只是一塊恢復(fù)盤,再增加到10塊他也是一塊恢復(fù)盤,無論多少塊磁盤他都只有一塊恢復(fù)盤。當(dāng)我們有很多數(shù)據(jù)磁盤但只有一塊恢復(fù)盤的話這個恢復(fù)盤的性能可能會制約整個陣列的性能,恢復(fù)盤的恢復(fù)數(shù)據(jù)塊沒有寫完下次寫入是無法進(jìn)行的,所以我們把原本要存入恢復(fù)盤恢復(fù)碼直接拆分開,每塊磁盤中都分別存儲一部分恢復(fù)碼,這樣恢復(fù)碼的寫入操作就會被拆分由4塊磁盤共同完成。假設(shè)磁盤3故障無法讀取,數(shù)據(jù)B是完整數(shù)據(jù)的,B1、B2、B3都在,不需要恢復(fù),A1+A2+Ap可以恢復(fù)A3,C1+C3+Cp可以恢復(fù)C2,D1+D3+Dp可以恢復(fù)D2。所以Raid5一方面可以做到Raid0相似的性能,還增加了一塊磁盤的容災(zāi)能力,更解決了Raid4恢復(fù)碼磁盤的瓶頸,就目前來講民用層面Raid5是使用最多的一種磁盤陣列,常見于各種私有NAS服務(wù)器里。 (七)Raid6: Raid3、Radi4、Radi5都只能容災(zāi)一塊磁盤的故障還是不安全,萬一運氣有點背同時壞掉了兩塊磁盤,為了解決這個問題于是有了Raid6。Raid6的恢復(fù)碼相對于Raid5從1組變成了2組,這個時候如果壞了兩塊磁盤我們的數(shù)據(jù)還是依舊能找回的,這就讓Raid6有了2塊磁盤的容災(zāi)能力。 (八)Raid7: 是一種全新的Raid,它比其他幾種Raid更為先進(jìn),它自身帶有智能化的實時操作系統(tǒng)和存儲管理的軟件工具,可以獨立于主機運行而不占用系統(tǒng)資源。理論上講Raid7是性能最高也最安全的Raid架構(gòu),它的組建方式就跟Raid0-Raid6極大不同,Raid7對所有的磁盤讀取寫入均是同步進(jìn)行的,可以分別控制每塊磁盤從而提高了系統(tǒng)的并行性,系統(tǒng)訪問數(shù)據(jù)的速度更快。因為每個磁盤都帶有一個高速緩沖存儲器,如果系統(tǒng)一旦斷電,這個緩沖存儲器里的數(shù)據(jù)會他問丟失,所以必須配備UPS一起工作,因為價格昂貴所以使用Raid7的并不多。 (九)Raid10: 基本上我們能接觸到的大部分基礎(chǔ)的Raid就這些,Raid除了基礎(chǔ)的單個存在之外還可以嵌套存在。比如我們先用兩個磁盤組成Raid1,用另外兩個磁盤再組一個Raid1,最后把這兩個Raid1組成一個Raid0,這個就是Raid10。 (十)Raid50: 我們還可以用9塊磁盤,每3塊磁盤組成一個Raid5,然后再把這三個Raid5組成一個Raid0,這個就是Raid50。 四、總結(jié) 單純從使用率來講Raid0、Raid1、Raid5、Raid6、Raid10、Raid50用的比較多,剩下幾種用的較少。但是并不是說用的少就是不好,無論用哪種Raid,如何去做嵌套組合,不同的Raid之間各有優(yōu)劣,沒必要非要爭論出誰好誰壞,大家如果需要組建磁盤陣列的話,要靈活的根據(jù)自己的需求的實際情況下兼顧安全性與速度在實現(xiàn)性能提升的同時,不要因為容災(zāi)能力的低下導(dǎo)致數(shù)據(jù)丟失就可以了。 |
|