王圳 吳震東
摘要:該系統(tǒng)主要應(yīng)用于個(gè)人用戶,提供輕量級(jí)私有云存儲(chǔ)能力。私有云存儲(chǔ)服務(wù)可工作于任何TCP/IP網(wǎng)絡(luò)環(huán)境,公網(wǎng)、內(nèi)網(wǎng)皆可,可隨時(shí)移動(dòng)、放置于任何工作、生活場(chǎng)所;支持用戶隨時(shí)隨地在公網(wǎng)環(huán)境下向私有云存儲(chǔ)轉(zhuǎn)發(fā)文件數(shù)據(jù),實(shí)時(shí)冗余保存。私有云存儲(chǔ)作為公有云存儲(chǔ)的輔助,能解決人們一直以來(lái)使用云存儲(chǔ)的顧慮:在公有云存儲(chǔ)環(huán)境下數(shù)據(jù)的隱私性和安全性。系統(tǒng)使用OpenStack Swift對(duì)象存儲(chǔ)模塊構(gòu)建本地冗余存儲(chǔ)系統(tǒng),利用公網(wǎng)服務(wù)器構(gòu)建統(tǒng)一文件轉(zhuǎn)發(fā)平臺(tái),實(shí)現(xiàn)多用戶文件加密傳輸、轉(zhuǎn)發(fā)、移動(dòng)用戶認(rèn)證、內(nèi)外網(wǎng)協(xié)同通信功能。
關(guān)鍵詞:Android;OpenStack Swift;文件傳輸;私有云存儲(chǔ)
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)02-0043-03
1 云存儲(chǔ)現(xiàn)狀
云存儲(chǔ)概念是隨著云計(jì)算、軟件定義存儲(chǔ)等新興產(chǎn)業(yè)的發(fā)展而流行起來(lái)的。通俗地說(shuō),云存儲(chǔ)就是使用軟件來(lái)解決硬件帶來(lái)的數(shù)據(jù)存儲(chǔ)難題的一種技術(shù)方案。傳統(tǒng)的存儲(chǔ)方案,因價(jià)格高昂,無(wú)法全面應(yīng)用等問(wèn)題,不可避免地會(huì)有宕機(jī)、設(shè)備損壞等事件發(fā)生。這給數(shù)據(jù)的高可用帶來(lái)了極大的不安,但是數(shù)據(jù)高可用卻又是我們迫切需要的。那么我們是不是可以使用軟件的方案來(lái)解決呢?云存儲(chǔ)就是背負(fù)著這樣的歷史使命走上舞臺(tái)。
云存儲(chǔ)在技術(shù)層面來(lái)說(shuō),也可以稱(chēng)為分布式存儲(chǔ)系統(tǒng)。這種技術(shù)充分使用分布式帶來(lái)的優(yōu)勢(shì),通過(guò)軟件,讓數(shù)據(jù)保持一定量的冗余,并且指定同一份數(shù)據(jù)的冗余必定不在同一個(gè)物理硬件之上,許多分布式存儲(chǔ)系統(tǒng)默認(rèn)的冗余量都是3,也就是說(shuō)每一份數(shù)據(jù)都會(huì)有兩個(gè)備份,并且備份數(shù)據(jù)與主數(shù)據(jù)不建議在同一物理硬件設(shè)備之上。這樣的話,只要數(shù)據(jù)的三個(gè)載體有一個(gè)不損壞,那么數(shù)據(jù)還是完整可用的。在分布式存儲(chǔ)系統(tǒng)的基礎(chǔ)之上,再加上人工調(diào)配,數(shù)據(jù)的可靠性得到了極大的提高。此外,分布式存儲(chǔ)系統(tǒng)構(gòu)建在傳統(tǒng)的存儲(chǔ)設(shè)備之上,既能直接管理硬件設(shè)備,也能管理傳統(tǒng)的專(zhuān)用存儲(chǔ)設(shè)備。這就屏蔽了底層硬件設(shè)備的異構(gòu)性,管理員也不需要再去考慮硬件異構(gòu)帶來(lái)的很多問(wèn)題。
從技術(shù)選型上來(lái)說(shuō),大型的公有云提供商基本都會(huì)自己開(kāi)發(fā)專(zhuān)有的分布式存儲(chǔ)系統(tǒng),而資源有限的小公司基本都會(huì)基于開(kāi)源的分布式存儲(chǔ)方案,針對(duì)自己的業(yè)務(wù)場(chǎng)景進(jìn)行改造,進(jìn)而形成擁有自主產(chǎn)權(quán)的私有分布式存儲(chǔ)系統(tǒng)。目前開(kāi)源的主要方案有Swift和Ceph。從使用上來(lái)說(shuō),云存儲(chǔ)大致可分為:公有云存儲(chǔ)、私有云存儲(chǔ)、混合云存儲(chǔ)。公有云存儲(chǔ)就是公有云存儲(chǔ)供應(yīng)商在公網(wǎng)環(huán)境下開(kāi)放統(tǒng)一接口,用戶只需付費(fèi)購(gòu)買(mǎi)容量服務(wù),就可以使用大型存儲(chǔ)的一種形式。這種使用方式的優(yōu)勢(shì)就是,用戶無(wú)需花費(fèi)太多的成本就能獲得云存儲(chǔ)帶來(lái)的各種便利和可靠。但是,公有云存儲(chǔ)的缺點(diǎn)也是非常明顯的,數(shù)據(jù)統(tǒng)一放在公有云提供商的IDC中,那么用戶基本就失去了對(duì)數(shù)據(jù)的控制權(quán)。在upyun最新的活動(dòng)中,公有云的缺點(diǎn)就體現(xiàn)的一覽無(wú)余。用戶可以免費(fèi)上傳數(shù)據(jù),但是訪問(wèn)上傳的數(shù)據(jù)確實(shí)按流量收費(fèi)。這就意味著,數(shù)據(jù)一旦進(jìn)入公有云提供商,那么用戶基本完全喪失了對(duì)數(shù)據(jù)的控制權(quán)。雖然現(xiàn)在很多公有云存儲(chǔ)提供商都會(huì)與用戶簽訂保密協(xié)議,但是,作為銀行、金融等對(duì)數(shù)據(jù)的安全性特別重視的企業(yè),這種不可控因素是不可忍受的。因此,私有云存儲(chǔ)就有了存在的價(jià)值。私有云存儲(chǔ),顧名思義,就是軟硬件完全由公司自己把控的數(shù)據(jù)存儲(chǔ)解決方案。這種方案的優(yōu)勢(shì)在上述已經(jīng)說(shuō)過(guò),其主要缺點(diǎn)就是成本較高,數(shù)據(jù)可靠性也很難達(dá)到公有云存儲(chǔ)提供商專(zhuān)業(yè)團(tuán)隊(duì)所能保證的級(jí)別。混合云存儲(chǔ)就是同時(shí)使用了這兩種存儲(chǔ)的一種方案,使用公有云存儲(chǔ)來(lái)備份加密數(shù)據(jù),使用私有云存儲(chǔ)來(lái)滿足業(yè)務(wù)工作。
2 系統(tǒng)原理
輕量級(jí)私有云存儲(chǔ)總體架構(gòu)圖如圖1所示。
移動(dòng)終端需要實(shí)現(xiàn)的功能有:用戶登錄、文件及文件列表上傳、日志信息查閱。公網(wǎng)與內(nèi)網(wǎng)私有云存儲(chǔ)平臺(tái)之間使用一臺(tái)文件轉(zhuǎn)發(fā)服務(wù)器,把通過(guò)登錄認(rèn)證的終端客戶端傳輸過(guò)來(lái)的文件轉(zhuǎn)發(fā)到指定的內(nèi)網(wǎng)服務(wù)器,所以公網(wǎng)服務(wù)器需要有登錄認(rèn)證模塊、文件接收模塊、文件轉(zhuǎn)發(fā)模塊,此外為了使移動(dòng)終端能進(jìn)行日志信息、上傳文件列表查閱,在公網(wǎng)服務(wù)端實(shí)現(xiàn)對(duì)等功能。內(nèi)網(wǎng)服務(wù)器是公網(wǎng)服務(wù)器與私有云存儲(chǔ)平臺(tái)的中間站,所有文件必須通過(guò)內(nèi)網(wǎng)服務(wù)器才能上傳到私有云存儲(chǔ)平臺(tái)。私有云存儲(chǔ)平臺(tái)采用的是開(kāi)源產(chǎn)品OpenStack Swift,OpenStack Swift私有云存儲(chǔ)平臺(tái)負(fù)責(zé)存儲(chǔ)文件,并保證文件的高可用性,用戶可以通過(guò)OpenStack Swift提供的接口對(duì)上傳的文件進(jìn)行適當(dāng)?shù)奈募虏僮鳌?/p>
2.1公網(wǎng)轉(zhuǎn)發(fā)服務(wù)器模塊
公網(wǎng)轉(zhuǎn)發(fā)服務(wù)器部署一個(gè)用戶認(rèn)證模塊,并預(yù)留文件接收套接字接口。用戶通過(guò)認(rèn)證后,經(jīng)預(yù)留套接字接口讀取來(lái)自客戶端的字節(jié)流。同時(shí),服務(wù)器監(jiān)聽(tīng)來(lái)自內(nèi)網(wǎng)上傳服務(wù)器的請(qǐng)求,每收到一個(gè)請(qǐng)求,即把對(duì)應(yīng)的通信套接字存入套接字棧中;當(dāng)移動(dòng)客戶端請(qǐng)求上傳文件時(shí),服務(wù)器從套接字棧中依次出棧預(yù)存的通信套接字,銜接兩端Socket,實(shí)現(xiàn)文件跨越公網(wǎng)、內(nèi)網(wǎng)的存儲(chǔ)、轉(zhuǎn)發(fā)。
2.2內(nèi)網(wǎng)接收及上傳模塊
內(nèi)外網(wǎng)需要通信的話,發(fā)起者肯定是內(nèi)網(wǎng)服務(wù)器,因?yàn)楣W(wǎng)服務(wù)器不能主動(dòng)訪問(wèn)到內(nèi)網(wǎng)。在本模塊中,由內(nèi)網(wǎng)服務(wù)器向公網(wǎng)服務(wù)器特定的端口發(fā)起連接請(qǐng)求,在公網(wǎng)服務(wù)器接受到這個(gè)請(qǐng)求之后,便始終保持連接。并以兩秒間隔保持心跳,維持連接一直存在。當(dāng)公網(wǎng)轉(zhuǎn)發(fā)服務(wù)器接收到文件并轉(zhuǎn)發(fā)時(shí),內(nèi)網(wǎng)文件接收及上傳服務(wù)器便開(kāi)始接收文件。因?qū)ο蟠鎯?chǔ)提供的API接口是針對(duì)文件上傳的,所以接收到的字節(jié)流不能直接上傳到私有云存儲(chǔ)環(huán)境,而是要先保存在本地,然后再調(diào)用OpenStack Swift API 接口進(jìn)行文件上傳,并列出當(dāng)前用戶所擁有的容器的對(duì)象文件列表。
2.3后端云存儲(chǔ)模塊
有很多主流開(kāi)源分布式文件存儲(chǔ)系統(tǒng)都可以作為私有云環(huán)境下的存儲(chǔ)系統(tǒng)。OpenStack Swift在非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)方面有其更高效的存儲(chǔ)效率,因此在本系統(tǒng)基于OpenStack Swift搭建。相關(guān)附屬組件有:用于用戶認(rèn)證及用戶管理的認(rèn)證服務(wù)(Keystone)、用于存儲(chǔ)虛機(jī)鏡像及鏡像管理的鏡像服務(wù)(Glance)、整個(gè)OpenStack云計(jì)算平臺(tái)服務(wù)的核心計(jì)算服務(wù)(Nova)、用以提供虛擬網(wǎng)絡(luò)中心的網(wǎng)絡(luò)服務(wù)(Neutron)、讓人可以更加直觀地感知到各類(lèi)服務(wù)的界面服務(wù)(Horizon)。
3 關(guān)鍵技術(shù)
3.1 用戶認(rèn)證服務(wù)
認(rèn)證服務(wù)是云存儲(chǔ)服務(wù)必須的一環(huán),由OpenStack的Keystone組件實(shí)現(xiàn)。雖然理論上OpenStack的各個(gè)項(xiàng)目之間是相互獨(dú)立提供相關(guān)服務(wù)的,例如Nova提供了計(jì)算服務(wù),Swift提供了對(duì)象存儲(chǔ)服務(wù)等,但是所有的這些服務(wù)均依賴(lài)于OpenStack認(rèn)證服務(wù)組件所提供的3A(Account,Authentication,Authorization)服務(wù)。
3.2 數(shù)據(jù)一致性存儲(chǔ)服務(wù)
數(shù)據(jù)云存儲(chǔ)服務(wù)本質(zhì)上是一個(gè)分布式文件存儲(chǔ)管理系統(tǒng),其可以通過(guò)自身的代理服務(wù)達(dá)到存儲(chǔ)系統(tǒng)的全局負(fù)載均衡及數(shù)據(jù)一致性。所有數(shù)據(jù)經(jīng)緩存服務(wù)用一致性散列的方法,將數(shù)據(jù)分散到各個(gè)物理存儲(chǔ)區(qū)域。Swift的實(shí)現(xiàn)中對(duì)象環(huán)、容器環(huán)及賬戶環(huán)這三個(gè)數(shù)據(jù)環(huán)的作用顯得相當(dāng)?shù)闹匾?,所有的虛擬分區(qū)與物理存儲(chǔ)的映射關(guān)系都通過(guò)在這三個(gè)環(huán)上執(zhí)行一致性哈希運(yùn)算得到。
3.3 對(duì)象存儲(chǔ)接口調(diào)用
OpensStack的對(duì)象存儲(chǔ)是一個(gè)高可用的、分布式的、一致的對(duì)象存儲(chǔ)。通過(guò)使用對(duì)象存儲(chǔ)的API可以創(chuàng)建、修改和獲得對(duì)象和元數(shù)據(jù),Swift的API是通過(guò)REST(Representational State Transfer)網(wǎng)絡(luò)服務(wù)來(lái)實(shí)現(xiàn)的。使用HTTPS(SSL)協(xié)議來(lái)和對(duì)象存儲(chǔ)進(jìn)行交互,可以用HTTP API調(diào)用完成操作,也可以使用支持RESTful API的特定語(yǔ)言的API進(jìn)行調(diào)用。存儲(chǔ)對(duì)象使用JSON和XML這些支持標(biāo)準(zhǔn)的、非序列化的響應(yīng)格式的協(xié)議進(jìn)行表達(dá)。
4 系統(tǒng)運(yùn)行
我們對(duì)輕量級(jí)私有云存儲(chǔ)系統(tǒng)進(jìn)行功能實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境如下:
手機(jī)客戶端測(cè)試手機(jī):努比亞z5s mini Android 4.4
公網(wǎng)服務(wù)器測(cè)試運(yùn)行環(huán)境:
IP:42.62.101.111
系統(tǒng)環(huán)境: CentOS Linux release 7.1.1503 (Core)
JDK版本: jdk-8u65-linux-x64.tar.gz
MySQL驅(qū)動(dòng):mysql-connector-java-5.1.37-bin.jar
內(nèi)網(wǎng)服務(wù)器測(cè)試運(yùn)行環(huán)境:
系統(tǒng)環(huán)境: CentOS Linux release 7.1.1503 (Core)
JDK版本: jdk-8u65-linux-x64.tar.gz
IP:192.168.0.47
移動(dòng)終端APP運(yùn)行界面如圖2所示,公網(wǎng)服務(wù)與內(nèi)網(wǎng)服務(wù)工作情況如圖3所示。
參考文獻(xiàn):
[1] 馮馳. 基于Swift分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)同步與存儲(chǔ)研究[D].浙江大學(xué),2014.
[2] 陳成.云存儲(chǔ)技術(shù)及應(yīng)用[J].商情,2012(37).
[3] 周震,趙紅梅.云計(jì)算技術(shù)發(fā)展歷程探究[J].信息通信,2013(6).
[4] 李輝.基于OpenStack的私有云計(jì)算平臺(tái)的研究和實(shí)現(xiàn)[D].江西:江西師范大學(xué),2010.
[5]docs.openstack.org.OpenStackCommunity[CP/OL]http://docs.penstack.org/liberty/install-guide-rdo/,2015.12.10/2015.12.12.