面向海量數據,一篇文章認識Ceph分布式存儲系統

Ceph是什麼?它是一個軟件定義的開源分佈式對象存儲解決方案,面向PB級的海量數據存儲平臺。最初由Inktank於2012年開發,該公司在2014年被紅帽收購。隨著近幾年大數據的發展,因為在性能、可靠性和可擴展性方面具有優秀表現,Ceph在分佈式存儲領域獲得了大量關注。

作為一個企業級開源平臺,Ceph可在標準經濟型服務器和磁盤上提供統一的軟件定義存儲,將數據塊、對象、文件的存儲組合到一個平臺,是一個可靠地、自動重均衡、自動恢復的分佈式存儲系統。

面向海量數據,一篇文章認識Ceph分佈式存儲系統

在Ceph中,數據以對象的方式被存儲或處理,與通常通過扇區和扇區偏移量(通常稱為塊)向存儲卷寫入和讀取數據的傳統數據存儲解決方案不同。在處理大規模數據時,將數據作為對象進行處理是一種不錯的方法,而且也更容易管理。這種對象存儲方式使Ceph能夠實現簡化的可擴展性,從而輕鬆滿足用戶的需求。這些對象被複制到整個節點集群中,使Ceph具有容錯能力,並進一步減少單點故障。

去年,Ceph社區發佈了對擦除編碼池(Erasure Coded pool)的支持,能夠用更少的空間實現存儲,但要在性能方面會造成一些不好的影響。另外,Ceph的設計中也包括自我糾錯和自我管理功能。

至於可訪問性方面,Ceph向用戶空間公開了三個接口。第一個是對象存儲。這個對象存儲可以通過RESTful接口訪問,支持OpenStack Swift和Amazon Simple Storage Service (S3)。通過這種方法,Web應用程序可以將直接PUT、GET和DELETE方法發送到對象存儲區,無需重寫應用程序代碼或擔心對象所存儲的位置。

第二個接口是一個稀疏分配的塊設備。其目標是允許Ceph直接進入現有的計算環境,訪問文件/塊卷的應用程序和虛擬環境時不需要重新架構,但仍然能夠利用Ceph提供的大多數特性、功能和彈性。Ceph基於對象的模型的優點是,塊設備和文件系統接口能夠很好地用於快照、克隆和更好的負載均衡支持。

第三個接口是文件系統。雖然不管怎麼說文件系統都會提供大量的可訪問性和功能塊設備,但在Ceph實現中,內置的文件系統確實刪除了塊設備層(減少總堆疊層的數量)而且能夠直接連接到對象存儲後端。這確實簡化了維護和調試。

面向海量數據,一篇文章認識Ceph分佈式存儲系統

Ceph架構圖

Ceph完全由命令行管理。Red Hat通過一個名為Calamari的基於Web的用戶管理界面重發布了Ceph,Calamari簡化了一般的Ceph管理。它附帶了一個服務器和客戶端組件,客戶端組件提供基於Web的儀表盤。它通過RESTful API直接與服務器通信。

雖然Ceph本身解決了行業內的許多問題,尤其是如何管理和縮放數據,但數據管理難題不止這些。Ceph被設計用來處理兩件事:1、它通過跨節點集群分佈數據(複製或擦除編碼)來支持容錯;2、它提供用戶對相同數據的訪問。上面和下面發生的事情完全取決於存儲管理員。例如,在Ceph框架下,硬件是如何監控的?如何檢測和糾正驅動器故障?在框架之上,如何導出塊和文件系統卷?如何啟用這些相同卷的高可用性?

這就是軟件重發布方的價值所在。如Red Hat、SUSE、Canonical (Ubuntu)等供應商,會將所有這些部分結合在一起,並將它們統一在一個管理空間中。為了增加產品的可信度,數據存儲行業的許多大公司都加入了Ceph的行列,包括SanDisk、SolidFire(現在是NetApp的一部分)等等,這些供應商都以某種形式使用了Ceph。

不難看到,Ceph很可能會有一個非常光明的未來。當然,像其他任何數據存儲解決方案一樣,它無法滿足一切數據存儲需求,但它既然已經出現且獲得了大量的認可,說明它有很強的競爭力。


分享到:


相關文章: