阿里推出 PolarFS 分佈式文件系統:將存儲與計算分開,提高雲數據庫性能(附論文)

摘要: 將存儲與計算分開來大有意義,對於部署的雲數據庫而言更是如此。爲此,阿里巴巴推出了一種新開發的名爲PolarFS的分佈式文件系統,旨在確保低延遲和高可用性。這個文件系統與阿里雲上本身的PolarDB數據庫服務搭配使用。數據庫

將存儲與計算分開來大有意義,對於部署的雲數據庫而言更是如此。爲此,阿里巴巴推出了一種新開發的名爲PolarFS的分佈式文件系統,旨在確保低延遲和高可用性。這個文件系統與阿里雲上本身的PolarDB數據庫服務搭配使用。後端

像PolarDB這樣的雲數據庫服務(或者各大雲提供商的平臺上的同類雲數據庫服務)擁有一個更具可擴展性且安全的基礎以便充分利用容器,並以快速I/O、檢查點和數據共享來支持後端存儲集羣,從而充分發揮將存儲資源和計算資源分開來的這種作法具備的好處。安全

然而,因爲面向數據庫服務的雲I/O領域的種種創新,很難把大幅加快讀寫速度的硬件創新整合起來,好比包括RDMA和NVMe。從性能的角度來看,阿里巴巴的架構值得關注,緣由在於它利用了RDMA、NVMe和SPDK等方面最新的創新技術,於是提供了與固態硬盤(SSD)上的本地文件系統不相上下的寫入性能。網絡

「PolarFS採用了新興的硬件和最早進的優化技術,好比操做系統旁路(OS bypass)和零拷貝(zero-copy),於是得以擁有與SSD上的本地文件系統至關的延遲。爲了知足數據庫應用的高IOPS要求,咱們開發了一種新的共識協議ParallelRaft。ParallelRaft放寬了Raft嚴格按順序寫入的要求,又不犧牲存儲語義的一致性,從而提高了PolarFS並行寫入的性能。在高負載狀況下,咱們的方法能夠將平均延遲縮短一半,將系統帶寬翻番。PolarFS在用戶空間中實施相似POSIX的接口,這讓POLARDB可以僅需少量改動便可提高性能。」架構

擁有數據庫服務的雲提供商提供最新的硬件調優從而提供高性能可能聽起來合情合理,但實際操做起來不像聽起來那麼簡單。正如阿里巴巴的研究人員解釋的那樣,雲提供商使用實例存儲做爲服務的基礎,使用本地SSD和高I/O虛擬機實例用於數據庫。可是這種方法限制了容量,規模上去後更是如此。分佈式

此外,因爲數據庫須要本身處理複製,所以可靠性有所下降。最後,實例存儲在其核心使用通用文件系統,試圖採用RDMA或基於PCIe的SSD以提高性能時,內核與用戶空間之間的消息傳遞成本帶來了龐大的開銷。性能

阿里巴巴本身的PolarDB服務過去存在着上述限制。如今,PolarFS已準備好充分利用I/O方面新的提高,包括RDMA和NVMe SSD,並結合用戶空間中的輕量級網絡堆棧和I/O堆棧,避免在內核中被鎖定。PolarFS API相似POSIX,緣由在於它能夠編譯到數據庫進程中,而且能夠取代操做系統提供的文件系統接口,而I/O路徑繼續留在用戶空間中。優化

阿里巴巴團隊還特別指出,PolarFS數據平面的I/O模型旨在消除鎖定,並避免關鍵數據路徑上的上下文切換(context switch)。「還消除了全部沒必要要的內存副本,而直接內存訪問用於在主內存和RDMA網卡/ NVMe磁盤之間傳輸數據。」縮短延遲的效果在這環節來得尤其明顯。阿里雲

阿里巴巴在開發過程當中也不得不考慮到可靠性。其硬件調優的核心是用於解決共識的Raft協議。「部署在雲生產環境中的分佈式文件系統一般有成千上萬臺計算機。在這樣的龐大規模下,硬件或軟件錯誤引發的故障很常見。所以,須要一種共識協議來確保全部已提交的修改都不會在極端狀況下丟失,而副本老是能夠達成協議,變成比特方面如出一轍。」因爲一開始就恪守這個理念,阿里巴巴開發出了ParallelRaft,確保這項功能在大規模環境下照樣正常使用。操作系統

PolarFS的延遲是4000個隨機寫入約48μs,這至關接近本地SSD上的Ext4的延遲(約10μs),而相比之下,CephFS的延遲卻長達約760μs。PolarFS的平均隨機寫入延遲比本地Ext4慢1.6倍到4.7倍,而CephFS的平均隨機寫入延遲比本地Ext4慢6.5倍到75倍,這意味着分佈式PolarFS幾乎提供了與本地Ext4相同的性能。

關於性能結果和硬件調優的完整內容能夠在這篇詳細的論文:

 

文章連接:http://click.aliyun.com/m/1000013931/

相關文章
相關標籤/搜索