賈德明,朱明勝,古 妍
(山東鯨鯊信息技術(shù)有限公司,山東 泰安 271000)
隨著5G、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等信息技術(shù)的發(fā)展,數(shù)據(jù)呈爆炸式增長(zhǎng),對(duì)存儲(chǔ)系統(tǒng)的海量數(shù)據(jù)存儲(chǔ)能力提出了高性能、多樣化的訪問(wèn)要求[1]。針對(duì)數(shù)據(jù)訪問(wèn)局部熱點(diǎn)的特性,通常將高頻訪問(wèn)的數(shù)據(jù)緩存在高速存儲(chǔ)介質(zhì)上,以加快數(shù)據(jù)讀寫(xiě)速度[2]。緩存控制策略是緩存系統(tǒng)的核心,決定了緩存空間利用的有效性[3]。傳統(tǒng)的緩存策略都是基于訪問(wèn)時(shí)間或訪問(wèn)頻率進(jìn)行設(shè)計(jì)[4-5]。提高緩存命中率可以提高應(yīng)用程序的運(yùn)行速度,這是提高緩存性能的關(guān)鍵[4]?;谠L問(wèn)時(shí)間僅考慮了時(shí)間局部性,忽略歷史上的高頻訪問(wèn)數(shù)據(jù);基于訪問(wèn)頻率僅考慮高頻訪問(wèn)數(shù)據(jù),忽略最近訪問(wèn)的數(shù)據(jù)可能成為訪問(wèn)熱點(diǎn)[6]。兩種策略均不能有效滿足現(xiàn)有熱點(diǎn)數(shù)據(jù)緩存需求。
緩存數(shù)據(jù)生命周期控制的核心是根據(jù)對(duì)數(shù)據(jù)價(jià)值的精準(zhǔn)判斷,然后根據(jù)數(shù)據(jù)價(jià)值將數(shù)據(jù)分配到對(duì)應(yīng)的、性能合適的存儲(chǔ)設(shè)備上[7]。據(jù)研究結(jié)果表明,存儲(chǔ)系統(tǒng)中的數(shù)據(jù)70%~80%是靜止不動(dòng)的,數(shù)據(jù)寫(xiě)入后很少被訪問(wèn)。經(jīng)常訪問(wèn)的熱點(diǎn)數(shù)據(jù)占20%~30%[8]。其中間歇性熱點(diǎn)數(shù)據(jù)的假性降溫表現(xiàn),可能會(huì)從高速緩存介質(zhì)中移除,一旦被移除,數(shù)據(jù)塊可能因?yàn)榫彺嬷袝簳r(shí)性高頻訪問(wèn)數(shù)據(jù)而很難再次遷入緩存層,而導(dǎo)致后面訪問(wèn)持續(xù)性延遲過(guò)高,影響上層應(yīng)用運(yùn)行效率。
在較為復(fù)雜的數(shù)據(jù)訪問(wèn)場(chǎng)景中,傳統(tǒng)基于訪問(wèn)時(shí)間和基于訪問(wèn)頻次的策略對(duì)于熱點(diǎn)數(shù)據(jù)的預(yù)測(cè)略顯不足,如圖1所示。
圖1 訪問(wèn)頻次訪問(wèn)時(shí)間示意圖
假設(shè)存在緩存塊D1、D2、D3,基于最近訪問(wèn)時(shí)間排序,優(yōu)先級(jí)為D2,D3,D1;基于訪問(wèn)頻率排序,優(yōu)先級(jí)為D1,D2,D3;在基于最近訪問(wèn)時(shí)間的策略中,D1 將被淘汰,但D1會(huì)頻繁訪問(wèn)數(shù)據(jù),只是最近一段時(shí)間沒(méi)有被訪問(wèn),因此D3 替換將來(lái)可能被訪問(wèn)的D1;在基于訪問(wèn)頻率的策略中,未考慮訪問(wèn)頻率的動(dòng)態(tài)性,導(dǎo)致D1 和D2 的訪問(wèn)頻率相同,事實(shí)上最近訪問(wèn)的高頻數(shù)據(jù)D2 再次被訪問(wèn)的可能性更大,不符合實(shí)際訪問(wèn)規(guī)律[9]。CVSL策略綜合考慮最近訪問(wèn)時(shí)間和訪問(wèn)頻率,優(yōu)先級(jí)排序?yàn)镈2 >D1 >D3,能夠反映數(shù)據(jù)訪問(wèn)頻率隨時(shí)間變化的變化,更能適應(yīng)熱點(diǎn)數(shù)據(jù)的訪問(wèn)特點(diǎn)。因此CVSL策略克服了基于最近訪問(wèn)時(shí)間和基于訪問(wèn)頻率緩存策略的不足。
自動(dòng)分層的數(shù)據(jù)遷移是定時(shí)執(zhí)行的,短時(shí)間內(nèi)無(wú)法快速響應(yīng)熱數(shù)據(jù)的變化[10-13]。例如,當(dāng)出現(xiàn)新的熱數(shù)據(jù)時(shí),緩存在第一次訪問(wèn)時(shí)就會(huì)將其調(diào)入SSD,接下來(lái)的讀請(qǐng)求都能直接從SSD訪問(wèn);而分層架構(gòu),必須等待一段時(shí)間(數(shù)據(jù)遷移涉及不同層之間空間交換,必須后臺(tái)執(zhí)行),才會(huì)將新的熱數(shù)據(jù)遷移到SSD,那么在這段時(shí)間內(nèi),是無(wú)法享受到SSD的高性能的,甚至在極端的情況下,可能該數(shù)據(jù)被遷移到SSD后,熱度已過(guò)。另一方面,分層的優(yōu)點(diǎn)是其有足夠的時(shí)間更準(zhǔn)確地識(shí)別冷熱數(shù)據(jù)(識(shí)別順序IO)。因此,緩存適合負(fù)載變化迅速的場(chǎng)景;分層適合靜態(tài)的負(fù)載(冷熱數(shù)據(jù)很少變化)。
此外,固態(tài)硬盤(pán)由于寫(xiě)前擦的硬件特性,非對(duì)齊訪問(wèn)會(huì)導(dǎo)致寫(xiě)放大,不能充分發(fā)揮固態(tài)盤(pán)性能優(yōu)勢(shì),而且降低了SSD使用壽命[14-19]。
基于上述問(wèn)題,研究設(shè)計(jì)了一種基于虛擬存儲(chǔ)層的緩存控制策略,該策略引入了虛擬存儲(chǔ)層的概念,綜合緩存技術(shù)和自動(dòng)分層技術(shù)的優(yōu)缺點(diǎn),CVSL在結(jié)合訪問(wèn)時(shí)間策略和訪問(wèn)頻率策略基礎(chǔ)之上,引入虛擬存儲(chǔ)層概念,有效甄別數(shù)據(jù)訪問(wèn)熱度,避免因間歇性訪問(wèn)的假性冷數(shù)據(jù)被移除緩存,提高整體緩存命中率。
結(jié)合分層存儲(chǔ)中熱數(shù)據(jù)、溫?cái)?shù)據(jù)、冷數(shù)據(jù)的概念,虛擬存儲(chǔ)層承載訪問(wèn)頻次的統(tǒng)計(jì),充分考慮間歇性局部熱點(diǎn)數(shù)據(jù)的訪問(wèn)特點(diǎn),盡量避免熱點(diǎn)數(shù)據(jù)因暫時(shí)冷卻被遷入低速存儲(chǔ)介質(zhì),將熱數(shù)據(jù)直接降級(jí)為冷數(shù)據(jù),同時(shí)對(duì)順序?qū)慖O不緩存,再?zèng)]有增加硬件成本的情況下,提高了緩存命中率,充分發(fā)揮固態(tài)硬盤(pán)優(yōu)勢(shì),提升了綜合訪問(wèn)性能。
虛擬存儲(chǔ)層是通過(guò)軟件劃分出的一個(gè)虛擬存儲(chǔ)域,邏輯上是位于高速存儲(chǔ)介質(zhì)和低速存儲(chǔ)介質(zhì)之間,存儲(chǔ)溫?cái)?shù)據(jù)。對(duì)于遷入虛擬存儲(chǔ)層的數(shù)據(jù)塊,僅緩存其塊描述信息,對(duì)應(yīng)數(shù)據(jù)實(shí)際存儲(chǔ)在低速介質(zhì)中。虛擬存儲(chǔ)層不存儲(chǔ)實(shí)際數(shù)據(jù),數(shù)據(jù)會(huì)直接存儲(chǔ)在低速存儲(chǔ)介質(zhì),但在虛擬存儲(chǔ)層中保留數(shù)據(jù)塊的訪問(wèn)時(shí)間,訪問(wèn)頻次等信息。在虛擬存儲(chǔ)層中的數(shù)據(jù)會(huì)根據(jù)訪問(wèn)熱度決定數(shù)據(jù)是重新遷入高速存儲(chǔ)介質(zhì)還是遷入低速存儲(chǔ)介質(zhì)。其中,數(shù)據(jù)塊在虛擬存儲(chǔ)層和低速存儲(chǔ)介質(zhì)之間流動(dòng),只需要移除該緩存塊的塊描述信息據(jù)即可,無(wú)須數(shù)據(jù)遷移,不會(huì)增加低速存儲(chǔ)介質(zhì)額外的IO負(fù)擔(dān)。
CVSL緩存控制邏輯架構(gòu)如圖2所示。
圖2 CVSL緩存控制邏輯架構(gòu)
數(shù)據(jù)物理從高速存儲(chǔ)介質(zhì)(SSD)和低速存儲(chǔ)介質(zhì)(HDD)之間遷移,邏輯上從高速存儲(chǔ)介質(zhì)、虛擬存儲(chǔ)層、低速存儲(chǔ)介質(zhì)之間遷移。溫?cái)?shù)據(jù)和冷數(shù)據(jù)均存放在低速存儲(chǔ)介質(zhì)HDD上。
CVSL緩存系統(tǒng)由以下模塊組成,如圖3所示。
圖3 CVSL模塊組成
1)緩存控制模塊,主要負(fù)責(zé)緩存數(shù)據(jù)的基本控制功能,按照SSD物理特性設(shè)計(jì)的,根據(jù)SSD擦除塊以chunk為最小單位(默認(rèn)512K)分配SSD空間,使用B+樹(shù)、最近最少使用(LRU,least recently used)鏈表、最不經(jīng)常使用(LFU,least frequently used)鏈表混合方法來(lái)跟蹤緩存數(shù)據(jù),緩存數(shù)據(jù)可以是chunk上的任意一個(gè)扇區(qū)。最大程度上減少隨機(jī)寫(xiě)的代價(jià)。定期喚醒或者達(dá)到空間閾值上限回寫(xiě)緩存臟數(shù)據(jù)。
緩存頁(yè)控制根據(jù)SSD擦除塊大小將SSD空間分成若干個(gè)chunk。緩存數(shù)據(jù)與元數(shù)據(jù)都是按chunk來(lái)組織的。
(1)分配器:COW(copyonwrite)式的空間分配,分配的單元是chunk,數(shù)據(jù)在chunk內(nèi)部全部都是追加寫(xiě)入的,不會(huì)出現(xiàn)覆蓋寫(xiě),當(dāng)有覆蓋寫(xiě)時(shí),會(huì)重定向到新的數(shù)據(jù)塊。
(2)元數(shù)據(jù)部分:B+樹(shù)節(jié)點(diǎn)數(shù)據(jù)是最主要的元數(shù)據(jù),也是COW式分配,對(duì)于B+樹(shù)節(jié)點(diǎn)的修改,需要先分配新的節(jié)點(diǎn),將新數(shù)據(jù)寫(xiě)入,再丟棄老的節(jié)點(diǎn)。
2)邏輯遷移模塊,主要負(fù)責(zé)根據(jù)數(shù)據(jù)塊的訪問(wèn)時(shí)間訪問(wèn)次數(shù)信息進(jìn)行熱度統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果在虛擬存儲(chǔ)層和數(shù)據(jù)存儲(chǔ)層之間進(jìn)行邏輯調(diào)度。
3)虛擬存儲(chǔ)模塊,主要負(fù)責(zé)維護(hù)遷入虛擬存儲(chǔ)層數(shù)據(jù)塊的熱度信息以及與數(shù)據(jù)存儲(chǔ)層的映射關(guān)系。邏輯上使用page(4k)為最小單位管理數(shù)據(jù)塊。虛擬存儲(chǔ)層在內(nèi)存中開(kāi)辟一定空間,暫存待遷入數(shù)據(jù)塊,多個(gè)數(shù)據(jù)塊合并后按照chunk對(duì)齊遷入,降低SSD寫(xiě)入次數(shù),盡量避免數(shù)據(jù)抖動(dòng)影響性能。
4)數(shù)據(jù)存儲(chǔ)模塊,主要負(fù)責(zé)實(shí)際存儲(chǔ)所有的數(shù)據(jù)塊,包括虛擬存儲(chǔ)層的數(shù)據(jù)塊,因?yàn)閿?shù)據(jù)存儲(chǔ)層一般容量較大,所以采用1 M為最小單位管理數(shù)據(jù)塊,后面可設(shè)計(jì)為可變模式,支持1~64 M可調(diào)節(jié)。
數(shù)據(jù)存儲(chǔ)格式如圖4所示。
圖4 數(shù)據(jù)存儲(chǔ)格式
相比傳統(tǒng)策略,CVSL綜合考慮了訪問(wèn)時(shí)間策略和訪問(wèn)頻率策略,兼顧了SSD的物理特點(diǎn),并且緩存塊在移除緩存層時(shí),其訪問(wèn)時(shí)間訪問(wèn)頻次等信息仍維護(hù)在虛擬存儲(chǔ)層和數(shù)據(jù)存儲(chǔ)層中。數(shù)據(jù)熱度信息在數(shù)據(jù)塊整個(gè)生命周期中均有效,有助于緩存層、虛擬存儲(chǔ)層和數(shù)據(jù)存儲(chǔ)層進(jìn)行熱點(diǎn)數(shù)據(jù)追蹤。
CVSL通過(guò)緩存頁(yè)管理將熱點(diǎn)數(shù)據(jù)存儲(chǔ)在高速介質(zhì)上,虛擬存儲(chǔ)層位于IO緩存層和數(shù)據(jù)存儲(chǔ)層之間,將溫?cái)?shù)據(jù)和冷數(shù)據(jù)邏輯隔離,防止冷熱數(shù)據(jù)頻繁遷入遷出造成抖動(dòng),造成性能波動(dòng),提高熱點(diǎn)數(shù)據(jù)命中率。
緩存控制模塊采用B+樹(shù)索引管理HDD和緩存數(shù)據(jù)的映射關(guān)系,建立LRU和LFU兩個(gè)鏈表,根據(jù)訪問(wèn)時(shí)間和訪問(wèn)次數(shù)控制緩存塊的遷入遷出。
當(dāng)有上層應(yīng)用訪問(wèn)未在緩存中,但對(duì)應(yīng)block在虛擬存儲(chǔ)層時(shí),判定該緩存頁(yè)為熱點(diǎn)數(shù)據(jù),調(diào)入緩存層,根據(jù)LRU和LFU鏈表移除最長(zhǎng)時(shí)間沒(méi)有使用以及最近最不常用的緩存頁(yè)。
當(dāng)有上層應(yīng)用訪問(wèn)為在緩存中,且對(duì)應(yīng)block未在虛擬存儲(chǔ)層時(shí),暫不將數(shù)據(jù)塊遷入緩存層。
被移除的緩存頁(yè)由調(diào)度模塊管理,根據(jù)其數(shù)據(jù)熱度遷入虛擬存儲(chǔ)層,或者數(shù)據(jù)存儲(chǔ)層。如果緩存頁(yè)為非臟數(shù)據(jù),該過(guò)程為邏輯分層,僅涉及元數(shù)據(jù)修改,不會(huì)對(duì)機(jī)械盤(pán)進(jìn)行讀寫(xiě)操作。
緩存控制模塊還承載著臟數(shù)據(jù)回寫(xiě)的功能。當(dāng)緩存層中臟數(shù)據(jù)達(dá)到一定閾值會(huì)主動(dòng)觸發(fā)回寫(xiě)線程進(jìn)行臟數(shù)據(jù)刷寫(xiě);內(nèi)置定時(shí)器會(huì)觸發(fā)回寫(xiě)線,定時(shí)掃描臟數(shù)據(jù)塊進(jìn)行臟數(shù)據(jù)回寫(xiě)。
臟數(shù)據(jù)回寫(xiě)時(shí)不會(huì)更新數(shù)據(jù)塊訪問(wèn)次數(shù)、訪問(wèn)時(shí)間等信息,直接寫(xiě)入數(shù)據(jù)存儲(chǔ)層,防止內(nèi)部數(shù)據(jù)刷寫(xiě)影響虛擬存儲(chǔ)層的數(shù)據(jù)熱度評(píng)估,造成緩存數(shù)據(jù)塊熱度出現(xiàn)偏差;
數(shù)據(jù)在寫(xiě)入數(shù)據(jù)存儲(chǔ)時(shí),合并排序?qū)懭?,充分利用機(jī)械盤(pán)的特性,提高數(shù)據(jù)寫(xiě)入效率。
上層請(qǐng)求到達(dá)時(shí),如果是順序IO,則不進(jìn)行緩存,直接繞過(guò)緩存控制層;如果數(shù)據(jù)塊在SSD緩存層,則直接讀寫(xiě)訪問(wèn)并向上返回請(qǐng)求結(jié)果;如果緩存未命中,則訪問(wèn)虛擬存儲(chǔ)層。
如果數(shù)據(jù)在虛擬存儲(chǔ)層,則根據(jù)映射關(guān)系在數(shù)據(jù)存儲(chǔ)層訪問(wèn)數(shù)據(jù),向上返回請(qǐng)求結(jié)果,并且將該數(shù)據(jù)塊調(diào)入緩存層(此處會(huì)嘗試多個(gè)緩存頁(yè)合并調(diào)入緩存層,減少SSD寫(xiě)入次數(shù))。
如果未在虛擬存儲(chǔ)層,則繼續(xù)向數(shù)據(jù)存儲(chǔ)層請(qǐng)求,未再虛擬存儲(chǔ)層的數(shù)據(jù)塊只更新訪問(wèn)次數(shù)信息,不立即調(diào)入緩存層。
訪問(wèn)完畢后,更新內(nèi)存中對(duì)應(yīng)block的訪問(wèn)時(shí)間、讀寫(xiě)次數(shù)等信息。
由于虛擬存儲(chǔ)層僅存儲(chǔ)緩存塊的塊描述信息,使用較小的空間即可存儲(chǔ)較大范圍的塊描述信息,即可在較大范圍內(nèi)篩選間歇性熱點(diǎn)數(shù)據(jù),有效提高了此類(lèi)數(shù)據(jù)的緩存命中率。
IO緩存層最大程度上保護(hù)數(shù)據(jù),在系統(tǒng)異常關(guān)機(jī)時(shí)數(shù)據(jù)仍然是可靠的。因?yàn)橹挥性跀?shù)據(jù)完全寫(xiě)回存儲(chǔ)設(shè)備才確認(rèn)寫(xiě)成功。SSD的特點(diǎn)就是隨機(jī)IO性能很高,而對(duì)于順序IO提升卻并不大,所以會(huì)檢測(cè)順序IO并透?jìng)鹘o數(shù)據(jù)存儲(chǔ)層。
訪問(wèn)流程如圖5所示。
圖5 應(yīng)用訪問(wèn)流程圖
熱度統(tǒng)計(jì)線程會(huì)周期性遍歷設(shè)備所有的block,block的熱度由4個(gè)參數(shù)衡量,包括最近寫(xiě)時(shí)間、被寫(xiě)次數(shù)、最近讀時(shí)間、被讀次數(shù)。
邏輯上升的block滿足:1)自上次統(tǒng)計(jì)以來(lái),被寫(xiě)次數(shù)大于Whicount;或者,2)自上次統(tǒng)計(jì)以來(lái),被讀次數(shù)大于Rhicount。滿足條件的block按被訪問(wèn)時(shí)間和被訪問(wèn)次數(shù)降序排列,熱數(shù)據(jù)塊在前,形成邏輯上升數(shù)據(jù)塊鏈表Queueup。
邏輯下降的block滿足:1)自上次統(tǒng)計(jì)以來(lái)被寫(xiě)次數(shù)小于Wlowcount;并且,2)自上次統(tǒng)計(jì)以來(lái)被讀次數(shù)小于Rlowcount。滿足條件的block按被訪問(wèn)時(shí)間和被訪問(wèn)次數(shù)升序排列,冷數(shù)據(jù)塊在前,生成邏輯下降數(shù)據(jù)鏈表Queuedown。
Whicount為寫(xiě)次數(shù)高水位線,Rhicount為讀次數(shù)高水位線,Wlowcount為寫(xiě)次數(shù)低水位線,Rlowcount,為讀次數(shù)低水位線,可以根據(jù)實(shí)際業(yè)務(wù)調(diào)整,注意需滿足Whicount≥Wlowcount,Rhicount≥Rlowcount,默認(rèn)Whicount=Wlowcount=Rhicount=Rlowcount=AVGrwcount(平均讀寫(xiě)次數(shù))
熱度統(tǒng)計(jì)完畢后,熱度統(tǒng)計(jì)線程會(huì)清除數(shù)據(jù)塊中的訪問(wèn)時(shí)間、讀寫(xiě)次數(shù)信息。熱度統(tǒng)計(jì)流程如圖6所示。
圖6 熱度統(tǒng)計(jì)流程圖
在確定了需要向上或者向下遷移的block后,數(shù)據(jù)遷移線程將待遷移的block逐個(gè)遷移。在遷移每個(gè)block前會(huì)判斷是否停止此次遷移任務(wù)。停止的條件有:1)遷移線程工作時(shí)間限制,如果超時(shí)就中止這次遷移;2)檢查目前虛擬存儲(chǔ)層的邏輯利用率,如果利用率為大于95%,則只允許向下遷移任務(wù);如果利用率小于60%,則只允許執(zhí)行向上遷移任務(wù);如果利用率大于60%小于90%時(shí),則同時(shí)允許執(zhí)行向上遷移和向下遷移任務(wù)。
該數(shù)據(jù)遷移不會(huì)對(duì)數(shù)據(jù)塊進(jìn)行讀寫(xiě),僅修改虛擬存儲(chǔ)層的邏輯關(guān)系,不會(huì)對(duì)機(jī)械盤(pán)造成額外的性能負(fù)擔(dān)。由于緩存層管理單位為page=4 k,數(shù)據(jù)存儲(chǔ)層管理單位為block=1 M。所以當(dāng)命中虛擬存儲(chǔ)層block時(shí),僅將其訪問(wèn)的page調(diào)入緩存層,不需要加載整個(gè)block。
邏輯遷移流程如圖7所示。
圖7 數(shù)據(jù)邏輯遷移流程圖
由于寫(xiě)入數(shù)據(jù)存在熱數(shù)據(jù):溫?cái)?shù)據(jù):冷數(shù)據(jù)=15%:5%:80%的特點(diǎn),建議SSD:HDD容量比為(15+5)%:80%。其虛擬存儲(chǔ)層block總數(shù)計(jì)算公式如下:
Cblock=Vhdd×(15%+5%)÷Sblock
(1)
式中,Cblock代表虛擬存儲(chǔ)層管理的block總數(shù),Vhdd代表磁盤(pán)容量(單位MiB),Sblock代表block大小(單位MiB)。
為了驗(yàn)證CVSL中基于虛擬存儲(chǔ)層設(shè)計(jì)的緩存管理和動(dòng)態(tài)遷移策略的有效性,本節(jié)采用具有代表性的Linux開(kāi)源緩存加速軟件dmcache和CVSL模塊進(jìn)行了隨機(jī)IO性能對(duì)比測(cè)試實(shí)驗(yàn)。
本實(shí)驗(yàn)基于FT2000+平臺(tái)和Linux操作系統(tǒng),dmcache模塊(對(duì)應(yīng)內(nèi)核版本4.19),50GSSD+1片1TSATA機(jī)械硬盤(pán)進(jìn)行測(cè)試。測(cè)試工具采用fio-3.28,direct訪問(wèn),排除服務(wù)器內(nèi)存影響。
首先使用fio分別測(cè)試SSD和HDD的4K隨機(jī)讀寫(xiě)性能,測(cè)試5 min,確保SSD和HDD機(jī)械盤(pán)性能表現(xiàn)正常。
性能測(cè)試流程具體如下:
步驟一:SSD全盤(pán)trim后,使用dmcache模塊將SSD綁定為HDD的緩存設(shè)備。
步驟二:使用fio進(jìn)行隨機(jī)4 K隨機(jī)讀寫(xiě)預(yù)熱模擬應(yīng)用訪問(wèn),讀寫(xiě)比例為4∶6,預(yù)熱時(shí)間為48 h。
步驟三:預(yù)熱完畢后,使用fio分別進(jìn)行4 K隨機(jī)IO讀寫(xiě)測(cè)試,測(cè)試5分鐘,記錄測(cè)試結(jié)果。
步驟四:重復(fù)步驟二和步驟三3次,并記錄測(cè)試結(jié)果。
CVSL模塊測(cè)試方法同步驟一~步驟四。
1)4 k隨機(jī)寫(xiě)性能測(cè)試結(jié)果對(duì)比,如圖8所示。
圖8 四次4 k隨機(jī)寫(xiě)測(cè)試結(jié)果
dmcache的4次隨機(jī)寫(xiě)測(cè)試結(jié)果分別為781,712,799,752,平均值為761;CVSL的4次隨機(jī)寫(xiě)測(cè)試結(jié)果分別為840,835,846,841,平均值為840,相對(duì)dmcache提升約10.5%。
2)4 k隨機(jī)讀性能測(cè)試結(jié)果對(duì)比,如圖9所示。
圖9 四次4 k隨機(jī)讀測(cè)試結(jié)果
dmcache的4次隨機(jī)讀測(cè)試結(jié)果分別為587,553,580,554,平均值為569;CVSL的4次隨機(jī)讀測(cè)試結(jié)果分別為620,621,612,627,平均值為620,相對(duì)dmcache提升約9%。
從圖8和圖9可以看出,CVSL相比dmcache模塊,隨機(jī)讀寫(xiě)性能均有明顯提高,緩存加速性能提高了9%~10%。而且CVSL在進(jìn)行了4次48小時(shí)的模擬應(yīng)用訪問(wèn)后,4 k隨機(jī)寫(xiě)IOPS穩(wěn)定在840左右,4 k隨機(jī)讀IOPS穩(wěn)定在620左右,性能值比較平穩(wěn)。從實(shí)驗(yàn)結(jié)果分析,CVSL在未增加硬件成本的情況下,有效的提高了機(jī)械硬盤(pán)的性能,而且在模擬間歇性數(shù)據(jù)訪問(wèn)后,性能沒(méi)有明顯波動(dòng),達(dá)到了預(yù)期設(shè)計(jì)效果。
在全球數(shù)據(jù)爆炸性增長(zhǎng)的背景下,如何結(jié)合固態(tài)硬盤(pán)和傳統(tǒng)機(jī)械硬盤(pán)的優(yōu)勢(shì)應(yīng)對(duì)海量數(shù)據(jù)的高效存儲(chǔ),具有很高的社會(huì)意義和研究?jī)r(jià)值。針對(duì)緩存數(shù)據(jù)尤其是間歇性頻繁訪問(wèn)的緩存數(shù)據(jù)特點(diǎn),引入虛擬存儲(chǔ)層概念,在傳統(tǒng)緩存策略上融合了自動(dòng)分層技術(shù)并做了改進(jìn),主要有以下技術(shù)優(yōu)勢(shì):1)綜合考慮了訪問(wèn)時(shí)間和訪問(wèn)頻率對(duì)緩存塊的影響,結(jié)合了傳統(tǒng)緩存適合負(fù)載變化迅速的場(chǎng)景自動(dòng)分層適合靜態(tài)負(fù)載的特點(diǎn),對(duì)熱數(shù)據(jù)判定更精準(zhǔn)。充分利用自動(dòng)分層熱點(diǎn)數(shù)據(jù)升溫和降溫較慢,可更準(zhǔn)備識(shí)別熱點(diǎn)數(shù)據(jù)的技術(shù)原理,降低間歇性熱點(diǎn)數(shù)據(jù)變?yōu)槔鋽?shù)據(jù)的概率,也降低了緩存頁(yè)抖動(dòng)對(duì)性能造成的影響;2)虛擬存儲(chǔ)層和數(shù)據(jù)存儲(chǔ)層之間遷移數(shù)據(jù)時(shí),僅需修改數(shù)據(jù)塊描述信息和映射關(guān)系。緩存層淘汰非臟緩存頁(yè)時(shí),也是僅做頁(yè)面信息修改,都不會(huì)沒(méi)有對(duì)機(jī)械硬盤(pán)進(jìn)行讀寫(xiě)操作,不會(huì)增加額外的磁盤(pán)IO,對(duì)訪問(wèn)性能沒(méi)有影響;3)虛擬存儲(chǔ)層不存儲(chǔ)真實(shí)數(shù)據(jù),可在較大范圍內(nèi)承載因暫時(shí)不訪問(wèn)被移出緩存層的間歇性熱點(diǎn)數(shù)據(jù),有效的提高了緩存命中率;4)數(shù)據(jù)塊的訪問(wèn)時(shí)間訪問(wèn)頻次具有全局性,提高了熱點(diǎn)數(shù)據(jù)追蹤效率;數(shù)據(jù)存儲(chǔ)層使用block為最小單位,降低了元數(shù)據(jù)的占用空間。相比傳統(tǒng)緩存策略,在沒(méi)有增加硬件成本的情況下,降低了緩存頁(yè)被誤判為冷數(shù)據(jù)的概率,提高了緩存命中率。
基于虛擬存儲(chǔ)層的SSD緩存控制策略可應(yīng)用于磁盤(pán)陣列、分布式存儲(chǔ)等企業(yè)級(jí)網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),能夠有效提高在云平臺(tái)、大數(shù)據(jù)分析、數(shù)據(jù)庫(kù)等高并發(fā)隨機(jī)讀寫(xiě)應(yīng)用場(chǎng)景下的存儲(chǔ)訪問(wèn)性能,提高應(yīng)用系統(tǒng)的響應(yīng)時(shí)間。