檔案系統不適合作為分散式儲存後端:來自Ceph演變10年的經驗教訓 - blogspot

banq發表於2019-12-08

Ceph是於2004年在UCSC開始的研究專案。Ceph核心是一個稱為RADOS的分散式物件儲存。儲存後端是在已經成熟的檔案系統上實現的。檔案系統有助於塊分配,後設資料管理和崩潰恢復。Ceph團隊將儲存後端構建在現有檔案系統上,因為他們不想從頭開始編寫儲存層。完整的檔案系統需要大量時間(10年)來開發,穩定,最佳化和成熟。
但是,在儲存路徑中具有檔案系統會增加很多開銷。它為實現高效事務帶來了問題。它引入了後設資料操作的瓶頸。例如,包含數百萬個小檔案的檔案系統目錄將成為後設資料瓶頸。分頁等也會產生問題。為了避免這些問題,Ceph團隊嘗試透過在使用者空間中實現WAL來掛鉤FS內部,並使用NewStore資料庫執行事務。但是很難與檔案系統搏鬥。自2010年以來,他們解決問題的方式已經有7年了。
最後,Ceph團隊放棄了檔案系統方法,並開始編寫自己的不使用檔案系統的儲存系統BlueStore。他們僅用了兩年就可以完成並提高儲存水平!這是因為小型的自定義後端比POSIX檔案系統更快地成熟
與早期版本相比,新的儲存層BlueStore實現了非常高的效能。透過避免資料日記,BlueStore能夠實現比FileStore / XFS更高的吞吐量。 使用檔案系統時,髒後設資料的回寫會干擾WAL的寫操作,並導致高的尾部延遲。相反,透過控制寫入並使用直寫策略,BlueStore確保沒有後臺寫入會干擾前臺寫入。這樣,BlueStore避免了寫入的尾部延遲。

最後,完全控制I / O堆疊可加速新硬體的採用。例如,雖然檔案系統很難適應帶狀的磁記錄儲存,但作者仍能夠為它們新增後設資料儲存支援到BlueStore,而資料儲存正在開發中。總而言之,從分散式儲存中汲取的教訓是,實現自定義後端比嘗試為此目的而嘗試增加檔案系統更容易,更好。 這是BlueStore,儲存後端的體系結構圖。所有後設資料都在RocksDB中維護,該資料庫位於BlueFS(最小的使用者空間檔案系統)之上。

本文作者卡塔基梅隆大學的Abutalib Aghayev,紅帽公司Sage Weil,卡內基梅隆大學的Michael Kuchnik,紅帽公司馬克·尼爾森,卡內基梅隆大學的Gregory R. (卡耐基梅隆大學)

相關文章