磁盤陣列基礎知識.doc_第1頁
磁盤陣列基礎知識.doc_第2頁
磁盤陣列基礎知識.doc_第3頁
磁盤陣列基礎知識.doc_第4頁
磁盤陣列基礎知識.doc_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基本的RAID介紹RAID是英文Redundant Array of Independent Disks(獨立磁盤冗余陣列),簡稱磁盤陣列。下面將各個級別的RAID介紹如下。RAID0條帶化(Stripe)存儲。理論上說,有N個磁盤組成的RAID0是單個磁盤讀寫速度的N倍。RAID 0連續(xù)以位或字節(jié)為單位分割數據,并行讀/寫于多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗余,因此并不能算是真正的RAID結構。RAID1鏡象(Mirror)存儲。它是通過磁盤數據鏡像實現數據冗余,在成對的獨立磁盤上產生互 為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統(tǒng)可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。RAID2海明碼(Hamming Code)校驗條帶存儲。將數據條塊化地分布于不同的硬盤上,條塊單位為位或字節(jié),使用稱為海明碼來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜,因此在商業(yè)環(huán)境中很少使用。RAID3奇偶校驗(XOR)條帶存儲,共享校驗盤,數據條帶存儲單位為字節(jié)。它同RAID 2非常類似,都是將數據條塊化分布于不同的硬盤上,區(qū)別在于RAID 3使用簡單的奇偶校驗,并用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據;如果奇偶盤失效則不影響數據使用。RAID 3對于大量的連續(xù)數據可提供很好的傳輸率,但對于隨機數據來說,奇偶盤會成為寫操作的瓶頸。RAID4奇偶校驗(XOR)條帶存儲,共享校驗盤,數據條帶存儲單位為塊。RAID 4同樣也將數據條塊化并分布于不同的磁盤上,但條塊單位為塊或記錄。RAID 4使用一塊磁盤作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,這時奇偶校驗盤會成為寫操作的瓶頸,因此RAID 4在商業(yè)環(huán)境中也很少使用。RAID5奇偶校驗(XOR)條帶存儲,校驗數據分布式存儲,數據條帶存儲單位為塊。RAID 5不單獨指定的奇偶盤,而是在所有磁盤上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合于小數據塊和隨機讀寫的數據。RAID 3與RAID 5相比,最主要的區(qū)別在于RAID 3每進行一次數據傳輸就需涉及到所有的陣列盤;而對于RAID 5來說,大部分數據傳輸只對一塊磁盤操作,并可進行并行操作。在RAID 5中有“寫損失”,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。當進行恢復時,比如我們需要需要恢復下圖中的A0,這里就必須需要B0、C0、D0加0 parity才能計算并得出A0,進行數據恢復。所以當有兩塊盤壞掉的時候,整個RAID的數據失效。RAID6 奇偶校驗(XOR)條帶存儲,兩個分布式存儲的校驗數據,數據條帶存儲單位為塊。 與RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統(tǒng)使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。但RAID 6需要分配給奇偶校驗信息更大的磁盤空間,相對于RAID 5有更大的“寫損失”,因此“寫性能”非常差。較差的性能和復雜的實施方式使得RAID 6很少得到實際應用。RAID7這是一種新的RAID標準,其自身帶有智能化實時操作系統(tǒng)和用于存儲管理的軟件工具,可完全獨立于主機運行,不占用主機CPU資源。RAID 7可以看作是一種存儲計算機(Storage Computer),它與其他RAID標準有明顯區(qū)別。RAID 7等級是至今為止,理論上性能最高的RAID模式,因為它從組建方式上就已經和以往的方式有了重大的不同?;境尚问揭妶D,以往一個硬盤是一個組成陣列的“柱子”,而在RAID 7中,多個硬盤組成一個“柱子”,它們都有各自的通道,也正因為如此,你可以把這個圖分解成一個個硬盤連接在主通道上,只是比以前的等級更為細分了。這樣做的好處就是在讀/寫某一區(qū)域的數據時,可以迅速定位,而不會因為以往因單個硬盤的限制同一時間只能訪問該數據區(qū)的一部分,在RAID 7中,以前的單個硬盤相當于分割成多個獨立的硬盤,有自己的讀寫通道。 工程中常用的RAID方式是RAID10和RAID5。下面分別介紹RAID10和RAID01的區(qū)別;以及RAID10和RAID5的區(qū)別。RAID10和RAID01的比較 RAID10是先做鏡象,然后再做條帶。 RAID01則是先做條帶,然后再做鏡象。比如以6個盤為例,RAID10就是先將盤分成3組鏡象,然后再對這3個RAID1做條帶。RAID01則是先利用3塊盤做RAID0,然后將另外3塊盤做為RAID0的鏡象。下面以4塊盤為例來介紹安全性方面的差別:1、RAID10的情況這種情況中,我們假設當DISK0損壞時,在剩下的3塊盤中,只有當DISK1一個盤發(fā)生故障時,才會導致整個RAID失效,我們可簡單計算故障率為1/3。2、RAID01的情況這種情況下,我們仍然假設DISK0損壞,這時左邊的條帶將無法讀取。在剩下的3塊盤中,只要DISK2,DISK3兩個盤中任何一個損壞,都會導致整個RAID失效,我們可簡單計算故障率為2/3。因此RAID10比RAID01在安全性方面要強。從數據存儲的邏輯位置來看,在正常的情況下RAID01和RAID10是完全一樣的,而且每一個讀寫操作所產生的IO數量也是一樣的,所以在讀寫性能上兩者沒什么區(qū)別。而當有磁盤出現故障時,比如前面假設的DISK0損壞時,我們也可以發(fā)現,這兩種情況下,在讀的性能上面也將不同,RAID10的讀性能將優(yōu)于RAID01。RAID10和RAID5的比較為了方便對比,這里拿同樣多驅動器的磁盤來做對比,RAID5選擇3D+1P的RAID方案,RAID10選擇2D+2D的RAID方案,如圖:1、安全性方面的比較其實在安全性方面,勿須質疑,肯定是RAID10的安全性高于RAID5。我們也可以從簡單的分析來得出。當盤1損壞時,對于RAID10,只有當盤1對應的鏡象盤損壞,才導致RAID失效。但是對于RAID5,剩下的3塊盤中,任何一塊盤故障,都將導致RAID失效。在恢復的時候,RAID10恢復的速度也快于RAID5。2、空間利用率的比較 RAID10的利用率是50%,RAID5的利用率是75%。硬盤數量越多,RAID5的空間利用率越高。3、讀寫性能方面的比較主要分析分析如下三個過程:讀,連續(xù)寫,離散寫。在介紹這三個過程之前,先介紹一個特別重要的概念:cache。cache已經是整個存儲的核心所在,就是中低端存儲,也有很大的cache存在,包括最簡單的raid卡,一般都包含有幾十,甚至幾百兆的raid cache。 cache的主要作用是什么呢?體現在讀與寫兩個不同的方面,如果作為寫,一般存儲陣列只要求寫到cache就算完成了寫操作,所以,陣列的寫是非??焖俚?,在寫cache的數據積累到一定程度,陣列才把數據刷到磁盤,可以實現批量的寫入,至于cache數據的保護,一般都依賴于鏡相與電池(或者是UPS)。 cache的讀一樣不可忽視,因為如果讀能在cache中命中的話,將減少磁盤的尋道,因為磁盤從尋道開始到找到數據,一般都在6ms以上,而這個時間,對于那些密集型io的應用可能不是太理想。但是,如果cache能命中,一般響應時間則可以在1ms以內。兩者應該相差3個數量級(1000倍)。 1)讀操作方面的性能差異RAID10可供讀取有效數據的磁盤個數為4,RAID5可供讀取有效數據的磁盤個數也為4個(校驗信息分布在所有的盤上),所以兩者的讀的性能應該是基本一致的。2)連續(xù)寫方面的性能差異在連續(xù)寫操作過程,如果有寫cache存在,并且算法沒有問題的話,RAID5比RAID10甚至會更好一些,雖然也許并沒有太大的差別。(這里要假定存儲有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。因為這個時候的RAID校驗是在cache中完成,如4塊盤的RAID5,可以先在內存中計算好校驗,同時寫入3個數據+1個校驗。而RAID10只能同時寫入2個數據+2個鏡相。如上圖所示,4塊盤的RAID5可以在同時間寫入1、2、3到cache,并且在cache計算好校驗之后,這里假定是6,同時把三個數據寫到磁盤。而4塊盤的RAID10不管cache是否存在,寫的時候,都是同時寫2個數據與2個鏡相。 根據前面對緩存原理的介紹,寫cache是可以緩存寫操作的,等到緩存寫數據積累到一定時期再寫到磁盤。但是,寫到磁盤陣列的過程是遲早也要發(fā)生的,所以RAID5與RAID10在連續(xù)寫的情況下,從緩存到磁盤的寫操作速度會有較小的區(qū)別。不過,如果不是連續(xù)性的強連續(xù)寫,只要不達到磁盤的寫極限,差別并不是太大。3)離散寫方面的性能差異 例如oracle 數據庫每次寫一個數據塊的數據,如8K;由于每次寫入的量不是很大,而且寫入的次數非常頻繁,因此聯機日志看起來會像是連續(xù)寫。但是因為不保證能夠添滿RAID5的一個條帶,比如32K(保證每張盤都能寫入),所以很多時候更加偏向于離散寫入(寫入到已存在數據的條帶中)。我們從上圖看一下離散寫的時候,RAID5與RAID10工作方式有什么不同。如上圖:我們假定要把一個數字2變成數字4,那么對于RAID5,實際發(fā)生了4次io:先讀出2與校驗6,可能發(fā)生讀命中然后在cache中計算新的校驗寫入新的數字4與新的校驗8。 如上圖我們可以看到:對于RAID10,同樣的單個操作,最終RAID10只需要2個io,而RAID5需要4個io. 這里我忽略了RAID5在那兩個讀操作的時候,可能會發(fā)生讀命中操作的情況。也就是說,如果需要讀取的數據已經在cache中,可能是不需要4個io的。這也證明了cache對RAID5 的重要性,不僅僅是計算校驗需要,而且對性能的提升尤為重要。 當然,并不是說cache對RAID10就不重要了,因為寫緩沖,讀命中等,都是提高速度的關鍵所在,只不過RAID10對cache的依賴性沒有RAID5那么明顯而已。4)磁盤的IOPS對比假定一個case,業(yè)務的iops是10000,讀cache命中率是30%,讀iops為60%,寫iops為40%,磁盤個數為120,那么分別計算在raid5與raid10的情況下,每個磁盤的iops為多少。raid5:單塊盤的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4)/120 = (4200 + 16000)/120 = 168這里的10000*(1-0.3)*0.6表示是讀的iops,比例是0.6,除掉cache命中,實際只有4200個iops。 4 * (10000*0.4) 表示寫的iops,因為每一個寫,在raid5中,實際發(fā)生了4個io,所以寫的iops為16000個為了考慮raid5在寫操作的時候,那2個讀操作也可能發(fā)生命中,所以更精確的計算為:單塊盤的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4)/120 = (4200 + 5600 + 8000)/120 = 148 計算出來單個盤的iops為148個,基本達到磁盤

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論