面向海量資料,一篇文章認識Ceph分散式儲存系統

儲存頻道發表於2018-10-26

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很可能會有一個非常光明的未來。當然,像其他任何資料儲存解決方案一樣,它無法滿足一切資料儲存需求,但它既然已經出現且獲得了大量的認可,說明它有很強的競爭力。

相關文章