原建偉(陜西工業(yè)職業(yè)技術學院 信息工程學院,陜西 咸陽712000)
中小企業(yè)云盤系統(tǒng)的設計與實現(xiàn)
原建偉
(陜西工業(yè)職業(yè)技術學院 信息工程學院,陜西 咸陽712000)
在研究了Openstack平臺與對象存儲項目Swift的工作原理后,為解決中小企業(yè)存儲資源使用緊張的問題,在對JOSS API進行重新封裝后設計了基于Keystone組件的統(tǒng)一認證機制的適合中小企業(yè)使用的網(wǎng)盤,同時設計和實現(xiàn)了PC和移動平臺客戶端用以從不同設備訪問網(wǎng)盤。測試結果表明系統(tǒng)服務性能穩(wěn)定。
對象存儲;云盤;Swift API;跨平臺訪問
企業(yè)對存儲的需求會隨著業(yè)務的發(fā)展不斷增加,在企業(yè)中各類業(yè)務數(shù)據(jù)不斷增加大量占用這些存儲,所有這些業(yè)務數(shù)據(jù)并不是企業(yè)業(yè)務中必須實時需求的,且多數(shù)為非結構化數(shù)據(jù)不適合采用數(shù)據(jù)庫等技術進行存儲,同時需要進行一定共享需求。面對這樣的需求,越來越多的企業(yè)選擇網(wǎng)絡硬盤系統(tǒng)進行數(shù)據(jù)存儲與共享,網(wǎng)盤不僅可以滿足用戶之間對數(shù)據(jù)共享的需求,還能為用戶提供高可靠性及可用性的數(shù)據(jù)服務[1-2]。目前市場上有很多基于公有云的網(wǎng)盤系統(tǒng)提供用戶使用如:Dropbox,金山網(wǎng)盤,百度云盤等產(chǎn)品,這些產(chǎn)品為互聯(lián)網(wǎng)用戶提供了在易用性、可靠性和可用性方面能夠提供較強保障的云存儲服務,但是企業(yè)應用不能接受其安全隱患,因此針對企業(yè)應用特點開發(fā)一個基于企業(yè)私有云的網(wǎng)盤系統(tǒng)對于解決企業(yè)數(shù)據(jù)共享,尤其是非結構化數(shù)據(jù)的共享非常重要。
1.1 OpenStack云計算框架
OpenStack是著名的開源云計算框架,采用模塊化設計,整個框架由7個主要項目,通常也稱作組件:Keystone認證服務、Nova計算服務、Swift對象存儲服務、Glance鏡像服務、Neutron網(wǎng)絡服務、Cinder快存儲服務、Horizen圖形界面服務,除此之外,最近兩年OpenStack體系還發(fā)展出一些新的項目如:Heat組件用于實現(xiàn)模板服務、Ceilometer組件用于實現(xiàn)監(jiān)控服務等[3-5]。這些組件共同組成一個龐大的云計算體系如圖1所示。OpenStack模塊化設計不僅可以根據(jù)需求靈活搭建云計算平臺,同時還具有集成第三方技術的能力。
OpenStack框架中主要項目可以組合在一起構成完整的Iaas平臺為企業(yè)構建底層云計算平臺服務,也可以將其中的Nova(計算服務)、Swift(存儲服務)等服務分離出來根據(jù)企業(yè)需求實現(xiàn)單獨的計算服務或存儲服務。近年來隨著Openstack不斷發(fā)展與成熟,越來越多企業(yè)采用Openstack構建企業(yè)私有云實現(xiàn)IT資源的彈性應用。
圖1 OpenStack核心組件結構關系圖
1.2 對象存儲技術
OpenStack提供3種存儲技術,Glance用于存儲和管理虛擬機鏡像,Swift是一種基于對象存儲的技術,Cinder提供整合后端不同種類存儲類型的塊存儲技術。Glance僅為nova提供鏡像的存儲,查詢和檢索服務,往往要借助Swift或其他存儲用于存放鏡像數(shù)據(jù),存儲數(shù)據(jù)量較小,不適合做網(wǎng)盤的存儲技術。Cinder能夠?qū)崿F(xiàn)對后端存儲的統(tǒng)一封裝,從而實現(xiàn)塊級服務,在OpenStack體系里,它主要負責為Nova提供虛擬機所使用存儲資源,也不適合單獨作為存儲向外提供服務。
Swift是通過標準硬件構建冗余的、可擴展的、支持多租戶的分布式對象存儲系統(tǒng),它是一種能夠提供高并行性、高伸縮性和高安全性的對象存儲技術[6-8]。很多企業(yè)對存儲的需求已經(jīng)發(fā)展到PB級別,且存在大規(guī)模非結構化數(shù)據(jù)。Swift以較為便宜的標準存儲設施上,通過一致性散列技術和數(shù)據(jù)冗余實現(xiàn)分布在眾多服務器上海量級別的對象訪問時的尋址,同時將對象均勻分布在虛擬節(jié)點上從而減少在增刪節(jié)點時數(shù)據(jù)的移動量,達到PB級存儲。使用對象存儲的可以通過使用對象作為存儲基本單元,以對象的屬性來維護存儲管理從而簡化管理非結構化數(shù)據(jù)過程,提高存儲的靈活性。
Swift采用層次數(shù)據(jù)模型,共設三層邏輯結構:Account/Container/Object(即賬戶/容器/對象)[9-10],每層節(jié)點數(shù)均沒有限制,可以任意擴展。這里的賬戶可理解為租戶,用來做頂層的隔離機制,可以被多個個人賬戶所共同使用;容器代表封裝一組對象,類似文件夾或目錄;葉子節(jié)點代表對象,由元數(shù)據(jù)和內(nèi)容兩部分組成如圖2所示。
圖2 Swift層次數(shù)據(jù)模型
1.3 對象存儲開發(fā)接口
Swift通過代理服務向外提供基于 HTTP的REST服務接口,對賬戶、容器和對象進行 CRUD等操作,并且提供多種語言環(huán)境的綁定實現(xiàn)。JOSS是Java OpenStack Storage的縮寫,它是一組使用Java語言訪問Swift的REST API,提供對Swift存儲的各種操作[11]。JOSS通過內(nèi)存模式能夠?qū)脧哪繕朔掌髦蟹蛛x出來,并提供一系列的類與接口實現(xiàn)操作和控制對象存儲,常用的接口大致分為兩類:一類用于管理授權與賬戶如:Access、Account和Client等,一類用于操作對象存儲中的各種對象如:Container、 List Subject、Object Store Entity和Stored Object等。
2.1 系統(tǒng)架構設計
系統(tǒng)采用目前主流的富客戶端B/S結構實現(xiàn),基于云的存儲和使用往往需要多種形式的終端實現(xiàn),目前用戶使用存儲的主要終端為Web終端和移動終端,因此系統(tǒng)設計時考慮到目前的應用情景,設計了兩種客戶端分別針對Web應用和移動應用。服務器端采用Jfinal框架實現(xiàn)對云盤用戶數(shù)據(jù)信息以及訪問記錄的管理,采用JOSS實現(xiàn)對Swift提供的存儲進行操作,如圖3所示。
圖3 系統(tǒng)架構設計
兩個客戶端在設計時采用了同一體系的前端技術實現(xiàn),即Web端采用HTML5與jQuery框架的組合實現(xiàn)具有良好交互性的UI,在移動端采用了jQuery Mobile與PhoneGap結合的混合框架實現(xiàn)適合移動端的UI。
服務器端由兩部分組成,一部分是提供云存儲的 OpenStack存 儲 服 務集 群 ,對 外 以OpenStackRESTful API形式提供用戶使用,另一部分為Web服務器,用以實現(xiàn)存儲和管理使用云存儲的用戶注冊信息以及使用信息,同時提供通過JOSS組件訪問云存儲的渠道。
2.2 系統(tǒng)功能設計
用戶無論從Web端還是移動端登陸,在使用資源之前必須獲得Keystone的認證,否則無法使用任何資源。通過在服務器端的MySQL數(shù)據(jù)庫中用戶信息的分類確定用戶類型,分為管理員和普通用戶,普通用戶面對的資源都是抽象的對象存儲中的文件和文件夾等數(shù)據(jù)(一個用戶使用的所有對象存儲可能分布在不同的容器中),管理員的一個重要職責是對容器和用戶的管理,系統(tǒng)功能圖如圖4所示。MySQL數(shù)據(jù)庫中存儲用戶的賬戶信息:賬戶名稱、狀態(tài)、有效期、申請空間、空間使用情況等信息,操作記錄:操作請求的時間、內(nèi)容、方法、操作結果、上傳流量、下載流量、傳輸時長等信息。
圖4 系統(tǒng)功能設計
3.1 云平臺安裝與部署
由于系統(tǒng)只用到對象存儲因此對OpenStack體系進行精簡只保留最基礎的認證項目Keystone以及核心存儲組件Swift。Swift在安裝部署時需要安裝Proxy service、Account service、Container service和Object service[12-13]。這些服務中Proxy service實現(xiàn)代理需要安裝在一臺服務器上,其他服務安裝在存儲服務器上,實際生產(chǎn)中往往為了構建緊湊的系統(tǒng)會將Swift代理服務與Keystone安裝在同一臺物理服務器作為控制結點,一方面可以減少硬件開支,另一方面也便于管理[14]。
控制結點服務器與存儲服務器都采用CentOS6.4系統(tǒng),控制結點在安裝系統(tǒng)需要的NTP服務、MySQL等基礎服務后,安裝Keystone與Swift代理服務,存儲結點安裝Swift其他服務。在控制結點服務器端創(chuàng)建訪問存儲服務所需的 Endpoint、container等資源。
3.2 功能封裝
JOSS提供接口實現(xiàn)對象存儲操作的全部功能,結合企業(yè)業(yè)務應用對其進一步封裝,一方面解決對象存儲本身存在的一些問題,另一方面更好地實現(xiàn)企業(yè)需求。
1)授權管理類
JOSS提供的授權管理接口主要實現(xiàn)對授權的管理與令牌的管理,涉及Access、Account和Client3個接口。Keystone在提供認證服務時,通過Endpoint端點實現(xiàn),Endpoint端點形式上位一個網(wǎng)絡可訪問的服務地址(一個URL地址),通過這個地址來獲取相應的服務。Endpoint端點分為3種:提供給admin用戶使用的為adminurl,提供給OpenStack內(nèi)部服務之間通信使用的為internalurl,其他用戶可以訪問的為publicurl。
OpenStack在Grizzly版中引入了PKI Token方法驗證令牌(Token)從而使Keystone逐漸成為一個數(shù)字簽名認證中心[15]。令牌是Keystone在授權過程中非常重要的一個因素,各服務之間的訪問以及外部對資源的訪問的相關授權都由與令牌息息相關,在默認情況下授權令牌在生成24小時后失效,如果在一個長生命周期的Web應用中,賬戶實例的生命周期可能比令牌生命周期更長,如果沒有很好的令牌管理機制就會導致在這種情況下,賬戶對使用云存儲失效。
針對以上情況采用auAccount類封裝Web客戶端訪問對象存儲時與認證相關的主要方法如表1所示。getAccount方法,通過Username,Userpasswd,Tenant,URL等參數(shù)申請訪問存儲資源的授權,并返回一個句柄,通過該句柄為其他方法提供訪問相關資源的途徑;getURLsList用戶獲取可訪問的Publicurl, 這是訪問存儲資源的授權地址;newContainer、getContainer、delContainer等方法用于創(chuàng)建、獲取和刪除指定名稱的容器對象;reautToken方法用于檢測指定會話的生存時間,如果超過令牌默認生存周期將自動申請獲取令牌。
表1 auAccount類主要方法
2)容器管理類
容器依靠容器服務器處理對象的一個功能映射,用于存放和管理存儲對象的集合。在通過auAccount類的newContainer和getContainer方法獲得容器對象后,Container類封裝容器管理的方法和管理存儲對象集合的方法。主要方法如表2所示。Container最主要的方法是getObject方法,該方法用戶獲取容器中指定的存儲對象,并返回該對象的操作句柄,通過該句柄進一步對該對象進行操作。
表2 Container類主要方法
3)存儲對象管理類
JOSS API中存儲對象接口StoredObject提供對存儲其中的對象進行全面操作方法,因此通過getObject方法獲取的存儲對象操作句柄使用原生接口中提供的操作方法實現(xiàn)復制、刪除、重命名等操作。
4.1 測試環(huán)境
PC客戶端:硬件配置情況為主頻2.26 GHz的雙核Intel Corei5處理器,4G內(nèi)存,320 G硬盤;軟件環(huán)境為Windows 7操作系統(tǒng)。
移動客戶端:安卓手機CPU:雙核1.0 GHz,2 G內(nèi)存,8 G存儲
服務器1:Intel Xeon E5-2620六核處理器(主頻2.0 Hz),8G內(nèi)存,4TB硬盤,操作系統(tǒng)CentOS。
服務器2:Intel Xeon E5-2620六核處理器 (主頻2.0 Hz),16 G內(nèi)存,4TB硬盤,操作系統(tǒng)CentOS。
服務器1兩臺作為存儲結點,服務器2一臺作為控制結點以及提供Web服務。
4.2 系統(tǒng)性能測試
測試以模擬企業(yè)網(wǎng)盤應用場景中上傳下載頻率不會過高,上傳下載文件尺寸在不會過大的情況下進行測試。在測試過程中模擬了從100到1 000個線程的并發(fā)訪問,以及分別對從1 MB至1 GB不等的數(shù)據(jù)文件進行傳輸?shù)臓顩r進行測試。測試過程中采用多次重復取平均值的策略避免單次測試可能產(chǎn)生的系統(tǒng)或人為誤差。
表3 不同線程條件下不同大小文件上傳速度測試結果
測試結果表明在1 000以內(nèi)的并發(fā)訪問情況下文件傳輸速度變化不大,偏小的文件傳輸速度相對較慢,在64 M以上的文件傳輸速度較為穩(wěn)定。企業(yè)應用過程中大多數(shù)文件大小一般集中在這個范圍,過大或過小的文件數(shù)量相對較少,因此從測試結果來看系統(tǒng)適合企業(yè)應用特點。
文中介紹了一種基于Swift對象存儲的企業(yè)云盤系統(tǒng)的體系結構及其實現(xiàn)的關鍵技術,此系統(tǒng)根據(jù)實際生產(chǎn)需求實現(xiàn)了針對中小企業(yè)的云存儲應用的整體解決方案,能夠為用戶提供多平臺訪問云盤的客戶端,以及可靠的彈性存儲服務,并采用統(tǒng)一的認證服務保證系統(tǒng)訪問的安全基礎,為企業(yè)云計算應用解決方案提供很好的參考。通過測試,本系統(tǒng)能實現(xiàn)基于對象存儲的云盤數(shù)據(jù)操作和數(shù)據(jù)管理功能,同時保證了整個云盤的良好性能。
[1]蓋玉蓮.基于云計算的數(shù)據(jù)管理技術研究[J].電子設計工程,2015(3):71-77.
[2]石彥博,傅穎勛,劉青昆,等.一種應用于網(wǎng)絡硬盤存儲系統(tǒng)的安全模塊技術[J].小型微型計算機系統(tǒng),2014(6):1253-1257.
[3]李磊,金連文,黎德生,等.基于OpenStack體系的多融合管道式服務云監(jiān)控系統(tǒng)的研制[J].電信科學,2014(1):24-30.
[4]吳非.“云存儲”助力構建海關報關單證電子檔案庫[J].上海海關學院學報,2013:109-115.
[5]蘇培華.基于Openstack的高校數(shù)據(jù)中心應用研究[J].電子設計工程,2015(11):48-51.
[6]鄭馳,趙建軍,李成金,等.基于OpenStack的對象存儲性能實驗及研究[J].微型機與應用,2014(18): 13-16.
[7]蔣溢,孫雪濤,楊川.Swift云存儲環(huán)境下基于I/O負載均衡的讀取策略 [J].計算機工程與設計2013 (9):3024-3027,3032
[8]李淼淼,梅向東.基于中心節(jié)點的云存儲系統(tǒng)應用分析[J].電子設計工程2015(5):34-38
[9]王海燚,張云超,岳曉瑞.基于OpenStack的對象存儲服務管理平臺設計與實現(xiàn)[J].廣東通信技術,2013(4):35-37.
[10]曲進男,唐政,王帥群.基于OpenStack云架構的尺度不變特征變換算法[J].計算機應用,2014(34): 90-92,123.
[11]42 BV Group.ava library for OpenStack Storage,aka[EB/OL]Swifthttp://joss.javaswift.org/
[12]陳熔仙,張冬冬,張亞英.基于OpenStack的多媒體會議虛擬化方案[J].計算機應用,2014(34):82-85,89.
[13]肖揚,于艷華.基于IaaS云平臺的應用性能管理研究與應用[J].軟件,2013(12):241-245.
[14]李仁飛.基于OpenStack的企業(yè)成本降低系統(tǒng)設計[J].電子測試,2014(10):53-54,25.
[15]熊微,房秉毅,張云勇,等.OpenStack認證安全問題研究[J].郵電設計技術,2014(7):21-25.
Design and implementation on cloud disk system of minor enterprises
YUAN Jian-wei
(College of Information Engineering,Shaanxi Polytechnic Institute,Xianyang 712000,China)
Based onresearching of OpenStack platform and the theory of Swift that is object storageproject,the cloud disk system of minor enterprises with unified authentication of Keystone is designed for solution toabsence of storage in the minor enterprises,after encapsulated JOSS API,and the PC client and the mobile client developed can access the cloud disk from different platform.The result of testing indicate thestability of system service.
object storage;cloud disk;Swift API;cross-platform access
TN<915.09 文獻標識碼:A class="emphasis_bold">915.09 文獻標識碼:A 文章編號:1674-6236(2017)07-0070-05915.09 文獻標識碼:A
1674-6236(2017)07-0070-05
A 文章編號:1674-6236(2017)07-0070-05
2016-03-20稿件編號:201603254
陜西省教育廳2016年度研究計劃專項(16JK1057);陜西工業(yè)職業(yè)技術學院專項科研計劃項目(zk14-23)
原建偉(1973—),男,河南沁陽人,碩士,副教授。研究方向:計算機網(wǎng)絡技術應用,企業(yè)信息化建設。