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

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
