在圖一中,每個塊是一個D-Piece(512MB)。相同顏色的D-Piece組成了D-Stripe。舉個例子,所有粉色的D-Piece組成 了一個D-Stripe,而淺藍色的D-Piece組成了另外一個D-Stripe,所有黃色的D-Piece形成了第三個D-Stripe,深紅色的 D-Piece形成了另外一個D-Stripe,依此類推。

在特別的D-Stripe中的D-Piece是以某種隨機的方式選擇的,所以這種特別的布局無法重復(fù)。選擇過程在保持偽隨機布局的同時嘗試平衡各個硬盤的容量。這就保證在兩個D-Stripe上的所有數(shù)據(jù)的位置在10個硬盤中的位置相同這種純隨機情況不會發(fā)生。

在一個運行系統(tǒng)中,一個DDP要被創(chuàng)建首先要確定池中硬盤的數(shù)量。然后用戶要根據(jù)所需的容量大小來建立一個卷。軟件可在池中橫跨所有的硬盤建立D- Piece,接著創(chuàng)建D-Stripe。卷是由一些D-Stripe建立的,盡可能使用整數(shù)單元的D-Stripe,滿足用戶所需的容量。你可以在同一個 DDP中創(chuàng)建一些卷,前提是DDP的容量夠用。

下面讓我看一下在DDP中如果一個硬盤出現(xiàn)故障會怎樣。圖二(NetApp提供)展示了如果6號硬盤出現(xiàn)故障會怎樣。(版權(quán)歸NetApp所有,未經(jīng)許可不得使用)

硬盤的失效使得有一些D-Piece在損壞硬盤中的D-Stripe無法繼續(xù)工作。因此,這些受到影響的D-Stripe需要被重建。一般情況 下,DDP會有一些多余空間來應(yīng)對硬盤失效。也就是說,用戶沒有使用DDP中所有的空間,在卷中留下了一些可能用到的附屬容量,它們將在重建時被使用。需 要注意的是DDP中的重建與傳統(tǒng)的RAID重建不一樣,D-Piece和D-Stripe要被重新生成,因為硬盤中的平衡被打破,重建需要確保數(shù)據(jù)分布的 偽隨機性。

在一個有10+2布局的“正常”RAID-6中,當(dāng)一個硬盤出現(xiàn)故障時,只有11個硬盤參與到重建中,它們都寫入到一個單一的空閑硬盤“目標(biāo)”。但是這樣重建的時間就要受到硬盤數(shù)量的限制,還要受到硬盤寫入速度的限制。

在有著相同數(shù)量硬盤的DDP中,整個硬盤池都參與到重建中來。這意味著我們可以有更多數(shù)量的硬盤為重建服務(wù),還會有更多的讀寫,同時還會進行再生和再平衡,進一步改善性能。所有這些都意味著DDP的重建要比傳統(tǒng)的RAID-6速度快得多。

還有一點與傳統(tǒng)的RAID不同的地方是,DDP的重建只需要讀取受影響的D-Stripe所需要的D-Piece。未受影響的D-Stripe中的D-Piece不需要再次讀取。這意味著我們不需要讀取整塊硬盤,讓用戶遠離URE的危險區(qū)域。

在重建過程中,失去兩個D-Piece的D-Stripe將獲得優(yōu)先權(quán),防止再次發(fā)生會導(dǎo)致受影響的D-Stripe復(fù)原失敗的故障。記住D- Stripe是借助RAID-6建立的,現(xiàn)在兩個RAID-6組都出現(xiàn)問題了,如果第三塊再出現(xiàn)問題,那用戶的數(shù)據(jù)就會受到損失了。既然數(shù)據(jù)在控制器中, 那兩個D-Piece可以同時進行再生,全面恢復(fù)受損的D-Stripe。這使得損失兩個D-Piece的D-Stripe再次出現(xiàn)故障的可能性變得非常 小。

在一個硬盤出現(xiàn)故障的情況下,有兩個或更多受影響D-Piece的D-Stripe的平均數(shù)會非常低。這意味著關(guān)鍵D-piece的重建會非常快 (別忘了它們只有512MB大小)。重建速度太快以至于附屬的硬盤會在幾分鐘內(nèi)失效,但是不會造成數(shù)據(jù)損失。這一點值得注意——使用DDP用戶可以損失超 過2塊硬盤。所以當(dāng)RAID-6在更低的層次使用,DDP卻可以承受兩塊或兩塊以上硬盤的損失而不會造成數(shù)據(jù)丟失。

NetApp表示安裝12塊1TB的硬盤(12塊硬盤是DDP的最小數(shù)量),傳統(tǒng)RAID-6組(10+2)的重建時間為大約11個小時,而相同配置的的DDP僅用7個小時就可以實現(xiàn)完全的重建。雖然這看上去不像是一個多么重大的進步,但是重建的時間減少了36%。

另 外,請注意這是完全復(fù)原。在一些受影響的D-Stripe中使用RAID-6冗余的速度非???,可以保護不會再次發(fā)生硬盤故障。對于一個傳統(tǒng)的 RAID-6來說,用戶不得不等11個小時才能實現(xiàn)完全的RAID-6保護。然而,借助DDP,你可以快速獲得一些受到RAID-6保護的D- Stripe,隨著重建的進行,受到RAID-6保護的D-Stripe數(shù)量會不斷增長。

你可以比較一下傳統(tǒng)的RAID-6和DDP的復(fù)原能力。只要一塊硬盤出現(xiàn)故障,傳統(tǒng)的RAID-6就會在低級模式下運行(只有一塊硬盤進行復(fù)原), 但是在重建完全完成之前,傳統(tǒng)的RAID-6不能進行完全冗余。DDP重建和再平衡的速度非???,所以DDP的部件可以隨著時間推移不斷獲得RAID-6 保護。

比較一下結(jié)果

在未來會出現(xiàn)一些技術(shù),可以讓用戶拓展或代替RAID帶來的收益?,F(xiàn)在就有一個例子——NetApp的 動態(tài)硬盤池,為用戶提供更多的收益。首 先,DDP很容易理解,因為它本身就是RAID??墒?,它又不是像創(chuàng)建RAID組那樣有固定的硬盤規(guī)格。而且,它能擴展?jié)撛诘腞AID塊,在池中橫跨所有 硬盤隨機設(shè)定,形成RAID-6的8+2的模式。

第二,在出現(xiàn)硬盤失效的情況下,借助DDP,用戶可以讓更多的硬盤加入到重建過程中,它們都可以進行讀寫,消除單一硬盤寫入性能的限制。這將大幅減少恢復(fù)時間。

第三,在重建過程中,只有丟失的D-Piece被重建。而在傳統(tǒng)的RAID-6中,用戶需要讀取剩余硬盤的所有空間,即使有的空間并沒有被使用——這將使用戶很容易遇到URE的問題。

而 且,在傳統(tǒng)的RAID-6中,如果不進行完重建,用戶就不能獲得RAID-6保護(也就是說,在每樣?xùn)|西在完成之前,它就不是100%)。而在 DDP中,一些D-Stripe可以快速獲得RAID-6的保護。隨著復(fù)原的推進,整個池獲得RAID-6保護的比例將不斷增加。所以,這不是一個“要不 全部都是,要不一個沒有”的命題。

除此之外,在DDP中很容易創(chuàng)建所需容量的卷,還可以在池中留下多余的容量。當(dāng)用戶有需要的時候,可 以繼續(xù)在池中增加卷。而且,DDP可以動態(tài)監(jiān)控 潛在容量(當(dāng)然,你需要擴展文件系統(tǒng))。使用傳統(tǒng)的RAID,用戶需要創(chuàng)建新的卷,把它增加到現(xiàn)有的池中,在這過程中還要利用一些邏輯卷管理器,還要增加 文件系統(tǒng)。

最后,使用DDP意味著用戶可以承受失去兩塊以上的硬盤。如果傳統(tǒng)的RAID-6在一個LUN中失去了2塊以上的硬盤,這個LUN就不能再重建了,數(shù)據(jù)只能從備份或副本中獲得。在DDP中,一個單一池可以損失多塊硬盤,數(shù)據(jù)也不會丟失。

但 是,每樣事物都有利有弊。在DDP中如果一塊硬盤出現(xiàn)故障,大量的硬盤將參與到重建過程中,這將會對某些性能方面造成不利影響。在NetApp的 動態(tài)硬盤池中,你可以關(guān)掉重建的“優(yōu)先權(quán)”,這樣對性能的影響會小點。或者你也可以打開優(yōu)先權(quán),讓重建盡快完成。這就取決于你了,你得自己考慮哪方面比較 重要。

總結(jié)與展望

RAID,目前還起著重要作用,但是也將不久于人世了。硬盤容量在不斷增加,但是硬盤 的速度和URE率卻沒有多大變化,傳統(tǒng)的RAID不會存在太長 時間了。以后將會出現(xiàn)大量改進版RAID,為用戶提供相似的功能,但是卻免受原來問題的困擾。其中一些方法會非常復(fù)雜,非常昂貴,這樣的方法也不會被普遍 采用。

在這篇文章中,我介紹了一種方法,利用了RAID的概念,但是卻更加顆粒化。NetApp的動態(tài)硬盤池借助RAID的概念創(chuàng)造出 了新的解決方案,可 以讓用戶以更簡單的方式把硬盤整合到一個單一的池中。它還能允許系統(tǒng)失去兩塊以上的硬盤(正是這個導(dǎo)致了RAID-6的失效)。這個好東西還很容易被理 解,所以我們不需要消耗多年的時間重新研究RAID的知識。

硬盤容量不斷增加,數(shù)據(jù)的數(shù)量也呈幾何級不斷增多,像DDP這樣的方式會變得越來越重要。傳統(tǒng)的RAID不得不為其它方式讓路,否則我們將會面臨數(shù)據(jù)丟失的危險。

分享到

renxinbo

相關(guān)推薦