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