RAID基礎(chǔ)教程(一)

? ? ? ? 在計(jì)算機(jī)發(fā)展的初期,大容量硬盤(pán)價(jià)格非常高,而需要存儲(chǔ)的數(shù)據(jù)量卻越來(lái)越大,CPU運(yùn)算速度飛速提高,數(shù)據(jù)讀寫(xiě)速度不應(yīng)該成為計(jì)算機(jī)系統(tǒng)處理的瓶頸,特別是在信息時(shí)代,數(shù)據(jù)對(duì)企業(yè)和個(gè)人的重要性越來(lái)越大,數(shù)據(jù)存儲(chǔ)安全更需要保障。因而產(chǎn)生了如何在各個(gè)小容量硬盤(pán)的基礎(chǔ)之上使用大容量空間同時(shí)保障數(shù)據(jù)的安全性的技術(shù),這就是RAID。

?一:raid技術(shù)講解

1.1 RAID基本概念

?? RAID,為Redundant Arrays of Independent Disks的簡(jiǎn)稱(chēng),中文為獨(dú)立冗余磁盤(pán)陣列。在1987年由美國(guó)柏克萊大學(xué)提出RAID(Redundant

Array of Inexpensive Disks--廉價(jià)冗余磁盤(pán)陣列)理論,作為高性能,高可靠的存儲(chǔ)系統(tǒng)。RAID陣列技術(shù)允許將一系列磁盤(pán)分組,以實(shí)現(xiàn)為數(shù)據(jù)保護(hù)而必需的數(shù)據(jù)冗余,以及為提高讀寫(xiě)性能而形成的數(shù)據(jù)條帶分布。RAID最初用于高端服務(wù)器市場(chǎng),不過(guò)隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,RAID技術(shù)已經(jīng)滲透到計(jì)算機(jī)遍布的各個(gè)領(lǐng)域。,如今,在家用電腦主板中,RAID控制芯片也隨處可見(jiàn)。RAID的級(jí)別從RAID概念的提出到現(xiàn)在,巳經(jīng)發(fā)展了多個(gè)級(jí)別,有明確標(biāo)準(zhǔn)級(jí)別分別是0、1、2、3、4、5等。但是最常用的是0、1、3、5四個(gè)級(jí)別。其他還有6、7、10、30、50等。


? ? ?RAID的級(jí)別從RAID概念的提出到現(xiàn)在,巳經(jīng)發(fā)展了多個(gè)級(jí)別,有明確標(biāo)準(zhǔn)級(jí)別分別是0、1、2、3、4、5等。但是最常用的是0、1、3、5四個(gè)級(jí)別。其他還有6、7、10、30、50等。RAID為使用者降低了成本、增加了執(zhí)行效率,并提供了系統(tǒng)運(yùn)行的穩(wěn)定性。   RAID也有全軟、半軟半硬與全硬之分。全軟RAID就是指RAID的所有功能都是操作系統(tǒng)(OS)與CPU來(lái)完成,沒(méi)有第三方的控制/處理(業(yè)界稱(chēng)其為RAID協(xié)處理器)與I/O芯片。這樣,有關(guān)RAID的所有任務(wù)的處理都由CPU來(lái)完成,可想而知這是效率最低的一種RAID。由于全軟RAID是在操作系統(tǒng)下實(shí)現(xiàn)RAID,不能保護(hù)系統(tǒng)盤(pán),亦即系統(tǒng)分區(qū)不能參與實(shí)現(xiàn)RAID。有些操作系統(tǒng),RAID的配置信息存在系統(tǒng)信息中,而不是存在磁盤(pán)上,當(dāng)系統(tǒng)崩潰,需重新安裝時(shí),RAID的信息也會(huì)丟失。尤其是全軟RAID 5是CPU的增強(qiáng)方式,會(huì)導(dǎo)致30%-40%的I/O功能降低,所以在服務(wù)器中不建議使用全軟RAID。??

標(biāo)準(zhǔn)的RAID寫(xiě)操作,包括如:RAID4或RAID5中所必需的校驗(yàn)計(jì)算,需包括以下幾個(gè)步驟:(1)以校驗(yàn)盤(pán)中讀取數(shù)據(jù)(2)以目標(biāo)數(shù)據(jù)盤(pán)中讀取數(shù)據(jù)(3)以舊校驗(yàn)數(shù)據(jù),新數(shù)據(jù)及已存在數(shù)據(jù),生成新的校驗(yàn)數(shù)據(jù)(4)將新校驗(yàn)數(shù)據(jù)寫(xiě)入校驗(yàn)盤(pán)(5)將新數(shù)據(jù)寫(xiě)入目標(biāo)數(shù)據(jù)盤(pán)當(dāng)主機(jī)將一個(gè)待寫(xiě)入陣列RAID組中的數(shù)據(jù)發(fā)送到陣列時(shí),陣列控制器將該數(shù)據(jù)保存在緩存中并立即報(bào)告主機(jī)該數(shù)據(jù)的寫(xiě)入工作已完成。該數(shù)據(jù)寫(xiě)入到陣列硬盤(pán)的工作由陣列控制器完成,該數(shù)據(jù)可繼續(xù)存放在Cache中直到Cache滿(mǎn),而且要為新數(shù)據(jù)騰出空間而必須刷新時(shí)或陣列需停機(jī)時(shí),控制器會(huì)及時(shí)將該數(shù)據(jù)從Cache寫(xiě)入陣列硬盤(pán)中。這種緩存回寫(xiě)技術(shù)使得主機(jī)不必等待RAID校驗(yàn)計(jì)算過(guò)程的完成,即可處理下一個(gè)讀寫(xiě)任務(wù),這樣,主機(jī)的讀寫(xiě)效率大為增加。當(dāng)主機(jī)命令將一個(gè)數(shù)據(jù)寫(xiě)入硬盤(pán),則陣列控制器將該數(shù)據(jù)寫(xiě)入緩存最上面的位置,只有新數(shù)據(jù)才會(huì)被控制器按Write-Back?Cache的方式最后寫(xiě)入硬盤(pán)。

RAID

特點(diǎn):

1.成本低,功耗小,傳輸速率高。在RAID中,可以讓很多磁盤(pán)驅(qū)動(dòng)器同時(shí)傳輸數(shù)據(jù),而這些磁盤(pán)驅(qū)動(dòng)器在邏輯上又是一個(gè)磁盤(pán)驅(qū)動(dòng)器,所以使用RAID可以達(dá)到單個(gè)的磁盤(pán)驅(qū)動(dòng)器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問(wèn)題。因?yàn)楫?dāng)時(shí)CPU的速度增長(zhǎng)很快,而磁盤(pán)驅(qū)動(dòng)器的數(shù)據(jù)傳輸速率無(wú)法大幅提高,所以需要有一種方案解決二者之間的矛盾。而RAID最后成功了。

2.可以提供容錯(cuò)功能,這是大多數(shù)使用RAID的第二個(gè)原因。因?yàn)?,普通磁盤(pán)驅(qū)動(dòng)器無(wú)法提供容錯(cuò)功能,如果不包括寫(xiě)在磁盤(pán)上的CRC(循環(huán)冗余校驗(yàn))碼的話(huà)。RAID和容錯(cuò)是建立在每個(gè)磁盤(pán)驅(qū)動(dòng)器的硬件容錯(cuò)功能之上的,所以它可以提供更高的安全性。

3.?RAID比起傳統(tǒng)的大直徑磁盤(pán)驅(qū)動(dòng)器來(lái),在同樣的容量下,價(jià)格要低許多。

1.1.1 ? ?條帶


條帶(strip)是把連續(xù)的數(shù)據(jù)分割成相同大小的數(shù)據(jù)塊,把每段數(shù)據(jù)分別寫(xiě)入到陣列中的不同磁盤(pán)上的方法。簡(jiǎn)單的說(shuō),條帶是一種將多個(gè)磁盤(pán)驅(qū)動(dòng)器合并為一個(gè)卷的方法。許多情況下,這是通過(guò)硬件控制器來(lái)完成的。

當(dāng)多個(gè)進(jìn)程同時(shí)訪(fǎng)問(wèn)一個(gè)磁盤(pán)時(shí),可能會(huì)出現(xiàn)磁盤(pán)沖突。大多數(shù)磁盤(pán)系統(tǒng)都對(duì)訪(fǎng)問(wèn)次數(shù)(每秒的 I/O 操作,IOPS)和數(shù)據(jù)傳輸率(每秒傳輸?shù)臄?shù)據(jù)量,TPS)有限制。當(dāng)達(dá)到這些限制時(shí),后面需要訪(fǎng)問(wèn)磁盤(pán)的進(jìn)程就需要等待,這時(shí)就是所謂的磁盤(pán)沖突。避免磁盤(pán)沖突是優(yōu)化 I/O 性能的一個(gè)重要目標(biāo),而 I/O 性能的優(yōu)化與其他資源(如CPU和內(nèi)存)的優(yōu)化有著很大的區(qū)別 ,I/O 優(yōu)化最有效的手段是將 I/O 最大限度的進(jìn)行平衡。

條帶化技術(shù)就是一種自動(dòng)的將 I/O 的負(fù)載均衡到多個(gè)物理磁盤(pán)上的技術(shù),條帶化技術(shù)就是將一塊連續(xù)的數(shù)據(jù)分成很多小部分并把他們分別存儲(chǔ)到不同磁盤(pán)上去。這就能使多個(gè)進(jìn)程同時(shí)訪(fǎng)問(wèn)數(shù)據(jù)的多個(gè)不同部分而不會(huì)造成磁盤(pán)沖突,而且在需要對(duì)這種數(shù)據(jù)進(jìn)行順序訪(fǎng)問(wèn)的時(shí)候可以獲得最大程度上的 I/O 并行能力,從而獲得非常好的性能。由于條帶化在 I/O 性能問(wèn)題上的優(yōu)越表現(xiàn),以致于在應(yīng)用系統(tǒng)所在的計(jì)算環(huán)境中的多個(gè)層次或平臺(tái)都涉及到了條帶化的技術(shù),如操作系統(tǒng)和存儲(chǔ)系統(tǒng)這兩個(gè)層次中都可能使用條帶化技術(shù)。

條帶化后,條帶卷所能提供的速度比單個(gè)盤(pán)所能提供的速度要快很多,由于現(xiàn)在存儲(chǔ)技術(shù)成熟,大多數(shù)系統(tǒng)都采用條帶化來(lái)實(shí)現(xiàn)系統(tǒng)的I/O負(fù)載分擔(dān),如果OS有LVM軟件或者硬件條帶設(shè)備,決定因素是條帶深度(stripe depth)和條帶寬度(stripe width)。

條帶深度:指的是條帶的大小,也叫條帶大小。有時(shí)也被叫做block size, chunk size, stripe length 或者granularity。這個(gè)參數(shù)指的是寫(xiě)在每塊磁盤(pán)上的條帶數(shù)據(jù)塊的大小。RAID的數(shù)據(jù)塊大小一般在2KB到512KB之間(或者更大),其數(shù)值是2的次方,即2KB,4KB,8KB,16KB這樣。

條帶大小對(duì)性能的影響比條帶寬度難以量化的多。

減小條帶大小: 由于條帶大小減小了,則文件被分成了更多個(gè),更小的數(shù)據(jù)塊。這些數(shù)據(jù)塊會(huì)被分散到更多的硬盤(pán)上存儲(chǔ),因此提高了傳輸?shù)男阅?,但是由于要多次尋找不同的?shù)據(jù)塊,磁盤(pán)定位的性能就下降了。

增加條帶大小: 與減小條帶大小相反,會(huì)降低傳輸性能,提高定位性能。

根據(jù)上邊的論述,我們會(huì)發(fā)現(xiàn)根據(jù)不同的應(yīng)用類(lèi)型,不同的性能需求,不同驅(qū)動(dòng)器的不同特點(diǎn)(如SSD硬盤(pán)),不存在一個(gè)普遍適用的"最佳條帶大小"。所以這也是存儲(chǔ)廠家,文件系統(tǒng)編寫(xiě)者允許我們自己定義條帶大小的原因。

條帶寬度:是指同時(shí)可以并發(fā)讀或?qū)懙臈l帶數(shù)量。這個(gè)數(shù)量等于RAID中的物理硬盤(pán)數(shù)量。例如一個(gè)經(jīng)過(guò)條帶化的,具有4塊物理硬盤(pán)的陣列的條帶寬度就是4。增加條帶寬度,可以增加陣列的讀寫(xiě)性能。道理很明顯,增加更多的硬盤(pán),也就增加了可以同時(shí)并發(fā)讀或?qū)懙臈l帶數(shù)量。在其他條件一樣的前提下,一個(gè)由8塊18G硬盤(pán)組成的陣列相比一個(gè)由4塊36G硬盤(pán)組成的陣列具有更高的傳輸性能。

條帶是一種將多個(gè)磁盤(pán)驅(qū)動(dòng)器合并為一個(gè)卷的方法。 許多情況下,這是通過(guò)硬件控制器來(lái)完成的。 GEOM磁盤(pán)子系統(tǒng)提供了 RAID0 的軟件支持, 它也成為磁盤(pán)條帶。在 RAID0 系統(tǒng)中, 數(shù)據(jù)被分為多個(gè)塊,這些塊將分別寫(xiě)入陣列的所有磁盤(pán)。 與先前需要等待系統(tǒng)將 256k 數(shù)據(jù)寫(xiě)到一塊磁盤(pán)上不同, RAID0 系統(tǒng), 能夠同時(shí)分別將打碎的 64k 寫(xiě)到四塊磁盤(pán)上,從而提供更好的 I/O 性能。 這一性能提升還能夠通過(guò)使用多個(gè)磁盤(pán)控制器來(lái)進(jìn)一步改進(jìn)。在 RAID0 條帶中的每一個(gè)盤(pán)的尺寸必須一樣, 因?yàn)镮/O 請(qǐng)求是分散到多個(gè)盤(pán)上的, 以便讓這些盤(pán)上的讀寫(xiě)并行完成。


1.1.2 ? ?校驗(yàn)


1.1.3 重建


1.1.4 RAID組的狀態(tài)


1.1.5 物理卷

物理卷就是真實(shí)的物理硬盤(pán)

1.1.6 ?邏輯卷

在物理卷的基礎(chǔ)上可以按照指定容量創(chuàng)建一個(gè)或多個(gè)邏輯卷,通過(guò)LUN(Logic Unit Number)來(lái)標(biāo)識(shí)


1.1.7 ?物理卷與邏輯卷的關(guān)系

1.1.7.1通用關(guān)系


1.1.7.2 華三虛擬RAID關(guān)系表


1.1.8 熱備盤(pán)與熱插拔

熱備:HotSpare

定義:當(dāng)冗余的RAID組中某個(gè)硬盤(pán)失效時(shí),在不干擾當(dāng)前RAID系統(tǒng)的正常使用的情況下,用RAID系統(tǒng)中另外一個(gè)正常的備用硬盤(pán)自動(dòng)頂替失效硬盤(pán),及時(shí)保證RAID系統(tǒng)的冗余性

全局式:備用硬盤(pán)為系統(tǒng)中所有的冗余RAID組共享

專(zhuān)用式:備用硬盤(pán)為系統(tǒng)中某一組冗余RAID組專(zhuān)用

熱插拔:HotSwap

定義:在不影響系統(tǒng)正常運(yùn)轉(zhuǎn)的情況下,用正常的硬盤(pán)物理替換RAID系統(tǒng)中失效硬盤(pán)

關(guān)鍵在于熱插拔時(shí)電子器件的保護(hù)機(jī)制

1.1.8.1 全局熱備


1.1.8.2 專(zhuān)用熱備


1.1.9 基本磁盤(pán)

基本磁盤(pán)如果要改變分區(qū)容量就會(huì)丟失全部數(shù)據(jù)(當(dāng)然也有一些特殊的磁盤(pán)工具軟件可以改變分區(qū)而不會(huì)破壞數(shù)據(jù))。????

1.1.10動(dòng)態(tài)磁盤(pán)

動(dòng)態(tài)磁盤(pán)在不重新啟動(dòng)計(jì)算機(jī)的情況下可更改磁盤(pán)容量大小,而且不會(huì)丟失數(shù)據(jù)

動(dòng)態(tài)磁盤(pán)與基本磁盤(pán)的區(qū)別

1.可以任意更改磁盤(pán)容量動(dòng)態(tài)磁盤(pán)在不重新啟動(dòng)計(jì)算機(jī)的情況下可更改磁盤(pán)容量大小,而且不會(huì)丟失數(shù)據(jù),而基本磁盤(pán)如果要改變分區(qū)容量就會(huì)丟失全部數(shù)據(jù)(當(dāng)然也有一些特殊的磁盤(pán)工具軟件可以改變分區(qū)而不會(huì)破壞數(shù)據(jù),如PQMagic等)。

2.磁盤(pán)空間的限制動(dòng)態(tài)磁盤(pán)可被擴(kuò)展到磁盤(pán)中不連續(xù)的磁盤(pán)空間,還可以創(chuàng)建跨磁盤(pán)的卷集,將幾個(gè)磁盤(pán)合為一個(gè)大卷集。而基本磁盤(pán)的分區(qū)必須是同一磁盤(pán)上的連續(xù)空間,分區(qū)的最大容量當(dāng)然也就是磁盤(pán)的容量。

3.卷集或分區(qū)個(gè)數(shù)動(dòng)態(tài)磁盤(pán)在一個(gè)磁盤(pán)上可創(chuàng)建的卷集個(gè)數(shù)沒(méi)有限制,相對(duì)的基本磁盤(pán)在一個(gè)磁盤(pán)上最多只能分4個(gè)區(qū),而且使用DOS或Windows 9X時(shí)只能分一個(gè)主分區(qū)和擴(kuò)展分區(qū)。

1.1.11 RAID

1.1.11.1 為什么要用RAID卡

用戶(hù)對(duì)磁盤(pán)系統(tǒng)的四大要求

增加磁盤(pán)I/O存取速度

數(shù)據(jù)安全性要求,及容錯(cuò)(Faulttolerance)的能力

有效的利用磁盤(pán)空間

分擔(dān)主機(jī)CPU的I/O事務(wù)

降低內(nèi)存及磁盤(pán)的性能差異

提高計(jì)算機(jī)的整體工作性能

1.1.12 RAID寫(xiě)數(shù)據(jù)的三種模式

1.1.12.1、整條寫(xiě)


整條寫(xiě)的實(shí)現(xiàn)方式是:

第一步:直接將新寫(xiě)入的數(shù)據(jù)在cache里通過(guò)校驗(yàn)運(yùn)算,計(jì)算出校驗(yàn)數(shù)據(jù)。

第二步:再將需要寫(xiě)入的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)同時(shí)寫(xiě)進(jìn)一個(gè)條帶。

如圖所示:

IO效率約75%即讀一次IO,寫(xiě)3次IO,有效寫(xiě)數(shù)據(jù)3次IO,有效率是75%

1.1.12.2、重構(gòu)寫(xiě)

一個(gè)IO寫(xiě)操作,它所寫(xiě)入的條帶所在的磁盤(pán)數(shù)超過(guò)RAID磁盤(pán)一半時(shí),可采用重構(gòu)寫(xiě)方式。

重構(gòu)寫(xiě)的實(shí)現(xiàn)方式是:

第一步:先將所需寫(xiě)入的新數(shù)據(jù)保存到cache,同時(shí)讀取其它磁盤(pán)上的老數(shù)據(jù)到cache,再將新數(shù)據(jù)、老數(shù)據(jù)做校驗(yàn)運(yùn)算,得出新校驗(yàn)數(shù)據(jù)。

第二步:再將新數(shù)據(jù)、老數(shù)據(jù)和新校驗(yàn)數(shù)據(jù)同時(shí)寫(xiě)入所在的磁盤(pán)扇區(qū)。

如圖所示:


IO有效率40%即:讀一次IO,寫(xiě)4次IO,有效寫(xiě)數(shù)據(jù)2次IO,有效率是40%


1.1.12.3 、讀改寫(xiě)(read-modify-write)

一個(gè)IO寫(xiě)操作,它所寫(xiě)入的條帶所在的磁盤(pán)數(shù)不超過(guò)RAID磁盤(pán)一半時(shí),可采用讀改寫(xiě)方式。

讀改寫(xiě)的實(shí)現(xiàn)方式是:

第一步,先將所需寫(xiě)入的新數(shù)據(jù)保存到cache,同時(shí)讀取所需要寫(xiě)入扇區(qū)上的老數(shù)據(jù)到cache,同時(shí)讀取校驗(yàn)盤(pán)上相對(duì)應(yīng)扇區(qū)上的老校驗(yàn)數(shù)據(jù)到cache,再將新數(shù)據(jù)、老數(shù)據(jù)和老校驗(yàn)數(shù)據(jù)做校驗(yàn)運(yùn)算,得出新校驗(yàn)數(shù)據(jù)。

第二步,再將新數(shù)據(jù)、新校驗(yàn)數(shù)據(jù)同時(shí)寫(xiě)入所在的磁盤(pán)扇區(qū)。

如圖所示:


IO有效率25%讀兩次,寫(xiě)兩次,有效寫(xiě)IO只有1次,所以有效率是25%

1.1.13 使用RAID的價(jià)值


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容