[]
隨著企業信息化建設的不斷深化,企業數據存儲量成爆炸式增長,如在高清監控中,一路視頻碼率為4Mbps-20Mbps,一小時的視頻數據存儲量大約為1.8GB-9GB,24小時不間斷的情況下一個月的視頻數據存儲量約為1.3TB-6.3TB。一個平安城市視頻監控項目中,總的監控路數通常達到成千上萬路,存儲量是難以想象的。傳統的本地存儲方案已難以滿足海量數據的存儲容量、數據管理及數據快速檢索等方面的要求。隨著云計算技術的發展,企業數據存儲向云端遷移已經成為首選的解決方案。較低的存儲成本、可擴展的存儲量、高性能的數據傳輸是數據云遷移的關鍵。
存儲網關是一個通過磁盤虛擬化、集群應用、數據緩存等技術,將網絡中各種類型的存儲通過應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問功能的系統。云存儲網關橋接于用戶系統與云存儲之間,提供多種協議和統一的接口,將云存儲資源前置到用戶的本地存儲,實現傳統存儲系統和云存儲平臺的無縫銜接。
現階段,云存儲類型主要有三種類型:文件存儲、塊存儲、對象存儲。對于用戶而言,主要的存儲需求包括價格需求、兼容性需求、數據安全需求、性能需求。我們從這幾個維度對三種云存儲進行對比。
表1是2018年9月阿里云的三大云存儲的包月價格,通過對比,我們發現文件存儲和塊存儲的使用價格相對昂貴,對象存儲的價格相對便宜。如果企業的存儲量達到PB級別,那么直接采用文件存儲和塊存儲的方案是難以承受的,企業更傾向于使用容量可彈性擴展的對象存儲。

表1 阿里云的三大云存儲的包月價格
對于使用本地塊設備的系統、應用軟件和數據庫來說,企業上云使用云端塊存儲時,只需要通過ISCSI、NFS等協議對塊設備進行掛載、格式化和安裝軟件,企業的應用和數據庫幾乎不用改造,云端塊存儲可直接投入使用。對于文件存儲和對象存儲來說,用戶需要安裝云存儲服務商提供的軟件來享受云存儲的數據服務,而且用戶應用軟件的接口可能需要進行相應的改造才能完全適用云存儲,數據庫也可能不適用于這兩種存儲方式。
塊存儲通過了RAID與LVM等手段對數據提供了保護。對象存儲除身份管理以外,在數據的保存和傳輸狀態都通過數據加密來提供數據安全性。文件存儲則通過網絡隔離、用戶隔離、文件系統標準權限控制、權限組訪問控制來保障數據安全性。
對于塊存儲,用戶可以根據需求配置不同等級的塊存儲I/O性能。然而,用戶對于塊設備的I/O讀寫負載通常是不平衡的:在一段時間內,用戶會對塊設備的局部數據進行頻繁訪問,造成塊設備的I/O性能瓶頸。另外,如果用戶文件在塊設備數據塊中的保存方式是順序型時,用戶讀寫文件時需要對數據塊進行順序讀寫操作,效率較低。
對于文件存儲,數據量達到PB級別時,NAS存儲服務器性能會出現瓶頸。
對于對象存儲,對象存儲將文件的元數據獨立出來,元數據服務器MDS存儲對象文件的元數據,分布式對象存儲設備OSD存儲文件的數據的部分。用戶訪問對象存儲時先訪問MDS,MDS反饋對象數據存儲的OSD位置后用戶直接訪問多個OSD服務器來讀取對象,此過程中文件傳輸速度得到很大的提升。
從上一節的對比中我們發現,三大類的云存儲各有優點。如果我們可以將它們相互配合使用,發揮各自的優點,用戶將獲得一套價格合理、性能高、易用性強、可共享的數據存儲服務。本文基于這個目的,提出了一種基于對象存儲的虛擬塊設備,通過云端的對象存儲備份此塊設備,實現本地虛擬塊設備的云端存儲。
基于對象存儲的塊設備不僅繼承了本地塊設備適用面廣的特點,讓用戶的應用在零改造的條件下掛載設備使用。同時,對象存儲的多線程OSD讀寫方式提高了塊設備數據的傳輸速度;相對便宜的對象存儲讓塊設備的容量可以不斷地擴容;對象存儲的可共享屬性讓塊設備輕松在其他用戶端進行恢復。
對于存儲網關發布的虛擬塊設備,用戶對它的所有讀寫操作都將被網關重定向到讀寫一個固定大小的普通文件,而非操作實際磁盤的軌道和扇區。網關以一個固定大小的空間來切分這個普通文件,切割成若干個更小的數據塊。在本網關系統中,每個數據塊相當于一個存儲對象,網關向對象存儲上傳所有的數據塊對象,完成虛擬塊設備的備份。
用戶向虛擬磁盤寫入文件時,文件數據可能會被寫入不同的數據塊中;用戶通過虛擬磁盤讀文件時,不同的數據塊一起提供實際的文件。在云端對象存儲操作界面,我們看到的是眾多的大小一樣的數據塊對象,并不能直接查看用戶的實際文件。
例如,網關發布的虛擬磁盤達到1TB大小,設置數據塊的切分大小空間為4MB,這個1TB大小的虛擬塊設備文件將被切割成262144個4MB的數據塊,網關將這些數據塊對象同步上傳到對象存儲。用戶在虛擬磁盤上讀寫文件時,相當于網關在262144個數據塊中定位需要的數據塊后進行數據讀寫。
基于對象存儲的塊設備存儲網關系統部署于用戶局域網環境中,橋接于用戶本地系統與云存儲之間,將網關系統內一個固定大小的文件虛擬化為一個塊設備,通過回環方式掛載塊設備,并加載文件系統,向外發布虛擬磁盤。用戶系統通過局域網掛載和使用網關發布的虛擬磁盤。當用戶系統向虛擬磁盤讀寫數據時,存儲網關通過協議轉換更新數據塊,通過HTTP傳輸協議和對象存儲進行數據塊對象讀寫。圖1為存儲網關的總體架構。

圖1 存儲網關的總體架構
存儲網關通過云存儲,備份網關虛擬塊設備所依賴的文件,相當于為用戶提供了一種基于云存儲備份的虛擬磁盤服務。網關需要提供標準存儲和文件系統接口,支持多種協議(如NFS、SMB、ISCSI等),屏蔽各種云存儲接口的差異,為用戶提供一種應用零改造、磁盤即插即用、磁盤容量無限擴展的云存儲服務。
存儲網關使用系統的本地磁盤或內存充當網關的數據緩存層,網關通過緩存層暫存數據塊,處理數據塊,并和對象存儲同步數據塊對象。
數據塊合并是存儲網關的緩存層接收用戶的新文件后,對舊數據塊和寫入此數據塊的新數據部分進行合并操作,生成新的數據塊并上傳到云端對象存儲,完成最新數據塊的云端同步。數據塊合并策略如圖2所示。
用戶向網關緩存寫新文件時,緩存層數據區保存寫入每個數據塊的新數據部分,并在緩存層日志區里記錄每個被更新的數據塊的寫操作,寫操作包括數據塊的寫偏移量與寫長度。
緩存層根據日志區里每個被更新的數據塊的寫偏移量與寫長度記錄,判斷被更新的數據塊是被完全覆蓋寫還是被部分覆蓋寫。
當緩存層的數據塊是被用戶系統完全覆蓋寫時,如圖2緩存層左一的數據塊,緩存層直接向對象存儲回寫這個新數據塊,更新日志區內數據塊的操作日志。當緩存層的數據塊是被用戶系統部分被覆蓋寫時,如圖2緩存層左二的數據塊,緩存層先從對象存儲下載同一個數據塊對象所關聯的舊數據塊,根據緩存的操作日志,將數據塊內的新數據部分和舊數據塊進行合并操作,生成新數據塊,回寫對象存儲,最后更新日志區內數據塊的操作日志。

圖2 數據塊合并策略
存儲網關的緩存層暫時保存的數據塊分為兩類:未和云端同步的新數據塊和用戶讀文件時從云端下載的舊數據塊。當這兩類數據塊被用戶頻繁讀寫時,它們作為熱數據塊緩存于網關中,無需從云端多次下載,提高用戶和網關之間的數據讀寫效率。
網關發布的虛擬磁盤將用戶的文件進行分割,分布到塊設備的不同的數據塊中。存儲網關通過多線程傳輸方式和對象存儲進行多個數據塊對象的同步上傳和下載。數據塊設置的大小和用戶文件大小共同決定了此文件占用的磁盤數據塊個數:
(1)用戶文件大小遠大于數據塊設置的大小時
一個文件的數據分布在較多的數據塊中,完成一個文件的傳輸需要網關向對象存儲傳輸較多的數據塊對象。在圖3所示的例子中,藍色標志的文件是一個13MB大小的文件:如數據塊設置為2MB大小,理想狀態下一個藍色文件占用7個數據塊對象,網關需要使用7個線程同時上傳數據塊以滿足藍色文件的實時上傳;如數據塊設置為4MB大小,理想狀態下一個藍色文件占用4個數據塊對象,網關使用4個線程同時上傳數據塊。
(2)文件大小遠小于數據塊設置的大小時
多個文件的數據分布在較少的數據塊中,完成一個文件的傳輸需要網關和對象存儲傳輸一個較大的數據塊對象。橙色標志的文件是一個512KB大小的文件:無論數據塊設置為2MB還是4MB大小,網關傳輸一個橙色文件時需要和對象存儲傳輸一個比文件更大的數據塊對象,數據塊中有一部分數據是網關不需要讀寫的,傳輸大量此類文件會占用較多的網絡資源。
網關統計用戶文件大小的分布特點:假設用戶的文件大小可分為N類,每個分類文件的大小為S,出現的概率為P。則用戶的文件大小的期望值為:

基于用戶文件大小的期望值,設置網關發布的磁盤的數據塊大小為B,設置傳輸線程數為T。為了實現文件傳輸效率最優化,理想狀態下各參數的關系為:


圖3 數據塊和文件分布
(1)當用戶部署的網關和對象存儲之間的網絡帶寬較小時,為了保證單個對象的傳輸成功率,一般將數據塊大小B設置較小,網關服務器需要較高的資源配置來支持較大的傳輸線程數T;
(2)當用戶部署的網關和對象存儲之間的網絡帶寬較大時,數據塊大小B可設置較大,網關服務器可以配置較低的資源配置和較小的傳輸線程數T。
網關需要根據網絡帶寬大小、文件大小、數據傳輸線程數之間作一個動態的權衡,以保證多個數據塊同時上云的數據傳輸性能。
回寫延遲方法是網關針對緩存層向對象存儲回寫新數據塊時,通過調整“緩存層數據塊回寫對象存儲的延遲時間”參數,讓一定量的新數據塊在緩存層等待和堆積一段時間(即延遲時間)后再回寫云端。在這段時間內用戶再次向緩存內存在的新數據塊更新數據時,可直接寫入新數據,不需要等待數據塊的再次下載,從而減少了緩存層和云端之間數據塊交互頻率,減輕了網絡傳輸壓力,提升了熱點數據的讀寫效率。
(1)緩存層設置新數據塊的回寫延遲時間
緩存層接收用戶寫入的新文件后,使用“數據塊合并策略”,從云端下載舊數據塊進行合并,形成新數據塊,在緩存文件日志區里為每個新數據塊設置“回寫對象存儲的延遲時間”。
(2)緩存層回寫線程等待延遲時間后回寫數據塊
緩存層的回寫多線程等待每個新數據塊設置的“延遲時間”后,將新數據塊回寫云端,更新數據塊的操作日志,清除已回寫數據塊。
網關需要對“緩存層數據塊回寫對象存儲的延遲時間”進行實時的調整,保證存儲網關提供基本存儲服務能力的同時,讓網關內的數據處理性能、網絡傳輸性能達到最優的狀態。
(1)若緩存層回寫數據塊對象的延遲時間設置過短
網關和云存儲之間頻繁的數據塊交互會消耗過多網關服務器的磁盤I/O性能、CPU性能,影響網關內部數據處理能力。同時,網關和云端之間的網絡帶寬占用率非常高,出現網關響應用戶請求緩慢,用戶向虛擬磁盤寫數據超時的現象,網路擁塞是影響網關穩定工作的最重要因素。
(2)若緩存層回寫數據塊對象的延遲時間設置過長
新數據塊來不及回寫對象存儲,在緩存層積壓過多,出現緩存層的空間被占滿,用戶無法再寫入文件的現象。同時,緩存層和對象存儲的數據塊不一致的時間較長,一旦緩存層硬件出現故障,會造成數據丟失的風險。
存儲網關可通過監控軟件對網關服務器的CPU性能、磁盤I/O性能、數據傳輸線程數、磁盤內存可用空間、網絡速度、網絡流量等指標進行實時監控,分析網關服務服務能力和性能瓶頸,及時調整延遲時間參數,避免當某個監控指標超出閾值時出現以上的問題。
通過存儲網關為用戶提供基于對象存儲的塊設備存儲服務,解決了以往用戶系統直接使用云存儲時存在的問題,具有高適用性、靈活擴展性、價格合理等優勢。
同時,存儲網關借助于數據塊合并、數據塊切割、數據塊回寫延遲策略,使用多線程方式傳輸數據,靈活配置虛擬磁盤的數據塊大小,動態調整緩存中數據塊的回寫延遲參數,提高了存儲網關的數據讀寫性能和網絡帶寬利用率。
現階段,電信運營商的云存儲業務正在迅速發展,搶占著更大的云存儲市場份額,特別是眾多企業已經使用天翼云對象存儲來實現海量數據的上云需求。同時,得益于電信運營商高性能的網絡資源和日益成熟的云存儲、虛擬化技術,我們相信電信運營商將會發展更多存儲網關產品,并通過各種策略來提高網關的數據讀寫性能。