技術創(chuàng)新的背后經歷了什么
時間:2022-03-11 23:27:01 | 來源:行業(yè)動態(tài)
時間:2022-03-11 23:27:01 來源:行業(yè)動態(tài)
針對上面提到的問題,杉巖研發(fā)團隊一開始評估過在最新的BlueStore中開發(fā)一個用戶態(tài)的SSD Cache來解決,但是通過分析發(fā)現(xiàn),這個工作量并不小,而且在已經比較復雜的BlueStore的IO路徑上增加一個支持WriteBack模式的Cache功能,嚴重增加了BlueStore的復雜度,在代碼可維護性及功能穩(wěn)定性方面都是一個比較大的挑戰(zhàn),更重要的是,這樣開發(fā)出來的帶有Cache功能的ObjectStore與Ceph社區(qū)的方向是背道而馳的,社區(qū)之所以在設計BlueStore之初不考慮加入SSD Cache功能,其中一個原因就是混合存儲畢竟只是一個過渡,全閃存會成為未來的主流。
那么怎樣以經濟高效的方式實現(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。
有了cadvise標記,我們就打通了Cache的任督二脈,使得Cache可根據(jù)標記完全區(qū)分OSD的各種數(shù)據(jù)類型,比如BlueFS下來的數(shù)據(jù),我們統(tǒng)一標記成BlueStore的METADATA,優(yōu)先緩存;集群內部的恢復流量,我們可標記成DONTNEED,提示Cache模塊不緩存直接寫到后端HDD盤,預留出寶貴的SSD資源。