磁盤陣列的英文全稱是Redundant Arrays of Inexpensive Disks(RAID),即容錯廉價磁盤陣列。可以通過一些技術(shù)將多個較小的磁盤整合成為一個較大的磁盤設(shè)備;而這個設(shè)備可不止存儲功能而已,它還具有數(shù)據(jù)保護功能。
RAID的等級:
× RAID-0(等量模式,stripe):性能較佳
這種模式使用相同型號和容量的磁盤來組成,可以有多個,RAID會將每個磁盤劃分成等量的區(qū)塊(一般為4K,2K等等),然后當(dāng)一個文件被寫入時,該文件會依據(jù)塊大小切割好,之后依序放到各個磁盤里面去,由于每個磁盤交錯存放數(shù)據(jù),因此當(dāng)你的數(shù)據(jù)要寫入RAID時,數(shù)據(jù)會被等量的放置到各個磁盤上去。越多磁盤組成RAID-0,那么的話性能肯定就越好了。
缺點:一個磁盤掛點,整個文件系統(tǒng)崩盤,無法恢復(fù)了。并且所有磁盤容量必須一樣,不然性能會下降。
× RAID-1(映像模式,mirror):完整備份
這種模式也要相同型號,相同容量的磁盤,最好完全一樣,一個模子刻出來的。
數(shù)據(jù)傳送到I/O總線被復(fù)制多份到各個磁盤,因此寫的性能會變得很差,不過如果你用硬件RAID(磁盤陣列卡),磁盤陣列卡會主動幫你復(fù)制,不需要I/O總線。但是磁盤陣列卡很貴滴呀呀,我買不起,所以很悲劇。RAID-1最大的用途在于備份,不過它的讀取性能很好。
× RAID 0+1, RAID 1+0
RAID-0的性能較佳但是數(shù)據(jù)不安全,RAID-1數(shù)據(jù)安全但是性能不佳,那能不能組合下撒。
RAID 0+1:先讓N塊磁盤組成RAID-0, 同時再讓另外的N塊磁盤也組成RAID-0, 這樣子我得到了兩組RAID-0,然后將這兩組RAID-0再組成一組RAID-1。
RAID 1+0:先讓2N塊磁盤組成N個組,每個組兩個磁盤,每個組里面的兩個磁盤組成RAID-1, 然后將這N組RAID-1組成RAID-0。
缺點:磁盤有一半的容量用來做備份了,悲劇呀!!!
RAID-5:性能與數(shù)據(jù)備份的均衡考慮
RAID-5至少需要三塊以上的磁盤才能組成這種類型的磁盤陣列。這種磁盤陣列的數(shù)據(jù)寫入有點類似RAID-0,不過每次循環(huán)寫入過程中,在每塊磁盤還加入一個同位檢查數(shù)據(jù)(Parity),這個數(shù)據(jù)會記錄其他磁盤的備份數(shù)據(jù),用于當(dāng)有磁盤損毀時的救援。
RAID-5的容量要減掉一個磁盤容量,也就是陣列的磁盤總數(shù)N-1,因為需要一個磁盤容量來保存同位檢查數(shù)據(jù)Parity
RAID-5的讀取性能很不錯,跟RAID-0有得一拼,但是寫入性能就很尷尬了,在軟件磁盤陣列的時候,CPU還得花時間去計算同位檢查數(shù)據(jù)。同時它只能保證一個磁盤損壞數(shù)據(jù)的安全,如果兩個磁盤損壞就掛了。
RAID-6:跟RAID-5類似,不過這次會使用兩塊磁盤容量作為Parity的存儲,它可以支持兩塊磁盤同時損壞,這個概率應(yīng)該比走在馬路上被一輛驢車撞到的概率還低吧,^_^
====Spare Disk:預(yù)備磁盤的功能====
為了讓系統(tǒng)可以實時在壞掉磁盤時主動重建,需要預(yù)備磁盤spare disk的輔助,平時不包含在磁盤陣列中,當(dāng)磁盤陣列有任何磁盤損壞時,spare disk馬上被主動拉入磁盤陣列中,并將壞掉的磁盤移除磁盤陣列,然后立即重建數(shù)據(jù)系統(tǒng),如果你的磁盤陣列還支持熱插拔就更爽了,因為這個時候只需要把壞的那顆磁盤拔下來,換上一個新的,再將新的磁盤設(shè)置成spare disk,完成了,不用關(guān)機重啟可以完成一切。這對服務(wù)器的穩(wěn)定性有很好的幫助。
磁盤陣列的優(yōu)點:
× 數(shù)據(jù)安全與可靠性,這里指的是硬盤壞了數(shù)據(jù)可以挽回。
× 讀寫性能,RAID-0可以加強讀寫性能,讓你的系哦I/O系統(tǒng)部分得以改善
× 容量:可以讓多個磁盤組合起來,因此單一文件系統(tǒng)可以有相當(dāng)大的容量。
centos提供的軟件磁盤陣列為mdadm這套軟件,以分區(qū)或磁盤為單位,也就是說你不需要多個磁盤就可以設(shè)計你的磁盤陣列了。此外,mdadm支持剛剛提到的RAID-0,RAID-1,RAID-5等級,還支持spare disk的功能。而且提供的管理機制還可以達(dá)到類似可以熱插拔的功能,可以在線(文件系統(tǒng)正常使用)進行分區(qū)的抽換,使用上非常的方便。。
注意:硬盤磁盤陣列在linux看起來就是一個大的磁盤,所有設(shè)備文件名為/dev/sd[a-p],因為使用到SCSI的模塊的原因。而軟件磁盤陣列因為是系統(tǒng)仿真,因此使用的設(shè)備文件名時系統(tǒng)的設(shè)備文件,文件名為/dev/md0, /dev/md1,兩者注意區(qū)別。
====軟件磁盤陣列的設(shè)置====
# mdadm –detail /dev/md0
# mdadm –create –auto=yes /dev/md[0-9] –raid-device=4 –level=[015] –spare-device=2 /dev/sd5 /dev/sd6
–create:為新建RAID的參數(shù)
–auto=yes:決定新建后面接的軟件磁盤陣列設(shè)備,即/dev/md0, /dev/md1等
–raid-devices=N:使用N個磁盤作為磁盤陣列的設(shè)備
–spare-devices=N:使用N個磁盤作為備用spare設(shè)備
–level=[015]:設(shè)置磁盤陣列的等級。支持很多,不過建議只要用0,1,5即可
–detail:后面所接的那個磁盤陣列設(shè)備的詳細(xì)信息
注意最后面接的設(shè)備文件名,可以時整塊磁盤,比如/dev/sdb,也可以是一個分區(qū),比如/dev/sdb1,不過這些設(shè)備文件名的數(shù)量總數(shù)必須等于–raid-devices和–spare-devices的個數(shù)總和才行。
下面我來試試建立一個RAID-5的軟件磁盤陣列,貌似這個比較常用,很適合。
我希望這個RAID-5環(huán)境時這樣子的:
× 利用4個分區(qū)組成RAID-5
× 每個分區(qū)大約為1G大小,需要確定每個分區(qū)一樣大較佳
× 另外加一個分區(qū)設(shè)置為sparedisk
× 這個sparedisk的大小與其他RAID所需分區(qū)一樣大
× 將此RAID-5設(shè)備掛載到/mnt/raid目錄下面
先用fdisk構(gòu)建5個1G的分區(qū):
# fdisk /dev/sda
前面省略。。。
Command (m for help):n
每次分1000M空間大小,注意,我不知道神馬原因,first 扇區(qū)要手動輸入,用p選項查看后,用最后一個分區(qū)的扇區(qū)號+2049才是第一個空閑扇區(qū)號,這個可能時fedora的一個bug,分區(qū)居然不是連續(xù)的,不管了,自己去試試。 主站蜘蛛池模板: 息烽县| 巨野县| 滨海县| 六枝特区| 丰宁| 手机| 中方县| 筠连县| 贵溪市| 噶尔县| 连山| 永平县| 昔阳县| 上犹县| 赤壁市| 洛浦县| 玉林市| 丹东市| 承德县| 斗六市| 息烽县| 噶尔县| 色达县| 江孜县| 保亭| 六枝特区| 泾阳县| 阿克| 东兰县| 革吉县| 望奎县| 天水市| 华安县| 晋江市| 封丘县| 天门市| 合阳县| 察隅县| 固镇县| 巢湖市| 焦作市|