RAID2.0-顛覆傳統RAID方式
經過多年的應用實踐和技術發展,傳統RAID越來越體現出局限性的一面,如熱點效應。為了方便管理,假設我們把整個RAID組格式化產生的邏輯盤都映射給某個系統,不同系統使用不同RAID組,若某個應用系統的業務特別繁忙,就會造成對應RAID組的物理盤讀寫壓力大,形成熱點。
這時,聰明的童鞋提出,我們可以把RAID組的邏輯盤打散了用啊!!于是,每個系統使用的邏輯盤來自不用的RAID組,這樣就把繁忙系統的讀寫壓力分散到更多的物理硬盤上了,棒棒噠!!但是,管理起來好麻煩,有沒有?另一方面,每個系統的業務特征是動態變化的,忙的不會一直忙,不忙的也不一定一直讓人省心,有可能某個時刻所有的應用系統都在往同一個RAID組上做讀寫,其它RAID組的硬盤在喝茶磕瓜子,你說那個RAID組內硬盤的心里有多苦?這時,管理員童鞋就要做性能調優了,分散熱點數據,累不?
這時,又有聰明的童鞋提出了池化的概念,即先把所有的邏輯盤放到一個大池子里,再從池子里往外分配存儲空間。假設RAID組格式化后的邏輯盤大小是100GB,池子里有100個邏輯盤,A系統要使用200GB空間,那么系統會從池子里的每個邏輯盤上摳出2GB空間,100*2GB,組成一個200GB的虛擬盤分配給A系統,而不是把2個100GB的邏輯盤組成一個200GB的虛擬盤分配出去。這樣A系統的讀寫壓力會分散到100個邏輯盤上,而不是2個,而這100個邏輯盤可能對應著更多的物理盤,大大分散了壓力。
這個問題解決了,管理員童鞋開開心心地過了幾年,漸漸地心里有點慌亂。物理硬盤的容量越來越大,從原來的73GB增長到現在的4TB,壞盤之后數據重構時間從原來的1個小時增長到10個小時!!這么長的時間里,如果再壞一塊盤,那我RAID5的磁盤組不就全掛了?即使用了RAID6可以容忍壞兩塊盤,但老話還說禍不單行呢?
又有聰明的童鞋站了起來,我們可以把盤切片再做RAID,看這個圖先!
上圖中LUN虛擬化技術就是前面說的池化技術,仍然基于傳統的RAID實現,只是多了一層虛擬盤的概念,原來是直接把邏輯盤分配出去,現在改成把虛擬盤分配出去,虛擬盤上的數據均勻分布在邏輯盤上。
塊虛擬化就是本文重點介紹的RAID2.0技術,它先把物理硬盤切成若干片,然后片與片之間再做RAID,然后一層層封裝成虛擬卷映射出去,方法與池化技術類似。有童鞋要問了,不就是切個片嘛,沒看出來哪好!!
物理硬盤切片之后,所有的片可以自由組合做RAID,不再局限于物理硬盤,原則就是一個RAID組內的片必須來自不同的物理硬盤。
讓我們仔細對比一下上圖左右兩部分:
- 左圖HDD1與HDD-0/2/3/4組成一個RAID組;右圖HDD1切出來的片分別與HDD-0/2/3/4和HDD-5/6/7/8切出來的片組成了兩個RAID組;
- 左圖HDD1發生故障后,HDD5作為后備軍勇敢頂上,但HDD-0/2/3/4校驗恢復出來的數據要寫到HDD5一塊硬盤上;右圖HDD1發生故障后,2個RAID組受到影響,HDD-4和HDD-9切出來的片頂上,RAID組校驗恢復出來的數據寫到HDD-4和HDD-9兩塊盤上,而且數據量超小喲,只是兩個片的數據,HDD1上其它空白片不用管了!!
- 推而廣之,RAID2.0技術不再有熱備盤的概念,換成了熱備空間,這里我們姑且稱之為熱備片。一塊物理硬盤故障后,來自多塊物理硬盤的熱備片頂上,數據重構不再是傳統RAID的N對1,而是N對N。據某靠譜國產大廠統計,RAID2.0重構速度是傳統RAID的20倍,可將10小時的重構時間縮短至30分鐘!!
結語
通過上文的分析可以看出,RAID2.0能夠顯著減少重構時間,避免數據重構時對一塊硬盤的高強度讀寫,降低硬盤故障率。但它與池化技術存在同樣的隱患,即由于虛擬盤做了寬條帶的數據分布,多塊物理硬盤損壞導致RAID組失效之后,整個存儲池的數據會讀寫異常,影響范圍大于傳統RAID方式。因此,存儲陣列若使用池化技術,***采用RAID6。