什么是Ceph存儲?什么是分布式存儲?簡單明了帶你學Ceph -- <1>


Ceph存儲介紹

為什么要用Ceph

Ceph是當前非常流行的開源分布式存儲系統,具有高擴展性、高性能、高可靠性等優點,同時提供塊存儲服務(rbd)、對象存儲服務(rgw)以及文件系統存儲服務(cephfs),Ceph在存儲的時候充分利用存儲節點的計算能力,在存儲每一個數據時都會通過計算得出該數據的位置,盡量的分布均衡。。目前也是OpenStack的主流后端存儲,隨着OpenStack在雲計算領域的廣泛使用,ceph也變得更加炙手可熱。國內目前使用ceph搭建分布式存儲系統較為成功的企業有x-sky,深圳元核雲,上海UCloud等三家企業。

Ceph架構介紹

Ceph使用RADOS提供對象存儲,通過librados封裝庫提供多種存儲方式的文件和對象轉換。外層通過RGW(Object,有原生的API,而且也兼容Swift和S3的API,適合單客戶端使用)、RBD(Block,支持精簡配置、快照、克隆,適合多客戶端有目錄結構)、CephFS(File,Posix接口,支持快照,社會和更新變動少的數據,沒有目錄結構不能直接打開)將數據寫入存儲。

  • 高性能
  1. 摒棄了傳統的集中式存儲元數據尋址的方案,采用CRUSH算法,數據分布均衡,並行度高
    b.考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等
  2. 能夠支持上千個存儲節點的規模,支持TB到PB級的數據
  • 高可擴展性
  1. 去中心化
  2. 擴展靈活
  3. 隨着節點增加而線性增長
  • 特性豐富
  1. 支持三種存儲接口:塊存儲、文件存儲、對象存儲
  2. 支持自定義接口,支持多種語言驅動

Ceph核心概念

RADOS

全稱Reliable Autonomic Distributed Object Store,即可靠的、自動化的、分布式對象存儲系統。RADOS是Ceph集群的精華,用戶實現數據分配、Failover等集群操作。

Librados

Rados提供庫,因為RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。

Crush

Crush算法是Ceph的兩大創新之一,通過Crush算法的尋址操作,Ceph得以摒棄了傳統的集中式存儲元數據尋址方案。而Crush算法在一致性哈希基礎上很好的考慮了容災域的隔離,使得Ceph能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。同時,Crush算法有相當強大的擴展性,理論上可以支持數千個存儲節點,這為Ceph在大規模雲環境中的應用提供了先天的便利。

Pool

Pool是存儲對象的邏輯分區,它規定了數據冗余的類型和對應的副本分布策略,支持兩種類型:副本(replicated)和 糾刪碼( Erasure Code);

PG

PG( placement group)是一個放置策略組,它是對象的集合,該集合里的所有對象都具有相同的放置策略,簡單點說就是相同PG內的對象都會放到相同的硬盤上,PG是 ceph的邏輯概念,服務端數據均衡和恢復的最小粒度就是PG,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配數據和定位數據;

Object

簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫快,利於共享的出來呢。於是就有了對象存儲。最底層的存儲單元,包含元數據和原始數據。

Ceph核心組件

OSD

OSD是負責物理存儲的進程,一般配置成和磁盤一一對應,一塊磁盤啟動一個OSD進程。主要功能是存儲數據、復制數據、平衡數據、恢復數據,以及與其它OSD間進行心跳檢查,負責響應客戶端請求返回具體數據的進程等;

Pool、PG和OSD的關系:

  • 一個Pool里有很多PG;
  • 一個PG里包含一堆對象,一個對象只能屬於一個PG;
  • PG有主從之分,一個PG分布在不同的OSD上(針對三副本類型);

Monitor監控

一個Ceph集群需要多個Monitor組成的小集群,它們通過Paxos同步數據,用來保存OSD的元數據。負責監控整個Ceph集群運行的Map視圖(如OSD Map、Monitor Map、PG Map和CRUSH Map),維護集群的健康狀態,維護展示集群狀態的各種圖表,管理集群客戶端認證與授權;

MDS

MDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務。負責保存文件系統的元數據,管理目錄結構。對象存儲和塊設備存儲不需要元數據服務;

Mgr

ceph 官方開發了 ceph-mgr,主要目標實現 ceph 集群的管理,為外界提供統一的入口。例如cephmetrics、zabbix、calamari、prometheus

RGW

RGW全稱RADOS gateway,是Ceph對外提供的對象存儲服務,接口與S3和Swift兼容。

Admin

Ceph常用管理接口通常都是命令行工具,如rados、ceph、rbd等命令,另外Ceph還有可以有一個專用的管理節點,在此節點上面部署專用的管理工具來實現近乎集群的一些管理工作,如集群部署,集群組件管理等。

Ceph三種存儲類型

塊存儲(RBD)

  • 優點:

    • 通過Raid與LVM等手段,對數據提供了保護;
    • 多塊廉價的硬盤組合起來,提高容量;
    • 多塊磁盤組合出來的邏輯盤,提升讀寫效率;
  • 缺點:

    • 采用SAN架構組網時,光纖交換機,造價成本高;
    • 主機之間無法共享數據;
  • 使用場景

    • docker容器、虛擬機磁盤存儲分配;
    • 日志存儲;
    • 文件存儲;

文件存儲(CephFS)

  • 優點:

    • 造價低,隨便一台機器就可以了;
    • 方便文件共享;
  • 缺點:

    • 讀寫速率低;
    • 傳輸速率慢;
  • 使用場景

    • 日志存儲;
    • FTP、NFS;
    • 其它有目錄結構的文件存儲

對象存儲(Object)(適合更新變動較少的數據)

  • 優點:
    • 具備塊存儲的讀寫高速;
    • 具備文件存儲的共享等特性;
  • 使用場景
    • 圖片存儲;
    • 視頻存儲;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM