學一點Ceph知識:初識Ceph

Ceph是什麼?

Ceph是一個開源的分佈式存儲系統,可大規模擴展、高性能、無單點故障,在普通的服務器上可以支持到PB級容量,商用機器上支持的容量可以達到EB級別。

Ceph的競爭力

市面上提供雲存儲的分佈式系統如阿里雲的OSS(底層存儲框架爲JindoFS),亞馬遜的S3,Hadoop生態下的HDFS,OpenStack內的Swift,都是非常優秀、流行的存儲解決方案,Ceph作爲同類產品,仍然不遜色:

  • 更低的TCO(總體擁有成本),Ceph可以部署在普通的商用服務器上,比專有存儲系統的預算更低。
  • Ceph的每一個組件都是可靠的並支持高可用。
  • 分佈式存儲,客戶端動態地計算數據存儲位置,不過度依賴元數據服務器。
  • Ceph集羣內部發現的節點宕機,磁盤損壞等故障,Ceph集羣能夠利用副本數據進行自我修復,保證集羣數據可用。
  • Ceph加入Linux內核主線。
  • Ceph能夠同時提供對象存儲、塊存儲、文件存儲。

Ceph的統一存儲方案

Ceph的統一存儲方案同時滿足對象存儲、塊存儲和文件存儲,並且Ceph已經加入Linux內核主線,意味着Ceph存儲更加貼近OS層,統一存儲方案架構圖如下所示:

image

從上圖可以知道,Ceph僅從軟件層面就提供了對象、塊和文件存儲。對象存儲要比塊或者文件更加適應現在的混合的非結構化數據。

傳統的文件存儲系統中,文件是通過文件目錄進行尋址的,龐大文件目錄或深層次目錄結構,均會影響文件搜索的效率,Ceph底層並不存在塊和文件的管理,而是管理對象並且在對象之上支持基於塊和文件的存儲,對象的尋址通過唯一的標識符,並存儲在扁平的尋址空間中,客戶端使用CRUSH算法得到一個存儲對象的存儲位置,從根本上解決海量文件搜索慢的問題。

Ceph整體架構

Ceph集羣主要由Monitor、OSD兩個守護進程組成,每個守護進程相互獨立,共同構建集羣的完整功能特性,架構示意圖如下:

image

簡要闡述每個ceph組件的功能:

  • RBD,也叫Ceph塊設備,原先叫做RADOS塊設備,對外提供塊存儲,它可以像祼磁盤一樣被映射、格式化、掛載到操作系統上。
  • RADOS GW,Ceph對象網關,簡稱爲RGW,目前對Amazon S3和OpenStack對象存儲API提供了兼容的Restful API接口,另外RGW還支持多租戶和OpenStack的Keystone身份驗證服務。
  • Ceph FS,Cehp文件系統,提供了一個任意大小且兼容POSIX的分佈式文件系統,它依賴Ceph MDS(元數據)來跟蹤文件層次結構。
  • librados庫是RBD、RGW的基礎,可以爲Ceph FS提供POSIX接口,librados目前支持PHP、Ruby、Java、Python、C和C++語言,用來簡化RADOS層的訪問,並且提供librados API對RADOS進行本地化訪問。
  • RADOS,全稱是可靠、自動、分佈式對象存儲(Reliable Autonomic Distributed Oject Store),是Ceph集羣的基礎,RADOS負責Ceph中的所有數據都以對象形式存儲。RADOS層提供的特性主要有:數據一致性、可靠性,數據遷移和再平衡。
  • MON,Ceph的monitor組件,將集羣的狀態保存在幾個map結構裏,如OSD、MON、PG和CRUSH,集羣內所有的節點都向MON組件上報信息,monitor將每一個組件將上報的狀態信息存儲在不同的map裏,monitor不存儲實際的數據,只存儲集羣狀態信息。
  • OSD,Ceph對外存儲設備,負責數據讀寫操作,真正存儲用戶數據的組件,一個OSD守護進程與集羣的一個物理磁盤綁定,一般來說,用於部署Ceph集羣物理機器(或虛擬機)的磁盤數量與OSD守護進程數量是一樣的。
  • MDS,元數據服務器,只有Ceph FS才需要,對象存儲場景不需要使用到MDS。

小結

本篇簡單介紹了分佈式存儲組件Ceph的基本特性,適用的存儲方案,以及Ceph架構的介紹,先簡單瞭解一下Ceph組件職責,後續會針對每個組件作更詳細的介紹,希望對你有幫助,謝謝。

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