分布式存儲系統之Ceph基礎

Ceph基礎概述
Ceph是一個對象式存儲系統 , 所謂對象式存儲是指它把每一個待管理的數據流(比如一個文件)切分成一到多個固定大小的對象數據 , 并以其為原子單元完成數據的存?。歡韻笫蕕牡撞憒媧⒎裼啥喔鮒骰槌傻拇媧⒓?;该集群睉哑之为RADOS(Reliable Automatic Distributed Object Store)集群;翻譯成中文就是可靠的、自動化分布式對象存儲系統;
Ceph架構

分布式存儲系統之Ceph基礎

文章插圖
提示:librados是RADOS存儲集群的API,它支持C、C++、java、python和php等變成語言;RADOSGW、RBD、CEPHFS都是RADOS存儲服務的客戶接口;它們分別把rados存儲服務接口librados從不同角度做了進一步的抽象,因而各自適用于不同的應用場景;RADOSGW是將底層rados存儲服務抽象為以RESTful風格接口提供對象存儲服務 , 適用于存取對象數據的接口,比如web服務;RBD是將底層RADOS存儲服務抽象為塊設備的存儲設備;主要用于虛擬化,比如給虛擬機提供硬盤;CEPHFS是將底層RADOS抽象為一個文件系統接口 , 供其他主機使用;
分布式存儲系統之Ceph基礎

文章插圖
提示:RADOS集群主要由Monitors、Managers、Ceph OSDs、Ceph MDSs這幾個組件組成;其中Monitor主要作用是監控整個集群的狀態,健康與否等;它擁有整個集群的運行圖(monitor map、manager map、OSD map、和CRUSH map);除此之外,它還負責維護集群各組件之間以及客戶端接入RADOS集群存取數據時的認證信息和實行認證;簡單講mon組件就是管理和維護其他組件狀態以及接入RADOS集群的認證信息并實行認證,一旦mon組件所在主機宕機,那么整個集群將不可用;有點類似k8s里的etcd;所以為實現冗余和高可用性 , 通常在集群我們部署大于1的奇數個mon(因為它使用Paxos協議,為防止網絡分區等原因 , 保證服務的正??捎茫?;manager組件主要負責跟蹤運行時指標和Ceph集群的當前狀態,包括存儲利用率,當前性能指標和系統負載等,Ceph集群信息,包括基于web的Ceph管理器儀表板和REST API 。高可用性通常需要至少兩個mgr組件 。OSD組件是存儲數據,處理數據復制、恢復、再平衡,并提供一些監視信息的組件;Ceph通過檢查其他Ceph OSD進程來監控和管理心跳;通常為了高可用和冗余,至少需要3個ceph osd(即3塊硬盤 , ceph為了每一個osd能夠被單獨使用和管理,每一個osd都會有一個單獨的守護進程ceph-osd來管理,即服務器上有多少個osd,就會有多少個ceph-osd進程,一個ceph-osd進程就對應一個osd,一個osd就對應一塊磁盤設備);MDS是ceph元數據服務組件,主要實現分布式文件系統的控制層面,數據和元數據的存取依然由RADOS負責,即用戶使用cephfs文件系統存取數據,用戶存儲的文件的元數據該怎么存放、怎么管理等都由MDS組件負責;當然如果我們沒有使用cephfs文件系統的必要,對應mds組件也可以不用部署;所以mds組件不是必須組件;
Ceph數據抽象接口(客戶端中間層)
Ceph存儲集群提供了基礎的對象數據存儲服務,客戶端可基于RADOS協議和librados API直接與存儲系統交互進行對象數據存?。?nbsp;librados提供了訪問RADOS存儲集群支持異步通信的API接口,支持對集群中對象數據的直接并行訪問,用戶可通過支持的編程語言開發自定義客戶端程序通過RADOS協議與存儲系統進行交互;客戶端應用程序必須與librados綁定方可連接到RADOS存儲集群 , 因此,用戶必須事先安裝librados及其依賴后才能編寫使用librados的應用程序; librados API本身是用C ++編寫的 , 它額外支持C、Python、Java和PHP等開發接口;當然,并非所有用戶都有能力自定義開發接口以接入RADOS存儲集群的需要,為此,Ceph也原生提供了幾個較高級別的客戶端接口,它們分別是RADOS GateWay(RGW)、ReliableBlock Device(RBD)和MDS(MetaData Server),分別為用戶提供RESTful、塊和POSIX文件系統接口;
Ceph文件系統
分布式存儲系統之Ceph基礎

文章插圖
不同于傳統文件系統的地方是 , CephFS MDS在設計的初衷之一即高度可擴展的能力,其實現機制中,數據由客戶端以分布式方式通過多路OSD直接存儲于RADOS系統 , 而元數據則由MDS組織管理后仍然存儲于RADOS系統之上; MDS僅是實現了分布式文件系統的控制平面,數據和元數據的存取依然由RADOS負責;CephFS依賴于獨立運行的守護進程ceph-mds向客戶端提供服務;

推薦閱讀