屠要峰,楊洪章,韓銀俊,陳正華
(1.中興通訊股份有限公司, 廣東 深圳 518057;2.南京中興新軟件有限責任公司, 江蘇 南京 210012)
自從 2006年被谷歌首次提出[1],“云計算”已悄然發(fā)展了10年以上,以云桌面、云硬盤、超融合等形態(tài)為代表的云計算產(chǎn)品已經(jīng)步入現(xiàn)代生活的方方面面,按需付費的理念深入人心。軟件定義存儲[2-4]作為支撐云計算各項任務(wù)的關(guān)鍵技術(shù),成為當仁不讓的研究熱點。軟件定義存儲采用虛擬化技術(shù)將分布于不同地域的計算機資源進行集中管理和分配,通過資源復(fù)用的方式,有效地提高資源利用率。軟件定義存儲可根據(jù)接口分成 3類[5]:分布式對象存儲系統(tǒng)、分布式文件系統(tǒng)、分布式塊存儲系統(tǒng)。在云計算的應(yīng)用環(huán)境中,分布式塊存儲系統(tǒng)是最主要的底層存儲系統(tǒng),它提供彈性、線性的邏輯地址空間。
由于軟件定義存儲將標準x86硬件資源池化、虛擬化、服務(wù)化,在同一套云平臺中將會支持海量的、并發(fā)的、復(fù)雜的應(yīng)用,在公有云抑或私有云中,都十分普遍。通過存儲資源復(fù)用和共享的方式,用戶不需要為每個應(yīng)用部署專門的存儲系統(tǒng),也降低了軟硬件維護代價。然而,資源復(fù)用是一把雙刃劍[6],在為用戶降低開銷的同時,也導(dǎo)致了應(yīng)用之間的相互干擾和競爭,難以保障用戶的服務(wù)質(zhì)量需求。
從社會大眾的認知層面來看,已將存儲資源視為與水、電、煤氣近似的公共基礎(chǔ)設(shè)施,用戶對該類按需付費的資源有著異曲同工的期望——滿足峰值需求和穩(wěn)定需求。以電力系統(tǒng)為例,用戶的基本期望是電壓能保證家中所有家用電器同時工作,并且電壓保持穩(wěn)定,不能忽高忽低。再以云存儲資源為例,用戶的期望是吞吐量能同時保證VR視頻播放、云桌面辦公、大型游戲等應(yīng)用的需求,且吞吐量保持穩(wěn)定,不能時斷時續(xù)。因此,提供高效、穩(wěn)定的存儲服務(wù)質(zhì)量成為用戶對云計算產(chǎn)品、對底層分布式塊存儲系統(tǒng)的核心期望。
遺憾的是,現(xiàn)有的分布式塊存儲系統(tǒng)對服務(wù)質(zhì)量的控制與支持嚴重不足,特別是在資源需求量超出存儲系統(tǒng)能力時,無法提供令人滿意的服務(wù)質(zhì)量,迫切需要提出一種滿足高效、穩(wěn)定的存儲服務(wù)質(zhì)量要求的解決方案。
存儲系統(tǒng)通過塊設(shè)備接口向應(yīng)用程序提供服務(wù),如讀、寫操作等。本文將“通過通用接口顯性地向上層應(yīng)用程序提供的存儲服務(wù)”稱為前端任務(wù),前端任務(wù)被視作存儲系統(tǒng)的基本服務(wù)功能。相較于基本服務(wù)功能,存儲系統(tǒng)也會提供一些高級服務(wù)功能,如負載均衡、緩存臟數(shù)據(jù)回刷、重復(fù)數(shù)據(jù)刪除、數(shù)據(jù)壓縮、定期快照、數(shù)據(jù)副本同步、副本與糾刪碼相互轉(zhuǎn)換等。此類高級服務(wù)功能對于上層應(yīng)用程序透明,存儲系統(tǒng)不提供顯性的調(diào)用接口。本文將“不通過通用接口向上層應(yīng)用程序提供的存儲服務(wù)”稱為后端任務(wù)。
對于分布式塊存儲系統(tǒng)而言,其服務(wù)質(zhì)量應(yīng)從如下兩個維度進行支持。
(1)前后端任務(wù)的資源平衡問題
不論是前端任務(wù)還是后端任務(wù),都需要一定的系統(tǒng)資源才能運行,如內(nèi)存、CPU、I/O、網(wǎng)絡(luò)帶寬等。由于系統(tǒng)資源是有限的,如果不對任務(wù)的執(zhí)行加以控制,會造成前后端任務(wù)之間對資源的無序競爭。顯然,前端業(yè)務(wù)的時延對于用戶的服務(wù)質(zhì)量體驗產(chǎn)生決定性的影響,而后端業(yè)務(wù)雖然是不可或缺的,但其須為前端業(yè)務(wù)讓路,優(yōu)先滿足前端業(yè)務(wù)所需的資源。因此,對前端任務(wù)和后端任務(wù)的執(zhí)行進行合理的調(diào)度,是解決該問題的關(guān)鍵。
(2)前端任務(wù)間的資源平衡問題
前端任務(wù)既然被調(diào)度執(zhí)行,那么其相互的資源競爭必須以一種公平的方式對待,特別是對性能影響顯著的、有限的緩存資源。在實際的應(yīng)用任務(wù)中,數(shù)據(jù)訪問熱度符合Pareto(帕拉托)定律,即少數(shù)的熱數(shù)據(jù)被頻繁訪問,因此將熱數(shù)據(jù)存放在緩存中。當產(chǎn)生新的熱數(shù)據(jù)時,需要緩存替換。而現(xiàn)有的緩存替換算法太過陳舊,不符合云環(huán)境的新期望。因此,對前端任務(wù)之間熱數(shù)據(jù)的精確識別,將真正的熱數(shù)據(jù)放在緩存中,及時替換變冷的數(shù)據(jù),是解決該問題的關(guān)鍵。
只有解決好這兩個維度上的資源競爭問題,分別從預(yù)防和妥協(xié)兩個方面采取措施,才能真正提供高效、穩(wěn)定的存儲服務(wù)質(zhì)量,這已經(jīng)成為學術(shù)界和工業(yè)界的共識。
本文設(shè)計并實現(xiàn)了中興分布式塊存儲系統(tǒng)(ZTE distributed block storage syetem,ZTE-DBSS),同時,重點提出了兩個方面的優(yōu)化,從而滿足高效、穩(wěn)定的服務(wù)質(zhì)量的迫切需求。
· 面對前后端任務(wù)的資源平衡問題,提出一種自適應(yīng)的任務(wù)調(diào)度技術(shù)。
· 面對前端任務(wù)間的資源平衡問題,提出一種多級熱度的緩存替換技術(shù)。
最后將上述優(yōu)化技術(shù)應(yīng)用在ZTE-DBSS中,并在真實的云計算應(yīng)用場景中進行測試。
Sheepdog提供了一個高可用的塊級存儲卷,提供了對QEMU虛擬機的接口、對iSCSI協(xié)議的支持、基于FUSE的文件系統(tǒng)掛載的SheepFS以及SBD(sheepdog block device)多種塊設(shè)備接口[7]。Sheepdog默認采用多副本模式,另外還提供了日志模式和糾刪碼存儲模式。
Weil等人[8]提出了Ceph RBD分布式塊存儲系統(tǒng),在開源社區(qū)中具有廣泛的影響力。2010 年3月Linus Tovalds將Ceph合并到了Linux內(nèi)核2.6.34。Ceph具有優(yōu)良的系統(tǒng)架構(gòu)設(shè)計,保證了優(yōu)異的可靠性和可擴展性。Ceph主架構(gòu)由客戶端與RADOS組成,客戶端實現(xiàn)了多種類型的接入,提供了非常豐富的功能。
Na等人[9]提出了 BW-RAID分布式塊存儲系統(tǒng),它是一種前端并行數(shù)據(jù)傳輸和后端分布式冗余管理的網(wǎng)絡(luò)RAID存儲系統(tǒng),有著良好的空間利用率和較小的冗余計算開銷,同時有效解決了集中式管理方式性能瓶頸的問題。BW-RAID是國產(chǎn)商業(yè)性分布式塊存儲系統(tǒng)的典范。
Amazon EBS[10]是AWS中著名的商業(yè)性彈性塊存儲系統(tǒng)。對用戶來說可以將EBS看作一款超大的塊設(shè)備。因此 EBS 能夠提供最底層的服務(wù),可以在這之上建立文件系統(tǒng)、數(shù)據(jù)庫、共享磁盤甚至操作系統(tǒng)等。EBS 的整體架構(gòu)由分布式系統(tǒng)與集群控制器組成,每個集群控制器可以管理多臺物理節(jié)點。
以上參考文獻提出的分布式塊存儲系統(tǒng)為開源系統(tǒng)或商業(yè)系統(tǒng),開源系統(tǒng)雖然成本低但服務(wù)質(zhì)量支持不足;商業(yè)系統(tǒng)雖然服務(wù)質(zhì)量有一定程度的支持,但效果不佳、成本高昂。
張泉[6]提出了一種支持多維服務(wù)質(zhì)量保證的I/O調(diào)度算法 Courier,根據(jù)應(yīng)用的帶寬需求分配基本的信譽額度,并允許應(yīng)用透支限定額度的信譽以優(yōu)先處理緊急請求,同時,獎勵負載特征良好的應(yīng)用以更多的信譽額度,以提高存儲系統(tǒng)的整體資源利用效率。
馮盼盼等人[11]提出一種分布式塊存儲系統(tǒng)及其存儲質(zhì)量控制方法及裝置,該系統(tǒng)利用指標監(jiān)控服務(wù)器,對每個任務(wù)使用的各個存儲單元及其所在的各個存儲節(jié)點服務(wù)器進行指標監(jiān)控,對該任務(wù)使用的所述各個存儲單元進行存儲質(zhì)量評分,根據(jù)評分進行存儲單元自動切換,從而保證存儲服務(wù)質(zhì)量。
Huang[12]提出了 Stonehenge算法,根據(jù)客戶端的需求采用公平的隊列算法將請求調(diào)度到合適的虛擬磁盤上。它通過存儲控制器控制訪問共享存儲設(shè)備上的多個應(yīng)用數(shù)據(jù)流,并通過實時調(diào)度和基于反饋控制的設(shè)備隊列來保證應(yīng)用所指定的服務(wù)質(zhì)量目標。
開源Ceph v0.94代碼[13]采用靜態(tài)配置文件的方案對前后端任務(wù)進行調(diào)度控制??膳渲萌缦聟?shù):backfill最大的操作數(shù)、最小對象數(shù)、最大對象數(shù)、響應(yīng)請求的最高 OSD Daemon使用率、recovery請求活躍個數(shù)上限、線程個數(shù)上限、優(yōu)先級等。該種靜態(tài)配置方式的缺點是:配置參數(shù)復(fù)雜、缺乏靈活性、效果較差。系統(tǒng)繁忙時后端任務(wù)會阻塞 I/O請求,系統(tǒng)空閑時后端任務(wù)無法充分利用系統(tǒng)的磁盤、網(wǎng)絡(luò)帶寬等資源。
以上參考文獻提出的任務(wù)調(diào)度技術(shù)本質(zhì)上是資源隔離,與云存儲共享、彈性的理念相違背,存在資源利用率低下的問題。
Lee等人[14]結(jié)合最少使用(least recently used,LRU)和最不經(jīng)常使用(least frequently used,LFU)頁置換算法提出了LRFU算法。當替換發(fā)生時,LRFU替換具有最小CRF的數(shù)據(jù)塊。CRF表示數(shù)據(jù)塊會在不久的將來被訪問到的概率大小。LRFU既可用作LRU,也可用作LFU,因此LRFU在時效型和頻率型的數(shù)據(jù)訪問模式下都能取得比較好的效果。
Jiang等人[15]提出 LIRS算法,通過使用兩次訪問同一數(shù)據(jù)塊之間的距離動態(tài)地對訪問數(shù)據(jù)塊排序,從而進行數(shù)據(jù)塊替換算法。LIRS將每個存儲層劃分為兩部分:LIR空間和 HIR空間。該算法能夠保證在 LIR空間里的所有數(shù)據(jù)塊都比 HIR空間里的數(shù)據(jù)塊具有更小的訪問間隔。因此,HIR空間中的數(shù)據(jù)塊將會被優(yōu)先考慮替換。
Megiddo等人[16]提出了ARC算法,將每個存儲層劃分為兩部分,分別存儲只訪問過一次的數(shù)據(jù)塊和訪問次數(shù)超過一次的數(shù)據(jù)塊。ARC可以根據(jù)具體的數(shù)據(jù)訪問工作流自動調(diào)整這兩部分空間的大小來提升命中率。
顧榮[17]提出一種通用化分層存儲系統(tǒng)緩存調(diào)度框架,將參考文獻[14-16]中的不同的數(shù)據(jù)訪問模式和緩存策略以及上層的大數(shù)據(jù)應(yīng)用融合起來,并為用戶提供一組覆蓋多種不同數(shù)據(jù)訪問模式的高效緩存調(diào)度策略,從而加速上層大數(shù)據(jù)應(yīng)用的數(shù)據(jù)讀寫訪問性能。
以上參考文獻提出的緩存替換技術(shù)均是對LRU、LFU等經(jīng)典算法的局部改進或重新組合。
本文設(shè)計并實現(xiàn)了中興分布式塊存儲系統(tǒng)ZTE-DBSS,其采用無中心的分布式架構(gòu)[18],如圖1所示。其中,MDS主要用于集群配置和元數(shù)據(jù)管理;ZK用于實現(xiàn)分布式數(shù)據(jù)的強一致更新;CSD(Chunk存儲服務(wù))主要負責實際的數(shù)據(jù)存儲;CLI實現(xiàn)內(nèi)核態(tài)客戶端,提供塊存儲的訪問接口;OMM為操作維護平臺,用于集群管理。
圖1 ZTE-DBSS系統(tǒng)整體架構(gòu)
ZTE-DBSS在線性地址空間內(nèi)可以任意創(chuàng)建虛擬卷,虛擬卷切分成固定大小的數(shù)據(jù)片分布在不同的物理存儲節(jié)點上。每個數(shù)據(jù)片均有3份副本分別保存在不同的存儲設(shè)備中,提供了高可用性。通過虛擬塊設(shè)備驅(qū)動,將用戶數(shù)據(jù)切分為小粒度數(shù)據(jù)分片,并通過路由算法確定當前主節(jié)點,發(fā)送到對應(yīng)的服務(wù)端進行處理。根據(jù)集群中主機狀態(tài)、容量、負載等情況,進行路由算法的動態(tài)調(diào)整,從而滿足可用性、擴展性、一致性要求。本系統(tǒng)支持異構(gòu)的存儲設(shè)備,能夠自動根據(jù)不同設(shè)備的負載能力,按照一定的比例關(guān)系使用每臺存儲設(shè)備的存儲資源,實現(xiàn)負載均衡分布、提升設(shè)備的利用率。如圖2所示,ZTE-DBSS分為兩級尋址。
· 首次尋址:根據(jù)一致性散列計算本次讀寫請求歸屬的CG(Chunk group),根據(jù)CG的路由定位請求應(yīng)該發(fā)到那個節(jié)點的哪個CSD。
· 二次尋址:請求磁盤后,調(diào)用裸盤K/V引擎對物理數(shù)據(jù)塊進行讀寫,利用裸盤 K/V的內(nèi)部B+元數(shù)據(jù)管理完成二次尋址。
圖2 ZTE-DBSS兩級尋址
為提升I/O利用率和系統(tǒng)吞吐量,如圖3所示,ZTE-DBSS采用定制化的裸盤文件系統(tǒng)替代常規(guī)文件系統(tǒng)。直接管理物理磁盤的空間分配,采用段/區(qū)/頁三級組織形式,避免了文件系統(tǒng)常見的碎片化現(xiàn)象。不同 CG間共享存儲空間,動態(tài)分配,實現(xiàn)塊設(shè)備精簡配置特性。同一塊硬盤支持不同Chunk大小卷共享存儲,每個CG創(chuàng)建的時候可以指定其尺寸,適應(yīng)不同任務(wù)類型,在同一存儲池中滿足不同場景的性能要求。
中興分布式塊存儲系統(tǒng)ZTE-DBSS目前已在多個公有云、私有云場景下支撐了多樣的任務(wù)應(yīng)用,如服務(wù)器虛擬化、數(shù)據(jù)庫、氣象預(yù)報大數(shù)據(jù)、地質(zhì)勘探大數(shù)據(jù)、云盤、遠程辦公、云桌面、VR視頻等。在系統(tǒng)上線之初存儲服務(wù)質(zhì)量支持較弱,在前后端任務(wù)的資源平衡問題上采取的技術(shù)方案是類似于考參文獻[10]的靜態(tài)限速技術(shù),在前端任務(wù)間的資源平衡問題上采取的技術(shù)方案是類似于參考文獻[13]的二級鏈表技術(shù),存儲服務(wù)質(zhì)量難以符合用戶的預(yù)期,有較大的提升空間。
圖3 ZTE-DBSS裸盤文件系統(tǒng)
如前文所述,現(xiàn)有的任務(wù)調(diào)度技術(shù)[3,8-10]往往采用靜態(tài)限速的方法,對后端任務(wù)設(shè)置資源上限,如IOPS(input/output operations per second,每秒進行讀寫操作的次數(shù))限定在某閾值以下。該種方法雖較好地保證了前端任務(wù)執(zhí)行時所需要的資源,但是在系統(tǒng)空閑時卻無法充分利用資源,造成了資源的浪費,以及后端任務(wù)執(zhí)行效率的低下。
一種合理的解決辦法是,分布式塊存儲系統(tǒng)需要優(yōu)先滿足前端任務(wù)的運行,盡量在系統(tǒng)的空閑時間段執(zhí)行后端任務(wù),并根據(jù)前端應(yīng)用負載自適應(yīng)地調(diào)整后端任務(wù)的速率,由此保證存儲服務(wù)質(zhì)量。
針對現(xiàn)有靜態(tài)限速技術(shù)中存在的靈活性低下、系統(tǒng)空閑時資源無法有效利用的問題,本文提供一種通過跟蹤系統(tǒng)資源負載的輕重程度,自適應(yīng)地執(zhí)行后端任務(wù)并限速的技術(shù),避免對前端任務(wù)性能的影響,從而保證存儲服務(wù)質(zhì)量。
本技術(shù)包括兩個方面:首先通過基于邏輯閥的任務(wù)開關(guān)機制來決定后端任務(wù)是否可以執(zhí)行、哪些后端任務(wù)可以執(zhí)行;然后通過基于令牌桶的速率控制機制對準許執(zhí)行的后端任務(wù)進行速率控制。
(1)基于邏輯閥的任務(wù)開關(guān)機制
在后端任務(wù)執(zhí)行控制方面,采用一個邏輯閥來調(diào)控。是否在下一時間周期 Pi+1內(nèi)執(zhí)行后端任務(wù),依賴于當前時間周期Pi內(nèi)負載WLi的輕重。周期P的值不能設(shè)置得太長。
對于某一具體的后端任務(wù)而言:當前時間周期Pi內(nèi)負載WLi較輕時,下一時間周期Pi+1執(zhí)行后端任務(wù);反之,當前周期Pi內(nèi)負載WLi較重時,下一周期Pi+1不執(zhí)行后端任務(wù)。
對于全體后端任務(wù)而言:將后端任務(wù)的優(yōu)先級進行預(yù)設(shè),負載閾值見表1。根據(jù)負載的輕重程度,可以調(diào)控不同優(yōu)先級的后端任務(wù)的執(zhí)行情況。在一些簡化場景中,后臺業(yè)務(wù)無需區(qū)分優(yōu)先級,可僅設(shè)置2個繁忙等級,即空閑和繁忙。
表1 負載閾值
本文主要用“時間周期Pi內(nèi),破壞時延上限的用戶I/O所占比率 VRi”作為負載WLi的量化方式。令Ni為時間周期Pi內(nèi)完成的用戶I/O請求個數(shù),Li(k)是在周期Pi內(nèi)的第k個用戶I/O的服務(wù)時間,周期Pi的時延上限為LCi。若Li(k)>LCi,則認為該用戶I/O破壞了時延上限。
如果在周期 Pi內(nèi),VRi>δ則判斷負載 WLi為高負載,反之,則系統(tǒng)負載較輕。這里,δ稱為松弛因子。
(2)基于令牌桶的速率控制機制
基于邏輯閥的任務(wù)開關(guān)機制雖然對后臺任務(wù)的執(zhí)行進行了初步的把控,但是如果不對這些準許執(zhí)行的后臺任務(wù)進行限速的話,則仍舊會對前臺任務(wù)造成嚴重的資源競爭。因此,提出一種基于令牌桶機制的速率控制機制。
通過跟蹤系統(tǒng)中的實時負載,進而動態(tài)調(diào)整后端任務(wù)的資源,控制其執(zhí)行速率。釆用令牌(token)量化存儲硬件的能力,并通過控制令牌消耗的方式給不同的前后端任務(wù)分配不同的令牌,即對后端任務(wù)限速。在前臺任務(wù)繁忙、對資源需求量大的時候,減少后端任務(wù)令牌數(shù)量,減輕其對前端任務(wù)性能的影響;在前臺任務(wù)空閑、對資源需求量小的時候,增加后端任務(wù)令牌數(shù)量,使得后端任務(wù)能夠盡快完成。
如圖4所示,在ZTE-DBSS中進行實現(xiàn)時,在CSD層面進行重分布速率控制,并根據(jù)硬件設(shè)備單盤IOPS上限設(shè)置令牌的生成速率,前端任務(wù)請求和后端任務(wù)請求共同消耗令牌,這樣就能根據(jù)前端任務(wù)的 I/O速率,自適應(yīng)地調(diào)整后端任務(wù)的 I/O速率。為了讓后端任務(wù)不與前端任務(wù)爭奪令牌,只有在生成的令牌數(shù)量超過min_tokens閾值時,才能執(zhí)行后端任務(wù),否則只能由前端任務(wù)來消耗令牌。
圖4 令牌桶限速
與現(xiàn)有技術(shù)相比,本文提出的自適應(yīng)的任務(wù)調(diào)度技術(shù)在分布式塊存儲系統(tǒng)執(zhí)行后端任務(wù)時,會根據(jù)系統(tǒng)的前端任務(wù)負載輕重來動態(tài)調(diào)整后端任務(wù)開關(guān)和速率,能夠?qū)崿F(xiàn)在保證前端任務(wù)執(zhí)行的前提下,后端任務(wù)亦能夠快速完成。
如前文所述,現(xiàn)有的緩存替換技術(shù)[11-14]將產(chǎn)生于20世紀的經(jīng)典緩存替換算法LRU、LFU進行改進和重組,主要問題包括以下方面。
(1)熱度判斷的主體局限于進入緩存的數(shù)據(jù)
現(xiàn)有緩存替換算法不僅缺乏對被換出數(shù)據(jù)的長期跟蹤,而且缺乏對全體數(shù)據(jù)的熱度判斷。隨著新型存儲器件層出不窮,存儲金字塔結(jié)構(gòu)更加復(fù)雜,涉及多個存儲層級之間的冷熱數(shù)據(jù)的判斷與遷移,需要對全體數(shù)據(jù)進行熱度統(tǒng)計與計算。
(2)熱度判斷準確率低下
現(xiàn)有緩存替換算法沒有同時考慮訪問時間和歷史訪問頻率,導(dǎo)致一些只是近期沒有被訪問到,但實際上訪問頻率很高的數(shù)據(jù)被替換出去,熱度判斷的合理性存在較大提升空間。同時,被換出數(shù)據(jù)再次被換入時其熱度等同于首次進入緩存的數(shù)據(jù),但其熱度是不同的。
(3)未能充分發(fā)揮硬件性能
受制于經(jīng)典緩存替換算法的慣性思維以及20世紀80年代的CPU計算能力和內(nèi)存容量限制,現(xiàn)有的緩存替換算法仍然十分節(jié)約CPU和內(nèi)存,以鏈表作為最主要的緩存管理方法,處理效率低下。
一種合理的解決方案是,應(yīng)該綜合考慮數(shù)據(jù)近期的訪問時間和歷史的訪問頻率,避免將只是近期未被訪問,但實際上歷史訪問頻率很高的數(shù)據(jù)換出。因此,不能將最近的數(shù)據(jù)元素和已過去一定時間的數(shù)據(jù)元素截然分開,不能只對最近的訪問情況進行考察,應(yīng)對全體數(shù)據(jù)進行考察,采用可量化的計算方式對數(shù)據(jù)的熱度進行評價。
在本技術(shù)中,對每一個數(shù)據(jù)元素的訪問視作一個數(shù)據(jù)流,將訪問記錄按時間來劃分為若干段,數(shù)據(jù)流中的每個數(shù)據(jù)即各個時間段內(nèi),該對象被訪問的次數(shù),將其表示為 Visit[a][t],其中Visit[a][0]是數(shù)據(jù)a距離當前最遠的一條訪問記錄,Visit[a][t-1]為當前訪問記錄。令 k為熱度衰減常數(shù),取值范圍為k∈[0,1],典型值如10-3、10-2。
數(shù)據(jù)a在時間片t之后的熱度評分計算式為:
Visit[a][t]=Score[a][t-1]*k + Visit[a][t] (2)其中,k值越大,歷史訪問對當前熱度評分的影響越顯著,反之則越不顯著。數(shù)據(jù)熱度的評分越高,則表示該對象被訪問得越頻繁。數(shù)據(jù)流中的元素權(quán)重取決于其離當前時間的遠近,流中越早的元素權(quán)重越小。與此相比,在LRU算法中,對一個大小為 n的固定大小的窗口內(nèi)的元素進行加權(quán)求和時,會對最近 n個元素都賦予權(quán)重1,而對所有更早的元素賦予權(quán)重0。兩者區(qū)別如圖5所示。
圖5 多級熱度的緩存替換技術(shù)與LRU對比
在多級緩存的分布式塊存儲環(huán)境中,熱度閾值見表2,熱度分級與存儲系統(tǒng)的緩存層數(shù)有直接關(guān)系。熱度閾值與存儲系統(tǒng)中各緩存層的容量有直接關(guān)系,可按照經(jīng)驗值設(shè)置。
表2 熱度閾值
這樣一來,就可以將數(shù)據(jù)元素的當前熱度與熱度閾值進行比對,確定數(shù)據(jù)元素所屬的熱度級別,若新舊級別不相同則將數(shù)據(jù)元素遷移到對應(yīng)的存儲器件中。
若出現(xiàn)某熱度的存儲器件容量在警戒閾值之上,則調(diào)整熱度閾值。警戒閾值為可設(shè)經(jīng)驗值,典型值為 95%,目的在于在容量滿之前及時調(diào)整閾值,提前遷移數(shù)據(jù),避免出現(xiàn)因容量已滿而導(dǎo)致新?lián)Q入數(shù)據(jù)失敗的情況。緩存容量達到警戒值說明熱度閾值表設(shè)置不當,需對其進行調(diào)整。調(diào)整的方法包括:將該熱度閾值的范圍下界調(diào)低或上界調(diào)高。
與現(xiàn)有技術(shù)相比,本項技術(shù)在分布式塊存儲系統(tǒng)執(zhí)行前端任務(wù)時,熱度判斷的主體全面、熱度判斷準確率高、充分發(fā)揮了硬件性能,從而以一種公平的方式對待前端任務(wù)對緩存資源的競爭。
在本節(jié)中,不但針對優(yōu)化前后的任務(wù)調(diào)度技術(shù)和緩存替換技術(shù)分別進行了對比測試,而且在實際的分布式業(yè)務(wù)場景中對整體服務(wù)質(zhì)量進行了實際測試和對比,包括存儲服務(wù)效率和穩(wěn)定性。為保證實驗結(jié)果可靠,每組實驗重復(fù)10次,去掉最大和最小的2個值后取平均值。
在本測試中:前端業(yè)務(wù)請求為4 KB隨機寫,I/O深度 64;后端業(yè)務(wù)請求為數(shù)據(jù)重分布,遷移量約22 GB。優(yōu)化前采用靜態(tài)限速的技術(shù),優(yōu)化后采用本文自適應(yīng)的任務(wù)調(diào)度技術(shù)。
如圖 6(a)及圖 6(b)所示,在優(yōu)化前,當后端任務(wù)來臨時,前端任務(wù)的IOPS和時延受到顯著的干擾;在優(yōu)化后,后端業(yè)務(wù)盡量少地參與資源競爭,前端任務(wù)的IOPS和時延與無后端任務(wù)的執(zhí)行結(jié)果十分接近。與優(yōu)化前相比,本文的調(diào)度技術(shù)在IOPS上提升38%,在時延上降低39%,達到了優(yōu)先滿足前端任務(wù)的目標。如圖 6(c)所示,與優(yōu)化前相比,優(yōu)化后的技術(shù)在前端業(yè)務(wù)繁忙時,后端業(yè)務(wù)的執(zhí)行時間優(yōu)化后顯著拉長,避免參與資源競爭。在前端業(yè)務(wù)空閑時,后端業(yè)務(wù)能做到全速完成。達到了優(yōu)先滿足前端任務(wù)的目標。
圖6 任務(wù)調(diào)度測試結(jié)果
為了體現(xiàn)緩存的效果,采用隨機讀寫來測試,主要由兩個指標來衡量:4 KB粒度的隨機讀寫下的IOPS以及1 MB粒度的隨機讀寫下的吞吐量。另測試了真實工作負載產(chǎn)生的I/O trace情況下的系統(tǒng)I/O性能。優(yōu)化前采用ARC算法,優(yōu)化后采用本文提出的緩存替換算法,SSD緩存大小為40 GB。
隨機負載時的測試結(jié)果如圖7所示,4 KB隨機讀寫的 IOPS分別提升 68%、69%,播放真實trace時測試結(jié)果見表 8,4種 trace提升 11%~59%,平均提升35%。
采用商用云計算的真實業(yè)務(wù)場景——國內(nèi)某通信運營商西南區(qū)數(shù)據(jù)中心進行測試。該測試案例包括3個前端應(yīng)用,分別為視頻播放、云桌面辦公、大型游戲,2個后端任務(wù),分別為熱點數(shù)據(jù)遷移、數(shù)據(jù)庫負載均衡。在測試案例進行到22 s時觸發(fā)后端業(yè)務(wù),從而體現(xiàn)突發(fā)性的資源競爭對于前端業(yè)務(wù)的穩(wěn)定性影響。在運行相同測試程序時,對比優(yōu)化前和優(yōu)化后的ZTE-DBSS在存儲服務(wù)質(zhì)量上的表現(xiàn)。存儲服務(wù)效率的評價指標為:在前后端業(yè)務(wù)同時執(zhí)行期間,前端業(yè)務(wù)的持續(xù)穩(wěn)定的 IOPS平均值。存儲服務(wù)穩(wěn)定性的評價指標為:突發(fā)性的資源競爭對于前端業(yè)務(wù)IOPS的影響程度。
圖7 緩存替換測試結(jié)果
圖8 存儲服務(wù)質(zhì)量的整體測試結(jié)果——優(yōu)化前后各業(yè)務(wù)IOPS
如圖8所示,優(yōu)化前,盡管各前端業(yè)務(wù)對性能的需求不同,但前端業(yè)務(wù)受到相同的限速,對性能需求較小的3號業(yè)務(wù)與性能需求較大的1號業(yè)務(wù)的IOPS接近,這是十分不合理的;在后端業(yè)務(wù)對資源競爭時,前端業(yè)務(wù)的 I/O波動較大,且前后端受到相同的限速,本應(yīng)為前端業(yè)務(wù)讓路的后端業(yè)務(wù)與各前端任務(wù)無差別地共享資源,這同樣是不合理的。優(yōu)化后,雖然前后端業(yè)務(wù)性能總需求超過了存儲資源的總體 I/O服務(wù)能力,但所有的應(yīng)用都按照一定比例進行分享,該種結(jié)果對于各業(yè)務(wù)而言是公平的;在后端業(yè)務(wù)對資源競爭時,前端業(yè)務(wù)的IOPS波動較小,后端業(yè)務(wù)盡量少干擾。優(yōu)化前后的對比結(jié)論:從服務(wù)效率來看,在后端業(yè)務(wù)競爭資源時,優(yōu)化前的前端業(yè)務(wù)平均IOPS僅為 400,而優(yōu)化后達到平均710,因此前端業(yè)務(wù)服務(wù)效率平均提升77.81%;從服務(wù)穩(wěn)定性來看,在后端業(yè)務(wù)競爭資源時,優(yōu)化前的前端業(yè)務(wù)IOPS下降率平均高達63.31%,而優(yōu)化后僅平均下降 5.98%,因此前端業(yè)務(wù)穩(wěn)定性平均提升57.33%。
如圖9所示,在相同的測試環(huán)境、測試用例下,本文測試了cephv10.2.z在服務(wù)質(zhì)量上的表現(xiàn)??梢钥吹?,Ceph與優(yōu)化前的ZTE-DBSS表現(xiàn)相近,前端業(yè)務(wù)性能不佳,且在受到后端業(yè)務(wù)干擾時前端業(yè)務(wù)性能平均下降達到 56%。優(yōu)化后的ZTE-DBSS的性能明顯高于Ceph,受到前端業(yè)務(wù)干擾明顯小于Ceph。
圖9 與Ceph對比存儲服務(wù)質(zhì)量
本文針對現(xiàn)有的分布式塊存儲系統(tǒng)對服務(wù)質(zhì)量的控制與支持不足的缺陷,提出一種自適應(yīng)的任務(wù)調(diào)度技術(shù),解決了前后端任務(wù)的資源平衡問題,與靜態(tài)限速技術(shù)相比性能提升 38%。提出一種多級熱度的緩存替換技術(shù),解決了前端任務(wù)間的資源平衡問題,與ARC算法相比性能提升 35%。并在中興分布式塊存儲系統(tǒng)中進行了工程實現(xiàn)和商用測試。測試結(jié)果表明,在典型的云計算應(yīng)用場景中,相較于優(yōu)化前,存儲服務(wù)效率平均提升 77.81%,存儲服務(wù)穩(wěn)定性平均提升 57.33%。ZTE-DBSS滿足了用戶對分布式塊存儲服務(wù)質(zhì)量的期望,滿足了對云計算產(chǎn)品的核心期望。
本文提出的任務(wù)調(diào)度技術(shù)和緩存替換技術(shù)均是在系統(tǒng)正常情況下的服務(wù)質(zhì)量控制手段,然而,在異常情況下的服務(wù)質(zhì)量是下一階段重點關(guān)注的內(nèi)容,如壞盤預(yù)測、新型糾刪碼等內(nèi)容。壞盤預(yù)測是一種運用人工智能的技術(shù)手段,對存儲器件的健康狀況進行預(yù)測,從而能夠在系統(tǒng)空閑時提前遷移數(shù)據(jù),避免突發(fā)性的異常壞盤導(dǎo)致的服務(wù)質(zhì)量降級。糾刪碼是一種數(shù)據(jù)可靠性保障技術(shù),在數(shù)據(jù)故障發(fā)生后,通過一定的算法能夠?qū)G失的數(shù)據(jù)找回,但是會引起大量的計算開銷,嚴重影響存儲服務(wù)質(zhì)量,迫切地需要提出新型糾刪碼算法,在保障可靠性的前提下降低計算量。
參考文獻:
[1] 孫健, 賈曉菁.Google云計算平臺的技術(shù)架構(gòu)及對其成本的影響研究[J].電信科學, 2010, 26(1): 38-44.SUN J, JIA X J.A study of the influence of technical architecture on the total cost of google cloud computing platform[J].Telecommunications Science, 2010, 26(1): 38-44.
[2] 李丹, 劉方明, 郭得科, 等.軟件定義的云數(shù)據(jù)中心網(wǎng)絡(luò)基礎(chǔ)理論與關(guān)鍵技術(shù)[J].電信科學, 2014, 30(6): 48-59.LI D, LIU F M, GUO D K, et al.Fundamental theory and key technology of software defined cloud data center network [J].Telecommunications Science, 2014, 30(6): 48-59.
[3] 樊自甫, 伍春玲, 王金紅.基于SDN架構(gòu)的數(shù)據(jù)中心網(wǎng)絡(luò)路由算法需求分析[J].電信科學, 2015, 31(2): 42-51.FAN Z F, WU C L, WANG J H.Requirements analysis of data center network routing algorithm based on SDN architecture [J].Telecommunications Science, 2015, 31(2): 42-51.
[4] 孫振正, 龔靖, 段勇, 等.面向下一代數(shù)據(jù)中心的軟件定義存儲技術(shù)研究[J].電信科學, 2014, 30(1): 39-43.SUN Z Z, GONG J, DUAN Y, et al.Research on software defined storage technology for the next-generation data center[J].Telecommunications Science, 2014, 30(1): 39-43.
[5] 楊洪章, 羅圣美, 施景超,等.面向移動通信大數(shù)據(jù)的云存儲系統(tǒng)優(yōu)化[J].計算機應(yīng)用, 2017, 37(a01): 27-33.YANG H Z, LUO S M, SHI J C, et al.Cloud storage system optimizations for telecom big data[J].Journal of Computer Applications, 2017, 37(a01): 27-33.
[6] 張泉.面向云數(shù)據(jù)中心的存儲服務(wù)質(zhì)量技術(shù)研究[D].武漢:華中科技大學, 2014.ZHANG Q.Research on storage quality of service for cloud data centers[D].Wuhan: Huazhong University of Science and Technology, 2014
[7] 賈博文,張文軍,李小勇.面向虛擬機的分布式塊存儲系統(tǒng)設(shè)計及實現(xiàn)[J].微型電腦應(yīng)用, 2015(3): 32-37.JIA B W, ZHANG W J, LI X Y.Design and implementation of a distributed block storage system for virtual machines in the IaaS cloud[J].Microcomputer Applications, 2015(3): 32-37.
[8] WEIL S A, BRANDT S A, MILLER E L, et al.Ceph: a scalable,high-performance distributed file system[C]//The 7th symposium on Operating systems design and implementation, No-vember 6-8, 2006, Seattle, Washington.[S.l.]: USENIX Association, 2006: 307-320.
[9] NA W W, MENG X X, SI C, et al.A novel network RAID architecture with out-of-band virtualization and redundant management[C]//The 14th IEEE International Conference on Parallel and Distributed Systems, December 8-10, 2008, Melbourne,Victoria, Australia.[S.l.:s.n.], 2008: 105-112.
[10] DIKAIAKOS M D, KATSAROS D, MEHRA P, et al.Cloud Computing: distributed internet computing for IT and scientific research[J].IEEE Internet Computing, 2009, 13(5):10-13.
[11] 馮盼盼, 盧明樊.一種分布式塊存儲系統(tǒng)及其存儲質(zhì)量控制方法及裝置: CN201510544239.X [P].2015-08-28.FENG P P, LU M F.A distributed block storage system and its storage quality control method and device: CN201510544239.X[P].2015-08-28.
[12] HUANG L.Stonehenge: a high-performance virtualized IP storage cluster with QoS guarantees[M].New York: ACM Press,2003.
[13] 劉飛, 蔣德鈞, 張歡, 等.異構(gòu)存儲感知的 Ceph存儲系統(tǒng)數(shù)據(jù)放置方法[J].計算機科學, 2017, 44(6): 17-22.LIU F, JIANG D J, ZHANG H, et al.Heterogeneous storage aware data placement of ceph storage system computer science[J].Computer Science, 2017, 44(6):17-22.
[14] LEE D, CHOI J, KIM J H, et al.LRFU: a spectrum of policies that subsumes the least recently used and least frequently used policies[J].IEEE Transactions on Computers, 2001, 50(12): 1352-1361.
[15] JIANG S, ZHANG X.LIRS: an efficient low inter-reference recency set replacement policy to improve buffer cache performance[J].ACM SIGMETRICS Performance Evaluation Review,2002, 30(1): 31-42.
[16] MEGIDDO N, MODHA D S.ARC: a self-tuning, low overhead replacement cache[C]// The 2003 USENIX Conference on File and Storage Technologies, March 31 - April 2, 2003, San Francisco,California, USA.[S.l.]: USENIX Association, 2003: 9.
[17] 顧榮.大數(shù)據(jù)分布式存儲技術(shù)與系統(tǒng)研究[D].南京: 南京大學,2016.GU R.Research on techniques and systems for big data processing[D].Nanjing: Nanjing University, 2016.
[18] 屠要峰.高性能、高可靠中興超融合架構(gòu)關(guān)鍵技術(shù)解析[J].通信世界, 2017(9): 55-56 TU Y F.Key technical analysis of high performance and high reliability ZTE hyper-convergence architecture[J].Communica tions World, 2017(9): 55-56