CEPH_分佈式文件系統

原文鏈接:https://www.zhihu.com/question/21718731/answer/21545274

Ceph是一種爲優秀的性能、可靠性和可擴展性而設計的統一的、分佈式文件系統

 

1. 可輕鬆擴展到數 PB 容量

2. 支持多種工作負載的高性能(每秒輸入/輸出操作[IOPS]和帶寬)

3. 高可靠性

但是,這些目標之間會互相競爭(例如,可擴展性會降低或者抑制性能或者影響可靠性)。Ceph 的設計還包括保護單一點故障的容錯功能,它假設大規模(PB 級存儲)存儲故障是常見現象而不是例外情況。

它的設計並沒有假設某種特殊工作負載,但包括了適應變化的工作負載,並提供最佳性能的能力。它利用 POSIX 的兼容性完成所有這些任務,允許它對當前依賴 POSIX 語義(通過以 Ceph 爲目標的改進)的應用進行透明的部署。

 

 


Ceph是一套高性能,易擴展的,無單點的分佈式文件存儲系統,基於Sage A. Weil的論文開發,主要提供以下三個存儲服務:

  • 對象存儲(Object Storage),既可以通過使用Ceph的庫,利用C, C++, Java, Python, PHP代碼,也可以通過Restful網關以對象的形式訪問或存儲數據,兼容亞馬遜的S3和OpenStack的Swift。
  • 塊存儲(Block Storage),作爲塊設備像硬盤一樣直接掛載。
  • 文件系統(File System) ,如同網絡文件系統一樣掛載,兼容POSIX接口。

 


Ceph的結構,對象存儲由LIBRADOS和RADOSGW提供,塊存儲由RBD提供,文件系統由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要調用LIBRADOS的接口,而最終都是以對象的形式存儲於RADOS裏。

 

Ceph集羣的節點有三種角色:

  • Monitor,監控集羣的健康狀況,向客戶端發送最新的CRUSH map(含有當前網絡的拓撲結構)
  • OSD,維護節點上的對象,響應客戶端請求,與其他OSD節點同步
  • MDS,提供文件的Metadata,如果不使用CephFS可以不安裝

Ceph是分佈式的存儲,它將文件分割後均勻隨機地分散在各個節點上,Ceph採用了CRUSH算法來確定對象的存儲位置,只要有當前集羣的拓撲結構,Ceph客戶端就能直接計算出文件的存儲位置,直接跟OSD節點通信獲取文件而不需要詢問中心節點獲得文件位置,這樣就避免了單點風險。

更多Ceph架構方面的內容可以參看官方介紹:Architecture

Ceph目前已經是一套比較成熟的存儲系統了,是OpenStack比較理想的存儲後端,也可以作爲Hadoop的存儲後端,這就涉及到與Swift和HDFS的比較。

Ceph與Swift
Ceph用C++編寫而Swift用Python編寫,性能上應當是Ceph佔優。但是與Ceph不同,Swift專注於對象存儲,作爲OpenStack組件之一經過大量生產實踐的驗證,與OpenStack結合很好,目前不少人使用Ceph爲OpenStack提供塊存儲,但仍舊使用Swift提供對象存儲。
Swift的開發者曾寫過文章對比Ceph和Swift: Ceph and Swift: Why we are not fighting.

Ceph與HDFS
Ceph對比HDFS優勢在於易擴展,無單點。HDFS是專門爲Hadoop這樣的雲計算而生,在離線批量處理大數據上有先天的優勢,而Ceph是一個通用的實時存儲系統。雖然Hadoop可以利用Ceph作爲存儲後端(根據Ceph官方的教程死活整合不了,自己寫了個簡潔的步驟:http://www.kai-zhang.com/cloud-computing/Running-Hadoop-on-CEPH/),但執行計算任務上性能還是略遜於HDFS(時間上慢30%左右 Haceph: Scalable Meta- data Management for Hadoop using Ceph)。

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