論文解讀:Ceph 文件系統不適合作爲分佈式存儲後端

導讀:Ceph 是一個 Linux 的 PB 級分佈式文件系統,與 POSIX 兼容,使用 Ceph 存儲集羣來存儲數據。 Ceph 文件系統與 Ceph 塊設備、同時提供 S3 和 Swift API 的 Ceph 對象存儲、或者原生庫( librados )一樣,都使用着相同的 Ceph 存儲集羣系統。Ceph 最初是一項關於存儲系統的博士生研究項目,由 Sage Weil 在聖塔克魯茲加利福尼亞大學(University of California, Santa Cruz,UCSC)實施。但是,在今年的操作系統原理會議(Symposium on Operating Systems Principles,SOSP)上,收錄了一篇論文,稱經過十年的評估,作者認爲 Ceph 並不適合作爲分佈式存儲後端。作爲系統領域的最高學術會議,作者拋出這一觀點,一時間,引起了軒然大波。這究竟是怎麼回事呢?專注於分佈式系統的 Murat Demirbas 教授爲我們解讀了這篇論文。

本文最初發表在 Murat Demirbas 個人博客上,經原作者授權,InfoQ 中文站翻譯並分享。

正文:

本文系論文 File systems unfit as distributed storage backends: lessons from 10 years of Ceph evolution (《Ceph 發展十年的教訓:文件系統不適合作爲分佈式存儲後端》)的解讀。該論文的作者是 Abutalib Aghayev、Sage Weil、Michael Kuchnik、Mark Nelson、Gregory R. Ganger。

Ceph">https://en.wikipedia.org/wiki/Ceph_(software) 最初是 2004 年在聖塔克魯茲加利福尼亞大學(University of California, Santa Cruz,UCSC)的一個研究項目。Ceph 的核心是一個名爲 RADOS 的分佈式對象存儲。存儲後端是在已經成熟的文件系統上實現的。文件系統有助於塊分配、元數據管理和崩潰恢復。Ceph 團隊在現有的文件系統上構建了存儲後端,因爲他們並不希望從頭開始編寫存儲層。因爲完整的文件系統需要耗費大量的時間(十年)來開發、穩定、優化和成熟。

但是,在存儲路徑中如果使用文件系統的話,會帶來很多開銷。這給高效事務的實現帶來了問題。它爲元數據操作帶來了瓶頸。例如,分頁等也會帶來問題。爲了避免這些問題,Ceph 團隊嘗試通過在用戶空間中實現 WAL 來連接到文件系統內部,並使用 NewStore 數據庫來執行事務。但是,文件系統還是很難處理。自 2010 年以來,他們修補問題已經有七年了。Abutalib 將此比作悲傷的階段:否認、憤怒、討價還價……和接受!

最後,Ceph 團隊被迫放棄了文件系統方法,開始編寫自己的存儲系統 BlueStore,它不使用文件系統。他們在短短兩年內,就能夠完成並達到了成熟的存儲級別!這是因爲小型定製後端比 POSIX 文件系統成熟得更快。

與早期版本相比,新的存儲層 BlueStore 實現了非常高的性能。通過避免數據日誌記錄,BlueStore 能夠實現比 FileStore/XFS 更高的吞吐量。

當使用文件系統時,髒元數據 / 數據的回寫(write-back)會干擾 WAL 的寫操作,並導致較高的尾延遲(tail latency)。相反,通過控制寫操作和使用寫通(write-through)策略,BlueStore 確保沒有後臺寫操作干擾前臺寫操作。這樣,BlueStore 就避免了寫操作的尾延遲。

最後,對 I/O 堆棧的完全控制加速了新硬件的採用。例如,雖然文件系統很難適應疊瓦式磁記錄(shingled magnetic recording)存儲器,但作者能夠爲它們添加對 BlueStore 的元數據存儲支持,數據存儲正在進行中。

綜上所述,我們得到的經驗教訓是,對於分佈式存儲而言,與爲實現這一目的而硬塞文件系統相比,實現定製後端可以做到又快又好。

上圖是存儲後端 BlueStore 的架構圖。所有元數據都在 RocksDB 中維護,RocksDB 位於 BlueFS 之上,而 BlueFS 是最小的用戶空間文件系統。

作者介紹:

Murat Demirbas,紐約州立大學布法羅分校(SUNY Buffalo)計算機科學與工程教授,研究方向爲分佈式系統、分佈式共識和雲計算。

原文鏈接:
SOSP19 File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章