每當一種新技術出現時,不禁會問為什麼要有這種技術?肯定是傳統的技術有一定的缺陷,才會出現新的技術。那傳統的RAID有哪些缺陷呢?最大的問題可能就是reconstruct太慢,現在一般都是2TB的SATA盤,如果是幾TB的資料重構,可能要好幾個小時。這是因為在重構時,所有的盤都要參與校驗計算,然後将校驗資料寫到hot spare盤上,這樣所有的lun都會受到影響,Hot spare也會成為熱點,因為所有的寫操作都集中在它一個人身上。是以我們有了Dynamic disk pool,要了解Disk pool,我們先來看幾個定義。1)D-piece 2)D-Chunk(或者叫D-stripe)
每個加入到Disk pool 的盤都被劃分成512MB的d-pieces【如下圖一個藍色方框就是一個D-piece】,每個盤中間的4個d-pieces會被保留給系統使用,并不是每個d-piece都是立刻用來存儲資料,有些d-pieces是用作spare capacity。10個d-pieces組成一個d-stripe【或稱作d-chunk】,其中兩個是用于parity【512MB*(10-2)=4GB,基于RAID6】,是以一個disk pool上的volume可能會占用幾個d-stripe【d-chunk】。比如一個200GB的Volume,它就是由50【200GB/4GB】個D-chunk組成。
而每個d-piece是由4096個RAID Stripes組成,是以每個Stripe(D-Segment)大小為 512M/4096=1/8 M=128KB
1個RAID Stripe由10(8+2)個D-Segment組成,是以1個RAID Stripe大小為128KB*8=1MB
這裡的segment和stripe就和傳統的RAID裡面的定義一樣,條帶深度和條帶大小
<a href="http://taotao1240.blog.51cto.com/attachment/201307/31/731446_1375252004pZgP.png" target="_blank"></a>
Tips:
1,DDP可以加盤,最多一次可以加1-12個盤,如果新加盤的容量比原有的大,那麼多餘的空間是沒法使用的,但是不支援減盤
2,目前隻支援DS3500(DS3512和DS3524,DCS3700),不支援DS4K系列和DS5K系列
3,沒法像traditional RAID那樣export/import Array
4,最少11個盤【8+2+spare】
5,GUI中隻能選擇相同容量的盤加到一個disk pool,而SMcli可以選擇不同容量的
6,一個系統最大支援10個Disk pool
7,最大支援的Disk pool volume是64TB(由24個3TB盤組成的Disk pool)
8,目前Disk pool還不支援SSD盤,同一個disk pool中隻允許同一類型(SATA or FC)和速度的盤
好,那我們接着看DDP比傳統的RAID好在哪裡?如下圖,當D6這個盤壞掉時,它上面的D-piece會寫到其他9個盤上去,那也就是說其他9個盤都充當了一個hot spare盤的角色,但是它們又不是專職熱備盤,平時也用來存儲資料。是以第一個好處就是無需專用hot spare,節省了磁盤。9個盤充當hot spare,意味着重構資料會寫到9個盤上去,和傳統的RAID相比,寫到一個熱點hot spare上去,重構時間是不是會縮短很多,是以第二個好處就是縮短重構時間,減小performance影響。至于性能,大家都知道,RAID組中盤越多,性能肯定越好,但是在實際生産環境中,以RAID5為例,盤越多意味着重構時間越長,同時壞盤率越高,是以一般就用5+1組成RAID5。而使用了DDP,就無需擔心重構時間和壞盤率(下面會提到壞盤率)。是以第三個好處就是性能提高!個人覺得有這三個優勢就足夠了。
<a href="http://taotao1240.blog.51cto.com/attachment/201307/31/731446_1375252046px9X.png" target="_blank"></a>
Tips:重建的時候會保證不會出現同一個盤有同一個D-Chunk的2個D-pieces
再看下白皮書上DDP Advantage Summary
<a href="http://taotao1240.blog.51cto.com/attachment/201307/31/731446_1375252253MWa3.png" target="_blank"></a>
接下來我們再來讨論壞盤率,因為同一個批次的盤使用的時間都差不多,是以時間越長,同時發生故障的機率也會增大。
如下圖,10個紅色的d-piece組成了一個紅色的volume,10個綠色的d-piece組成了一個綠色的volume,以此類推。。。這個圖中以紅色的volume為例,最多可以壞幾塊盤呢?24-10=14,極端情況下壞14個盤,那此時剩餘的10個盤的紅色d-piece都是optimal的,那這個volume就是optimal的。如果再壞一個,那就是degraded,如果再壞一個盤(剩8個盤是optimal的),那應該還是degraded的,如果再壞一塊盤(剩7個盤是optimal的),那麼此時紅色volume就是failed狀态。是以極端情況下,最大容許壞17個盤!
<a href="http://taotao1240.blog.51cto.com/attachment/201307/31/731446_1375252575twuh.png" target="_blank"></a>
看一個真實的以23個盤組成的disk pool,建立兩個lun,再fail掉4個成員盤,可以看到DDP還是顯示optimal
<a href="http://taotao1240.blog.51cto.com/attachment/201307/31/731446_1375252832QGL6.png" target="_blank"></a>
========================================================================================
再看一個由12個盤組成的disk pool,可以看到壞了2個盤,volume就變成degraded了。那如果我此時再壞一個盤,volume是否一定會failed,我隻能說這個不一定的,看組成這個volume的D-piece是分布在哪些盤上的了。
<a href="http://taotao1240.blog.51cto.com/attachment/201307/31/731446_1375303154cBCS.png" target="_blank"></a>
由此我們知道,在Disk pool中不能簡單的下結論說到底壞幾塊盤Volume會failed,隻能說任何情況下,壞任何2個盤不會造成Data loss,但是不能保證壞第3塊盤的時候,是否會有data loss,以上兩個實驗就是很好的例子。
由于Disk pool中存在D-piece,是以恢複Lun的方法會比傳統的RAID複雜的多!
-------------------------------------------------------------
以上隻是個人的了解,如有錯誤之處,歡迎指正!
本文轉自 taojin1240 51CTO部落格,原文連結:http://blog.51cto.com/taotao1240/1261875,如需轉載請自行聯系原作者