為什么要推出SandStone AgileCache
傳統(tǒng)高性能SSD Cache方案大多基于內(nèi)核態(tài)實(shí)現(xiàn),著名的方案有bcache、dm-cache、flashcache等,這些緩存技術(shù)通常對工作在用戶態(tài)的應(yīng)用程序暴露出的是通用塊設(shè)備,應(yīng)用程序只能通過標(biāo)準(zhǔn)的file operation訪問混合盤塊設(shè)備,緩存策略方面只能從數(shù)據(jù)的冷熱程度這一個(gè)維度去實(shí)現(xiàn)。
在Ceph中如何更加高效合理地利用SSD緩存資源是一個(gè)很值得探討的問題,大部分場景下,在OSD層給ObjectStore做加速是業(yè)界普遍采用的方案,即將OSD直接創(chuàng)建在經(jīng)過內(nèi)核Cache軟件虛擬化出來的塊設(shè)備混合盤上。用戶態(tài)與內(nèi)核態(tài)的天然屏障使得工作于內(nèi)核態(tài)的Cache模塊無法感知工作在用戶態(tài)的OSD各種IO,比如:副本數(shù)據(jù)寫IO、集群恢復(fù)流量的寫IO、不同RBD卷的IO,也就無法做比較細(xì)粒度的緩存資源管理與控制。
技術(shù)創(chuàng)新的背后經(jīng)歷了什么
針對上面提到的問題,杉巖研發(fā)團(tuán)隊(duì)一開始評估過在最新的BlueStore中開發(fā)一個(gè)用戶態(tài)的SSD Cache來解決,但是通過分析發(fā)現(xiàn),這個(gè)工作量并不小,而且在已經(jīng)比較復(fù)雜的BlueStore的IO路徑上增加一個(gè)支持WriteBack模式的Cache功能,嚴(yán)重增加了BlueStore的復(fù)雜度,在代碼可維護(hù)性及功能穩(wěn)定性方面都是一個(gè)比較大的挑戰(zhàn),更重要的是,這樣開發(fā)出來的帶有Cache功能的ObjectStore與Ceph社區(qū)的方向是背道而馳的,社區(qū)之所以在設(shè)計(jì)BlueStore之初不考慮加入SSD Cache功能,其中一個(gè)原因就是混合存儲畢竟只是一個(gè)過渡,全閃存會(huì)成為未來的主流。
那么怎樣以經(jīng)濟(jì)高效的方式實(shí)現(xiàn)一個(gè)能夠感知Ceph集群內(nèi)部各種數(shù)據(jù)類型的SSD Cache呢?杉巖的AgileCache給出了完美的答案。SandStone AgileCache是一個(gè)Cache框架,兼容主流的內(nèi)核態(tài)Cache,在Cache模塊之上,引入了杉巖自研的內(nèi)核態(tài)direct-io模塊,負(fù)責(zé)將用戶態(tài)的數(shù)據(jù)類型標(biāo)記下傳到內(nèi)核Cache層,這種從用戶態(tài)往內(nèi)核態(tài)Cache傳遞IO標(biāo)記的方法我們稱之為“cadvise”。
?? SandStone AgileCache技術(shù)實(shí)現(xiàn)架構(gòu)圖
有了“cadvise”標(biāo)記,我們就打通了Cache的“任督二脈”,使得Cache可根據(jù)標(biāo)記完全區(qū)分OSD的各種數(shù)據(jù)類型,比如BlueFS下來的數(shù)據(jù),我們統(tǒng)一標(biāo)記成BlueStore的METADATA,優(yōu)先緩存;集群內(nèi)部的恢復(fù)流量,我們可標(biāo)記成DONTNEED,提示Cache模塊不緩存直接寫到后端HDD盤,預(yù)留出寶貴的SSD資源。
SandStone AgileCache為企業(yè)用戶帶來的價(jià)值
SandStone AgileCache技術(shù)打破了用戶態(tài)與內(nèi)核態(tài)的之間的天然屏障,不僅擁有傳統(tǒng)SSD Cache的所有優(yōu)點(diǎn),還可以感知分布式存儲集群內(nèi)部各種數(shù)據(jù)類型,并針對不同的數(shù)據(jù)類型采用不同的臟數(shù)據(jù)刷盤策略,以及不同的緩存數(shù)據(jù)回收策略,從而實(shí)現(xiàn)對緩存資源更細(xì)粒度的利用,降低企業(yè)用戶TCO。
此外,杉巖還開發(fā)了基于AgileCache智能緩存的卷優(yōu)先級管理功能,針對不同的卷可以設(shè)置高、中、低三個(gè)優(yōu)先級,高優(yōu)先級的卷全部緩存在SSD中,中優(yōu)先級的卷只有部分熱點(diǎn)數(shù)據(jù)緩存在SSD,較冷的數(shù)據(jù)保存在HDD中,低優(yōu)先級的巻則不緩存,數(shù)據(jù)全部保存在HDD。企業(yè)用戶只需搭建一套混合集群,就能擁有全閃、混合、全HDD三種性能模式的卷,自動(dòng)切換,保障業(yè)務(wù)的服務(wù)質(zhì)量。目前,SandStone AgileCache已經(jīng)應(yīng)用于杉巖數(shù)據(jù)軟件定義存儲全線產(chǎn)品,服務(wù)于各種規(guī)模的存儲集群。