![可擴(kuò)展網(wǎng)絡(luò)附屬存儲(chǔ)系統(tǒng)集群模塊的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view9/M01/21/2D/wKhkGWcpxJOAMSF5AADLDSFCKmM901.jpg)
![可擴(kuò)展網(wǎng)絡(luò)附屬存儲(chǔ)系統(tǒng)集群模塊的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view9/M01/21/2D/wKhkGWcpxJOAMSF5AADLDSFCKmM9012.jpg)
![可擴(kuò)展網(wǎng)絡(luò)附屬存儲(chǔ)系統(tǒng)集群模塊的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view9/M01/21/2D/wKhkGWcpxJOAMSF5AADLDSFCKmM9013.jpg)
![可擴(kuò)展網(wǎng)絡(luò)附屬存儲(chǔ)系統(tǒng)集群模塊的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view9/M01/21/2D/wKhkGWcpxJOAMSF5AADLDSFCKmM9014.jpg)
![可擴(kuò)展網(wǎng)絡(luò)附屬存儲(chǔ)系統(tǒng)集群模塊的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view9/M01/21/2D/wKhkGWcpxJOAMSF5AADLDSFCKmM9015.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
研究生畢業(yè)論文(申請(qǐng)工程碩士學(xué)位)可擴(kuò)展網(wǎng)絡(luò)附屬存儲(chǔ)系統(tǒng)集群模塊的設(shè)計(jì)與實(shí)現(xiàn)TheDesignandImplementationofClusteringModuleinScalableNetworkAttachedStorage摘要隨著信息技術(shù)的發(fā)展,企業(yè)的生產(chǎn)經(jīng)營(yíng)對(duì)于電子數(shù)據(jù)的依賴越來(lái)越大。很多企業(yè)面對(duì)大量數(shù)據(jù)存在存儲(chǔ),管理,使用等一系列問(wèn)題。網(wǎng)絡(luò)附屬存儲(chǔ)(NetworkAttachedStorage,簡(jiǎn)稱NAS)產(chǎn)品在數(shù)據(jù)存儲(chǔ)領(lǐng)域由于具有用途專一,性價(jià)比高,支持多種數(shù)據(jù)傳輸協(xié)議的特點(diǎn)而被很多企業(yè)采用。傳統(tǒng)的NAS產(chǎn)品是基于單個(gè)節(jié)點(diǎn),存在先天性的缺陷。其可靠性差,擴(kuò)展困難等缺點(diǎn)難以適應(yīng)當(dāng)代企業(yè)全天候數(shù)據(jù)服務(wù)的需求。本文將介紹一個(gè)可擴(kuò)展的NAS產(chǎn)品,它是基于IBM公司的通用并行文件系統(tǒng),可以在提供數(shù)據(jù)服務(wù)的同時(shí)進(jìn)行擴(kuò)展,備份等操作??蓴U(kuò)展NAS產(chǎn)品提供了基于B/S的管理系統(tǒng),易于部署和管理。此外,企業(yè)可以根據(jù)當(dāng)前數(shù)據(jù)量對(duì)節(jié)點(diǎn)數(shù)目進(jìn)行調(diào)整,可以有效降低采購(gòu)和運(yùn)營(yíng)成本。本文以可擴(kuò)展NAS產(chǎn)品為項(xiàng)目背景,詳細(xì)介紹了其集群模塊的分析,設(shè)計(jì)和實(shí)現(xiàn)。本文首先介紹了可擴(kuò)展NAS產(chǎn)品的背景,以及國(guó)內(nèi)外NAS產(chǎn)品發(fā)展的現(xiàn)狀。介紹可擴(kuò)展NAS產(chǎn)品集群模塊在項(xiàng)目中的作用和地位。介紹了產(chǎn)品網(wǎng)絡(luò)層,數(shù)據(jù)層,服務(wù)層,表現(xiàn)層的四層架構(gòu)。接著本文介紹了在集群模塊開發(fā)過(guò)程中使用的技術(shù)和工具。然后,本文在需求分析的基礎(chǔ)上介紹了集群模塊的設(shè)計(jì)和實(shí)現(xiàn)。詳細(xì)分析了集群模塊的四個(gè)主要的功能子模塊,網(wǎng)絡(luò)通信子模塊,節(jié)點(diǎn)管理子模塊,權(quán)限管理子模塊和性能監(jiān)控子模塊。本文對(duì)各個(gè)子模塊的功能設(shè)計(jì),關(guān)鍵流程設(shè)計(jì)進(jìn)行了闡述,并且詳細(xì)分析了關(guān)鍵的實(shí)現(xiàn)細(xì)節(jié)。最后,本文對(duì)所做的工作進(jìn)行了總結(jié),并且指出了集群模塊在節(jié)點(diǎn)管理方面可以繼續(xù)展開的工作。關(guān)鍵詞:可擴(kuò)展NAS、網(wǎng)絡(luò)通信、Django框架、權(quán)限管理、性能監(jiān)控
AbstractWiththedevelopmentofinformationtechnology,theenterprisesdependonelectronicdatamorethaneverbefore.Theenterpriseshavetosolveaseriesofproblemssuchasdatastorage,managementandusage.Instoragefield,networkattachedstorage(forshort,NAS)productshavealotofadvantages,sotheyareusedalot.Theyareproductsdesignedforaspecialpurposewithlow-priceandfeaturessupportformultipledatatransmissionprotocol.Unfortunately,traditionalNASproductsarebasedonsinglecomputingnode.Theyarehardtoextendandnotreliable,sotheneedofround-the-clockservicecannotbesatisfied. ThispaperwillintroduceascalableNASproduct.ItisaclusterNASbasedonGeneralParallelFileSystemofIBM.Withthefeaturesofdistributedfilesystemandmanagementsystem,thisproductprovidesextentionandmanagementoperationwhileworking.ScalableNASmanagementsystemisbasedonB/Sarchitecture.Theenterprisescanadjustthenumberofcomputingnodesaccordingtothesizeofdata.Thispolicycaneffectivelyreducethepurchaseandoperatingcoses.BasedonthescalableNASproductasbackground,thispaperwillintroducetheayalysis,designandimplementationoftheclustermoduleinthisproject. Firstly,thispaperintroducesthebackgroundofsaclableNASproductandthesituationofresearchinNASarea.Theroleandfunctionsoftheclustermoduleinthisprojectwillbeintroduced.Theproducthas4-layerarchitecture.Frombottomtoup,theorderisnetworklayer,datalayer,servicelayerandpresentationlayer. Secondly,thispaperintroducesthetechnologyandtoolsusedintheproject. Thirdly,thispaperintroducestherequirementanalysisintheproject.Afterthat,thedesignandimplementationofclustermoduleisintroduced.Clustermodulehas4majorsubmodules,thenetworksubmodule,thenodemanagementmodule,theprivilegemanagementsubmoduleandtheperformancemonitoringsubmodule.Inthispaper,functiondesignforeachofthesubmodule,keyprocessoftheproductisdiscussedindetail. Finally,thispapermakesaconclusion,andpointsoutwhattheclustermodulecanbedoneinthefuture,suchasimprovingtheautoload-balance.Keywords:ScalableNAS,NetworkCommunication,Django,AuthorityManagement,PerformanceMonitoring目錄摘要 IAbstract II圖目錄 VII表目錄 IX第一章引言 11.1項(xiàng)目背景 11.2國(guó)內(nèi)外相關(guān)領(lǐng)域發(fā)展現(xiàn)狀 21.2.1NAS產(chǎn)品發(fā)展現(xiàn)狀 21.2.2NAS與分布式文件系統(tǒng)的集成 41.3本文主要進(jìn)行的研究工作 61.4本文的組織結(jié)構(gòu) 6第二章技術(shù)綜述 72.1Django框架 72.1.1MVC設(shè)計(jì)模式 72.1.2Django框架概述 82.1.3Django框架的結(jié)構(gòu) 92.1.4Django請(qǐng)求響應(yīng)流程 102.2Python中數(shù)據(jù)處理技術(shù) 112.2.1XML處理 112.2.2數(shù)據(jù)序列化技術(shù) 122.2.3網(wǎng)絡(luò)數(shù)據(jù)傳輸 132.3GPFS文件系統(tǒng) 152.3.1GPFS簡(jiǎn)介 152.3.2可擴(kuò)展NAS中GPFS架構(gòu) 162.3.3GPFS的配置和管理 172.4RRDtool工具 182.4.1RRDtool簡(jiǎn)介 182.4.2RRDtool的python調(diào)用 192.5本章小結(jié) 20第三章集群模塊的分析與設(shè)計(jì) 213.1可擴(kuò)展NAS的總體規(guī)劃 213.2集群模塊的需求分析 223.2.1集群模塊的業(yè)務(wù)需求 223.2.2集群模塊的用戶需求 233.2.2集群模塊的功能需求 263.2.3集群模塊的非功能需求 283.3集群模塊的概要設(shè)計(jì) 283.4網(wǎng)絡(luò)通信子模塊分析與設(shè)計(jì) 303.4.1網(wǎng)絡(luò)通信子模塊流程設(shè)計(jì) 303.4.2 元數(shù)據(jù)設(shè)計(jì) 333.4.3 網(wǎng)絡(luò)通信子模塊詳細(xì)設(shè)計(jì) 343.5節(jié)點(diǎn)管理子模塊分析與設(shè)計(jì) 373.5.1 節(jié)點(diǎn)管理子模塊流程設(shè)計(jì) 373.5.2 節(jié)點(diǎn)管理子模塊結(jié)構(gòu)設(shè)計(jì) 383.6用戶管理子模塊分析與設(shè)計(jì) 393.6.1 用戶管理子模塊數(shù)據(jù)庫(kù)設(shè)計(jì) 393.6.2用戶管理子模塊結(jié)構(gòu)設(shè)計(jì) 403.7性能監(jiān)控子模塊分析與設(shè)計(jì) 423.7.1 性能監(jiān)控子模塊流程設(shè)計(jì) 423.7.2 RRDtool設(shè)計(jì)與使用 433.8本章小結(jié) 43第四章集群模塊的實(shí)現(xiàn) 444.1網(wǎng)絡(luò)通信子模塊實(shí)現(xiàn) 444.1.1 初始化工作實(shí)現(xiàn) 444.1.2 網(wǎng)絡(luò)通信機(jī)制實(shí)現(xiàn) 454.1.3引導(dǎo)界面實(shí)現(xiàn) 484.2節(jié)點(diǎn)管理子模塊實(shí)現(xiàn) 494.2.1 元數(shù)據(jù)存取實(shí)現(xiàn) 494.2.2 節(jié)點(diǎn)管理界面實(shí)現(xiàn) 514.3用戶管理子模塊實(shí)現(xiàn) 524.4性能監(jiān)控子模塊實(shí)現(xiàn) 564.4.1性能圖表生成實(shí)現(xiàn) 564.4.2性能圖表展示實(shí)現(xiàn) 584.5集群模塊實(shí)現(xiàn)效果分析 584.5.1測(cè)試環(huán)境及測(cè)試用例 584.5.2效果分析 604.6本章小結(jié) 60第五章總結(jié)與展望 615.1總結(jié) 615.2進(jìn)一步工作展望 61參考文獻(xiàn) 62致謝 65版權(quán)及論文原創(chuàng)性說(shuō)明 66圖目錄TOC\h\z\t"圖目錄4"\c圖1.1共享存儲(chǔ)集群NAS架構(gòu) 3圖1.2統(tǒng)一文件系統(tǒng)集群NAS架構(gòu) 3圖1.3GPFS特性與NAS需求映射關(guān)系 5圖2.1MVC框架 8圖2.2Django組件結(jié)構(gòu) 9圖2.3DOM樹形結(jié)構(gòu) 11圖2.4使用cPickle進(jìn)行序列化 12圖2.5使用cPickle進(jìn)行反序列化 13圖2.6socket連接過(guò)程 14圖2.7SocketServer模塊類關(guān)系 14圖2.8RRDtool合并算法 19圖3.1可擴(kuò)展NAS產(chǎn)品整體架構(gòu) 21圖3.2節(jié)點(diǎn)管理子模塊用例圖 23圖3.3用戶管理子模塊用例圖 24圖3.4性能監(jiān)控子模塊用例圖 25圖3.5popen與shell交互 27圖3.6集群模塊的分層架構(gòu) 29圖3.7系統(tǒng)初始化流程圖 31圖3.8節(jié)點(diǎn)初始化流程圖 32圖3.9元數(shù)據(jù)樹狀結(jié)構(gòu) 33圖3.10網(wǎng)絡(luò)通信子模塊類圖 35圖3.11文件系統(tǒng)相關(guān)類圖 36圖3.12節(jié)點(diǎn)狀態(tài)轉(zhuǎn)移圖 38圖3.13節(jié)點(diǎn)管理子模塊系統(tǒng)結(jié)構(gòu)圖 39圖3.14用戶管理子模塊的實(shí)體關(guān)系圖 40圖3.15用戶管理子模塊的系統(tǒng)結(jié)構(gòu)圖 41圖3.16性能監(jiān)控子模塊的泳道圖 42圖4.1節(jié)點(diǎn)初始化腳本 44圖4.2TCPServer實(shí)現(xiàn) 46圖4.3發(fā)送端文件傳輸方法 47圖4.4接受端文件傳輸方法 47圖4.5初始化監(jiān)控界面 48圖4.6元數(shù)據(jù)讀取方法 49圖4.7元數(shù)據(jù)保存方法 50圖4.8節(jié)點(diǎn)管理界面 51圖4.9磁盤管理界面 52圖4.10用戶管理界面 52圖4.11UserCreationFrom類對(duì)字段的定義 53圖4.12用戶創(chuàng)建頁(yè)面 54圖4.13UserCreationFrom類中的save方法 55圖4.14用戶和群組映射關(guān)系管理界面 56圖4.15內(nèi)存圖表的生成方法 57圖4.16性能監(jiān)控頁(yè)面效果 58
表目錄TOC\fF\h\z\t"表目錄2"\c表2.1GPFS啟動(dòng)過(guò)程中涉及的命令 17表2.2RRDtool提供的函數(shù) 20表3.1用戶表的字段 40表4.1測(cè)試服務(wù)器配置 59第一章引言1.1項(xiàng)目背景信息技術(shù)正在以前所未有的方式改變著人們的工作和生活方式。如何應(yīng)付伴隨著信息的高速增長(zhǎng)而帶來(lái)的海量數(shù)據(jù)的存儲(chǔ),成為擺在業(yè)界人士面前的一道難題。為了高效且經(jīng)濟(jì)的提供數(shù)據(jù)的統(tǒng)一管理,在存儲(chǔ)領(lǐng)域的各大公司均推出了針對(duì)企業(yè)用戶的NAS產(chǎn)品。NAS是一種通過(guò)網(wǎng)絡(luò)提供的集中式數(shù)據(jù)訪問(wèn)服務(wù),計(jì)算節(jié)點(diǎn)通過(guò)文件傳輸協(xié)議從NAS設(shè)備處獲得數(shù)據(jù)。NAS相比于傳統(tǒng)的文件服務(wù)器而言,有很多優(yōu)點(diǎn)。由于NAS設(shè)備用途更為單一,所以硬件以及軟件配置更為精簡(jiǎn),只提供數(shù)據(jù)訪問(wèn)以及相應(yīng)的管理功能,可以節(jié)約資金;因?yàn)橥ㄟ^(guò)標(biāo)準(zhǔn)的協(xié)議獲取數(shù)據(jù),可以達(dá)到不同平臺(tái)之間的文件共享;可以充分的利用LAN網(wǎng)絡(luò)結(jié)構(gòu),便于存儲(chǔ)系統(tǒng)的升級(jí);通過(guò)冗余措施來(lái)保障數(shù)據(jù)服務(wù)的可靠性。[張繼波等,2005]現(xiàn)有的NAS產(chǎn)品分為單節(jié)點(diǎn)和多節(jié)點(diǎn)兩種。單節(jié)點(diǎn)NAS架構(gòu)簡(jiǎn)單,造價(jià)低,被廣大中小企業(yè)采用。缺陷也很明顯,只針對(duì)單個(gè)設(shè)備導(dǎo)致存儲(chǔ)的可擴(kuò)展性受限,單純的通過(guò)增加磁盤來(lái)擴(kuò)展存儲(chǔ)會(huì)使得存儲(chǔ)效率下降,通過(guò)增加NAS設(shè)備又破壞了對(duì)數(shù)據(jù)的統(tǒng)一管理;單個(gè)設(shè)備無(wú)法實(shí)現(xiàn)動(dòng)態(tài)的擴(kuò)容,在增加磁盤時(shí)往往需要停止服務(wù);同時(shí)基于單個(gè)設(shè)備的NAS可靠性不高,節(jié)點(diǎn)的故障會(huì)導(dǎo)致數(shù)據(jù)服務(wù)癱瘓。多節(jié)點(diǎn)NAS是近幾年來(lái)業(yè)界發(fā)展的新方向,各大存儲(chǔ)設(shè)備廠商紛紛推出該類型NAS產(chǎn)品,例如EMC的ISILON,IBM的SONAS等。多節(jié)點(diǎn)NAS產(chǎn)品可以通過(guò)軟件和硬件架構(gòu)解決單節(jié)點(diǎn)NAS的缺陷。現(xiàn)有的多節(jié)點(diǎn)NAS產(chǎn)品都是面向中高端市場(chǎng),造價(jià)不菲。調(diào)查顯示,隨著時(shí)間的推移,可擴(kuò)展NAS產(chǎn)品相比單節(jié)點(diǎn)NAS提供了更多的成本優(yōu)勢(shì),但是對(duì)于評(píng)估新的NAS系統(tǒng)的用戶而言,初始成本比可擴(kuò)展NAS系統(tǒng)的先進(jìn)特性和功能更重要[Gahmetal.,2010]。很多中小企業(yè)用戶業(yè)務(wù)發(fā)展很快,但是采購(gòu)時(shí)初始需求不高,預(yù)算有限。很多企業(yè)在采購(gòu)了單節(jié)點(diǎn)NAS之后不久就面臨擴(kuò)展受限,不得不進(jìn)行數(shù)據(jù)遷移的境況。在本論文介紹的可擴(kuò)展的NAS產(chǎn)品,其客戶群體是發(fā)展中的中小企業(yè),特點(diǎn)是可根據(jù)業(yè)務(wù)量調(diào)節(jié)節(jié)點(diǎn)數(shù)目,從而達(dá)到低初始投入和高可擴(kuò)展性的目的。 可擴(kuò)展NAS產(chǎn)品基于分布式文件系統(tǒng),本身也是一個(gè)集群系統(tǒng)。在部署和管理上集群系統(tǒng)存在一系列的問(wèn)題,包括如何自動(dòng)化安裝,如何統(tǒng)一權(quán)限管理,如何進(jìn)行性能監(jiān)控等。通過(guò)集群模塊的支持,可以解決上述的缺陷。同時(shí)可以充分的利用分布式文件系統(tǒng)的特性,提供安全,穩(wěn)定,可擴(kuò)展的數(shù)據(jù)服務(wù)。1.2國(guó)內(nèi)外相關(guān)領(lǐng)域發(fā)展現(xiàn)狀1.2.1NAS產(chǎn)品發(fā)展現(xiàn)狀面對(duì)企業(yè)對(duì)存儲(chǔ)需求的快速增長(zhǎng),廣大廠商均給出了NAS系統(tǒng)擴(kuò)展方案??傮w而言,NAS系統(tǒng)的擴(kuò)展方式有scale-up和scale-out兩種。Scale-up方式是指通過(guò)對(duì)單個(gè)NAS機(jī)器進(jìn)行硬件升級(jí)來(lái)獲取更高的存取速度,更大的存儲(chǔ)空間和更快的傳輸速度。Scale-out是指通過(guò)擴(kuò)展節(jié)點(diǎn)數(shù)目的方式達(dá)到相同的目的?,F(xiàn)有的單節(jié)點(diǎn)NAS升級(jí)只能采用Scale-up的方式,產(chǎn)品技術(shù)比較落后?!皺M向擴(kuò)展存儲(chǔ)將成為匹配性能和容量實(shí)現(xiàn)更快投資回報(bào)的必然要求?!盵2012,范平]采用scale-out方式進(jìn)行擴(kuò)展的NAS產(chǎn)品,其架構(gòu)有兩種方案,一種是多個(gè)單節(jié)點(diǎn)產(chǎn)品組成NAS群組,群組外部提供單獨(dú)的調(diào)度模塊對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行分配,維持負(fù)載均衡。這種架構(gòu)節(jié)點(diǎn)之間耦合度低,擴(kuò)展比較方便。缺點(diǎn)是本質(zhì)上這種系統(tǒng)是單個(gè)NAS系統(tǒng)的堆疊,單節(jié)點(diǎn)NAS存在的缺陷并沒(méi)有消除,同時(shí)多個(gè)節(jié)點(diǎn)也帶來(lái)了管理上的諸多問(wèn)題。另一種是集群NAS(ClusterNAS)架構(gòu)。集群NAS在多個(gè)節(jié)點(diǎn)之間的協(xié)同上進(jìn)行了軟件或者硬件的支持,提供高效,穩(wěn)定,負(fù)載均衡的NAS服務(wù)。目前的集群NAS有三種架構(gòu):1)共享存儲(chǔ)架構(gòu)。其架構(gòu)如圖1.1所示,局域網(wǎng)中存在兩種節(jié)點(diǎn),數(shù)據(jù)服務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)。所有的數(shù)據(jù)服務(wù)節(jié)點(diǎn)共享所有的存儲(chǔ)節(jié)點(diǎn),數(shù)據(jù)服務(wù)節(jié)點(diǎn)對(duì)外提供數(shù)據(jù)服務(wù),存儲(chǔ)節(jié)點(diǎn)被隱藏。通過(guò)采用高性能的存儲(chǔ)網(wǎng)絡(luò)保障內(nèi)部數(shù)據(jù)傳輸速度,通過(guò)擴(kuò)展存儲(chǔ)節(jié)點(diǎn)增加存儲(chǔ)空間,通過(guò)增加數(shù)據(jù)服務(wù)節(jié)點(diǎn)提高數(shù)據(jù)服務(wù)能力。缺點(diǎn)是存儲(chǔ)節(jié)點(diǎn)采用專有存儲(chǔ)設(shè)備,成本比較高,數(shù)據(jù)服務(wù)節(jié)點(diǎn)存儲(chǔ)能力被浪費(fèi),配置和管理都比較復(fù)雜。[趙聰,2003]圖1.1共享存儲(chǔ)集群NAS架構(gòu)2)統(tǒng)一文件系統(tǒng)架構(gòu)。其架構(gòu)如圖1.2所示,局域網(wǎng)中所有節(jié)點(diǎn)采用通用服務(wù)器,每個(gè)節(jié)點(diǎn)均提供存儲(chǔ)能力和數(shù)據(jù)服務(wù)。所有的服務(wù)器存儲(chǔ)設(shè)備組成一個(gè)整體的文件系統(tǒng),在邏輯上統(tǒng)一命名空間。每個(gè)節(jié)點(diǎn)都可以通過(guò)訪問(wèn)該文件系統(tǒng)中所有存儲(chǔ)設(shè)備上的文件。節(jié)點(diǎn)之間采用高速網(wǎng)絡(luò)互聯(lián),提高文件系統(tǒng)的數(shù)據(jù)傳輸效率。由于數(shù)據(jù)服務(wù)和存儲(chǔ)設(shè)備共用節(jié)點(diǎn),可以減少設(shè)備數(shù)量。優(yōu)點(diǎn)是采用通用設(shè)備,成本低,部署簡(jiǎn)單。缺點(diǎn)是,設(shè)備很容易故障,需要采用合適的機(jī)制保障可靠性,往往需要在安全性和存儲(chǔ)利用率之間采取折中。[謝長(zhǎng)生等,2005]圖1.2統(tǒng)一文件系統(tǒng)集群NAS架構(gòu)3)利用對(duì)象存儲(chǔ)設(shè)備(Object-basedStorageDevice,OSD)構(gòu)建NAS架構(gòu)。對(duì)象存儲(chǔ)設(shè)備可以自動(dòng)構(gòu)建集群并智能管理數(shù)據(jù)分布,數(shù)據(jù)服務(wù)節(jié)點(diǎn)只需要將I/O數(shù)據(jù)交給OSD設(shè)備處理。[蘇勇等,2007]該架構(gòu)將數(shù)據(jù)通路和控制通路分離,架構(gòu)簡(jiǎn)單,性能優(yōu)秀,可擴(kuò)展極佳。缺點(diǎn)是設(shè)備造價(jià)高,而且OSD設(shè)備處于試驗(yàn)階段,離商業(yè)化產(chǎn)品的出現(xiàn)時(shí)間還很長(zhǎng)。統(tǒng)一文件系統(tǒng)架構(gòu)采用通用服務(wù)器,價(jià)格低,可擴(kuò)展性高。雖然通用設(shè)備故障率較高,但是通過(guò)對(duì)元數(shù)據(jù)的備份和恢復(fù),以及分布式文件系統(tǒng)提供的安全策略,可以消除單個(gè)存儲(chǔ)設(shè)備或者單個(gè)節(jié)點(diǎn)故障對(duì)服務(wù)造成的影響。因此在本產(chǎn)品中采用了統(tǒng)一文件系統(tǒng)架構(gòu)方案。1.2.2NAS與分布式文件系統(tǒng)的集成NAS產(chǎn)品的核心功能是數(shù)據(jù)的傳輸和存儲(chǔ)。傳輸數(shù)據(jù)功能體現(xiàn)在各種數(shù)據(jù)服務(wù)器,支持常用的數(shù)據(jù)傳輸協(xié)議,例如FTP,CIFS,NFS等;存儲(chǔ)包括圍繞在數(shù)據(jù)存取周圍的所有功能,包括數(shù)據(jù)分區(qū),備份功能,快照功能等。這些功能構(gòu)架在文件系統(tǒng)之上,需要利用文件系統(tǒng)提供的接口進(jìn)行實(shí)現(xiàn)。文件系統(tǒng)作為一個(gè)獨(dú)立的產(chǎn)品,具有一定的普適性,除了提供特性之外,一般需要遵守POSIX標(biāo)準(zhǔn)。NAS產(chǎn)品通過(guò)調(diào)用POSIX標(biāo)準(zhǔn)接口使用文件系統(tǒng)功能,保證系統(tǒng)的可移植性。缺點(diǎn)是效率較低,無(wú)法利用文件系統(tǒng)的特性。本案中可擴(kuò)展NAS產(chǎn)品底層采用了IBM的GPFS(GeneralParallelFileSystem,通用并行文件系統(tǒng))文件系統(tǒng)。該文件系統(tǒng)是一個(gè)分布式文件系統(tǒng),在設(shè)計(jì)和實(shí)現(xiàn)中都對(duì)于數(shù)據(jù)存取進(jìn)行了獨(dú)特的設(shè)計(jì),與集群NAS產(chǎn)品的很多理念高度一致。如圖1.3所示,GPFS提供了fileset的概念可以用于NAS的數(shù)據(jù)分區(qū),GPFS提供基于fileset的備份,快照,也可以直接為NAS產(chǎn)品采用。GPFS提供了統(tǒng)一的邏輯存儲(chǔ)空間,在任何一個(gè)節(jié)點(diǎn)上均可訪問(wèn)所有數(shù)據(jù),在NAS產(chǎn)品元數(shù)據(jù)的備份和恢復(fù)操作上也可以調(diào)用相關(guān)功能。通過(guò)與底層文件系統(tǒng)的集成,可擴(kuò)展NAS產(chǎn)品可以有效的利用文件系統(tǒng)中已有的特性,減少重復(fù)功能的開發(fā),減少工作量的同時(shí)提高了整個(gè)產(chǎn)品的性能。功能的簡(jiǎn)化使得產(chǎn)品的部署難度下降,提高了可擴(kuò)展性。圖1.3GPFS特性與NAS需求映射關(guān)系在集成過(guò)程中,需要解決下述問(wèn)題:GPFS是面向通用功能開發(fā)的,提供了多種配置選項(xiàng),需要針對(duì)NAS產(chǎn)品的需求將不會(huì)用到的特性去除,將配置選項(xiàng)復(fù)雜度降低??蓴U(kuò)展NAS產(chǎn)品的定位是針對(duì)中小企業(yè)的簡(jiǎn)單易用的產(chǎn)品,需要引入自動(dòng)化配置,與文件系統(tǒng)的集成過(guò)程自動(dòng)化是一個(gè)難題。在GPFS中使用熱備份技術(shù)或者軟件RAID的方式來(lái)保證數(shù)據(jù)安全和服務(wù)可靠性。需要收集節(jié)點(diǎn)的磁盤信息,根據(jù)一定的算法來(lái)進(jìn)行數(shù)據(jù)備份。所以需要?jiǎng)討B(tài)采集節(jié)點(diǎn)的磁盤信息。通過(guò)不同節(jié)點(diǎn)訪問(wèn)GPFS系統(tǒng)時(shí),用戶權(quán)限需要保持一致。因此需要在集群間引入統(tǒng)一的權(quán)限機(jī)制。NAS產(chǎn)品的性能監(jiān)控非常重要,用戶需要對(duì)集群內(nèi)每一個(gè)節(jié)點(diǎn)的各項(xiàng)性能指標(biāo)進(jìn)行統(tǒng)一的監(jiān)控。為了解決上述問(wèn)題,項(xiàng)目在集群文件系統(tǒng)的架構(gòu)下添加了一個(gè)新的集群模塊,該模塊對(duì)系統(tǒng)的伸縮性提供支持。集群模塊主要分為四個(gè)子模塊,網(wǎng)絡(luò)通信子模塊,節(jié)點(diǎn)管理子模塊,權(quán)限管理子模塊和性能監(jiān)控子模塊。其中網(wǎng)絡(luò)通信子模塊是基礎(chǔ),其中有一套完整的機(jī)制來(lái)保障集群的建立與運(yùn)行期間的可靠性,包括主節(jié)點(diǎn)推選機(jī)制,節(jié)點(diǎn)整體遷移機(jī)制,失效節(jié)點(diǎn)組機(jī)制。節(jié)點(diǎn)管理子模塊用于方便用戶管理。網(wǎng)絡(luò)通信子模塊還提供了元數(shù)據(jù)備份,集群中節(jié)點(diǎn)間的數(shù)據(jù)同步和文件傳輸?shù)冉涌?,?lái)支持權(quán)限管理子模塊和性能監(jiān)控子模塊。權(quán)限管理子模塊包括文件系統(tǒng)的掛載,數(shù)據(jù)服務(wù)的權(quán)限配置,統(tǒng)一用戶權(quán)限管理。性能監(jiān)控子模塊包括性能數(shù)據(jù)的收集,分析與展示。1.3本文主要進(jìn)行的研究工作本文以可擴(kuò)展NAS產(chǎn)品項(xiàng)目為背景,介紹了其集群模塊的分析,設(shè)計(jì)與實(shí)現(xiàn)。可擴(kuò)展NAS產(chǎn)品面臨的主要挑戰(zhàn)在兩個(gè)方面,一是提供具有伸縮性的集群產(chǎn)品,二是對(duì)用戶隱藏集群的復(fù)雜性,提供簡(jiǎn)易的管理系統(tǒng)。為解決上述問(wèn)題,系統(tǒng)中引入了集群模塊。集群模塊實(shí)現(xiàn)了基于網(wǎng)絡(luò)通信的集群自動(dòng)化配置,此外提供了基于Django實(shí)現(xiàn)的管理系統(tǒng),方便用戶對(duì)集群的管理和監(jiān)控。集群模塊的引入使得可擴(kuò)展NAS產(chǎn)品更為完整和易用。本文的主要貢獻(xiàn)包括:本文提供了一種基于統(tǒng)一文件系統(tǒng)架構(gòu)的集群NAS的設(shè)計(jì)。該產(chǎn)品底層文件系統(tǒng)采用分布式文件系統(tǒng),產(chǎn)品支持用Scale-out的方式進(jìn)行擴(kuò)展,隨著節(jié)點(diǎn)數(shù)目的增加可以獲得存儲(chǔ)能力和數(shù)據(jù)服務(wù)能力的同時(shí)提升。設(shè)計(jì)和實(shí)現(xiàn)了集群管理系統(tǒng)對(duì)集群的擴(kuò)展和管理提供支持。管理系統(tǒng)中提供了網(wǎng)絡(luò)通信機(jī)制用于節(jié)點(diǎn)信息的收集和傳輸。在信息收集的基礎(chǔ)上提供了基于web的管理界面供用戶進(jìn)行集群管理和監(jiān)控。集群模塊利用linux系統(tǒng)自帶的定時(shí)任務(wù)工具和RRDtool,在網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)幕A(chǔ)上,提供了對(duì)Linux集群進(jìn)行性能監(jiān)控的一種實(shí)現(xiàn)。1.4本文的組織結(jié)構(gòu)本文的組織結(jié)構(gòu)如下:第一章引言部分。介紹了項(xiàng)目背景,介紹了NAS在國(guó)內(nèi)外的發(fā)展現(xiàn)狀。對(duì)論文的工作和組織結(jié)構(gòu)進(jìn)行了概括。第二章技術(shù)綜述。將項(xiàng)目所要涉及的技術(shù)和框架做了介紹,包括python數(shù)據(jù)處理技術(shù)、Django框架、GPFS文件系統(tǒng)、RRDtool。第三章可擴(kuò)展NAS產(chǎn)品集群模塊的分析與設(shè)計(jì)。提出了產(chǎn)品的總體設(shè)計(jì)以及集群模塊的需求。提出項(xiàng)目基本需求,對(duì)模塊總體進(jìn)行了設(shè)計(jì),根據(jù)功能需求劃分了子模塊,對(duì)關(guān)鍵流程和數(shù)據(jù)結(jié)構(gòu)進(jìn)行了設(shè)計(jì)。第四章可擴(kuò)展NAS產(chǎn)品集群模塊的實(shí)現(xiàn)。根據(jù)設(shè)計(jì),給出了集群模塊的四個(gè)子模塊的實(shí)現(xiàn)細(xì)節(jié)。第五章總結(jié)與展望??偨Y(jié)論文期間所做的工作,給出未來(lái)工作的展望。第二章技術(shù)綜述本文介紹的集群模塊,提供了管理系統(tǒng)和數(shù)據(jù)管理機(jī)制。管理系統(tǒng)使用了基于MVC的Django框架。數(shù)據(jù)收集管理機(jī)制中,使用了python標(biāo)準(zhǔn)庫(kù)和擴(kuò)展庫(kù)中的數(shù)據(jù)處理模塊進(jìn)行數(shù)據(jù)的采集,傳輸,存儲(chǔ)。對(duì)于性能數(shù)據(jù),系統(tǒng)采用了RRDtool這一專門的工具進(jìn)行數(shù)據(jù)收集和展示。此外,集群模塊還需要用到GPFS文件系統(tǒng)提供的命令。本章將對(duì)集群模塊的設(shè)計(jì)和實(shí)現(xiàn)中涉及的技術(shù)和工具進(jìn)行介紹。2.1Django框架可擴(kuò)展NAS產(chǎn)品提供了基于B/S架構(gòu)的管理系統(tǒng),該系統(tǒng)對(duì)業(yè)務(wù)邏輯復(fù)雜度的需求較高,對(duì)并發(fā)請(qǐng)求支持的需求不高,因此在開發(fā)中需要選擇一個(gè)支持快速開發(fā)的框架。Django是基于python語(yǔ)言開發(fā)的開源框架,并且遵循MVC的分層原則。[Django,2013]2.1.1MVC設(shè)計(jì)模式瀏覽器/服務(wù)器結(jié)構(gòu),簡(jiǎn)稱B/S結(jié)構(gòu),伴隨著互聯(lián)網(wǎng)的發(fā)展得到了大規(guī)模的應(yīng)用。在B/S結(jié)構(gòu)中,業(yè)務(wù)邏輯部分被放在服務(wù)器端實(shí)現(xiàn),瀏覽器負(fù)責(zé)展示數(shù)據(jù)和命令操作,相比于客戶端/服務(wù)器架構(gòu),雖然對(duì)服務(wù)器的能力要求較高,但是在程序的維護(hù)和升級(jí)上更容易操作。HTTP協(xié)議被用作B/S結(jié)構(gòu)中瀏覽器端和服務(wù)器端的雙向通信,它封裝了瀏覽器端到服務(wù)器端的request和從服務(wù)器端到瀏覽器端的response。在這種結(jié)構(gòu)下,程序員只需要關(guān)心瀏覽器端的表現(xiàn)形式和服務(wù)器端的應(yīng)用邏輯,簡(jiǎn)化了開發(fā)工作。[王心路等,2004]模型-視圖-控制器設(shè)計(jì)模式,即MVC設(shè)計(jì)模式,是B/S結(jié)構(gòu)的應(yīng)用中常用的編程范式。在MVC模式中,應(yīng)用程序分為Model,View,Controller三個(gè)組成部分。這三個(gè)組成部分彼此間相互獨(dú)立,遵循MVC模式的應(yīng)用程序可以達(dá)到邏輯處理和數(shù)據(jù)表現(xiàn)相互分離的目的。每個(gè)組件只關(guān)心內(nèi)部邏輯,達(dá)到高內(nèi)聚,低耦合的效果。分層的思想可以有效的提高開發(fā)效率,同時(shí)在后期維護(hù)時(shí),可擴(kuò)展性和易維護(hù)性的需求都可以得到滿足。[周輝等,2012]MVC設(shè)計(jì)模式中視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動(dòng)MVC的模型層即可。因?yàn)槟P团c控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則,從而達(dá)到低耦合的效果。同時(shí)MVC模式允許你使用各種不同樣式的視圖來(lái)訪問(wèn)同一個(gè)服務(wù)器端的代碼。由于模型返回的數(shù)據(jù)沒(méi)有進(jìn)行格式化,所以同樣的構(gòu)件能被不同的界面使用。從而便于重用。而分離視圖層和業(yè)務(wù)邏輯層使得WEB應(yīng)用更易于維護(hù)和修改。如圖2.1所示,在MVC模式中,業(yè)務(wù)流程是由瀏覽器發(fā)起的,瀏覽器發(fā)出request,控制器獲得請(qǐng)求,與數(shù)據(jù)模型交互,更新數(shù)據(jù)模型??刂破魉⑿乱晥D,視圖渲染瀏覽器頁(yè)面,用戶得到反饋。圖2.1MVC框架2.1.2Django框架概述在2005年,Django開源之前,已經(jīng)存在很多基于MVC的開發(fā)框架。然而Django迅速得到了業(yè)界的認(rèn)同,成為迄今為止最為成功的基于python的web開發(fā)框架。這是由兩個(gè)方面決定的,Django與python語(yǔ)言理念的一致和在設(shè)計(jì)之中對(duì)快速開發(fā)的支持。[高昂,2009]Django遵循python的普遍原則?!癙ython的用戶一般都希望盡量清楚地描述問(wèn)題,并且符合語(yǔ)言自身的理念,即Pythonic?!盵Jeff.F,2009]Django中很多理念,比如盡量清楚的描述問(wèn)題,對(duì)每種簡(jiǎn)單任務(wù)只有一種正確的做法,不依賴默認(rèn)行為以及不要做重復(fù)性工作,都與python理念保持一致。Django提供了很多組件,應(yīng)用程序員可以根據(jù)項(xiàng)目的需要選擇組件進(jìn)行組裝,同時(shí)Django也允許用戶將內(nèi)置組件換成其他的工具。例如Django內(nèi)置數(shù)據(jù)庫(kù)管理組件,調(diào)用該組件可以輕松的進(jìn)行數(shù)據(jù)持久化的工作,同時(shí)Django也提供了對(duì)其他數(shù)據(jù)庫(kù)的支持,用戶可以根據(jù)自己的喜好自行選擇。由于理念一致,越來(lái)越多的python程序員加入到Django的開發(fā),并貢獻(xiàn)了各種組件的源代碼。[王冉陽(yáng),2009]Django在設(shè)計(jì)之初就充分考慮了快速開發(fā)。Django起源于在線新聞的站點(diǎn),因此在設(shè)計(jì)之初就設(shè)計(jì)了一組快速實(shí)現(xiàn)業(yè)務(wù)邏輯的組件。在初始化時(shí)使用Django的admin組件可以進(jìn)行自動(dòng)化的快速部署。admin.py結(jié)合了配置文件,自動(dòng)化腳本和命令行的功能。通過(guò)對(duì)該文件修改以及調(diào)用命令可以輕松的完成組件的選擇,數(shù)據(jù)庫(kù)的配置等功能。2.1.3Django框架的結(jié)構(gòu) Django遵循了MVC設(shè)計(jì)模式,但是在實(shí)現(xiàn)上與其他的框架有所不同。其組件結(jié)構(gòu)如圖2.2所示。圖2.2Django組件結(jié)構(gòu)瀏覽器發(fā)出的請(qǐng)求首先交由URL映射器處理。HTTP請(qǐng)求的核心是URL,J2EE,.NET等框架將URL解析過(guò)程封裝,對(duì)應(yīng)到同名方法中,用戶在方法中進(jìn)行編程。而在Django中,程序員需要自己定義URL的解析,其遵從正則表達(dá)式規(guī)則,更加靈活和直觀。Django接收到請(qǐng)求后,根據(jù)URL配置和urls.py文件里定義的規(guī)則逐條匹配,找到對(duì)應(yīng)的視圖方法和視圖模板。 視圖方法不同于MVC中的視圖模板,在視圖方法中封裝了真實(shí)的業(yè)務(wù)邏輯。它和URL映射器共同擔(dān)當(dāng)了MVC范式中控制器的角色。URL映射器封裝了URL到視圖方法的映射關(guān)系,視圖方法則將數(shù)據(jù)模型和視圖模板聯(lián)系起來(lái),定義了需要展示的數(shù)據(jù)。在視圖方法中,也支持Ajax技術(shù),允許瀏覽器端的javascript發(fā)出的非順序性的訪問(wèn)請(qǐng)求。在Django中視圖方法存放在views.py中。 視圖模板是Django抽象出來(lái)的一個(gè)模塊,如果為每個(gè)請(qǐng)求寫一個(gè)對(duì)應(yīng)的HTML頁(yè)面,會(huì)造成大量的重復(fù)性工作,并且給后期的維護(hù)帶來(lái)很大的問(wèn)題。視圖模板是具有標(biāo)簽的文本,標(biāo)簽允許程序進(jìn)行動(dòng)態(tài)的替換,支持簡(jiǎn)單的邏輯結(jié)構(gòu),如選擇結(jié)構(gòu)或者循環(huán)結(jié)構(gòu)。多個(gè)視圖方法可以調(diào)用同一個(gè)視圖模板,使用不同的數(shù)據(jù)并對(duì)其進(jìn)行渲染得到最終的HTML頁(yè)面。而且在實(shí)際使用中,視圖模板不僅僅支持HTML,甚至是其他格式的文件供用戶下載。在Django中,視圖模板存放在templates文件夾下。 數(shù)據(jù)模型是對(duì)真實(shí)世界的抽象,數(shù)據(jù)模型實(shí)例化的對(duì)象保存的是當(dāng)前系統(tǒng)的狀態(tài),視圖方法可以改變數(shù)據(jù)模型的值,同時(shí)也需要調(diào)用數(shù)據(jù)模型的值呈現(xiàn)給用戶。數(shù)據(jù)模型需要與數(shù)據(jù)庫(kù)中的對(duì)象保持一致。在Django中數(shù)據(jù)模型通過(guò)manage.pystartapp命令建立,保存在models.py文件中。 ORM組件即對(duì)象關(guān)系映射組件,將數(shù)據(jù)庫(kù)中的數(shù)據(jù)與程序中的對(duì)象進(jìn)行映射,它封裝了數(shù)據(jù)庫(kù)的調(diào)用,將動(dòng)態(tài)的對(duì)象自動(dòng)與數(shù)據(jù)庫(kù)記錄進(jìn)行狀態(tài)同步,降低了開發(fā)者的工作量。同時(shí)pythonDB-API的支持減少了在程序移植時(shí)可能出現(xiàn)的數(shù)據(jù)庫(kù)兼容的問(wèn)題。2.1.4Django請(qǐng)求響應(yīng)流程Django對(duì)HTTP請(qǐng)求的處理流程如下:服務(wù)器接收到瀏覽器發(fā)出的服務(wù)請(qǐng)求,傳給Django。Django將request轉(zhuǎn)換為請(qǐng)求對(duì)象,該對(duì)象的結(jié)構(gòu)是Django專門為request設(shè)計(jì)的字典結(jié)構(gòu),可以應(yīng)對(duì)HTTPCGI的需求。Django在URL配置文件里尋找請(qǐng)求對(duì)應(yīng)的views.py里的處理函數(shù)。Django以請(qǐng)求對(duì)象為參數(shù)傳入該視圖函數(shù)。視圖函數(shù)創(chuàng)建一個(gè)response對(duì)象。Django將response對(duì)象與Template中的文件結(jié)合,生成HTML文件。Web服務(wù)器將頁(yè)面?zhèn)魉徒o客戶端。2.2Python中數(shù)據(jù)處理技術(shù)集群模塊中涉及到對(duì)包括XML在內(nèi)的多種數(shù)據(jù)格式處理以及跨節(jié)點(diǎn)的數(shù)據(jù)傳輸。Python作為解釋性語(yǔ)言,對(duì)于數(shù)據(jù)處理非常擅長(zhǎng),常常被用于混合編程中的粘合劑[羅霄等,2004]。在Python的標(biāo)準(zhǔn)庫(kù)和擴(kuò)展庫(kù)中提供了多個(gè)模塊對(duì)數(shù)據(jù)處理進(jìn)行支持。[Python,2013]2.2.1XML處理XML即可擴(kuò)展標(biāo)記語(yǔ)言,由于XML具有結(jié)構(gòu)化,跨平臺(tái)等優(yōu)點(diǎn),在很多領(lǐng)域XML已經(jīng)成為事實(shí)上的信息交換標(biāo)準(zhǔn)。[候要紅等,2007]Python是一種解釋性語(yǔ)言,在處理文本和解析復(fù)雜的數(shù)據(jù)結(jié)構(gòu)方面具有先天性的優(yōu)勢(shì)。Python很早就內(nèi)建了對(duì)XML的支持。在Python標(biāo)準(zhǔn)庫(kù)中附帶了用C語(yǔ)言編寫的Expat解析器,Expat可以直接把XML文件轉(zhuǎn)換為內(nèi)存中的以元素為葉子的樹狀結(jié)構(gòu)。圖2.3DOM樹形結(jié)構(gòu)W3C推薦的對(duì)XML和HTML的解析標(biāo)準(zhǔn)是通過(guò)文檔對(duì)象模型(DocumentObjectModel,簡(jiǎn)稱DOM)。[Kamiretal.,2009]“DOM是一種平臺(tái)和語(yǔ)言獨(dú)立的接口,它允許程序或者腳本動(dòng)態(tài)的訪問(wèn)更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。文檔可以被深度處理,并且處理的結(jié)果可以更新原有的文檔.”[W3C,2005]圖2.3展示了一個(gè)HTML頁(yè)面的DOM的樹形結(jié)構(gòu)。由于Expat只實(shí)現(xiàn)了DOM的一個(gè)子集,所以Python提供了擴(kuò)展包PyXML實(shí)現(xiàn)了完整的DOM對(duì)XML的訪問(wèn)接口。除此以外PyXML還實(shí)現(xiàn)了XML驗(yàn)證工具。PyXML極大的簡(jiǎn)化了XML處理工作,當(dāng)然這種便利性伴隨著性能的下降。[Lutz,2010]在可擴(kuò)展NAS的集群模塊中,存放節(jié)點(diǎn)信息和磁盤信息的元數(shù)據(jù)對(duì)集群中所有節(jié)點(diǎn)是透明的,這部分的信息存在格式固定,讀取頻率遠(yuǎn)大于寫入頻率的特點(diǎn),因此采用XML格式存儲(chǔ),項(xiàng)目中采用了PyXML獲得較高的可擴(kuò)展性。2.2.2數(shù)據(jù)序列化技術(shù)在Python中數(shù)據(jù)是由基本的Python對(duì)象組成的,為了避免轉(zhuǎn)換為XML帶來(lái)的性能損失,Python提供了序列化功能可以完成對(duì)象和字符串之間的相互轉(zhuǎn)化。在可擴(kuò)展NAS產(chǎn)品的集群模塊中,除了元數(shù)據(jù)以外其他中間狀態(tài)數(shù)據(jù)采用序列化技術(shù)保存在磁盤上或者在節(jié)點(diǎn)之間進(jìn)行共享。importpickletum1={'d':[1,3.0,4,4+5j],'e':('somestring',u'Unicodestring'),'f':None}reference_list=[‘a(chǎn)’,’b’,’c’]reference_list.append(reference_list)output=open('test.dat','wb')#picklethedata.pickle.dump(tum1,output)pickle.dump(reference_list,output,-1)output.close()圖2.4使用cPickle進(jìn)行序列化Python提供了marshal模塊進(jìn)行數(shù)據(jù)的序列化,該模塊提供了dump()和load()兩個(gè)方法完成序列化和反序列化。由于marshal模塊僅支持python的基本數(shù)據(jù)類型和它們的組合,同時(shí)在不同的發(fā)行版本之間不能保證反序列化的成功。本項(xiàng)目中采用了Pickle模塊,該模塊與marshal作用相近,但是可以獲得更好的版本兼容性??梢孕蛄谢头葱蛄谢痯ython的基本數(shù)據(jù)類型以及類生成的實(shí)例。使用C語(yǔ)言實(shí)現(xiàn)的cPickle和Pickle具有相同的功能,并且具有更高的效率。圖2.4展示了序列化的過(guò)程。cPickle.dump()方法默認(rèn)是使用版本兼容的序列化方法,但是也提供了可選參數(shù)犧牲兼容性達(dá)到與marshal模塊相同的序列效率。通過(guò)dump()方法得到的字符串可以用于存儲(chǔ),網(wǎng)絡(luò)傳輸或者加密。只要字符串本身的結(jié)構(gòu)和內(nèi)容沒(méi)有發(fā)生改變,都可以被load()方法識(shí)別,load()方法會(huì)遵守dump()的順序取出對(duì)象,在到達(dá)末尾時(shí)返回EOF標(biāo)志。圖2.5展示了對(duì)應(yīng)上文的反序列化的過(guò)程。importpickletest_file=open('test.dat','rb')a=pickle.load(test_file)print(a)b=pickle.load(test_file)print(b)test_file.close()圖2.5使用cPickle進(jìn)行反序列化為了解決采用不同存儲(chǔ)協(xié)議帶來(lái)的反序列化問(wèn)題,Python在存儲(chǔ)時(shí)會(huì)將協(xié)議和數(shù)據(jù)同時(shí)放入文件,Pickle模塊在反序列化的時(shí)候,load方法可以檢測(cè)出自身需要采用的協(xié)議,傳入的對(duì)象參數(shù)只要帶有read()方法即可。同時(shí),Python支持在序列化的同時(shí)進(jìn)行壓縮,保證數(shù)據(jù)在存儲(chǔ)和網(wǎng)絡(luò)傳輸時(shí)更有優(yōu)勢(shì)。[Martellietal.,2010]2.2.3網(wǎng)絡(luò)數(shù)據(jù)傳輸在可擴(kuò)展NAS系統(tǒng)集群模塊中,節(jié)點(diǎn)發(fā)現(xiàn)和通信用到了網(wǎng)絡(luò)通信技術(shù)。在基于TCP/IP協(xié)議的網(wǎng)絡(luò)中,數(shù)據(jù)傳輸?shù)幕突就ㄐ艈卧翘捉幼?socket)技術(shù)。[Stevensetal.,2010]應(yīng)用程序可以利用操作系統(tǒng)提供的socket接口,實(shí)現(xiàn)在不同進(jìn)程或者網(wǎng)絡(luò)中不同節(jié)點(diǎn)的數(shù)據(jù)傳輸。圖2.6顯示了建立socket連接的基本過(guò)程。Socket通信發(fā)生在服務(wù)器端和客戶端,服務(wù)器端創(chuàng)建socket并且綁定端口,之后進(jìn)入監(jiān)聽狀態(tài)。請(qǐng)求連接由客戶端發(fā)起,雙方建立TCP或者UDP連接,進(jìn)行數(shù)據(jù)的傳輸。圖2.6socket連接過(guò)程Server端的編程在網(wǎng)絡(luò)通信中比較復(fù)雜,涉及到端口綁定和監(jiān)聽,生命周期控制,并發(fā)處理等問(wèn)題。在python中,提供了SocketServer模塊簡(jiǎn)化了server端的編程工作。圖2.7顯示了SocketServer模塊的類之間的關(guān)系。圖2.7SocketServer模塊類關(guān)系BaseServer是接口類,定義了服務(wù)器需要實(shí)現(xiàn)的方法,TCPServer使用TCP協(xié)議傳輸數(shù)據(jù),UDPServer使用UDP協(xié)議,可能會(huì)發(fā)生數(shù)據(jù)包順序不一致或者丟失?;诙叩腢nixStreamServer和UnixDatagramServer只被UNIX平臺(tái)支持,所以較少使用。BaseRequest定義了請(qǐng)求處理的接口,它的子類需要實(shí)現(xiàn)finish,handle,setup接口,定義接收到請(qǐng)求各個(gè)步驟的處理方法。Server端一般同時(shí)需要處理多個(gè)客戶端發(fā)出的請(qǐng)求,TCPServer和UDPServer都是單線程的server,只能同步處理請(qǐng)求,同一時(shí)間建立一個(gè)socket連接請(qǐng)求,其他的請(qǐng)求需要排隊(duì)。為了同時(shí)處理多個(gè)請(qǐng)求,防止請(qǐng)求超時(shí),SocketServer模塊提供了ForkingMixIn和ThreadingMixIn兩個(gè)類,這兩個(gè)類的實(shí)例和server類的實(shí)例可以通過(guò)組合得到ThreadingServer,該server接收到socket請(qǐng)求后,啟動(dòng)一個(gè)線程來(lái)處理請(qǐng)求,達(dá)到并發(fā)的效果。2.3GPFS文件系統(tǒng)2.3.1GPFS簡(jiǎn)介GPFS文件系統(tǒng)是IBM公司的一個(gè)集群文件系統(tǒng),它可以提供多個(gè)節(jié)點(diǎn)對(duì)一個(gè)文件系統(tǒng)或者多個(gè)文件系統(tǒng)集的并發(fā)訪問(wèn)。[GPFS,2013]這些節(jié)點(diǎn)可以分布在局域網(wǎng)或者廣域網(wǎng)中。這些特性保障了對(duì)數(shù)據(jù)的高效訪問(wèn),GPFS文件系統(tǒng)支持scale-out擴(kuò)展方案。“除了支持通用數(shù)據(jù)存取之外,GPFS文件系統(tǒng)還支持包括數(shù)據(jù)同步,基于存儲(chǔ)管理政策和跨節(jié)點(diǎn)操作等多種特性,GPFS可以基于AIX集群,Linux集群,Windows服務(wù)器集群或者三種平臺(tái)的混合集群?!盵IBM,2012]GPFS文件系統(tǒng)作為分布式文件系統(tǒng),有如下的優(yōu)點(diǎn):GPFS在集群中的節(jié)點(diǎn)之間提供了統(tǒng)一命名空間和共享文件存儲(chǔ)。集群中的任意節(jié)點(diǎn)通過(guò)GPFS文件系統(tǒng)的掛載點(diǎn)可以訪問(wèn)整個(gè)文件系統(tǒng)目錄,擴(kuò)展了存儲(chǔ)空間。GPFS文件系統(tǒng)內(nèi)部提供了鎖機(jī)制,避免不同節(jié)點(diǎn)對(duì)數(shù)據(jù)并發(fā)訪問(wèn)帶來(lái)的數(shù)據(jù)同步問(wèn)題。GPFS文件系統(tǒng)提供了高可用性和高可恢復(fù)性,GPFS通過(guò)對(duì)recoverygroup的定義,把數(shù)據(jù)塊打散,存放在不同的物理磁盤上,允許集群中節(jié)點(diǎn)級(jí)別的災(zāi)難恢復(fù)。GPFS對(duì)網(wǎng)絡(luò)條件要求不高,可以根據(jù)網(wǎng)絡(luò)環(huán)境進(jìn)行算法優(yōu)化,達(dá)到最優(yōu)的系統(tǒng)性能。GPFS允許不停止服務(wù)的情況下對(duì)文件系統(tǒng)進(jìn)行修改,文件服務(wù)的配置修改不會(huì)對(duì)服務(wù)本身造成影響。所以GPFS文件系統(tǒng)適應(yīng)對(duì)服務(wù)穩(wěn)定性要求高的場(chǎng)合。事實(shí)上IBM很多企業(yè)級(jí)的服務(wù),包括數(shù)據(jù)庫(kù)服務(wù)等都是基于GPFS文件系統(tǒng)。GPFS提供了管理命令,適應(yīng)了大規(guī)模的集群。GPFS的關(guān)于集群的命令在任一節(jié)點(diǎn)上執(zhí)行都可以達(dá)到同步執(zhí)行的效果。省去了管理時(shí)需要登錄多個(gè)子節(jié)點(diǎn)的工作。2.3.2可擴(kuò)展NAS中GPFS架構(gòu) GPFS的配置可以根據(jù)實(shí)際情況采用多種方式,首先GPFS支持多種類型的操作系統(tǒng),包括AIX,Linux,WindowsServer。在網(wǎng)絡(luò)結(jié)構(gòu)上,所有的節(jié)點(diǎn)可以都位于同一個(gè)局域網(wǎng)或者幾個(gè)局域網(wǎng)和廣域網(wǎng)的組合。同一個(gè)節(jié)點(diǎn)可以處于一個(gè)或者多個(gè)gpfs集群中。一個(gè)集群也可以有一個(gè)或者多個(gè)節(jié)點(diǎn)。在GPFS中定義了兩種節(jié)點(diǎn),NSDServer和NSDClient。NSDClient往往是計(jì)算能力較高的機(jī)器,從根據(jù)用戶請(qǐng)求從NSDserver獲取數(shù)據(jù)進(jìn)行計(jì)算,NSDServer直接掛載磁盤,存儲(chǔ)能力強(qiáng)。GPFS一共有四種基本架構(gòu):所有節(jié)點(diǎn)組成一組邏輯單元;通過(guò)NSDClient訪問(wèn);多個(gè)sites組成一個(gè)集群;多個(gè)集群共享數(shù)據(jù)??蓴U(kuò)展NAS在選擇架構(gòu)時(shí),需要參考如下的因素:應(yīng)用對(duì)I/O性能的要求,NAS是提供數(shù)據(jù)服務(wù)的,對(duì)I/O性能要求比較高,所以應(yīng)該采用局域網(wǎng)結(jié)構(gòu),多個(gè)節(jié)點(diǎn)共享數(shù)據(jù),防止大規(guī)模數(shù)據(jù)交換帶來(lái)的性能下降。對(duì)可靠性的需求,單節(jié)點(diǎn)的GPFS系統(tǒng)數(shù)據(jù)的安全性和服務(wù)可靠性不高。用戶在初始時(shí)可以考慮,當(dāng)后期有節(jié)點(diǎn)加入時(shí),需要切換到集群配置。切換的同時(shí)不能影響數(shù)據(jù)服務(wù)的提供。底層硬件的屬性。可擴(kuò)展NAS使用的是通用的服務(wù)器,而且NAS服務(wù)對(duì)計(jì)算的要求不高,所以全部的機(jī)器均扮演NSDServer角色,另外在硬件層面需要提供保障,提高通用服務(wù)器組成集群的網(wǎng)絡(luò)性能。對(duì)管理和安全性的考量也會(huì)影響GPFS的配置。這些指標(biāo)和性能之間會(huì)有沖突,需要達(dá)成妥協(xié)。根據(jù)上述的因素,最終選擇了所有節(jié)點(diǎn)組成一組邏輯單元,這種結(jié)構(gòu)中,所有節(jié)點(diǎn)都是對(duì)等的,提供存儲(chǔ)服務(wù)和數(shù)據(jù)訪問(wèn)服務(wù)。同時(shí)對(duì)擴(kuò)展的支持較好,可以從單個(gè)節(jié)點(diǎn)開始擴(kuò)展。2.3.3GPFS的配置和管理在可擴(kuò)展NAS的集群模塊中需要對(duì)GPFS進(jìn)行兩方面的操作,啟動(dòng)和節(jié)點(diǎn)管理。表2.1展示了啟動(dòng)和管理過(guò)程中需要用到的GPFS命令:表2.1GPFS啟動(dòng)過(guò)程中涉及的命令命令作用mmcrcluster-N{NodeDesc[,NodeDesc...]|NodeFile}–CClusterName–pHostName–rShell–RRemoteCommand創(chuàng)建GPFScluster,并且指定cluste名稱以及用于管理文件系統(tǒng)的shell位置。mmchlicense{server|client}–-accept–N{NodeDesc[,NodeDesc...]|NodeFile}指定接受的協(xié)議類型,以及接受協(xié)議節(jié)點(diǎn)。mmaddnode-N{NodeDesc[,NodeDesc...]|NodeFile}–CClusterName–pHostName–rShell–RRemoteCommand向已經(jīng)存在的GPFScluster中添加節(jié)點(diǎn)。mmdelnode-N{NodeDesc[,NodeDesc...]|NodeFile}刪除GPFS中的節(jié)點(diǎn)。MmcrfsFileSystemName–Fnsdfile–BBlockSize–TMountPoint創(chuàng)建文件系統(tǒng)并且指定文件系統(tǒng)的掛載點(diǎn)。mmcrnsd–Fnsdfile創(chuàng)建NSD格式磁盤。mmdelnsd–Fnsdfile刪除NSD磁盤。mmstartup{-N|-a}在節(jié)點(diǎn)上啟動(dòng)GPFS。mmshutdown{-N|-a}關(guān)閉GPFS服務(wù)。mmadddiskClusterName–Fnsdfile向GPFS中添加磁盤。mmdeldiskClusterNameNSDName把磁盤中數(shù)據(jù)遷出,并將磁盤移出集群。Mmmount–Fnsdfile刪除NSD磁盤。啟動(dòng)GPFS包括如下步驟,建立集群。根據(jù)傳入的節(jié)點(diǎn)參數(shù),創(chuàng)立集群。選擇需要接受的GPFS協(xié)議類型,NSDclient或者NSDserver。傳入磁盤參數(shù),將磁盤格式化為gpfs可以識(shí)別的NSD(NetworkSharedDisk,即網(wǎng)絡(luò)共享磁盤)。創(chuàng)建文件系統(tǒng)。在所有節(jié)點(diǎn)上啟動(dòng)GPFS文件系統(tǒng)。將文件系統(tǒng)掛載到節(jié)點(diǎn)的本地目錄下。添加節(jié)點(diǎn)的步驟包括:將節(jié)點(diǎn)加入集群。選擇需要接受的GPFS協(xié)議類型。傳入節(jié)點(diǎn)的磁盤參數(shù),格式化為NSD。在新加入的節(jié)點(diǎn)上啟動(dòng)文件系統(tǒng)。將文件系統(tǒng)掛載到新加入的節(jié)點(diǎn)的本地目錄下。添加磁盤的步驟包括:將磁盤格式化為NSD類型。將NSD類型磁盤加入到指定的文件系統(tǒng)中。刪除磁盤的步驟包括:從集群中將磁盤刪除,該步驟會(huì)將磁盤中的數(shù)據(jù)轉(zhuǎn)移到其他磁盤下。刪除NSD,該步驟會(huì)將磁盤格式化為操作系統(tǒng)可以識(shí)別的格式。刪除節(jié)點(diǎn)之前需要將該節(jié)點(diǎn)下的磁盤刪除,否則命令將失敗。刪除節(jié)點(diǎn)的步驟包括:在該節(jié)點(diǎn)下停止GPFS文件系統(tǒng)服務(wù)。從集群中刪除節(jié)點(diǎn)。2.4RRDtool工具2.4.1RRDtool簡(jiǎn)介RRDtool即RoundRobinDatabase工具,RRDtool是MultiRouterTrafficGrapher(簡(jiǎn)稱MTRG)包的組成部分,但是在實(shí)際應(yīng)用中,該工具不僅僅用于網(wǎng)絡(luò)流量監(jiān)控,它可以用于收集和存儲(chǔ),展示各種狀態(tài)信息。RoundRobin結(jié)構(gòu)采用固定大小的循環(huán)鏈表來(lái)存儲(chǔ)信息,當(dāng)存儲(chǔ)空間耗盡時(shí),會(huì)覆蓋最早存入位置的數(shù)據(jù)。該存儲(chǔ)結(jié)構(gòu)定義為RoundRobinArchieves(簡(jiǎn)稱RRA),其優(yōu)點(diǎn)是占用存儲(chǔ)空間小,存儲(chǔ)效率高。缺點(diǎn)是只能保存最近一段時(shí)間內(nèi)的原始狀態(tài)信息。[江竟敏,2011]RRD工具的使用非常靈活,在生產(chǎn)中可以通過(guò)多個(gè)RRA的相互配合以及采集算法和合并算法的共同使用達(dá)到需要的監(jiān)控效果。針對(duì)單一數(shù)據(jù)源,RRDtool可以同時(shí)提供多種粒度的采集算法,記錄在不同的RRA文件中,多種采集算法彼此之間并不相互影響。在系統(tǒng)管理中,原始數(shù)據(jù)有時(shí)并不重要,對(duì)原始數(shù)據(jù)進(jìn)行加工得到的數(shù)據(jù)往往更被系統(tǒng)管理員關(guān)心。RRDtool允許用戶自定義存儲(chǔ)策略,可以根據(jù)數(shù)據(jù)特點(diǎn)進(jìn)行壓縮。在系統(tǒng)監(jiān)控中,平均值和峰值是需要記錄的兩項(xiàng)指標(biāo),假設(shè)系統(tǒng)需要保存過(guò)去一天的每小時(shí)詳細(xì)數(shù)值和過(guò)去一周中每天的峰值和平均值,圖2.8展示了RRDtool針對(duì)數(shù)據(jù)源的單一采集算法和多種合并算法。數(shù)據(jù)采集程序每個(gè)小時(shí)運(yùn)行一次,將數(shù)值循環(huán)填入數(shù)據(jù)檔案RRA1中,24小時(shí)之后第一個(gè)小時(shí)收集的數(shù)據(jù)將被覆蓋。系統(tǒng)定義了兩個(gè)合并算法,MAX()和AVG(),將RRA1中的數(shù)據(jù)進(jìn)行處理,平均值被記錄到數(shù)據(jù)檔案RRA2中,最大值被記錄到數(shù)據(jù)檔案RRA3中。這樣一來(lái)雖然細(xì)粒度的數(shù)據(jù)被丟失,但是系統(tǒng)監(jiān)控需要的數(shù)據(jù)被記錄下來(lái)。該系統(tǒng)中時(shí)隔一周的峰值和平均值數(shù)據(jù)會(huì)被覆蓋。如有需要也可以對(duì)這兩個(gè)RRA向上提供合并算法。圖2.8RRDtool合并算法RRDtool在數(shù)據(jù)收集和存儲(chǔ)的基礎(chǔ)上還提供了強(qiáng)大的圖表生成能力。允許用戶定義圖表名稱,橫軸,縱軸的名稱和度量單位。在生成圖表時(shí),RRDtool不僅僅支持單個(gè)數(shù)據(jù)源,還可以多個(gè)相似的數(shù)據(jù)源進(jìn)行比較。通過(guò)自定義折線的顏色提供鮮明的對(duì)比。缺點(diǎn)是RRDtool導(dǎo)出的圖表是圖片形式的,如需對(duì)數(shù)據(jù)進(jìn)行更近一步計(jì)算,需要根據(jù)API獲取RRA的數(shù)據(jù)。2.4.2RRDtool的python調(diào)用RRD工具是用C語(yǔ)言編寫的,但是針對(duì)多種語(yǔ)言提供了調(diào)用支持。“RRDtool功能可以直接通過(guò)python語(yǔ)言調(diào)用,作者通過(guò)scratch實(shí)現(xiàn)了python封裝?!盵T.Oetiker,2000]在使用中完全遵從RRDtool的操作函數(shù)。在安裝了rrdpython模塊之后,就可以使用python調(diào)用RRDtool提供的函數(shù),這些函數(shù)如表2.2所示。表2.2RRDtool提供的函數(shù)函數(shù)名稱參數(shù)作用rrdtool.create()‘SSAname’;\\檔案名稱‘startsize’;\\檔案大小‘datasource’\\數(shù)據(jù)源‘合并函數(shù)’創(chuàng)建SSArrdtool.update()‘SSAname’;\\檔案名稱‘template|value’更正SSA中某一點(diǎn)的數(shù)值或者SSA結(jié)構(gòu)rrdtool.graph()‘path’;\\輸出路徑‘imageformat’;\\圖片格式‘width’;\\寬帶‘height’;\\長(zhǎng)度‘startpoint’\\起始時(shí)間‘endpoint’\\終止時(shí)間‘Verticallabel’;縱坐標(biāo)‘title’;\\圖片標(biāo)題‘lowerlimit’;\\最低數(shù)值‘outputsource’\\輸出源打印圖表()‘SSAname’顯示檔案信息rrdtool.first();rrrdtool.last()‘SSAname’顯示檔案里最早和最晚的數(shù)據(jù)rrdtool.resize()‘SSAname’‘grow|shrinkrows’變更檔案大小 2.5本章小結(jié)本章總結(jié)了在可擴(kuò)展NAS系統(tǒng)中,集群模塊的構(gòu)建中使用的技術(shù)以及工具。包括用于構(gòu)建管理界面的Django框架,Python中用于處理數(shù)據(jù)的一些基本模塊和擴(kuò)展模塊,可擴(kuò)展NAS底層的GPFS文件系統(tǒng)以及用于性能監(jiān)控的工具RRDtool。
第三章集群模塊的分析與設(shè)計(jì)本章首先對(duì)可擴(kuò)展NAS的總體架構(gòu)進(jìn)行了介紹,分析了集群模塊在系統(tǒng)中的地位和作用。然后對(duì)集群模塊進(jìn)行需求分析,在需求分析的基礎(chǔ)上對(duì)集群模塊進(jìn)行子模塊劃分,并對(duì)各個(gè)子模塊的詳細(xì)設(shè)計(jì)進(jìn)行了介紹。3.1可擴(kuò)展NAS的總體規(guī)劃可擴(kuò)展NAS產(chǎn)品的目標(biāo)是建立一個(gè)可以進(jìn)行Scale-out擴(kuò)展的NAS系統(tǒng),系統(tǒng)支持節(jié)點(diǎn)數(shù)目1到N的擴(kuò)展。在系統(tǒng)的建立過(guò)程中,有如下幾個(gè)目標(biāo):系統(tǒng)中的每個(gè)節(jié)點(diǎn)都可以提供數(shù)據(jù)服務(wù)。在單個(gè)節(jié)點(diǎn)失效的情況下,數(shù)據(jù)不會(huì)丟失,也不會(huì)影響集群中其他節(jié)點(diǎn)的正常工作,并且可以快速的重建該節(jié)點(diǎn)。提供統(tǒng)一的管理界面,使用者可以通過(guò)該節(jié)面完成所有的NAS管理,包括數(shù)據(jù)服務(wù)管理,用戶管理,集群管理,性能監(jiān)控等。盡量使用GPFS文件系統(tǒng)已經(jīng)提供的功能,避免重復(fù)功能的開發(fā),同時(shí)需要對(duì)GPFS文件系統(tǒng)的自動(dòng)化部署提供支持。圖3.1可擴(kuò)展NAS產(chǎn)品整體架構(gòu)可擴(kuò)展NAS產(chǎn)品共有三個(gè)部分組成,文件系統(tǒng),集群模塊,數(shù)據(jù)服務(wù),其中文件系統(tǒng)使用成熟的的GPFS分布式文件系統(tǒng),數(shù)據(jù)服務(wù)部分由兩個(gè)子模塊組成,數(shù)據(jù)服務(wù)器配置模塊和數(shù)據(jù)服務(wù)器管理模塊。集群模塊作為中間模塊銜接了文件系統(tǒng)和數(shù)據(jù)服務(wù)。對(duì)底層的文件系統(tǒng)的自動(dòng)化配置提供支持,同時(shí)對(duì)數(shù)據(jù)服務(wù)隱藏了集群細(xì)節(jié),使得數(shù)據(jù)服務(wù)模塊專注于自身業(yè)務(wù)邏輯的實(shí)現(xiàn)。圖3.1是可擴(kuò)展NAS產(chǎn)品的整體架構(gòu),該集群現(xiàn)在由三個(gè)節(jié)點(diǎn)組成。集群模塊的網(wǎng)絡(luò)通信子模塊會(huì)給GPFS文件系統(tǒng)提供節(jié)點(diǎn)的詳細(xì)信息,完成GPFS的自動(dòng)化部署。數(shù)據(jù)服務(wù)的提供除了依賴數(shù)據(jù)服務(wù)器之外,還需要需要依賴集群模塊提供的用戶信息和節(jié)點(diǎn)信息。3.2集群模塊的需求分析在集群NAS中,每個(gè)節(jié)點(diǎn)都需要提供數(shù)據(jù)服務(wù)。如果每個(gè)節(jié)點(diǎn)單獨(dú)提供配置管理系統(tǒng),管理員對(duì)系統(tǒng)進(jìn)行設(shè)置時(shí),需要對(duì)每臺(tái)機(jī)器進(jìn)行配置。后期維護(hù)出現(xiàn)問(wèn)題,需要首先定位出問(wèn)題的節(jié)點(diǎn),之后再登陸該節(jié)點(diǎn)進(jìn)行維護(hù)工作。這對(duì)用戶而言是不可以接受的。所以必須提供統(tǒng)一的管理界面。允許用戶登陸系統(tǒng)后可以對(duì)所有的節(jié)點(diǎn)進(jìn)行操作。集群模塊作為中間模塊,需要銜接文件服務(wù)和數(shù)據(jù)服務(wù),同時(shí)提供用戶對(duì)集群的管理和狀態(tài)監(jiān)控。本小節(jié)從業(yè)務(wù)需求,用戶需求,功能需求和非功能需求幾個(gè)角度對(duì)集群模塊進(jìn)行需求分析。3.2.1集群模塊的業(yè)務(wù)需求集群模塊協(xié)對(duì)上層的數(shù)據(jù)服務(wù)模塊隱藏了底層文件系統(tǒng)的分布式細(xì)節(jié),因?yàn)閷?duì)于數(shù)據(jù)服務(wù)而言,用戶對(duì)集群NAS產(chǎn)品和單節(jié)點(diǎn)NAS產(chǎn)品的需求是一致的,數(shù)據(jù)服務(wù)模塊的設(shè)計(jì)實(shí)現(xiàn)與單節(jié)點(diǎn)NAS也相差不大。對(duì)于底層的文件系統(tǒng)而言,也不會(huì)關(guān)心使用的場(chǎng)景,GPFS設(shè)計(jì)是為了應(yīng)對(duì)大規(guī)模數(shù)據(jù)的情況,具有普遍的適用意義。在GPFS集群建立的時(shí)候需要用戶根據(jù)用途和硬件情況進(jìn)行相應(yīng)的配置。集群模塊的設(shè)計(jì)必須考慮到產(chǎn)品整體,滿足其他模塊的要求。因此,集群模塊的業(yè)務(wù)需求如下:收集GPFS自動(dòng)化部署需要的信息,并且完成系統(tǒng)建立時(shí)的自動(dòng)化部署。針對(duì)可擴(kuò)展NAS產(chǎn)品的用戶需求,將需要的GPFS命令加以組織,以對(duì)用戶友好的界面方式呈現(xiàn)給用戶,隱藏GPFS的命令細(xì)節(jié)。為數(shù)據(jù)服務(wù)模塊只提供必須的數(shù)據(jù),包括用戶信息,系統(tǒng)中的節(jié)點(diǎn)信息,隱藏其他的細(xì)節(jié)。產(chǎn)品可以從單節(jié)點(diǎn)開始擴(kuò)展,GPFS對(duì)單節(jié)點(diǎn)和多節(jié)點(diǎn)的配置是不同的,集群模塊需要對(duì)切換過(guò)程進(jìn)行支持。對(duì)節(jié)點(diǎn)的備份和恢復(fù)提供支持,這就要求節(jié)點(diǎn)信息對(duì)于集群中所有節(jié)點(diǎn)是透明的,每個(gè)節(jié)點(diǎn)需要了解到集群中所有節(jié)點(diǎn)的實(shí)時(shí)情況。3.2.2集群模塊的用戶需求集群模塊分為四個(gè)子模塊,網(wǎng)絡(luò)通信子模塊,節(jié)點(diǎn)管理子模塊,用戶管理子模塊,性能監(jiān)控子模塊。其中網(wǎng)絡(luò)管理子模塊負(fù)責(zé)為上層的子模塊提供支持,不需要與用戶發(fā)生交互。其余三個(gè)子模塊均需要滿足用戶對(duì)系統(tǒng)的不同角度的需求。圖3.2節(jié)點(diǎn)管理子模塊用例圖節(jié)點(diǎn)管理子模塊中,用戶需要查看集群中每個(gè)節(jié)點(diǎn)的信息,包括節(jié)點(diǎn)名稱,網(wǎng)絡(luò)信息,節(jié)點(diǎn)當(dāng)前的狀態(tài)等。對(duì)節(jié)點(diǎn)的操作包括將新發(fā)現(xiàn)節(jié)點(diǎn)加入系統(tǒng),將系統(tǒng)中節(jié)點(diǎn)刪除。用戶除了對(duì)節(jié)點(diǎn)操作以外,還可以對(duì)節(jié)點(diǎn)中的磁盤進(jìn)行單獨(dú)操作,查看磁盤信息,如磁盤的容量和使用率等,將磁盤加入文件系統(tǒng),將磁盤從文件系統(tǒng)刪除等操作。這些操作都需要批量化的支持。圖3.2是節(jié)點(diǎn)管理子模塊的用例圖。用戶管理子模塊中,用戶需要查看現(xiàn)有系統(tǒng)中已有的用戶信息,包括UID,名稱,權(quán)限,歸屬群組等,對(duì)用戶的操作包括添加新用戶,修改用戶信息,凍結(jié)用戶,恢復(fù)用戶權(quán)限,刪除已有用戶等。對(duì)群組的操作包括查看群組的權(quán)限,查看群組中用戶列表,添加群組,刪除群組等。用戶管理子模塊的用例圖如圖3.3所示。圖3.3用戶管理子模塊用例圖在性能監(jiān)控子模塊中,用戶可以對(duì)系統(tǒng)中所有節(jié)點(diǎn)的性能指標(biāo)進(jìn)行考量。首先,用戶會(huì)關(guān)注系統(tǒng)的整體性能指標(biāo),包括整體的總存儲(chǔ)容量,空間利用率。其次集群中每個(gè)節(jié)點(diǎn)的性能指標(biāo),包括CPU使用率,內(nèi)存使用率,網(wǎng)絡(luò)流量,存儲(chǔ)空間大小和使用率都是用戶關(guān)心的。此外,用戶需要在不同的時(shí)間粒度上進(jìn)行考量,度量單位包括,小時(shí),天,星期,月和年。用戶可以在不同時(shí)間粒度之間進(jìn)行切換,直觀的了解過(guò)去一段時(shí)間系統(tǒng)的各項(xiàng)性能指標(biāo)反映出的情況。用戶還可以在節(jié)點(diǎn)之間進(jìn)行切換,考察集群中不同節(jié)點(diǎn)的性能指標(biāo)。圖3.4是性能監(jiān)控子模塊的用例圖。圖3.4性能監(jiān)控子模塊用例圖除此以外,在系統(tǒng)初始化階段,需要提供給用戶引導(dǎo)程序,合并簡(jiǎn)化配置選項(xiàng),隱藏GPFS文件系統(tǒng)復(fù)雜的配置信息。3.2.2集群模塊的功能需求針對(duì)用戶需求,集群模塊的功能應(yīng)該包括提供支持的網(wǎng)絡(luò)通信機(jī)制,節(jié)點(diǎn)管理,用戶管理,性能監(jiān)控。集群模塊根據(jù)功能劃分為4個(gè)子模塊,下面是集群的功能需求。在系統(tǒng)初始化時(shí),用戶需要了解初始化的狀態(tài)以及每個(gè)配置選項(xiàng)的含義,系統(tǒng)初始化包括如下的步驟:節(jié)點(diǎn)發(fā)現(xiàn)階段,節(jié)點(diǎn)初始化時(shí)會(huì)執(zhí)行初始化模塊,該模塊通過(guò)網(wǎng)絡(luò)通信發(fā)現(xiàn)局域網(wǎng)中的已有集群。系統(tǒng)初始化階段尚無(wú)集群存在,所有節(jié)點(diǎn)進(jìn)行信息交換,推舉主節(jié)點(diǎn),然后進(jìn)入等待狀態(tài)。用戶在管理界面可以查看局域網(wǎng)中的節(jié)點(diǎn),選擇其中一個(gè)或者多個(gè)節(jié)點(diǎn),建立集群。系統(tǒng)收集節(jié)點(diǎn)信息和磁盤信息,該信息在集群之中進(jìn)行共享。同時(shí)提供接口給其他模塊讀取使用。GPFS系統(tǒng)根據(jù)節(jié)點(diǎn)和磁盤信息,完成初始化。用戶通過(guò)web界面訪問(wèn)NAS系統(tǒng),進(jìn)行管理工作。在系統(tǒng)完成初始化的過(guò)程中,網(wǎng)絡(luò)通信還需要支持集群級(jí)別的操作。首先,需要支持命令在集群上的同時(shí)執(zhí)行,在系統(tǒng)中大部分命令都是針對(duì)集群中的所有節(jié)點(diǎn),需要進(jìn)行同步執(zhí)行,因此需要實(shí)現(xiàn)一定機(jī)制,支持集群命令。其次,需要實(shí)現(xiàn)節(jié)點(diǎn)的心跳檢查,集群中的元數(shù)據(jù)保存了節(jié)點(diǎn)信息,該信息需要進(jìn)行實(shí)時(shí)的更新,因此需要定時(shí)對(duì)集群狀態(tài)進(jìn)行檢查,當(dāng)節(jié)點(diǎn)沒(méi)有反饋,應(yīng)該更新元數(shù)據(jù),并通知上層做出反應(yīng)。然后,還需要實(shí)現(xiàn)文件的共享機(jī)制,提供接口給上層模塊,允許文件級(jí)別的數(shù)據(jù)傳輸。節(jié)點(diǎn)管理子模塊負(fù)責(zé)節(jié)點(diǎn)以及節(jié)點(diǎn)下磁盤的管理,需要支持節(jié)點(diǎn)加入文件系統(tǒng),該過(guò)程包括如下幾個(gè)步驟:顯示系統(tǒng)中新加入的節(jié)點(diǎn)。新加入的集群的節(jié)點(diǎn)并沒(méi)有加入文件系統(tǒng),需要與其他節(jié)點(diǎn)加以區(qū)分。用戶選擇要加入磁盤的節(jié)點(diǎn),用戶可以一次性加入多個(gè)節(jié)點(diǎn)。在每個(gè)節(jié)點(diǎn)中選擇要加入文件系統(tǒng)的磁盤,用戶可以選擇性加入節(jié)點(diǎn)中的磁盤,操作系統(tǒng)所在磁盤需要和其他磁盤進(jìn)行區(qū)別,不允許用戶將操作系統(tǒng)所在磁盤加入文件系統(tǒng),防止錯(cuò)誤格式化。將選好的節(jié)點(diǎn)和磁盤加入文件系統(tǒng)。對(duì)節(jié)點(diǎn)操作還包括將節(jié)點(diǎn)從文件系統(tǒng)系統(tǒng)刪除。該過(guò)程的步驟如下:選擇要?jiǎng)h除的節(jié)點(diǎn)。刪除該節(jié)點(diǎn)下所有加入文件系統(tǒng)的磁盤,在刪除磁盤時(shí),GPFS文件系統(tǒng)會(huì)將刪除磁盤上的數(shù)據(jù)轉(zhuǎn)移到其他節(jié)點(diǎn)的磁盤上。刪除節(jié)點(diǎn)。這個(gè)模塊包含了對(duì)文件系統(tǒng)操作的抽象,實(shí)際上每個(gè)操作都代表了一系列的GPFS命令。對(duì)GPFS的操作需要依賴GPFS提供的shell命令。因此python需要通過(guò)shell來(lái)對(duì)GPFS進(jìn)行操作。因此該模塊功能需求還包括對(duì)shell的操作。如圖3.5所示,python通過(guò)popen功能獲得與shell的交互。Python中的Popen與標(biāo)準(zhǔn)C中的popen庫(kù)函數(shù)是一致的,該函數(shù)封裝了創(chuàng)建管道,fork子進(jìn)程,以及父子進(jìn)程之間的管道通信。[趙毅等,2003]圖3.5popen與shell交互用戶管理方面,功能需求是同一個(gè)用戶在群組中所有節(jié)點(diǎn)上擁有相同的用戶權(quán)限。所以首先要有統(tǒng)一的用戶管理界面,可擴(kuò)展NAS對(duì)用戶管理采用了類似于Linux系統(tǒng)的機(jī)制,引入了用戶和群組的概念。每個(gè)群組可以擁有多個(gè)用戶,每個(gè)用戶可以分屬于多個(gè)群組。對(duì)用戶操作的功能需求包括添加新用戶,修改用戶信息,刪除用戶。其中用戶的信息包括用戶名,用戶主目錄,用戶所屬的群組。對(duì)群組操作的功能需求包括添加新群組,刪除群組,修改群組權(quán)限,修改群組中用戶。用戶和群組的對(duì)應(yīng)關(guān)系在兩者的管理模塊都可以進(jìn)行操作,需要保持一致。用戶通過(guò)管理界面制訂的用戶和群組規(guī)則還要被保存和應(yīng)用在集群中的每個(gè)節(jié)點(diǎn)上。群組之間的性能監(jiān)控的功能需求包括以下幾個(gè)方面:在每個(gè)節(jié)點(diǎn)上定義需要采集的性能信息,包括CPU使用率,內(nèi)存使用率,網(wǎng)絡(luò)流量,存儲(chǔ)空間等。定義信息采集的時(shí)間間隔,并且在每個(gè)時(shí)間間隔進(jìn)行一次信息采集。對(duì)采集的信息進(jìn)行保存,由于對(duì)性能信息采集頻率較高,需要采用一定的算法控制性能數(shù)據(jù)的規(guī)模,防止數(shù)據(jù)占用較大的空間。將性能信息進(jìn)行集中,管理系統(tǒng)需要將所有的性能信息集中到一個(gè)節(jié)點(diǎn)上,涉及到網(wǎng)絡(luò)通信。給用戶呈現(xiàn)性能數(shù)據(jù)。就表現(xiàn)形式而言,圖形化的界面是最為直觀的。其次,用戶可以根據(jù)需要查看某個(gè)節(jié)點(diǎn)的所有性能數(shù)據(jù),或者單個(gè)性能數(shù)據(jù)在不同時(shí)間粒度下的表現(xiàn),甚至可以指定多個(gè)節(jié)點(diǎn)就某一個(gè)性能數(shù)據(jù)進(jìn)行對(duì)比。3.2.3集群模塊的非功能需求集群模塊的非功能需求要求模塊具有可替換性性,可靠性,安全性。模塊與文件系統(tǒng)的交互部分應(yīng)該獨(dú)立出來(lái),在集群模塊升級(jí)時(shí)可以停止管理界面服務(wù),但是不需要停止文件服務(wù)和數(shù)據(jù)服務(wù)。集群中單個(gè)節(jié)點(diǎn)停止服務(wù)了,不會(huì)對(duì)其他節(jié)點(diǎn)產(chǎn)生影響,在管理界面中應(yīng)該提醒管理員節(jié)點(diǎn)失效,并且停止對(duì)該節(jié)點(diǎn)進(jìn)行分配數(shù)據(jù)服務(wù)等操作。元數(shù)據(jù)在保存和傳輸?shù)倪^(guò)程中要注意加密,防止信息被更改和破壞。3.3集群模塊的概要設(shè)計(jì)可擴(kuò)展NAS產(chǎn)品的集群模塊采用分層架構(gòu),管理系統(tǒng)采用Django框架實(shí)現(xiàn),分為表現(xiàn)層,業(yè)務(wù)層,數(shù)據(jù)層和網(wǎng)絡(luò)通信層。網(wǎng)絡(luò)通信層主要的工作包括集群中節(jié)點(diǎn)之間的通信和元數(shù)據(jù)的采集。集群模塊的分層架構(gòu)如圖3.6所示,圖3.6集群模塊的分層架構(gòu)表現(xiàn)層負(fù)責(zé)與用戶進(jìn)行交互,用戶通過(guò)瀏覽器訪問(wèn)頁(yè)面,頁(yè)面給用戶展示信息并提供操作。表現(xiàn)層的設(shè)計(jì)實(shí)現(xiàn)主要是HTML頁(yè)面的制作,為了提供給用戶頁(yè)面風(fēng)格的基本一致的網(wǎng)頁(yè),減少重復(fù)勞動(dòng),并且減少后期的維護(hù)工作。業(yè)務(wù)層主要負(fù)責(zé)用戶需求的實(shí)現(xiàn),采用Django的MVT架構(gòu)。不同類型的業(yè)務(wù)被Django識(shí)別,根據(jù)URL配置的規(guī)則分發(fā)給不同的業(yè)務(wù)模塊進(jìn)行處理。對(duì)應(yīng)到相應(yīng)子目錄views的處理方法中。在集群模塊中,業(yè)務(wù)層的設(shè)計(jì)包括定義views.py中處理方法,定義系統(tǒng)方法調(diào)用等。業(yè)務(wù)層在進(jìn)行計(jì)算時(shí),把用戶請(qǐng)求的內(nèi)容作為參數(shù),同時(shí)還需要數(shù)據(jù),這就涉及到與數(shù)據(jù)層的交互。在集群模塊中,數(shù)據(jù)層中包含多種形式的數(shù)據(jù),本地配置信息,集群元數(shù)據(jù),數(shù)據(jù)庫(kù)。本地配置信息是不需要與集群中其他節(jié)點(diǎn)共享的信息,用于節(jié)點(diǎn)重啟和恢復(fù)的信息,包括節(jié)點(diǎn)名稱,節(jié)點(diǎn)的類型等,在形式上是python對(duì)象的序列化文件。元數(shù)據(jù)是XML形式的,保存了集群信息,具體包括集群中的所有節(jié)點(diǎn)基本信息,節(jié)點(diǎn)當(dāng)前狀態(tài),節(jié)點(diǎn)下磁盤的信息等,元數(shù)據(jù)可以被每個(gè)節(jié)點(diǎn)訪問(wèn)。系統(tǒng)實(shí)現(xiàn)了專門的類,處理元數(shù)據(jù)的存取問(wèn)題。網(wǎng)絡(luò)通信層,通過(guò)建立socket請(qǐng)求,網(wǎng)絡(luò)通信層采集元數(shù)據(jù),并且實(shí)時(shí)更新元數(shù)據(jù),避免出現(xiàn)不一致的情況。初次以外,本層還對(duì)GPFS文件系統(tǒng)的調(diào)用進(jìn)行了封裝,把文件系統(tǒng)抽象成對(duì)象,提供業(yè)務(wù)邏輯層調(diào)用的方法。集群模塊在傳統(tǒng)的三層架構(gòu)下面增加了網(wǎng)絡(luò)層,網(wǎng)絡(luò)層通過(guò)對(duì)數(shù)據(jù)層操作,將與集群有關(guān)的狀態(tài)信息實(shí)時(shí)更新。避免了在業(yè)務(wù)邏輯層直接去處理復(fù)雜的集群業(yè)務(wù)。分層架構(gòu)也使得模塊化成為可能,因?yàn)槊恳粚又粚?duì)自己的上一層負(fù)責(zé),接口都是公共的,可以根據(jù)功能需求,進(jìn)行模塊劃分。3.4網(wǎng)絡(luò)通信子模塊分析與設(shè)計(jì)網(wǎng)絡(luò)通信模塊向下需要對(duì)GPFS的建立和維護(hù)提供支持,向上需要需要抽象GPFS的操作,降低上層模塊操作集群的復(fù)雜度。在系統(tǒng)初始化時(shí),每個(gè)節(jié)點(diǎn)會(huì)運(yùn)行啟動(dòng)程序,完成GPFS的配置工作。3.4.1網(wǎng)絡(luò)通信子模塊流程設(shè)計(jì)集群中每個(gè)節(jié)點(diǎn)上運(yùn)行代理程序,代理程序通過(guò)彼此之間的通信,完成系統(tǒng)的初始化。集群初始化工作的流程如圖3.7所示。使用SSH-KeyGen生成公鑰和密鑰。GPFS系統(tǒng)在建立之前,要求集群中的所有節(jié)點(diǎn)可以實(shí)現(xiàn)無(wú)密碼直接登陸,通過(guò)SSH-KeyGen工具,節(jié)點(diǎn)將其他節(jié)點(diǎn)的公鑰保存在自己的/root/.ssh/authorized_keys文件中,就可以實(shí)現(xiàn)節(jié)點(diǎn)的無(wú)密碼登陸。[李俊照等,2006]圖3.7系統(tǒng)初始化流程圖建立UDP客戶端,發(fā)送UDP廣播,尋找主節(jié)點(diǎn)。初始狀態(tài)中,局域網(wǎng)中沒(méi)有集群,所以不會(huì)得到回應(yīng)。節(jié)點(diǎn)啟動(dòng)HTTPserver,同時(shí)建立UDPserver等待連接。用戶選擇一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn),通過(guò)瀏覽器輸入http://IP:80端口訪問(wèn)上一步中啟動(dòng)的HTTPServer,輸入集群的名稱。主節(jié)點(diǎn)建立TCPServer,等待其余節(jié)點(diǎn)建立連接。同時(shí)通過(guò)UDP客戶端發(fā)出廣播,通知其余節(jié)點(diǎn)。其余節(jié)點(diǎn)停止HTTP服務(wù),建立TCPclient與主節(jié)點(diǎn)建立連接。主節(jié)點(diǎn)在連接過(guò)程中,根據(jù)用戶輸入的集群名稱給所有節(jié)點(diǎn)重新命名。并且建立XML格式的元文件,記錄節(jié)點(diǎn)信息和磁盤信息。主節(jié)點(diǎn)收集所有節(jié)點(diǎn)的公鑰信息,生成authorized_keys文件。通過(guò)文件同步功能,將元文件和authorized_keys文件同步到所有節(jié)點(diǎn)之上。完成之后,將節(jié)點(diǎn)對(duì)象序列化保存在本地,節(jié)點(diǎn)重啟之后會(huì)首先從該文件中讀取信息,完成恢復(fù)工作。上述步驟完成之后,GPFS配置需要的環(huán)境已經(jīng)搭建完畢,需要的節(jié)點(diǎn)和磁盤信息也已經(jīng)采集完成。新加入集群的節(jié)點(diǎn)完成初始化的流程圖如圖3.8所示。圖3.8節(jié)點(diǎn)初始化流程圖使用SSH-KeyGen生成公鑰和密鑰。建立UDPclient,發(fā)送UDP廣播,尋找已有集群。主節(jié)點(diǎn)給出回應(yīng)。建立TCPclient,與主節(jié)點(diǎn)之間建立TCP連接。新加入節(jié)點(diǎn)與主節(jié)點(diǎn)交換信息,新加入節(jié)點(diǎn)從主節(jié)點(diǎn)處獲得節(jié)點(diǎn)名稱。并向主節(jié)點(diǎn)發(fā)送自身的磁盤信息,公鑰信息等。主節(jié)點(diǎn)更新元數(shù)據(jù),并重新生成authorized_keys文件。通過(guò)文件同步功能,將元文件和authorized_keys文件同步到所有節(jié)點(diǎn)之上。新加入節(jié)點(diǎn)將節(jié)點(diǎn)對(duì)象序列化保存在本地,節(jié)點(diǎn)重啟之后會(huì)首先從該文件中讀取信息,完成恢復(fù)工作。3.4.2 元數(shù)據(jù)設(shè)計(jì) 元數(shù)據(jù)是指集群級(jí)別的配置信息,以及集群中所有節(jié)點(diǎn)的信息和每個(gè)節(jié)點(diǎn)下面的磁盤信息。元數(shù)據(jù)是對(duì)所有的節(jié)點(diǎn)共享的,采用XML格式進(jìn)行保存。圖3.9展示了元數(shù)據(jù)的樹狀結(jié)構(gòu)。圖3.9元數(shù)據(jù)樹狀結(jié)構(gòu)根節(jié)點(diǎn)的子節(jié)點(diǎn)包括:ClusterName記錄集群名稱,即用戶在初始化界面輸入的字符串。NodePolicy記錄集群對(duì)新加入節(jié)點(diǎn)的政策。在配置界面中用戶可以選擇三種節(jié)點(diǎn)加入政策。不加入,集群發(fā)現(xiàn)新的節(jié)點(diǎn)之后,只完成節(jié)點(diǎn)的初始化工作,不把節(jié)點(diǎn)加入集群之中。用戶在節(jié)點(diǎn)管理界面可以看到該節(jié)點(diǎn),對(duì)其進(jìn)行操作。加入集群,但是不把磁盤加入集群。用戶可以在節(jié)點(diǎn)管理界面可以對(duì)節(jié)點(diǎn)下的磁盤進(jìn)行操作,有選擇的加入一個(gè)或多個(gè)磁盤進(jìn)入文件系統(tǒng)。將節(jié)點(diǎn)自動(dòng)加入集群,將磁盤加入文件系統(tǒng)。會(huì)自動(dòng)將新加入節(jié)點(diǎn)除操作系統(tǒng)所在磁盤以外的所有磁盤加入,自動(dòng)化程度最高。Network即網(wǎng)絡(luò)信息,在可擴(kuò)展NAS中,所有的節(jié)點(diǎn)都位于同一個(gè)局域網(wǎng)中,除了IP之外,其他的網(wǎng)絡(luò)信息都一致,這里記錄了包括netmask,gateway等信息。Nodes記錄了節(jié)點(diǎn)信息。子節(jié)點(diǎn)是集群中所有的節(jié)點(diǎn)。節(jié)點(diǎn)信息包括:NodeName,記錄了節(jié)點(diǎn)名稱,節(jié)點(diǎn)的命名規(guī)則是集群名稱_n,n代表了節(jié)點(diǎn)加入的先后順序。NodeType,節(jié)點(diǎn)類型分為masternode和slavenode。運(yùn)行管理系統(tǒng)的節(jié)點(diǎn)是masternode。兩種節(jié)點(diǎn)在恢復(fù)時(shí),流程是不同的。NodeIP,記錄了節(jié)點(diǎn)的IP地址。NodeState,節(jié)點(diǎn)的狀態(tài)包括以下狀態(tài):Synchronized,節(jié)點(diǎn)同步完成,但是還沒(méi)加入集群。nsd-client,節(jié)點(diǎn)進(jìn)入
溫馨提示
- 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年湖南永州市寧遠(yuǎn)縣教育系統(tǒng)引進(jìn)急需緊缺高層次專業(yè)人才筆試歷年參考題庫(kù)附帶答案詳解
- 杭州2025年浙江杭州市臨安區(qū)湍口鎮(zhèn)人民政府招聘編外聘用人員筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)導(dǎo)電橡膠連接器市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)單向加熱攪拌器市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)CO2保護(hù)焊機(jī)變壓器市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)銅管割刀行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年電磁式水表項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)牙刷消毒器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年板式螺釘壓接端子排項(xiàng)目可行性研究報(bào)告
- 2025年數(shù)字制版機(jī)項(xiàng)目可行性研究報(bào)告
- 電子物料基礎(chǔ)知識(shí)
- 2025屆江蘇省南京市鹽城市高三一??荚囌Z(yǔ)文試題 課件
- 廣西出版?zhèn)髅郊瘓F(tuán)有限公司招聘筆試沖刺題2025
- 江蘇省南京市2024年中考英語(yǔ)試題(含解析)
- 外科圍手術(shù)期處理(外科學(xué)課件)
- 宮頸癌診療指南要點(diǎn)
- 兩個(gè)人合伙買攪拌車的合同
- 腦卒中護(hù)理課件
- 水利工程施工監(jiān)理規(guī)范(SL288-2014)用表填表說(shuō)明及示例
- 部編版2023-2024學(xué)年六年級(jí)上冊(cè)語(yǔ)文期末測(cè)試試卷(含答案)
- 2025年考勤表(1月-12月)
評(píng)論
0/150
提交評(píng)論