RAID技術(shù),RAID技術(shù)原理詳細(xì)解說
RAID技術(shù),RAID技術(shù)原理詳細(xì)解說
RAID入門基礎(chǔ)及RAID0技術(shù)詳解
隨著計(jì)算機(jī)應(yīng)用的日益普及,人們對(duì)計(jì)算速度和性能的要求也逐漸提高。在一個(gè)完整的計(jì)算機(jī)系統(tǒng)中,CPU和內(nèi)存的作用固然重要,但是數(shù)據(jù)存儲(chǔ)設(shè)備性能的好壞和速度的快慢也直接影響到整個(gè)系統(tǒng)的表現(xiàn)。本文所要講解的RAID技術(shù)起初主要應(yīng)用于服務(wù)器高端市場(chǎng),但是隨著個(gè)人用戶市場(chǎng)的成熟和發(fā)展,正不斷向低端市場(chǎng)靠攏,從而為用戶提供了一種既可以提升硬盤速度,又能夠確保數(shù)據(jù)安全性的良好的解決方案。本文將對(duì)RAID技術(shù)進(jìn)行較為詳細(xì)的介紹,希望能夠?qū)V大讀者有所幫助。
入門基礎(chǔ)
RAID是英文Redundant Array of Inexpensive Disks的縮寫,中文簡(jiǎn)稱為磁盤陣列。其實(shí),從RAID的英文原意中,我們已經(jīng)能夠多少知道RAID就是一種由多塊廉價(jià)磁盤構(gòu)成的冗余陣列。雖然RAID包含多塊磁盤,但是在操作系統(tǒng)下是作為一個(gè)獨(dú)立的大型媧⑸璞賦現(xiàn)。RAID技術(shù)分為幾種不同的等級(jí),分別可以提供不同的速度,安全性和性價(jià)比。
人們?cè)陂_發(fā)RAID時(shí)主要是基于以下設(shè)想,即幾塊小容量硬盤的價(jià)格總和要低于一塊大容量的硬盤。雖然目前這一設(shè)想還沒有成為現(xiàn)實(shí),RAID在節(jié)省成本方面的作用還不是很明顯,但是RAID可以充分發(fā)揮出多塊硬盤的優(yōu)勢(shì),實(shí)現(xiàn)遠(yuǎn)遠(yuǎn)超出任何一塊單獨(dú)硬盤的速度和吞吐量。除了性能上的提高之外,RAID還可以提供良好的容錯(cuò)能力,在任何一塊硬盤出現(xiàn)問題的情況下都可以繼續(xù)工作,不會(huì)受到損壞硬盤的影響。
RAID 0
我們?cè)谇拔闹幸呀?jīng)提到RAID分為幾種不同的等級(jí),其中,RAID 0是最簡(jiǎn)單的一種形式。RAID 0可以把多塊硬盤連接在一起形成一個(gè)容量更大的存儲(chǔ)設(shè)備。最簡(jiǎn)單的RAID 0技術(shù)只是提供更多的磁盤空間,不過我們也可以通過設(shè)置,使用RAID 0來提高磁盤的性能和吞吐量。RAID 0沒有冗余或錯(cuò)誤修復(fù)能力,但是實(shí)現(xiàn)成本是最低的。
RAID 0最簡(jiǎn)單的實(shí)現(xiàn)方式就是把幾塊硬盤串聯(lián)在一起創(chuàng)建一個(gè)大的卷集。磁盤之間的連接既可以使用硬件的形式通過智能磁盤控制器實(shí)現(xiàn),也可以使用操作系統(tǒng)中的磁盤驅(qū)動(dòng)程序以軟件的方式實(shí)現(xiàn)。圖示如下:
在上述配置中,我們把4塊磁盤組合在一起形成一個(gè)獨(dú)立的邏輯驅(qū)動(dòng)器,容量相當(dāng)于任何任何一塊單獨(dú)硬盤的4倍。如圖中彩色區(qū)域所示,數(shù)據(jù)被依次寫入到各磁盤中。當(dāng)一塊磁盤的空間用盡時(shí),數(shù)據(jù)就會(huì)被自動(dòng)寫入到下一塊磁盤中。
這種設(shè)置方式只有一個(gè)好處,那就是可以增加磁盤的容量。至于速度,則與其中任何一塊磁盤的速度相同,這是因?yàn)橥粫r(shí)間內(nèi)只能對(duì)一塊磁盤進(jìn)行I/O操作。如果其中的任何一塊磁盤出現(xiàn)故障,整個(gè)系統(tǒng)將會(huì)受到破壞,無法繼續(xù)使用。從這種意義上說,使用純RAID 0方式的可靠性僅相當(dāng)于單獨(dú)使用一塊硬盤的1/4(因?yàn)楸纠蠷AID 0使用了4塊硬盤)。
雖然我們無法改變RAID 0的可靠性問題,但是我們可以通過改變配置方式,提供系統(tǒng)的性能。與前文所述的順序?qū)懭霐?shù)據(jù)不同,我們可以通過創(chuàng)建帶區(qū)集,在同一時(shí)間內(nèi)向多塊磁盤寫入數(shù)據(jù)。具體如圖所示:
上圖中,系統(tǒng)向邏輯設(shè)備發(fā)出的I/O指令被轉(zhuǎn)化為4項(xiàng)操作,其中的每一項(xiàng)操作都對(duì)應(yīng)于一塊硬盤。我們從圖中可以清楚的看到通過建立帶區(qū)集,原先順序?qū)懭氲臄?shù)據(jù)被分散到所有的四塊硬盤中同時(shí)進(jìn)行讀寫。四塊硬盤的并行操作使同一時(shí)間內(nèi)磁盤讀寫的速度提升了4倍。
在創(chuàng)建帶區(qū)集時(shí),合理的選擇帶區(qū)的大小非常重要。如果帶區(qū)過大,可能一塊磁盤上的帶區(qū)空間就可以滿足大部分的I/O操作,使數(shù)據(jù)的讀寫仍然只局限在少數(shù)的一、兩塊硬盤上,不能充分的發(fā)揮出并行操作的優(yōu)勢(shì)。另一方面,如果帶區(qū)過小,任何I/O指令都可能引發(fā)大量的讀寫操作,占用過多的控制器總線帶寬。因此,在創(chuàng)建帶區(qū)集時(shí),我們應(yīng)當(dāng)根據(jù)實(shí)際應(yīng)用的需要,慎重的選擇帶區(qū)的大小。
我們已經(jīng)知道,帶區(qū)集可以把數(shù)據(jù)均勻的分配到所有的磁盤上進(jìn)行讀寫。如果我們把所有的硬盤都連接到一個(gè)控制器上的話,可能會(huì)帶來潛在的危害。這是因?yàn)楫?dāng)我們頻繁進(jìn)行讀寫操作時(shí),很容易使控制器或總線的負(fù)荷超載。為了避免出現(xiàn)上述問題,建議用戶可以使用多個(gè)磁盤控制器。示意圖如下:
這樣,我們就可以把原先控制器總線上的數(shù)據(jù)流量降低一半。當(dāng)然,最好解決方法還是為每一塊硬盤都配備一個(gè)專門的磁盤控制器。
RAID 1技術(shù)詳解
雖然RAID 0可以提供更多的空間和更好的性能,但是整個(gè)系統(tǒng)是非常不可靠的,如果出現(xiàn)故障,無法進(jìn)行任何補(bǔ)救。所以,RAID 0一般只是在那些對(duì)數(shù)據(jù)安全性要求不高的情況下才被人們使用。
RAID 1和RAID 0截然不同,其技術(shù)重點(diǎn)全部放在如何能夠在不影響性能的情況下最大限度的保證系統(tǒng)的可靠性和可修復(fù)性上。RAID 1是所有RAID等級(jí)中實(shí)現(xiàn)成本最高的一種,盡管如此,人們還是選擇RAID 1來保存那些關(guān)鍵性的重要數(shù)據(jù)。
RAID 1又被稱為磁盤鏡像,每一個(gè)磁盤都具有一個(gè)對(duì)應(yīng)的鏡像盤。對(duì)任何一個(gè)磁盤的數(shù)據(jù)寫入都會(huì)被復(fù)制鏡像盤中;系統(tǒng)可以從一組鏡像盤中的任何一個(gè)磁盤讀取數(shù)據(jù)。顯然,磁盤鏡像肯定會(huì)提高系統(tǒng)成本。因?yàn)槲覀兯苁褂玫目臻g只是所有磁盤容量總和的一半。下圖顯示的是由4塊硬盤組成的磁盤鏡像,其中可以作為存儲(chǔ)空間使用的僅為兩塊硬盤(畫斜線的為鏡像部分)。
RAID 1下,任何一塊硬盤的故障都不會(huì)影響到系統(tǒng)的正常運(yùn)行,而且只要能夠保證任何一對(duì)鏡像盤中至少有一塊磁盤可以使用,RAID 1甚至可以在一半數(shù)量的硬盤出現(xiàn)問題時(shí)不間斷的工作。當(dāng)一塊硬盤失效時(shí),系統(tǒng)會(huì)忽略該硬盤,轉(zhuǎn)而使用剩余的鏡像盤讀寫數(shù)據(jù)。
通常,我們把出現(xiàn)硬盤故障的RAID系統(tǒng)稱為在降級(jí)模式下運(yùn)行。雖然這時(shí)保存的數(shù)據(jù)仍然可以繼續(xù)使用,但是RAID系統(tǒng)將不再可靠。如果剩余的鏡像盤也出現(xiàn)問題,那么整個(gè)系統(tǒng)就會(huì)崩潰。因此,我們應(yīng)當(dāng)及時(shí)的更換損壞的硬盤,避免出現(xiàn)新的問題。 更換新盤之后,原有好盤中的數(shù)據(jù)必須被復(fù)制到新盤中。這一操作被稱為同步鏡像。同步鏡像一般都需要很長(zhǎng)時(shí)間,尤其是當(dāng)損害的硬盤的容量很大時(shí)更是如此。在同步鏡像的進(jìn)行過程中,外界對(duì)數(shù)據(jù)的訪問不會(huì)受到影響,但是由于復(fù)制數(shù)據(jù)需要占用一部分的帶寬,所以可能會(huì)使整個(gè)系統(tǒng)的性能有所下降。
因?yàn)镽AID 1主要是通過二次讀寫實(shí)現(xiàn)磁盤鏡像,所以磁盤控制器的負(fù)載也相當(dāng)大,尤其是在需要頻繁寫入數(shù)據(jù)的環(huán)境中。為了避免出現(xiàn)性能瓶頸,使用多個(gè)磁盤控制器就顯得很有必要。下圖示意了使用兩個(gè)控制器的磁盤鏡像。
使用兩個(gè)磁盤控制器不僅可以改善性能,還可以進(jìn)一步的提高數(shù)據(jù)的安全性和可用性。我們已經(jīng)知道,RAID 1最多允許一半數(shù)量的硬盤出現(xiàn)故障,所以按照我們上圖中的設(shè)置方式(原盤和鏡像盤分別連接不同的磁盤控制),即使一個(gè)磁盤控制器出現(xiàn)問題,系統(tǒng)仍然可以使用另外一個(gè)磁盤控制器繼續(xù)工作。這樣,就可以把一些由于意外操作所帶來的損害降低到最低程度。
RAID 0+1
單獨(dú)使用RAID 1也會(huì)出現(xiàn)類似單獨(dú)使用RAID 0那樣的問題,即在同一時(shí)間內(nèi)只能向一塊磁盤寫入數(shù)據(jù),不能充分利用所有的資源。為了解決這一問題,我們可以在磁盤鏡像中建立帶區(qū)集。因?yàn)檫@種配置方式綜合了帶區(qū)集和鏡像的優(yōu)勢(shì),所以被稱為RAID 0+1。
RAID3和RAID5技術(shù)詳解
熱插拔
一些面向高端應(yīng)用的磁盤鏡像系統(tǒng)都可以提供磁盤的熱插拔功能。所謂熱插拔功能,就是允許用戶在不關(guān)閉系統(tǒng),不切斷電源的情況下取出和更換損害的硬盤。如果沒有熱插拔功能,即使磁盤損壞不會(huì)造成數(shù)據(jù)的丟失,用戶仍然需要暫時(shí)關(guān)閉系統(tǒng),以便能夠?qū)τ脖P進(jìn)行更換?,F(xiàn)在,使用熱插拔技術(shù)只要簡(jiǎn)單的打開連接開關(guān)或者轉(zhuǎn)動(dòng)手柄就可以直接取出硬盤,而系統(tǒng)仍然可以不間斷的正常運(yùn)行。
校驗(yàn)
RAID 3和RAID 5都分別使用了校驗(yàn)的概念提供容錯(cuò)能力。簡(jiǎn)單的說,我們可以把校驗(yàn)想象為一種二進(jìn)制的校驗(yàn)和,一個(gè)可以告訴你其它所有字位是否正確的特殊位。 在數(shù)據(jù)通信領(lǐng)域,奇偶校驗(yàn)被用來確定數(shù)據(jù)是否被正確傳送。例如,對(duì)于每一個(gè)字節(jié),我們可以簡(jiǎn)單計(jì)算數(shù)字位1的個(gè)數(shù),并在字節(jié)內(nèi)加入附加校驗(yàn)位。在數(shù)據(jù)的接收方,如果數(shù)字位1的個(gè)數(shù)為奇數(shù),而我們使用的又是奇數(shù)校驗(yàn)的話,則說明該字節(jié)是正確的。同樣對(duì)偶數(shù)校驗(yàn)也是如此。然而,如果數(shù)字位1的個(gè)數(shù)和校驗(yàn)位的奇偶性不一致的話,則說明數(shù)據(jù)在傳送過程中出現(xiàn)了錯(cuò)誤。
RAID系統(tǒng)也采用了相似的校驗(yàn)方法,可以在磁盤系統(tǒng)中創(chuàng)建校驗(yàn)塊,校驗(yàn)塊中的每一位都用來對(duì)其它關(guān)聯(lián)塊中的所有對(duì)應(yīng)位進(jìn)行校驗(yàn)。
在數(shù)據(jù)通訊領(lǐng)域,雖然校驗(yàn)位可以告訴我們某個(gè)字節(jié)是否正確,但是無法告訴我們到底是哪一位出現(xiàn)了問題。這就是說我們可以檢測(cè)錯(cuò)誤,但是不能改正錯(cuò)誤。對(duì)于RAID,這是遠(yuǎn)遠(yuǎn)不夠的。固然錯(cuò)誤的檢測(cè)非常重要,但是如果不能對(duì)錯(cuò)誤進(jìn)行修復(fù),我們就無法提高整個(gè)系統(tǒng)的可靠性。
舉個(gè)例子來說,假設(shè)我們發(fā)現(xiàn)校驗(yàn)塊中第10個(gè)字節(jié)的第5位不正確。如果這個(gè)校驗(yàn)塊包含的是另外8個(gè)數(shù)據(jù)塊的校驗(yàn)信息,那么哪一個(gè)數(shù)據(jù)塊才是問題的罪魁禍?zhǔn)啄??也許你可能會(huì)想為每一個(gè)數(shù)據(jù)塊都建立一個(gè)校驗(yàn)塊就可以解決問題。但是這種方法很難實(shí)現(xiàn)。事實(shí)上,RAID主要是借助磁盤控制器的錯(cuò)誤報(bào)告檢測(cè)錯(cuò)誤位置,并進(jìn)行修復(fù)。如果磁盤控制器在讀取數(shù)據(jù)時(shí)沒有發(fā)出任何“抱怨”,那么系統(tǒng)將會(huì)視該數(shù)據(jù)為正確數(shù)據(jù),繼續(xù)使用。
RAID 3
RAID 3采用的是一種較為簡(jiǎn)單的校驗(yàn)實(shí)現(xiàn)方式,使用一個(gè)專門的磁盤存放所有的校驗(yàn)數(shù)據(jù),而在剩余的磁盤中創(chuàng)建帶區(qū)集分散數(shù)據(jù)的讀寫操作。例如,在一個(gè)由4塊硬盤構(gòu)成的RAID 3系統(tǒng)中,3塊硬盤將被用來保存數(shù)據(jù),第四塊硬盤則專門用于校驗(yàn)。這種配置方式可以用3+1的形式表示,具體如圖:
在上圖中,我們用相同的顏色表示使用同一個(gè)校驗(yàn)塊的所有數(shù)據(jù)塊,斜線標(biāo)出的部分為校驗(yàn)塊。校驗(yàn)塊和所有對(duì)應(yīng)的數(shù)據(jù)塊一起構(gòu)成一個(gè)帶區(qū)。
第四塊硬盤中的每一個(gè)校驗(yàn)塊所包含的都是其它3塊硬盤中對(duì)應(yīng)數(shù)據(jù)塊的校驗(yàn)信息。RAID 3的成功之處就在于不僅可以象RAID 1那樣提供容錯(cuò)功能,而且整體開銷從RAID 1的50%下降為25%(RAID 3+1)。隨著所使用磁盤數(shù)量的增多,成本開銷會(huì)越來越小。舉例來說,如果我們使用7塊硬盤,那么總開銷就會(huì)將到12.5%(1/7)。
在不同情況下,RAID 3讀寫操作的復(fù)雜程度不同。最簡(jiǎn)單的情況就是從一個(gè)完好的RAID 3系統(tǒng)中讀取數(shù)據(jù)。這時(shí),只需要在數(shù)據(jù)存儲(chǔ)盤中找到相應(yīng)的數(shù)據(jù)塊進(jìn)行讀取操作即可,不會(huì)增加任何額外的系統(tǒng)開銷。
當(dāng)向RAID 3寫入數(shù)據(jù)時(shí),情況會(huì)變得復(fù)雜一些。即使我們只是向一個(gè)磁盤寫入一個(gè)數(shù)據(jù)塊,也必須計(jì)算與該數(shù)據(jù)塊同處一個(gè)帶區(qū)的所有數(shù)據(jù)塊的校驗(yàn)值,并將新值重新寫入到校驗(yàn)塊中。例如,當(dāng)我們向上圖中的綠色數(shù)據(jù)塊寫入數(shù)據(jù)時(shí),必須重新計(jì)算所有3個(gè)綠色數(shù)據(jù)塊的校驗(yàn)值,然后重寫位于第四塊硬盤的綠色校驗(yàn)塊。由此我們可以看出,一個(gè)寫入操作事實(shí)上包含了數(shù)據(jù)讀取(讀取帶區(qū)中的關(guān)聯(lián)數(shù)據(jù)塊),校驗(yàn)值計(jì)算,數(shù)據(jù)塊寫入和校驗(yàn)塊寫入四個(gè)過程。系統(tǒng)開銷大大增加。
我們可以通過適當(dāng)設(shè)置帶區(qū)的大小使RAID系統(tǒng)得到簡(jiǎn)化。如果某個(gè)寫入操作的長(zhǎng)度恰好等于一個(gè)完整帶區(qū)的大小(全帶區(qū)寫入),那么我們就不必再讀取帶區(qū)中的關(guān)聯(lián)數(shù)據(jù)塊計(jì)算校驗(yàn)值。我們只需要計(jì)算整個(gè)帶區(qū)的校驗(yàn)值,然后直接把數(shù)據(jù)和校驗(yàn)信息寫入數(shù)據(jù)盤和校驗(yàn)盤即可。
到目前為止,我們所探討的都是正常運(yùn)行狀況下的數(shù)據(jù)讀寫。下面,我們?cè)賮砜匆幌庐?dāng)硬盤出現(xiàn)故障時(shí),RAID系統(tǒng)在降級(jí)模式下的運(yùn)行情況。
RAID 3雖然具有容錯(cuò)能力,但是系統(tǒng)會(huì)受到影響。當(dāng)一塊磁盤失效時(shí),該磁盤上的所有數(shù)據(jù)塊必須使用校驗(yàn)信息重新建立。如果我們是從好盤中讀取數(shù)據(jù)塊,不會(huì)有任何變化。但是如果我們所要讀取的數(shù)據(jù)塊正好位于已經(jīng)損壞的磁盤,則必須同時(shí)讀取同一帶區(qū)中的所有其它數(shù)據(jù)塊,并根據(jù)校驗(yàn)值重建丟失的數(shù)據(jù)。
當(dāng)我們更換了損壞的磁盤之后,系統(tǒng)必須一個(gè)數(shù)據(jù)塊一個(gè)數(shù)據(jù)塊的重建壞盤中的數(shù)據(jù)。整個(gè)過程包括讀取帶區(qū),計(jì)算丟失的數(shù)據(jù)塊和向新盤寫入新的數(shù)據(jù)塊,都是在后臺(tái)自動(dòng)進(jìn)行。重建活動(dòng)最好是在RAID系統(tǒng)空閑的時(shí)候進(jìn)行,否則整個(gè)系統(tǒng)的性能會(huì)受到嚴(yán)重的影響。
RAID 3的性能問題
除了我們?cè)谏衔挠懻撨^的有關(guān)數(shù)據(jù)寫入和降級(jí)模式的問題之外,在使用RAID 3的過程中還有其他一些性能上的問題需要引起我們的注意。RAID 3所存在的最大一個(gè)不足同時(shí)也是導(dǎo)致RAID 3很少被人們采用的原因就是校驗(yàn)盤很容易成為整個(gè)系統(tǒng)的瓶頸。 我們已經(jīng)知道RAID 3會(huì)把數(shù)據(jù)的寫入操作分散到多個(gè)磁盤上進(jìn)行,然而不管是向哪一個(gè)數(shù)據(jù)盤寫入數(shù)據(jù),都需要同時(shí)重寫校驗(yàn)盤中的相關(guān)信息。因此,對(duì)于那些經(jīng)常需要執(zhí)行大量寫入操作的應(yīng)用來說,校驗(yàn)盤的負(fù)載將會(huì)很大,無法滿足程序的運(yùn)行速度,從而導(dǎo)致整個(gè)RAID系統(tǒng)性能的下降。鑒于這種原因,RAID 3更加適合應(yīng)用于那些寫入操作較少,讀取操作較多的應(yīng)用環(huán)境,例如數(shù)據(jù)庫和WEB服務(wù)器等。
RAID 5
RAID?3所存在的校驗(yàn)盤的性能問題使幾乎所有的RAID系統(tǒng)都轉(zhuǎn)向了RAID 5。在運(yùn)行機(jī)制上,RAID 5和RAID 3完全相同,也是由同一帶區(qū)內(nèi)的幾個(gè)數(shù)據(jù)塊共享一個(gè)校驗(yàn)塊。
RAID 5和RAID 3的最大區(qū)別在于RAID 5不是把所有的校驗(yàn)塊集中保存在一個(gè)專門的校驗(yàn)盤中,而是分散到所有的數(shù)據(jù)盤中。RAID 5使用了一種特殊的算法,可以計(jì)算出任何一個(gè)帶區(qū)校驗(yàn)塊的存放位置。具體如圖所示:
注意圖中的校驗(yàn)塊已經(jīng)被分散保存在不同的磁盤中,這樣就可以確保任何對(duì)校驗(yàn)塊進(jìn)行的讀寫操作都會(huì)在所有的RAID磁盤中進(jìn)行均衡,從而消除了產(chǎn)生瓶頸的可能。
非常好我支持^.^
(70) 67.3%
不好我反對(duì)
(34) 32.7%
相關(guān)閱讀:
- [電子說] raid卡的概念,raid技術(shù)有什么用 2023-09-28
- [電子說] Disruptor高性能隊(duì)列的原理 2023-07-26
- [電子說] R5300 G4服務(wù)器無法正常進(jìn)入操作系統(tǒng)且日志顯示硬盤異常分析 2023-03-27
- [電子說] RAID是什么?RAID技術(shù)實(shí)現(xiàn)有幾種形式 2023-02-02
- [存儲(chǔ)技術(shù)] RAID技術(shù)的起源/優(yōu)點(diǎn)/應(yīng)用 2021-02-18
- [電子說] Windows Server實(shí)現(xiàn)RAID技術(shù),保證數(shù)據(jù)的讀取速度和安全 2019-12-06
- [存儲(chǔ)技術(shù)] 如何用RAID技術(shù)保證磁盤的可靠性 2019-09-13
- [存儲(chǔ)技術(shù)] 論傳統(tǒng)RAID技術(shù)的存在的幾大問題 2019-02-01
( 發(fā)表人:admin )