陳曉華,李春芝,張鵬宇
(湖州師范學院信息與工程學院 湖州 313000)
云存儲技術是一種虛擬化存儲技術,將網絡中大量各種不同類型的存儲設備利用應用軟件集合起來協同工作,對外提供數據存儲和業務訪問功能[1]。云存儲技術要面對復雜的廣域網環境提供服務保證,對于廣域網下的文件傳輸協議起著至關重要的作用。當前各種不同的云存儲系統根據所采用的協議提供不同的API,如圖1所示。
Amazon Simple Storage Service(Amazon S3)[2]、Windows Azure[3]、Google Storage[4]、Mezeo Cloud Storage Platform[5]、Nirvanix SDN[6]和 CleverSafe[7]實現REST API,這些API是基于 REST原則和SOAP接口實現的。
Amazon S3(以下簡稱S3)具有低成本、低延遲、高可用性和安全的特點,通過 S3存儲和檢索的資源被稱為對象,對象存儲在存儲段(bucket)中,對象和存儲段通過統一資源標識符(URI)定位。S3同時提供 RESTful API和SOAP API,但是需要下載JetS3t庫才能使用這些API[2]。目前為了提高文件上傳和下載速度,Amazon支持Aspera開發的FASP協議(在UDP協議基礎上開發的新協議)[8]。

Windows Azure為應用程序提供Blobs、Tables和Queues3種存儲機制,支持 SOAP、REST、XML和 HTTPS等。Windows Azure Storage由3個重要部分構成:Windows Azure Blob(存儲大型數據,包括二進制數據和文件)、Windows Azure Table存儲表數據(類似于關系數據庫中的數據表)、Windows Azure Queue(為異步工作提供分派消息服務)[3]。Windows Azure有文件、數據表和消息存儲能力,與開發平臺.net綁定在一起,通過庫RESTful API與Azure交互。
Google Storage提供RESTful的API訪問和管理文件,Google Storage API的實現依賴標準的HTTP方法,如delete、get、head、put[4]。
Mezeo Platform分為6個層次、3個概念(資源、表示法和方法)。Mezeo Platform提供的方法包括get、put、post、delete、lock、unlock、restore等。上述方法采用 REST 原則實現,在HTTP上進行傳輸,提供地理定位和地理復制能力,并提供安全保障[5]。
Nirvanix SDN的Web Service提供基于REST原則和SOAP接口的服務,可以通過HTTP的Post上傳和下載文件[6]。
CleverSafe提供基于 HTTP/REST、Java SDK訪問 API,同時還支持FTP協議[7]。
主要包括NFS、CIFS和FTP協議。NFS是使用TCP/IP的應用層協議,基于NFS的網絡文件服務器,可使多臺計算機透明地訪問彼此的目錄。CIFS基于SMB協議的開放跨平臺,使用戶可以方便地向支持SMB協議的網絡服務器請求文件和打印服務。FTP是遠程文件傳輸協議,允許用戶管理遠程主機的文件。IBM采用標準網絡文件協議,包括NFS、CIFS、HTTP 和 FTP[9]。Zetta用戶可通過 HTTP、NFS、FTP、sFTP、rsync和WebDAV等標準存儲協議進行訪問[9,10]。
主要有iSCSI協議,該協議建立在TCP協議之上,是一種面向連接的協議,定義了 TCP/IP網絡發送、接收Block(數據塊)級的存儲數據的規則和方法,在用戶看來,使用遠端的存儲設備就像訪問本地的SCSI設備一樣簡單。iSCSI可以實現在IP網絡上運行SCSI協議,適合高速吉比特以太網應用。Cloud Drive支持iSCSI協議[11]。
如基于 Web的分布式創作與版本控制(WebDAV IETF RFC 2518)。WebDAV基于 HTTP,將 Web作為一種可讀寫的資源加以啟用[9]。
BitDew是在網格環境下為大規模數據管理和分布提供的可編程環境。BitDew提出了融合多個文件傳輸協議進行文件傳輸[12]。MetaCDN利用其他系統提供的Web Service、API和訪問接口,智能分配各種云存儲系統響應用戶的傳輸請求[13]。
綜上所述,云存儲在廣域網中進行網絡傳輸,主要采用 REST原則、iSCSI協議、WebDAV協議、SOAP接口、FASP協議、CIFS協議、NFS協議,通常在HTTP協議上建立API提供給不同的開發語言調用,需要在客戶端安裝相關軟件實現文件的傳輸與管理,部署不方便,而且與SaaS服務聯系不緊密,實驗發現如果多人同時傳輸文件,云存儲網絡傳輸協議沒有考慮到當前服務器的狀態,分配同一服務器接收多用戶傳輸的文件,導致服務器無法同時滿足多用戶要求,文件傳輸失敗率較高。
當前虛擬主機廠商提供的虛擬主機服務具有高可用性、價格低、易維護、分布廣等特點,本文建立虛擬主機集群模型,設計文件傳輸控制協議VCFTP和基于虛擬主機集群的云存儲系統VCloudStorage,以提高文件傳輸性能和穩定性。首先建立SaaS服務模型;利用HTTP數據流存儲技術,建立虛擬主機存儲接口;接著建立虛擬主機傳輸能力、存儲能力和價格能力數學模型,并結合用戶的傳輸請求建立文件傳輸整數規劃數學模型及最優化算法,最終以此為基礎采用Web Service、HTTP和Flash技術設計了文件傳輸控制協議VCFTP。VCFTP與SaaS服務兼容,且利用Flash跨平臺和富客戶端技術特點,無需在客戶端部署其他程序;授權的用戶在VCloudStorage中根據傳輸請求、存儲要求、服務水平和當前虛擬主機狀態等條件,根據整數規劃數學模型,以傳輸能力最優化的方式進行文件傳輸。
本節介紹VcloudStorage和文件傳輸協議VCFTP,利用虛擬主機集群技術,創建一個綜合覆蓋網絡,提供一個低成本、高性能、可擴展的云存儲系統。
VCloudStorage系統采用基于B/S的Web Service分布式架構,包括 Client Web 瀏覽器、VVHashTable、Scheduler、VCloud File System、Node Manager、Web Service[1]。客戶端用戶通過Web瀏覽器中的Flash模塊實現文件上傳;網絡存儲統一平臺提供Web Service接口[1]。VCloud Storage系統架構如圖2所示。
首先建立SaaS服務協議,利用HTTP數據流存儲技術,建立虛擬主機數據存儲接口;然后在SaaS服務模型和虛擬主機數據存儲接口的基礎上,建立整數規劃數學模型及最優化算法,設計文件傳輸控制協議VCFTP。

圖2 VCloud Storage系統架構
2.2.1 文件傳輸控制協議對象
在文件傳輸過程中,為了建立Flash與Web Service之間的交互,對象的成員屬性為string類型。文件傳輸控制協議對象包括客戶端請求連接字Apply File Transfer Packet對象、服務器返回的控制連接字File Transfer Control Packet對象、返回的控制狀態字Response Info Packet對象。用戶隸屬于企業,企業購買服務。
(1)客戶端請求連接字

(2)文件傳輸控制連接字

(3)返回的控制狀態字

2.2.2 文件傳輸控制模型及VCFTP
文件傳輸控制模型如圖3所示。由圖3可見,客戶端的文件傳輸到虛擬主機存儲器中,用戶的文件存儲請求、查詢、更新、刪除都是同文件傳輸控制服務器進行交互;SaaS服務控制器是管理用戶、購買服務等信息;虛擬主機管理器根據虛擬主機存儲器的Web Service,更新和維護虛擬主機存儲器狀態Hash Table;虛擬主機分配器根據虛擬主機存儲器的狀態和客戶端的請求最優化分配虛擬主機存儲器給客戶端;虛擬主機存儲器提供接收客戶端文件接口、刪除文件接口、測試自身狀態的Web Service。
本文設計的文件傳輸協議VCFTP在文件傳輸過程中包括3個部分:請求建立連接控制字、傳輸文件、釋放連接控制字。
傳輸流程如下。
(1)Flash客戶端構建請求連接控制字Apply File Transfer Packet對象,然后向文件傳輸控制服務器請求建立連接傳輸控制字。
(2)文件傳輸控制服務器接收到請求,向SaaS服務控制器請求合法性驗證。
(3)SaaS服務控制器驗證合法性,包括判斷用戶名、密碼是否正確和判斷企業是否合法、是否購買該服務,將驗證結果返回給文件傳輸控制服務器。
(4)文件傳輸控制服務器接收到合法性驗證通過后,向虛擬主機分配器請求分配虛擬主機存儲器。
(5)虛擬主機分配器接收到請求后,根據最優化算法,選擇最優的虛擬主機存儲器,并更新Hash Table,返回選定的虛擬主機存儲器給文件傳輸控制服務器,并且采用加鎖機制選擇最優虛擬主機存儲器。
(6)文件傳輸控制服務器構造文件傳輸控制連接字 File Transfer Control Packet對象,包括分配的文件名、路徑名、域名、文件類型、此次連接的標識符,構造過程進行加鎖控制,并記錄文件傳輸控制連接字。
(7)客戶端Flash接收到File Transfer Control Packet對象,通過HTTP向虛擬主機存儲器傳輸數據。
(8)客戶端文件傳輸完畢,向文件傳輸控制服務器釋放File Transfer Control Packet對象。文件傳輸控制服務器接收到釋放請求后,更新存儲的文件傳輸控制連接字。
文件傳輸協議涉及到的多個對象之間的通信順序如圖4所示。
2.2.3 文件傳輸控制協議
文件傳輸控制協議主要包括建立文件傳輸連接、傳輸文件、接收文件、釋放連接等過程。
(1)建立文件傳輸連接
File Transfer Control Packet Create File Transfer Connection(Apply File Transfer Packet clientPacket);

圖3 文件傳輸控制模型


表1 建立連接返回值
返回的狀態信息見表1。(2)傳輸和接收文件流客戶端Flash通過HTTP協議向服務器傳遞分配的文件信息和驗證信息,并傳輸HTTP文件數據流;虛擬主機存儲器以.aspx、.php、.asp等形式出現,首先判斷此次連接的合法性,然后接收數據,存放到虛擬主機存儲器中。
(3)釋放文件傳輸連接
客戶端向服務器請求釋放連接,服務器接收到數據,首先驗證釋放信息,然后刪除本次傳輸控制連接字,釋放連接返回值見表2。

表2 釋放連接返回值
2.2.4 分配虛擬主機存儲器整數規劃建模
為了保證虛擬主機存儲云有足夠的存儲能力和傳輸能力執行其任務,有效地分配虛擬主機存儲和傳輸,定義了如下一些限制參數。
·Price[i]:第i個虛擬主機存儲云的價格能力指數,類型是float,單位是元。
·Storage[i]:第i個虛擬主機存儲云的存儲能力指數,類型是float,單位為字節。
·Transfer[i]:第i個虛擬主機存儲云的傳輸能力指數,類型是float,取值為0~1,以百分比測量,由系統專門的接口定時(30 s)自動測量。
· Price:用戶端的價格能力指數,類型是float,單位是元。
·Storage:用戶端的存儲要求指數,類型是float,單位為字節。
· Transfer:用戶端的傳輸要求指數,類型是float,取值為0~1。
·X[i]:第i個虛擬主機存儲云被分配,如果被分配則為 1,否則為 0。
為了讓系統擁有最大的傳輸能力,建立線性規劃模型,把分配虛擬主機存儲云的問題轉化為一類特殊的0-1整數規劃問題[1]。
系統傳輸能力最優化方程(目標函數)為:

每當用戶需要存儲內容時,根據自己的需要提供Price、Storage和Transfer給系統Web Service的調用接口,系統調用接口根據式(1)和(2),因為X[i]是一類特殊的0-1整數規劃問題,采用線性規劃解法中的枚舉算法,實現虛擬主機存儲的分配。

本文描述的協議運行在VCloudStorage中。主站點和虛擬主機站點都是相同的配置,試驗臺站點通過Internet連接,VCloudStorage集群了5個虛擬主機,并布置了一臺本地服務器,用于管理、測試虛擬主機集群及更新虛擬主機集群的VHashTable[1]。每個虛擬主機硬件包括2個Intel XEON 5.4 GHz的 CPU、4 GB內存,CPU利用率為 3%,布置在中國安徽合肥。實驗客戶機包括10臺實驗客戶機,實驗客戶機CPU為2 GHz、1 GB內存。
為了評估該VCloudStorage系統,部署10臺客戶機,以1、3、6、10臺機器同時啟動傳輸1、10、20、30、40、50、60、70、80、90、100 MB文件為基礎,測量系統的總吞吐量和平均吞吐量。這些文件同時從客戶端分別以騰訊QQ郵箱存儲、微軟SkyDrive、單個虛擬主機、VCloudStorage上傳到服務器上,分別記錄每個客戶端傳輸時間和傳輸文件大小。總吞吐量(TotalThroughOut)和平 均吞吐量(AverageThroughOut)的計算式如下:

其中,FileSize[i]為每次客戶端傳輸文件的大小,以KB為計算單位;Second[i]為每次客戶端傳輸文件的所用的時間,以s為計算單位;MaxTime為每次客戶端傳輸文件的最大傳輸時間。
測試集中在每天的下午3點到晚上9點,用時兩個星期,經歷了網絡高峰時期,記錄了每個客戶端每次傳輸文件的大小和時間。統計的吞吐量如圖5~9所示。測試失敗率見表3。
由圖5~9和表3可以看出,通過VCFTP協議構建的VCloudStorage性能優于單虛擬主機存儲、微軟SkyDrive、騰訊QQ郵箱存儲等系統,得出以下結論。




圖8 6人測試總吞吐量

表3 測試失敗率

·VCFTP協議文件傳輸性能和傳輸成功率較高,構建的虛擬主機云存儲VCloudStorage總吞吐量和平均傳輸速率均優于騰訊QQ郵箱存儲、微軟SkyDrive、單個虛擬主機,VCFTP使多人傳輸文件成功率達到100%。
·VCFTP協議具有負載均衡能力,能夠感知虛擬主機的當前狀態信息,最優化分配虛擬主機存儲器,客戶端平均傳輸速率能夠保證在150 kbit/s以上,總吞吐量保證在800 kbit/s,不受單個虛擬主機當前運行狀態的限制。
·VCFTP協議具有動態擴展性,在運行過程中,VCloudStorage能夠根據需要動態增加虛擬主機存儲器數量,達到動態擴展文件存儲能力和傳輸能力的目的。實驗結果表明,VCloudStorage文件傳輸能力可以從1個虛擬主機的100~400 kbit/s動態擴展到5個虛擬主機的700~1200 kbit/s。
·VCFTP協議客戶端不需安裝其他軟件,通過Flash技術進行文件傳輸,采用的是HTTP流技術上傳文件,傳輸文件成功率高。
本文提出基于Web Service、HTTP和Flash技術的文件傳輸協議VCFTP,開發了基于虛擬主機集群云存儲系統VCloudStorage。它與SaaS服務兼容,而且利用Flash的跨平臺和富客戶端技術特點,無需在客戶端部署其他程序;授權的用戶在VCloudStorage中根據傳輸請求、存儲要求、服務水平和當前虛擬主機狀態等條件,以傳輸能力最優化的方式進行文件傳輸。VCFTP通過Web Service建立連接和釋放連接,通過HTTP協議傳遞數據,使用已有的服務器通信端口而不需要修改網絡防火墻配置,文件傳輸性能較高且穩定,虛擬主機接收文件傳輸的大小可以根據虛擬主機的配置而變化,是一種滿足應用需求的云存儲文件傳輸協議。
1 陳曉華,李春芝,俞堅奇.虛擬主機云存儲系統整數規劃模型及最優化分配算法.電信科學,2011,27(1):89~94
2 Amazon.Amazon simple storage service (Amazon s3).Retrieved from www.amazon.com/s3,2007
3 Microsoft.Windows azure service management REST API reference.http://msdn.microsoft.com/en-us/library/ee460799.aspx,2011
4 Google Storage.Google storage API for developers.http://code.google.com/intl/zh-CN/apis/storage/docs/developer-guide.html,2011
5 Mezeo.Cloud storage platform API v2 reference guide.http://developer.mezeo.com/wp-content/uploads/2010/06/Mezeo-API-v2-Reference-Guide.pdf,2010
6 Nirvanix.White paper:accelerating Web application development with the nirvanix storage delivery network(SDN),2008
7 CleverSafe. Object Storage.http://www.cleversafe.com/products/resilient-architecture/object-storage,2010
8 Aspera.http://www.asperasoft.com/en/support/developer_23/Aspera_Developer_Network_23,2009
9 Tim M Jones.Anatomy of a cloud storage infrastructure models,features,and internals. http://public.dhe.ibm.com/software/dw/cloud/library/cl-cloudstorage-pdf.pdf,2010
10 http://cloudharmony.com/clouds_storage.Zetta
11 Cloud Drive.http://www.clouddrive.com.au/international/zh-CHS/products.html,2010
12 Gilles Fedak,Haiwu He,Franck Cappello.BitDew:a data management and distribution service with multi-protocol file transfer and metadataAbstraction.Journal of Network and Computer Applications,2009(32):961~975
13 James Broberg,Rajkumar Buyya,Zahir Tari.Meta CDN:harnessing “storage clouds” for high performance content delivery.Journal of Network and Computer Applications,2009(32):1012~1022