[]
隨著企業(yè)信息化建設(shè)的不斷深化,企業(yè)數(shù)據(jù)存儲量成爆炸式增長,如在高清監(jiān)控中,一路視頻碼率為4Mbps-20Mbps,一小時的視頻數(shù)據(jù)存儲量大約為1.8GB-9GB,24小時不間斷的情況下一個月的視頻數(shù)據(jù)存儲量約為1.3TB-6.3TB。一個平安城市視頻監(jiān)控項目中,總的監(jiān)控路數(shù)通常達(dá)到成千上萬路,存儲量是難以想象的。傳統(tǒng)的本地存儲方案已難以滿足海量數(shù)據(jù)的存儲容量、數(shù)據(jù)管理及數(shù)據(jù)快速檢索等方面的要求。隨著云計算技術(shù)的發(fā)展,企業(yè)數(shù)據(jù)存儲向云端遷移已經(jīng)成為首選的解決方案。較低的存儲成本、可擴展的存儲量、高性能的數(shù)據(jù)傳輸是數(shù)據(jù)云遷移的關(guān)鍵。
存儲網(wǎng)關(guān)是一個通過磁盤虛擬化、集群應(yīng)用、數(shù)據(jù)緩存等技術(shù),將網(wǎng)絡(luò)中各種類型的存儲通過應(yīng)用軟件集合起來協(xié)同工作,共同對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能的系統(tǒng)。云存儲網(wǎng)關(guān)橋接于用戶系統(tǒng)與云存儲之間,提供多種協(xié)議和統(tǒng)一的接口,將云存儲資源前置到用戶的本地存儲,實現(xiàn)傳統(tǒng)存儲系統(tǒng)和云存儲平臺的無縫銜接。
現(xiàn)階段,云存儲類型主要有三種類型:文件存儲、塊存儲、對象存儲。對于用戶而言,主要的存儲需求包括價格需求、兼容性需求、數(shù)據(jù)安全需求、性能需求。我們從這幾個維度對三種云存儲進(jìn)行對比。
表1是2018年9月阿里云的三大云存儲的包月價格,通過對比,我們發(fā)現(xiàn)文件存儲和塊存儲的使用價格相對昂貴,對象存儲的價格相對便宜。如果企業(yè)的存儲量達(dá)到PB級別,那么直接采用文件存儲和塊存儲的方案是難以承受的,企業(yè)更傾向于使用容量可彈性擴展的對象存儲。
表1 阿里云的三大云存儲的包月價格
對于使用本地塊設(shè)備的系統(tǒng)、應(yīng)用軟件和數(shù)據(jù)庫來說,企業(yè)上云使用云端塊存儲時,只需要通過ISCSI、NFS等協(xié)議對塊設(shè)備進(jìn)行掛載、格式化和安裝軟件,企業(yè)的應(yīng)用和數(shù)據(jù)庫幾乎不用改造,云端塊存儲可直接投入使用。對于文件存儲和對象存儲來說,用戶需要安裝云存儲服務(wù)商提供的軟件來享受云存儲的數(shù)據(jù)服務(wù),而且用戶應(yīng)用軟件的接口可能需要進(jìn)行相應(yīng)的改造才能完全適用云存儲,數(shù)據(jù)庫也可能不適用于這兩種存儲方式。
塊存儲通過了RAID與LVM等手段對數(shù)據(jù)提供了保護(hù)。對象存儲除身份管理以外,在數(shù)據(jù)的保存和傳輸狀態(tài)都通過數(shù)據(jù)加密來提供數(shù)據(jù)安全性。文件存儲則通過網(wǎng)絡(luò)隔離、用戶隔離、文件系統(tǒng)標(biāo)準(zhǔn)權(quán)限控制、權(quán)限組訪問控制來保障數(shù)據(jù)安全性。
對于塊存儲,用戶可以根據(jù)需求配置不同等級的塊存儲I/O性能。然而,用戶對于塊設(shè)備的I/O讀寫負(fù)載通常是不平衡的:在一段時間內(nèi),用戶會對塊設(shè)備的局部數(shù)據(jù)進(jìn)行頻繁訪問,造成塊設(shè)備的I/O性能瓶頸。另外,如果用戶文件在塊設(shè)備數(shù)據(jù)塊中的保存方式是順序型時,用戶讀寫文件時需要對數(shù)據(jù)塊進(jìn)行順序讀寫操作,效率較低。
對于文件存儲,數(shù)據(jù)量達(dá)到PB級別時,NAS存儲服務(wù)器性能會出現(xiàn)瓶頸。
對于對象存儲,對象存儲將文件的元數(shù)據(jù)獨立出來,元數(shù)據(jù)服務(wù)器MDS存儲對象文件的元數(shù)據(jù),分布式對象存儲設(shè)備OSD存儲文件的數(shù)據(jù)的部分。用戶訪問對象存儲時先訪問MDS,MDS反饋對象數(shù)據(jù)存儲的OSD位置后用戶直接訪問多個OSD服務(wù)器來讀取對象,此過程中文件傳輸速度得到很大的提升。
從上一節(jié)的對比中我們發(fā)現(xiàn),三大類的云存儲各有優(yōu)點。如果我們可以將它們相互配合使用,發(fā)揮各自的優(yōu)點,用戶將獲得一套價格合理、性能高、易用性強、可共享的數(shù)據(jù)存儲服務(wù)。本文基于這個目的,提出了一種基于對象存儲的虛擬塊設(shè)備,通過云端的對象存儲備份此塊設(shè)備,實現(xiàn)本地虛擬塊設(shè)備的云端存儲。
基于對象存儲的塊設(shè)備不僅繼承了本地塊設(shè)備適用面廣的特點,讓用戶的應(yīng)用在零改造的條件下掛載設(shè)備使用。同時,對象存儲的多線程OSD讀寫方式提高了塊設(shè)備數(shù)據(jù)的傳輸速度;相對便宜的對象存儲讓塊設(shè)備的容量可以不斷地擴容;對象存儲的可共享屬性讓塊設(shè)備輕松在其他用戶端進(jìn)行恢復(fù)。
對于存儲網(wǎng)關(guān)發(fā)布的虛擬塊設(shè)備,用戶對它的所有讀寫操作都將被網(wǎng)關(guān)重定向到讀寫一個固定大小的普通文件,而非操作實際磁盤的軌道和扇區(qū)。網(wǎng)關(guān)以一個固定大小的空間來切分這個普通文件,切割成若干個更小的數(shù)據(jù)塊。在本網(wǎng)關(guān)系統(tǒng)中,每個數(shù)據(jù)塊相當(dāng)于一個存儲對象,網(wǎng)關(guān)向?qū)ο蟠鎯ι蟼魉械臄?shù)據(jù)塊對象,完成虛擬塊設(shè)備的備份。
用戶向虛擬磁盤寫入文件時,文件數(shù)據(jù)可能會被寫入不同的數(shù)據(jù)塊中;用戶通過虛擬磁盤讀文件時,不同的數(shù)據(jù)塊一起提供實際的文件。在云端對象存儲操作界面,我們看到的是眾多的大小一樣的數(shù)據(jù)塊對象,并不能直接查看用戶的實際文件。
例如,網(wǎng)關(guān)發(fā)布的虛擬磁盤達(dá)到1TB大小,設(shè)置數(shù)據(jù)塊的切分大小空間為4MB,這個1TB大小的虛擬塊設(shè)備文件將被切割成262144個4MB的數(shù)據(jù)塊,網(wǎng)關(guān)將這些數(shù)據(jù)塊對象同步上傳到對象存儲。用戶在虛擬磁盤上讀寫文件時,相當(dāng)于網(wǎng)關(guān)在262144個數(shù)據(jù)塊中定位需要的數(shù)據(jù)塊后進(jìn)行數(shù)據(jù)讀寫。
基于對象存儲的塊設(shè)備存儲網(wǎng)關(guān)系統(tǒng)部署于用戶局域網(wǎng)環(huán)境中,橋接于用戶本地系統(tǒng)與云存儲之間,將網(wǎng)關(guān)系統(tǒng)內(nèi)一個固定大小的文件虛擬化為一個塊設(shè)備,通過回環(huán)方式掛載塊設(shè)備,并加載文件系統(tǒng),向外發(fā)布虛擬磁盤。用戶系統(tǒng)通過局域網(wǎng)掛載和使用網(wǎng)關(guān)發(fā)布的虛擬磁盤。當(dāng)用戶系統(tǒng)向虛擬磁盤讀寫數(shù)據(jù)時,存儲網(wǎng)關(guān)通過協(xié)議轉(zhuǎn)換更新數(shù)據(jù)塊,通過HTTP傳輸協(xié)議和對象存儲進(jìn)行數(shù)據(jù)塊對象讀寫。圖1為存儲網(wǎng)關(guān)的總體架構(gòu)。
圖1 存儲網(wǎng)關(guān)的總體架構(gòu)
存儲網(wǎng)關(guān)通過云存儲,備份網(wǎng)關(guān)虛擬塊設(shè)備所依賴的文件,相當(dāng)于為用戶提供了一種基于云存儲備份的虛擬磁盤服務(wù)。網(wǎng)關(guān)需要提供標(biāo)準(zhǔn)存儲和文件系統(tǒng)接口,支持多種協(xié)議(如NFS、SMB、ISCSI等),屏蔽各種云存儲接口的差異,為用戶提供一種應(yīng)用零改造、磁盤即插即用、磁盤容量無限擴展的云存儲服務(wù)。
存儲網(wǎng)關(guān)使用系統(tǒng)的本地磁盤或內(nèi)存充當(dāng)網(wǎng)關(guān)的數(shù)據(jù)緩存層,網(wǎng)關(guān)通過緩存層暫存數(shù)據(jù)塊,處理數(shù)據(jù)塊,并和對象存儲同步數(shù)據(jù)塊對象。
數(shù)據(jù)塊合并是存儲網(wǎng)關(guān)的緩存層接收用戶的新文件后,對舊數(shù)據(jù)塊和寫入此數(shù)據(jù)塊的新數(shù)據(jù)部分進(jìn)行合并操作,生成新的數(shù)據(jù)塊并上傳到云端對象存儲,完成最新數(shù)據(jù)塊的云端同步。數(shù)據(jù)塊合并策略如圖2所示。
用戶向網(wǎng)關(guān)緩存寫新文件時,緩存層數(shù)據(jù)區(qū)保存寫入每個數(shù)據(jù)塊的新數(shù)據(jù)部分,并在緩存層日志區(qū)里記錄每個被更新的數(shù)據(jù)塊的寫操作,寫操作包括數(shù)據(jù)塊的寫偏移量與寫長度。
緩存層根據(jù)日志區(qū)里每個被更新的數(shù)據(jù)塊的寫偏移量與寫長度記錄,判斷被更新的數(shù)據(jù)塊是被完全覆蓋寫還是被部分覆蓋寫。
當(dāng)緩存層的數(shù)據(jù)塊是被用戶系統(tǒng)完全覆蓋寫時,如圖2緩存層左一的數(shù)據(jù)塊,緩存層直接向?qū)ο蟠鎯貙戇@個新數(shù)據(jù)塊,更新日志區(qū)內(nèi)數(shù)據(jù)塊的操作日志。當(dāng)緩存層的數(shù)據(jù)塊是被用戶系統(tǒng)部分被覆蓋寫時,如圖2緩存層左二的數(shù)據(jù)塊,緩存層先從對象存儲下載同一個數(shù)據(jù)塊對象所關(guān)聯(lián)的舊數(shù)據(jù)塊,根據(jù)緩存的操作日志,將數(shù)據(jù)塊內(nèi)的新數(shù)據(jù)部分和舊數(shù)據(jù)塊進(jìn)行合并操作,生成新數(shù)據(jù)塊,回寫對象存儲,最后更新日志區(qū)內(nèi)數(shù)據(jù)塊的操作日志。
圖2 數(shù)據(jù)塊合并策略
存儲網(wǎng)關(guān)的緩存層暫時保存的數(shù)據(jù)塊分為兩類:未和云端同步的新數(shù)據(jù)塊和用戶讀文件時從云端下載的舊數(shù)據(jù)塊。當(dāng)這兩類數(shù)據(jù)塊被用戶頻繁讀寫時,它們作為熱數(shù)據(jù)塊緩存于網(wǎng)關(guān)中,無需從云端多次下載,提高用戶和網(wǎng)關(guān)之間的數(shù)據(jù)讀寫效率。
網(wǎng)關(guān)發(fā)布的虛擬磁盤將用戶的文件進(jìn)行分割,分布到塊設(shè)備的不同的數(shù)據(jù)塊中。存儲網(wǎng)關(guān)通過多線程傳輸方式和對象存儲進(jìn)行多個數(shù)據(jù)塊對象的同步上傳和下載。數(shù)據(jù)塊設(shè)置的大小和用戶文件大小共同決定了此文件占用的磁盤數(shù)據(jù)塊個數(shù):
(1)用戶文件大小遠(yuǎn)大于數(shù)據(jù)塊設(shè)置的大小時
一個文件的數(shù)據(jù)分布在較多的數(shù)據(jù)塊中,完成一個文件的傳輸需要網(wǎng)關(guān)向?qū)ο蟠鎯鬏斴^多的數(shù)據(jù)塊對象。在圖3所示的例子中,藍(lán)色標(biāo)志的文件是一個13MB大小的文件:如數(shù)據(jù)塊設(shè)置為2MB大小,理想狀態(tài)下一個藍(lán)色文件占用7個數(shù)據(jù)塊對象,網(wǎng)關(guān)需要使用7個線程同時上傳數(shù)據(jù)塊以滿足藍(lán)色文件的實時上傳;如數(shù)據(jù)塊設(shè)置為4MB大小,理想狀態(tài)下一個藍(lán)色文件占用4個數(shù)據(jù)塊對象,網(wǎng)關(guān)使用4個線程同時上傳數(shù)據(jù)塊。
(2)文件大小遠(yuǎn)小于數(shù)據(jù)塊設(shè)置的大小時
多個文件的數(shù)據(jù)分布在較少的數(shù)據(jù)塊中,完成一個文件的傳輸需要網(wǎng)關(guān)和對象存儲傳輸一個較大的數(shù)據(jù)塊對象。橙色標(biāo)志的文件是一個512KB大小的文件:無論數(shù)據(jù)塊設(shè)置為2MB還是4MB大小,網(wǎng)關(guān)傳輸一個橙色文件時需要和對象存儲傳輸一個比文件更大的數(shù)據(jù)塊對象,數(shù)據(jù)塊中有一部分?jǐn)?shù)據(jù)是網(wǎng)關(guān)不需要讀寫的,傳輸大量此類文件會占用較多的網(wǎng)絡(luò)資源。
網(wǎng)關(guān)統(tǒng)計用戶文件大小的分布特點:假設(shè)用戶的文件大小可分為N類,每個分類文件的大小為S,出現(xiàn)的概率為P。則用戶的文件大小的期望值為:
基于用戶文件大小的期望值,設(shè)置網(wǎng)關(guān)發(fā)布的磁盤的數(shù)據(jù)塊大小為B,設(shè)置傳輸線程數(shù)為T。為了實現(xiàn)文件傳輸效率最優(yōu)化,理想狀態(tài)下各參數(shù)的關(guān)系為:
圖3 數(shù)據(jù)塊和文件分布
(1)當(dāng)用戶部署的網(wǎng)關(guān)和對象存儲之間的網(wǎng)絡(luò)帶寬較小時,為了保證單個對象的傳輸成功率,一般將數(shù)據(jù)塊大小B設(shè)置較小,網(wǎng)關(guān)服務(wù)器需要較高的資源配置來支持較大的傳輸線程數(shù)T;
(2)當(dāng)用戶部署的網(wǎng)關(guān)和對象存儲之間的網(wǎng)絡(luò)帶寬較大時,數(shù)據(jù)塊大小B可設(shè)置較大,網(wǎng)關(guān)服務(wù)器可以配置較低的資源配置和較小的傳輸線程數(shù)T。
網(wǎng)關(guān)需要根據(jù)網(wǎng)絡(luò)帶寬大小、文件大小、數(shù)據(jù)傳輸線程數(shù)之間作一個動態(tài)的權(quán)衡,以保證多個數(shù)據(jù)塊同時上云的數(shù)據(jù)傳輸性能。
回寫延遲方法是網(wǎng)關(guān)針對緩存層向?qū)ο蟠鎯貙懶聰?shù)據(jù)塊時,通過調(diào)整“緩存層數(shù)據(jù)塊回寫對象存儲的延遲時間”參數(shù),讓一定量的新數(shù)據(jù)塊在緩存層等待和堆積一段時間(即延遲時間)后再回寫云端。在這段時間內(nèi)用戶再次向緩存內(nèi)存在的新數(shù)據(jù)塊更新數(shù)據(jù)時,可直接寫入新數(shù)據(jù),不需要等待數(shù)據(jù)塊的再次下載,從而減少了緩存層和云端之間數(shù)據(jù)塊交互頻率,減輕了網(wǎng)絡(luò)傳輸壓力,提升了熱點數(shù)據(jù)的讀寫效率。
(1)緩存層設(shè)置新數(shù)據(jù)塊的回寫延遲時間
緩存層接收用戶寫入的新文件后,使用“數(shù)據(jù)塊合并策略”,從云端下載舊數(shù)據(jù)塊進(jìn)行合并,形成新數(shù)據(jù)塊,在緩存文件日志區(qū)里為每個新數(shù)據(jù)塊設(shè)置“回寫對象存儲的延遲時間”。
(2)緩存層回寫線程等待延遲時間后回寫數(shù)據(jù)塊
緩存層的回寫多線程等待每個新數(shù)據(jù)塊設(shè)置的“延遲時間”后,將新數(shù)據(jù)塊回寫云端,更新數(shù)據(jù)塊的操作日志,清除已回寫數(shù)據(jù)塊。
網(wǎng)關(guān)需要對“緩存層數(shù)據(jù)塊回寫對象存儲的延遲時間”進(jìn)行實時的調(diào)整,保證存儲網(wǎng)關(guān)提供基本存儲服務(wù)能力的同時,讓網(wǎng)關(guān)內(nèi)的數(shù)據(jù)處理性能、網(wǎng)絡(luò)傳輸性能達(dá)到最優(yōu)的狀態(tài)。
(1)若緩存層回寫數(shù)據(jù)塊對象的延遲時間設(shè)置過短
網(wǎng)關(guān)和云存儲之間頻繁的數(shù)據(jù)塊交互會消耗過多網(wǎng)關(guān)服務(wù)器的磁盤I/O性能、CPU性能,影響網(wǎng)關(guān)內(nèi)部數(shù)據(jù)處理能力。同時,網(wǎng)關(guān)和云端之間的網(wǎng)絡(luò)帶寬占用率非常高,出現(xiàn)網(wǎng)關(guān)響應(yīng)用戶請求緩慢,用戶向虛擬磁盤寫數(shù)據(jù)超時的現(xiàn)象,網(wǎng)路擁塞是影響網(wǎng)關(guān)穩(wěn)定工作的最重要因素。
(2)若緩存層回寫數(shù)據(jù)塊對象的延遲時間設(shè)置過長
新數(shù)據(jù)塊來不及回寫對象存儲,在緩存層積壓過多,出現(xiàn)緩存層的空間被占滿,用戶無法再寫入文件的現(xiàn)象。同時,緩存層和對象存儲的數(shù)據(jù)塊不一致的時間較長,一旦緩存層硬件出現(xiàn)故障,會造成數(shù)據(jù)丟失的風(fēng)險。
存儲網(wǎng)關(guān)可通過監(jiān)控軟件對網(wǎng)關(guān)服務(wù)器的CPU性能、磁盤I/O性能、數(shù)據(jù)傳輸線程數(shù)、磁盤內(nèi)存可用空間、網(wǎng)絡(luò)速度、網(wǎng)絡(luò)流量等指標(biāo)進(jìn)行實時監(jiān)控,分析網(wǎng)關(guān)服務(wù)服務(wù)能力和性能瓶頸,及時調(diào)整延遲時間參數(shù),避免當(dāng)某個監(jiān)控指標(biāo)超出閾值時出現(xiàn)以上的問題。
通過存儲網(wǎng)關(guān)為用戶提供基于對象存儲的塊設(shè)備存儲服務(wù),解決了以往用戶系統(tǒng)直接使用云存儲時存在的問題,具有高適用性、靈活擴展性、價格合理等優(yōu)勢。
同時,存儲網(wǎng)關(guān)借助于數(shù)據(jù)塊合并、數(shù)據(jù)塊切割、數(shù)據(jù)塊回寫延遲策略,使用多線程方式傳輸數(shù)據(jù),靈活配置虛擬磁盤的數(shù)據(jù)塊大小,動態(tài)調(diào)整緩存中數(shù)據(jù)塊的回寫延遲參數(shù),提高了存儲網(wǎng)關(guān)的數(shù)據(jù)讀寫性能和網(wǎng)絡(luò)帶寬利用率。
現(xiàn)階段,電信運營商的云存儲業(yè)務(wù)正在迅速發(fā)展,搶占著更大的云存儲市場份額,特別是眾多企業(yè)已經(jīng)使用天翼云對象存儲來實現(xiàn)海量數(shù)據(jù)的上云需求。同時,得益于電信運營商高性能的網(wǎng)絡(luò)資源和日益成熟的云存儲、虛擬化技術(shù),我們相信電信運營商將會發(fā)展更多存儲網(wǎng)關(guān)產(chǎn)品,并通過各種策略來提高網(wǎng)關(guān)的數(shù)據(jù)讀寫性能。