下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于linux的通用軟磁盤(pán)陣列平臺(tái)
隨著雙重錯(cuò)誤問(wèn)題的深入研究,一些科學(xué)家提出了各種新的數(shù)據(jù)組織和布局形式。這些容雙故障的編碼大體分為兩類,一類是使用編碼函數(shù),如果同時(shí)有兩個(gè)磁盤(pán)發(fā)生故障,則使用函數(shù)計(jì)算的方法將發(fā)生故障的磁盤(pán)數(shù)據(jù)計(jì)算出來(lái),從而保證數(shù)據(jù)的安全性。像使用reed-solemon編碼的raid6就屬于著一類。另外一類是二進(jìn)制線性碼。它們使用簡(jiǎn)單的異或操作,通過(guò)將數(shù)據(jù)分成條紋單元,對(duì)條紋單元在磁盤(pán)上的不同的分布來(lái)達(dá)到數(shù)據(jù)的安全性,典型的有DH1、DH2等。兩類方法各有優(yōu)缺點(diǎn),第一類方法磁盤(pán)利用率較高,但是計(jì)算復(fù)雜,一般只能使用專用的硬件來(lái)進(jìn)行計(jì)算,以期達(dá)到較好的使用效果。第二類方法計(jì)算簡(jiǎn)單,使用軟件就可以進(jìn)行計(jì)算,但是磁盤(pán)的冗余度高。目前工程化應(yīng)用的容雙故障的磁盤(pán)陣列使用的多為raid6,使用專用的硬件做計(jì)算,價(jià)格昂貴。而使用簡(jiǎn)單的異或操作的數(shù)據(jù)布局還沒(méi)有系統(tǒng)實(shí)現(xiàn),也沒(méi)有相應(yīng)的仿真軟件和測(cè)試軟件。本文提出并設(shè)計(jì)實(shí)現(xiàn)了適用于這種方法的通用平臺(tái)。1該項(xiàng)目的目的和基本理念1.1系統(tǒng)存儲(chǔ)、存儲(chǔ)資源可靠性低,價(jià)格低廉。存儲(chǔ)Deraid的設(shè)計(jì)目標(biāo)有兩個(gè),一個(gè)是為各種服務(wù)系統(tǒng)提供大容量、高可靠性、價(jià)格低廉、性能適中的存儲(chǔ)服務(wù),可以同時(shí)容許兩個(gè)磁盤(pán)出現(xiàn)故障而保證數(shù)據(jù)不丟失。第二個(gè)目標(biāo)是為各種不同的數(shù)據(jù)布局提供試驗(yàn)平臺(tái)。1.2明確盤(pán)數(shù)的編碼單元使用二進(jìn)制線性碼來(lái)實(shí)現(xiàn)容雙故障的磁盤(pán)陣列,其關(guān)鍵在于將磁盤(pán)數(shù)據(jù)分割成為條紋單元,通過(guò)將這些條紋單元在磁盤(pán)上的巧妙安排,從而達(dá)到當(dāng)出現(xiàn)故障的時(shí)候,可使用沒(méi)有損壞的單元將損壞的單元計(jì)算出來(lái)。其結(jié)構(gòu)和術(shù)語(yǔ)見(jiàn)圖1。如圖1所示,二進(jìn)制線性碼將磁盤(pán)分為固定大小的數(shù)據(jù)塊,稱之為條紋單元,這些條紋單元分為數(shù)據(jù)單元和校驗(yàn)單元。陣列中同一列條紋單元組成一個(gè)條紋,而若干個(gè)條紋則組成一個(gè)布局周期。所有的磁盤(pán)存儲(chǔ)空間就是由這些布局周期組成的。二進(jìn)制線性碼就是通過(guò)在一個(gè)布局周期內(nèi)通過(guò)合理安排數(shù)據(jù)單元和校驗(yàn)單元的分布來(lái)達(dá)到目的。表1給出了一個(gè)最為簡(jiǎn)單的二進(jìn)制線性碼的編碼方案。其中磁盤(pán)個(gè)數(shù)為4,布局周期深度為二個(gè)條紋。表中PN表示校驗(yàn)單元,DXY表示數(shù)據(jù)單元,其中X和Y分別代表這個(gè)數(shù)據(jù)單元所參加的校驗(yàn)單元的標(biāo)號(hào),例如,D23參加了P2和P3兩個(gè)校驗(yàn)單元的校驗(yàn),P1則是由D12和D01計(jì)算出來(lái)的。當(dāng)任意兩個(gè)磁盤(pán)出現(xiàn)故障,假定為磁盤(pán)2和磁盤(pán)4,則D01可以由D30和P0計(jì)算出來(lái),由D01和D12可以計(jì)算出P1,由D12和P2可以計(jì)算出D23,最后,P3可以由D23和D30計(jì)算出來(lái)。當(dāng)其他的磁盤(pán)組合損壞的時(shí)候,可以用類似的方法進(jìn)行恢復(fù)。這些條紋單元的布置需要滿足一些必要的條件才能成為容雙故障的磁盤(pán)數(shù)據(jù)布局,相關(guān)內(nèi)容見(jiàn)參考文獻(xiàn)。Deraid的設(shè)計(jì)也遵循這樣的思想,其核心思想就是將各種不同的數(shù)據(jù)布局通過(guò)一定的編碼方式輸入到系統(tǒng)中去,系統(tǒng)通過(guò)分析這些編碼自動(dòng)解析出一個(gè)布局周期內(nèi)條紋單元的分布,然后按照給定的分布對(duì)磁盤(pán)的數(shù)據(jù)進(jìn)行組織。當(dāng)上層的讀寫(xiě)請(qǐng)求來(lái)到時(shí),就按照這個(gè)分布進(jìn)行校驗(yàn)計(jì)算等工作。2具體設(shè)計(jì)和實(shí)現(xiàn)2.1deid布局設(shè)計(jì)Deraid的實(shí)現(xiàn)是基于Linux操作系統(tǒng)的,其主要原因是Linux本身是一個(gè)開(kāi)放源碼的操作系統(tǒng),可以在內(nèi)核一級(jí)進(jìn)行開(kāi)發(fā)。使之成為操作系統(tǒng)的一個(gè)部分。整個(gè)系統(tǒng)處于Linux的系統(tǒng)內(nèi)核態(tài),它在文件系統(tǒng)和下層塊設(shè)備驅(qū)動(dòng)程序之間增加了一個(gè)薄層塊設(shè)備驅(qū)動(dòng)程序。其在系統(tǒng)中所處的位置如圖2所示。當(dāng)上層的文件系統(tǒng)的讀寫(xiě)請(qǐng)求到達(dá)Deraid驅(qū)動(dòng)程序?qū)拥臅r(shí)候,驅(qū)動(dòng)程序通過(guò)對(duì)請(qǐng)求的分析,經(jīng)過(guò)一些必要的計(jì)算,將數(shù)據(jù)發(fā)送到真正的塊設(shè)備驅(qū)動(dòng)程序上進(jìn)行具體的操作。通過(guò)這樣的設(shè)計(jì),整個(gè)系統(tǒng)的模塊化程度很好,下層的塊設(shè)備不必局限于磁盤(pán)設(shè)備,其他諸如usb設(shè)備等都可以作為Deraid系統(tǒng)的底層設(shè)備加以支持。數(shù)據(jù)在磁盤(pán)上的布局以及內(nèi)存中的表示如圖3所示。Deraid的磁盤(pán)布局分為兩個(gè)部分:超級(jí)塊和數(shù)據(jù)區(qū)。超級(jí)塊用來(lái)存放整個(gè)Deraid陣列的全局信息,例如啟動(dòng)信息、磁盤(pán)數(shù)量、陣列的容量、條紋單元的大小、時(shí)間信息、陣列各磁盤(pán)的狀態(tài)等。陣列中的每一塊磁盤(pán)都有超級(jí)塊,這些超級(jí)塊的內(nèi)容相同,且都位于磁盤(pán)的最低端,占用4kB的磁盤(pán)空間。系統(tǒng)啟動(dòng)的時(shí)候?qū)⒌谝粋€(gè)磁盤(pán)的超級(jí)塊讀入內(nèi)存,同時(shí)進(jìn)行系統(tǒng)設(shè)置,如果第一個(gè)超級(jí)塊損壞的話,就尋找第二個(gè)超級(jí)塊,以此類推。如果在系統(tǒng)運(yùn)行過(guò)程中超級(jí)塊中的內(nèi)容發(fā)生變化,則同時(shí)將所有盤(pán)上的超級(jí)塊同步更新。這樣的設(shè)計(jì)可以大大提高超級(jí)塊等全局性的數(shù)據(jù)的安全性,從而提高整個(gè)系統(tǒng)的可靠性。磁盤(pán)剩余的空間都屬于數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)按照布局周期進(jìn)行組織,其結(jié)構(gòu)見(jiàn)圖1。默認(rèn)系統(tǒng)的條紋單元大小為32kB。布局周期是按照用戶所指定的方式進(jìn)行排列,從而給用戶以較大的靈活性,易于實(shí)現(xiàn)多種數(shù)據(jù)布局。當(dāng)上層的讀寫(xiě)請(qǐng)求到達(dá)Deraid層時(shí),Deraid首先計(jì)算出讀寫(xiě)的數(shù)據(jù)塊所在的磁盤(pán)位置以及它所在布局周期中的偏移量,進(jìn)而在內(nèi)存中申請(qǐng)一塊布局周期緩沖,布局周期緩沖的結(jié)構(gòu)和一個(gè)磁盤(pán)布局周期相似,它負(fù)責(zé)管理一個(gè)磁盤(pán)布局周期在內(nèi)存中的映射。當(dāng)系統(tǒng)得到這個(gè)布局周期緩沖以后,就可以對(duì)相應(yīng)的數(shù)據(jù)塊進(jìn)行讀寫(xiě),同時(shí)更新布局周期中的校驗(yàn)條紋單元。讀寫(xiě)完畢以后,系統(tǒng)就可以收回這個(gè)布局周期緩沖以供其它請(qǐng)求使用。2.2具體應(yīng)用和關(guān)鍵技術(shù)2.2.1deid設(shè)計(jì)原理由于Deraid系統(tǒng)需要運(yùn)行于Linux系統(tǒng)的內(nèi)核態(tài),使用基于Linux的模塊機(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)。Deraid提供兩種連接模式,既可以將它當(dāng)作內(nèi)核的一部分編譯到Linux系統(tǒng)中去,也可以將它單獨(dú)編譯成模塊,待使用的時(shí)候再插入到系統(tǒng)中去,不使用的時(shí)候亦可以從系統(tǒng)中卸載。Deraid系統(tǒng)的設(shè)計(jì)關(guān)鍵在于將用戶不同的布局周期應(yīng)用到系統(tǒng)中去,這就要求系統(tǒng)具有很高的靈活性,以適應(yīng)不同的數(shù)據(jù)布局。Deraid使用用戶態(tài)的配置文件來(lái)與用戶進(jìn)行交互,用戶只需要將自己的數(shù)據(jù)布局通過(guò)配置文件所規(guī)定的格式寫(xiě)到配置文件中,系統(tǒng)就可以自動(dòng)將數(shù)據(jù)布局讀入到內(nèi)核中進(jìn)行處理。軟件的總體結(jié)構(gòu)如圖4所示。系統(tǒng)從用戶態(tài)的配置文件得到數(shù)據(jù)布局的信息之后,經(jīng)過(guò)系統(tǒng)的計(jì)算會(huì)生成一系列的數(shù)據(jù)結(jié)構(gòu),其中最關(guān)鍵的就是一個(gè)布局周期編碼表,它將用戶的布局周期信息翻譯成若干個(gè)數(shù)據(jù)表,以便于系統(tǒng)進(jìn)行操作。所有的讀寫(xiě)操作都是從這些編碼表中得到信息進(jìn)行處理的。2.2.2理?yè)?jù)進(jìn)線緩沖板使用目的在于存布局周期緩沖在做系統(tǒng)的核心是一個(gè)緩存管理系統(tǒng),結(jié)構(gòu)如圖4所示。Deraid維護(hù)著一個(gè)布局周期緩沖池,其大小是可以進(jìn)行調(diào)配的,系統(tǒng)默認(rèn)是256個(gè)緩沖。每一個(gè)緩沖可以對(duì)應(yīng)一個(gè)磁盤(pán)上的布局周期。這些緩沖塊在系統(tǒng)啟動(dòng)的時(shí)候都連接到一個(gè)空閑鏈表中,當(dāng)上層的文件系統(tǒng)需要進(jìn)行讀寫(xiě)操作的時(shí)候,必須先從空閑鏈表中申請(qǐng)到一個(gè)空閑的布局周期緩沖,對(duì)這個(gè)緩沖進(jìn)行初始化,然后按照讀寫(xiě)請(qǐng)求所要求的磁盤(pán)偏移量等信息,結(jié)合布局周期編碼表,從磁盤(pán)上讀取出相應(yīng)的數(shù)據(jù)進(jìn)行緩沖區(qū)的預(yù)處理。然后按照編碼表計(jì)算校驗(yàn)信息,標(biāo)志臟數(shù)據(jù)塊等操作,經(jīng)過(guò)處理的緩沖區(qū)就可以加入到一個(gè)哈希表中等待下層的設(shè)備驅(qū)動(dòng)程序進(jìn)行真正的讀寫(xiě)操作,同時(shí)也可供新的對(duì)同一緩沖操作的讀寫(xiě)請(qǐng)求使用。當(dāng)空閑鏈表中的布局周期緩沖數(shù)量下降到一定程度,有新的請(qǐng)求到來(lái)的時(shí)候,如在哈希表中沒(méi)有找到相應(yīng)的布局緩沖,同時(shí)空閑鏈表中也沒(méi)有足夠可使用的空閑緩沖,這個(gè)時(shí)候讀寫(xiě)進(jìn)程就必須等待在一個(gè)信號(hào)量上。Deraid需要從哈希表中選取一定量沒(méi)有被用戶使用的緩沖,將它們從哈希表中脫離出來(lái),并將緩沖中需要進(jìn)行磁盤(pán)I/O操作的臟頁(yè)面刷新到磁盤(pán)上去,將它們連接到空閑鏈表中,最后喚醒那些等待的進(jìn)程。這些工作都由一個(gè)內(nèi)核守護(hù)進(jìn)程負(fù)責(zé)協(xié)調(diào)與實(shí)施。3條紋單元大小對(duì)性能的比較本文對(duì)Deraid的讀寫(xiě)性能以及崩潰重啟時(shí)間進(jìn)行了測(cè)試,測(cè)試主機(jī)為毒龍600MHz,內(nèi)存64MB,操作系統(tǒng)為Redhat7.3。用7個(gè)磁盤(pán)分區(qū)模擬的raid磁盤(pán)構(gòu)造磁盤(pán)陣列,每個(gè)分區(qū)大小300MB。條紋單元大小4kB,使用如表2所示的數(shù)據(jù)布局方式。表中Pn代表校驗(yàn)單元。Dxy表示數(shù)據(jù)單元,例如D310就參加了P3和P10的校驗(yàn)。同時(shí)也使用同樣的配置,在同樣的磁盤(pán)數(shù)量,同樣條紋單元大小,同樣磁盤(pán)容量的條件下建立了raid5系統(tǒng)。在兩個(gè)系統(tǒng)上分別建立了ext2文件系統(tǒng),均使用bonnie以及我們自己開(kāi)發(fā)的raidtest作為測(cè)試軟件,同時(shí)進(jìn)行了測(cè)試,以進(jìn)行比較,其測(cè)試結(jié)果如圖5所示。從圖中可以看出,RAID5小數(shù)據(jù)讀寫(xiě)性能要優(yōu)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)公關(guān)行業(yè)開(kāi)拓第二增長(zhǎng)曲線戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)在線外賣(mài)行業(yè)資本規(guī)劃與股權(quán)融資戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)黃金鉑金等金首飾行業(yè)營(yíng)銷創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)星級(jí)酒店行業(yè)資本規(guī)劃與股權(quán)融資戰(zhàn)略制定與實(shí)施研究報(bào)告
- 建設(shè)生態(tài)科普旅游強(qiáng)縣思路調(diào)研報(bào)告-范文
- 有關(guān)普洱茶餅的問(wèn)卷調(diào)查
- 建設(shè)工程租賃合同文本(同名3639)
- 2024年一年級(jí)語(yǔ)文上冊(cè)《雨點(diǎn)兒》教案(10篇)
- 2019-2025年云南省酒店市場(chǎng)評(píng)估分析及發(fā)展前景調(diào)查戰(zhàn)略研究報(bào)告
- 某鎮(zhèn)派出所建設(shè)項(xiàng)目可行性研究報(bào)告
- 春節(jié)英語(yǔ)介紹SpringFestival(課件)新思維小學(xué)英語(yǔ)5A
- 卵巢囊腫蒂扭轉(zhuǎn)的臨床分析
- 退休職工安全知識(shí)講座
- 全國(guó)兒童預(yù)防接種知識(shí)講座
- GMP理念在制藥工程項(xiàng)目中的應(yīng)用
- 電信營(yíng)業(yè)廳規(guī)章制度范文
- 提高感染性休克集束化治療完成率工作方案
- 突發(fā)事件緊急醫(yī)學(xué)救援中的煙花爆竹傷處理培訓(xùn)
- 產(chǎn)品質(zhì)量監(jiān)控方案
- 《白夜行》名著導(dǎo)讀讀書(shū)分享
- 區(qū)域分析與規(guī)劃課件
評(píng)論
0/150
提交評(píng)論