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

評(píng)論