引子
送人玫瑰,手有余香。這個時代需要分享,有交流,有碰撞,才有進步。今天我要分享的主題的是“存儲設備那點事”,這句話中需要高亮的關鍵詞是什么?是“存儲”?是“設備”?都不是,是“那點”。作為一個剛進入存儲行業(yè)不到兩年的小學生,能力有限水平一般,全靠房貸的壓力走到今天。存儲涉及方方面面,受到能力和篇幅的限制,實在難以言盡。本文主要目的是讓大家對存儲方面有些感性的認識,沒有很深入的技術細節(jié)。讀者中肯定會有行業(yè)前輩、技術大牛、開源社區(qū)達人、非洲部落的酋長,都保不齊的事,有不足之處還請多多批評指教。
說到存儲設備,各位有些人可能會想起這些:磁帶,軟盤,硬盤,U盤,以及早期街邊中年婦女兜售的光盤(都買過吧?隨著互聯(lián)網的發(fā)展,這個行業(yè)沒落了,唉!)。今天我們要說的存儲設備比這些略顯高級,但終究也沒有脫離它們。
我有一個1TB的移動硬盤,已經差不多裝滿了,最近有些擔憂,萬一哪次不小心摔在地上,可就報廢了,多年積攢的資料和回憶將付之東流,得想個辦法。那位說了,為啥不存在云盤?坦誠的講,我不太信任云盤服務商,不僅僅是局限于技術層面的不信任,誰在乎他們是不是背鍋的。又有人給建議,整個RAID吧。對,我們就從RAID說起。
什么是RAID?
RAID的洋文描述是Redundant Array of Independent Disks,國語通常翻譯成:獨立磁盤冗余陣列。打仗親兄弟,上陣父子兵,一個硬盤可能出現(xiàn)種種問題,RAID就是將一組硬盤通過各種組合,呈現(xiàn)出一個邏輯上的硬盤,彌補一些單個硬盤的缺陷(如IO性能,數(shù)據(jù)保護),這個邏輯上的硬盤從用戶角度看來和單個硬盤使用方式幾乎一樣,對用戶透明。
總結起來一句話:基友一生一起走,單身的痛苦不再有。
RAID的等級
RAID的等級就是硬盤以何種形式組合在一起,比如:RAID 0、RAID 1、RAID10、RAID 01、RAID 3、RAID 5、RAID 6等等,很多,相聲演員可以寫個貫口上臺表演了,這次就挑常見的說幾個。
RAID0
最簡單的RAID0由兩塊硬盤組成,如圖1所示,當用戶寫入數(shù)據(jù)的時候,例如數(shù)據(jù)塊A,實際上是將數(shù)塊A分為兩個部分,分別寫入Disk1和Disk2,B、C、D是同樣的操作??梢钥吹剑琑AID0并沒有解決前面我遇到的問題,Disk1或Disk2任何一塊盤壞了,保存的數(shù)據(jù)就會丟失,數(shù)據(jù)得不到保護。當然,優(yōu)點也是顯然的,數(shù)據(jù)并行的寫入兩塊盤,花費時間縮短了,理論上節(jié)省50%的時間,IO性能好。我們也可以使用更多的盤組成RAID0,那樣的話數(shù)據(jù)塊就會被分為更多分,并行寫入多塊盤,用時會更少。組成RAID0的各個硬盤地位是平等的,有任務兄弟們一起分擔,沒有誰的角色是特別的。
RAID1
你有我有全都有哇,哎嗨依兒呀,這就是那RAID1,不相信就往下看那。
只要2塊硬盤就可以組成一個RAID1,如圖2所示。RAID1的特點是用戶寫入的數(shù)據(jù)塊會被同時寫到組成RAID1的每一個硬盤,這些硬盤保存的數(shù)據(jù)一模一樣。所以,其中一塊硬盤損壞了,不要害怕,另外一塊硬盤仍舊保存完整的數(shù)據(jù)。有人要問了:”那要是兩塊硬盤都壞了呢?”,朋友,咱們好好聊天行嗎?本質上RAID1是在做備份,我們不也經常將電腦的文件拷貝到U盤或移動硬盤備份嘛。只不過這個備份是實時的,用戶每寫一個數(shù)據(jù)就立即備份。增加更多硬盤組成RAID1,也就增加備份數(shù)量,更保險,但需要花更多的錢買硬盤,當然,阿聰這樣的土豪另說。
RAID3
在說RAID3之前,先往回倒個三言兩語。前面的RAID0和RAID1的插圖中,每個硬盤都畫了一些小格子,保存A、B或A1、A2等。劃分這些小格子的行為稱為磁盤的條帶化(striping),又是一個新名詞,沒辦法,新的事物誕生總歸要取一個名字吧。早年間,管理論壇的人叫版主,維護博客的人叫博主?,F(xiàn)在呢,建立微信群的人叫群主,建立并維護公眾號的人呢?公主?宋老師答應嗎?
感受一下磁盤條帶化的效果,圖3所示,兩個盤沒有條帶化,用戶數(shù)據(jù)過來先寫Disk1,寫滿Disk1之后再寫Disk2,看到這樣的RAID你有什么感受?既沒有使得IO性能得到提升,也沒有數(shù)據(jù)保護功能,然后冠冕堂皇包裝成RAID。誰要是推銷這個RAID,作為有素質的人,咱不能爆粗口,叫個代罵服務先罵他100塊錢的。
有人問了(對,就是前面問問題的那個人):“這個例子太極端,如果我有一個很大的文件,我可以計算出6~10部分最終會保存到Disk2內,那么我就可以并行的寫入1~5到Disk1,6~10到Disk2”。如果Disk1是1TB的硬盤,你的文件有多大?大于1TB,現(xiàn)實世界又有多少場景存在這么大的文件呢?
我們繼續(xù)。圖4展示了條帶化之后的磁盤格式,如果說未經過條帶化是以盤為單位存儲的,即一個盤寫滿再寫下一個盤。那么條帶化之后,則是按照條帶為單位存儲的,寫滿一個條帶之后再寫下一個條帶。RAID的各個盤的同樣區(qū)域(偏移位置和大小確定的區(qū)域)組成了一個條帶。
接著看RAID3,圖5所示。Disk4是與眾不同的,作為校驗盤,它不保存用戶數(shù)據(jù),而是保存用戶數(shù)據(jù)的校驗值。Ap是A1、A2和A3的異或邏輯運算校驗值。同理Bp~Dp類似。這樣做的好處是:如果4塊盤有一塊盤壞了,我們可以從其它3塊盤讀出數(shù)據(jù),再次進行異或邏輯運算,計算出損壞盤的數(shù)據(jù),這一過程稱為數(shù)據(jù)重建。
舉個栗子:
假設初始A1=1,A2=0,A3=1,在存盤時候計算Ap=A1^A2^A2=1^0^1=0。
現(xiàn)在Disk3損壞,我們要計算A3,A3=A1^A2^Ap=1^0^0=1。得到了正確的A3!
考察一下RAID3特點,其一,可以并行的寫。其二,有校驗盤,允許一塊盤故障。其三,特別的,如果損壞的是校驗盤,不會影響此時用戶的讀操作。缺點也是有的,那就是用戶寫數(shù)據(jù)的時候,不管是向哪一個數(shù)據(jù)盤寫入數(shù)據(jù),都需要同時重寫校驗盤,對于寫操作頻繁的應用,校驗盤的負載很大,成為瓶頸。
那么,對于校驗數(shù)據(jù)的保存這個費時費力的工作能否均衡一下呢?不能老可一個人霍霍啊。
RAID5
RAID5沒有獨立的校驗盤。從下圖中找找Ap、Bp、Cp和Dp的位置,發(fā)現(xiàn)什么了嗎?對,每個盤同時扮演數(shù)據(jù)盤和校驗盤,校驗值寫入這個負載就分攤到每個盤上,前面RAID3遇到的校驗盤瓶頸就不存在了。
當一塊盤出現(xiàn)故障后,RAID將無法繼續(xù)提供服務,一般情況,運維人員會更換故障盤,新盤到位后,RAID進行數(shù)據(jù)重建,借助校驗算法,將丟失的數(shù)據(jù)恢復到新的盤中,然后RAID可以繼續(xù)提供服務。一些系統(tǒng)中支持熱備盤,當RAID中一塊硬盤(Disk2)故障后,系統(tǒng)從熱備盤中選擇一塊(Disk5),頂替故障盤角色,然后RAID立即進行數(shù)據(jù)重建,這樣就最大限度的減少了RAID停止服務的時間。沒錯,熱備盤就是備胎。
RAID5可以并行IO提升性能,數(shù)據(jù)校驗起到數(shù)據(jù)保護作用,也不存在校驗盤瓶頸,看起來不錯。
有人問了(對,還是前面問問題的那個人):“如果同時有2塊盤故障怎么把辦?”
“那就用RAID6,可以容忍有2塊盤故障?!?/p>
“如果同時有3塊盤故障怎么把辦?”
喂,代罵公司嗎?我再加100塊錢,馬上過來罵個人。
對的,要蛋定。RAID雖然比單個硬盤有很多優(yōu)勢,但也不是牛逼透頂?shù)?,也有解決不了的問題,也有Hold不住的極端情況。
RAID6以及其它RAID形式就不再展開了。您可以訪問這里繼續(xù)深造:
https://en.wikipedia.org/wiki/Standard_RAID_levels
順便提一下,RAID發(fā)展后期出現(xiàn)了RAID2.0,一個不以單個盤為RAID組成基本單位的技術。
花開兩朵,各表一枝。說了這么多關于RAID的內容,對于終端用戶呢?如何使用RAID呢?這是個問題。用戶當然可以買幾塊硬盤組成一個RAID,當成“大硬盤”來使用,對于臺式機還可以忍受,機箱大隨便裝。那么,筆記本電腦用戶呢?沒地方裝啊。USB外接式?你很優(yōu)雅的走進了星巴克,要了一杯咖啡,拿出高大上的蘋果電腦,傍邊的桌子上一堆硬盤,你告訴別人別碰,說是你的RAID?這是休閑呢還是擺攤呢。
這個世界上,只要有需求,哪怕變態(tài)的需求,都會有商家滿足你。想強身健體,有的商家就把中藥和酒混在一起,來吧,藥酒,可補可補了。
-
硬盤
+關注
關注
3文章
1283瀏覽量
57199 -
RAID
+關注
關注
0文章
268瀏覽量
35032 -
存儲設備
+關注
關注
0文章
155瀏覽量
18560
原文標題:EMC潘國林: 大話存儲系列之磁盤娶親(RAID)
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論