Ceph基本狀況的介紹html
Ceph是一個分佈式存儲軟件。python
它支持用3種方式存儲數據,分別是:對象存儲、塊設備存儲、分佈式文件系統存儲。linux
Ceph最初的目標是作一個分佈式文件系統,直到如今這個目標也不能算完美實現,目前官網上對它的文件系統仍是謹慎推薦的態度(不建議對線上核心業務部署),業界使用 Ceph ,大可能是用它的對象存儲。數據庫
本文對Ceph的基本面作一個介紹。編程
提綱數組
一、分佈式存儲系統概述服務器
二、Ceph基本介紹和Ceph基本概念介紹網絡
三、Ceph的架構架構
四、Ceph集羣的組件介紹編程語言
五、Ceph的安裝
六、Ceph的特色
七、Ceph的應用領域
一、分佈式存儲系統概述
==================
通常人使用電腦,看到的存儲數據的方式,就是使用操做系統的文件系統把數據以文件的形式存儲起來。IT行業的專業人員,不只僅瞭解操做系統的文件系統,還了解另外的數據存儲系統,好比數據庫,像MySQL等軟件。不過,這些都是在我的用戶、或者數據量很小的狀況下才會使用的數據存儲系統。
若是要存儲的數據量很大,單機的文件系統存儲不下,那麼不少IT的工程師就開發分佈式存儲系統,利用多個服務器組成的集羣來存儲數據,這樣分佈式存儲系統有不少種類型,好比分佈式文件系統HDFS等。
所謂的分佈式存儲系統,就是一個軟件,用它來管理多個服務器上的存儲設備,把這些存儲統一管理起來,對存儲系統的用戶提供統一的存儲接口。
這裏要介紹的Ceph也就是一個分佈式存儲軟件。
二、Ceph基本介紹和Ceph基本概念介紹
===============================
Ceph是一個分佈式存儲軟件,它支持用3種方式存儲數據,分別是:對象存儲、塊設備存儲、分佈式文件系統存儲。也就是說它能夠當成一個分佈式文件系統來使用,用來存儲文件形式的數據,可是它還支持其餘兩種存儲方式,也就是用對象的方式存儲數據、使用塊設備的方式存儲數據。
Ceph最初的目標是作一個分佈式文件系統,直到如今這個目標也不能算完美實現,目前官網上對它的文件系統仍是謹慎推薦的態度(不建議對線上核心業務部署),業界使用 Ceph ,大可能是用它的對象存儲。
下面是基本概念介紹。
(1)對象存儲
對象:指的文件,好比一個txt格式的文件,能夠當作一個對象,一個doc格式的文件也能夠當作一個對象,一個jpg格式的文件也能夠當作一個對象。這裏的對象實際就是文件。這裏的對象和麪向對象編程語言中的對象不是一個概念。
對象存儲,指的就是把文件按照對象來存儲,實際數據存放在文件中。
(2)塊存儲
塊:塊是一種有序的字節塊,也就說一塊指的是一個字節塊,或者說一塊字節,好比一個字節數組,能夠當作是一個字節塊。
塊存儲,就是按照字節塊來一塊一塊的存儲數據。
三、Ceph的架構
=============
下圖是Ceph的架構圖。
Ceph這個軟件,分爲3層,最底層是Rados對象存儲系統、中間是一個librados,也就是一個接口層,對外提供訪問Rados對象存儲系統的接口API,最上層又提供了三種不一樣的存儲方式:對象存儲、塊設備存儲、文件系統存儲。
特別解釋一下rados: 它是Reliable Autonomic Distributed Object Store首字母簡寫,中文翻譯過來是:可靠自主的分部署對象存儲。
從這張圖片咱們能夠看到,無論Ceph的用戶是使用3種方式種哪種存儲數據到Ceph,其實Ceph在底層都是以對象來存儲的。
下面對架構種的三層具體介紹。
(1)RADOS
從架構圖中能夠看到最底層的是RADOS,RADOS自身是一個完整的分佈式對象存儲系統。
它具備可靠、智能、分佈式等特性,Ceph的高可靠、高可拓展、高性能、高自動化都是由這一層來提供的,用戶數據的存儲最終也都是經過這一層來進行存儲的,RADOS能夠說就是Ceph的核心。
RADOS系統主要由兩部分組成,分別是OSD和Monitor。
(2)Librados
基於RADOS層的上一層是LIBRADOS,LIBRADOS是一個庫,它容許應用程序經過訪問該庫來與RADOS系統進行交互,支持多種編程語言,好比C、C++、Python等。
(3)最上層
基於LIBRADOS層開發的又能夠看到有三層,分別是RADOSGW、RBD和CEPH FS。
RADOSGW(Rados Gate Way):RADOSGW是一套基於當前流行的RESTFUL協議的網關,而且兼容S3和Swift。
RBD(Rados Block Device):RBD經過Linux內核客戶端和QEMU/KVM驅動來提供一個分佈式的塊設備。
CEPH FS:CEPH FS經過Linux內核客戶端和FUSE來提供一個兼容POSIX的文件系統。
四、Ceph集羣的組件介紹
===================
Ceph集羣的物理部署邏輯示意圖以下所示。
一般Ceph集羣由不少OSD進程組成,OSD部署在不一樣的服務器上。
同時又有若干個Monitor進程(MON),MON之間相互監控,同時又對OSD的狀態進行監控。
客戶端經過網絡創建與Ceph集羣的關聯,也即訪問關係。客戶端經過Mon節點獲知集羣的狀態,其中包含OSD節點的分佈狀況等內容。
Ceph是一個分佈式存儲軟件,因此它的安裝確定是在集羣的多臺服務器上逐一安裝每一個節點須要部署的東西。
一個Ceph存儲集羣至少有一個Ceph Monitor進程、一個Ceph Manager進程、一個Ceph OSD(Object Storage Daemon)進程,若是須要運行Ceph文件系統的客戶端,還須要部署一個Ceph元數據服務器進程。
Ceph OSD:
Ceph的OSD(Object Storage Device)守護進程。主要功能包括:存儲數據、副本數據處理、數據恢復、數據回補、平衡數據分佈,並將數據相關的一些監控信息提供給Ceph Moniter,以便Ceph Moniter來檢查其餘OSD的心跳狀態。一個Ceph OSD存儲集羣,要求至少兩個Ceph OSD,纔能有效的保存兩份數據。注意,這裏的兩個Ceph OSD是指運行在兩臺物理服務器上,並非在一臺物理服務器上運行兩個Ceph OSD的守護進程。一般,冗餘和高可用性至少須要3個Ceph OSD。
Monitor:
Ceph的Monitor守護進程,主要功能是維護集羣狀態的表組,這個表組中包含了多張表,其中有Moniter map、OSD map、PG(Placement Group) map、CRUSH map。 這些映射是Ceph守護進程之間相互協調的關鍵簇狀態。 監視器還負責管理守護進程和客戶端之間的身份驗證。 一般須要至少三個監視器來實現冗餘和高可用性。
MDS(Meta Data Server):
Ceph的MDS(Meta Data Server)守護進程,主要保存的是Ceph文件系統的元數據。注意,對於Ceph的塊設備和Ceph對象存儲都不須要Ceph MDS守護進程。Ceph MDS爲基於POSIX文件系統的用戶提供了一些基礎命令的執行,好比ls、find等,這樣能夠很大程度下降Ceph存儲集羣的壓力。
Managers:
Ceph的Managers(Ceph Manager),守護進程(ceph-mgr)負責跟蹤運行時間指標和Ceph羣集的當前狀態,包括存儲利用率,當前性能指標和系統負載。 Ceph Manager守護程序還託管基於python的插件來管理和公開Ceph集羣信息,包括基於Web的儀表板和REST API。 一般,至少有兩名Manager須要高可用性。
五、Ceph的安裝概述
================
這裏對Ceph的安裝過程進行整體的概述,詳細的安裝過程另外寫文章介紹。
六、Ceph的特色
=============
統一存儲
無任何單點故障
數據多份冗餘
存儲容量可擴展
自動容錯及故障自愈
七、Ceph的應用領域
=================
Ceph的應用場景主要由它的架構肯定,Ceph提供對象存儲、塊存儲和文件存儲,主要由4種應用:
第一類:librados應用
通俗的說,Librados提供了應用程序對RADOS的直接訪問,目前Librados已經提供了對C、C++、Java、Python、Ruby和PHP的支持。它支持單個單項的原子操做,如同時更新數據和屬性、CAS操做,同時有對象粒度的快照操做。它的實現是基於RADOS的插件API,也就是在RADOS上運行的封裝庫。
第二類:radosgw應用
這類應用基於Librados之上,增長了HTTP協議,提供RESTful接口而且兼容S三、Swfit接口。RADOSGW將Ceph集羣做爲分佈式對象存儲,對外提供服務。
第三類:librbd應用
這類應用也是基於Librados之上的,細分爲下面兩種應用場景。
第一種應用場景爲虛擬機提供塊設備。經過Librbd能夠建立一個塊設備(Container),而後經過QEMU/KVM附加到VM上。經過Container和VM的解耦,使得塊設備能夠被綁定到不一樣的VM上。
第二種應用場景爲主機提供塊設備。這種場景是傳統意義上的理解的塊存儲。
以上兩種方式都是將一個虛擬的塊設備分片存儲在RADOS中,都會利用數據條帶化提升數據並行傳輸,都支持塊設備的快照、COW(Copy-On-Write)克隆。最重要的是RBD還支持Live migration。
第四類:CephFS(Ceph文件系統)應用
這類應用是基於RADOS實現的PB級分佈式文件系統,其中引入MDS(Meta Date Server),它主要爲兼容POSIX文件系統提供元數據,好比文件目錄和文件元數據。同時MDS會將元數據存儲在RADOS中,這樣元數據自己也達到了並行化,能夠大大加快文件操做的速度。MDS自己不爲Client提供數據文件,只爲Client提供對元數據的操做。當Client打開一個文件時,會查詢並更新MDS相應的元數據(如文件包括的對象信息),而後再根據提供的對象信息直接從RADOS中獲得文件數據。
參考資料:
一、玩轉Ceph的正確姿式,https://www.cnblogs.com/me115/p/6366374.html,這篇介紹的比較簡明、清楚
二、Ceph基礎知識和基礎架構認識,https://www.cnblogs.com/luohaixian/p/8087591.html,這篇很是理論化,必須在看完第一篇而且確實理解了以後,才能看,不然看了也一頭霧水
三、Ceph中文文檔,http://docs.ceph.org.cn/start/intro/,沒看,僅僅作參看
四、Ceph官方網站,http://docs.ceph.com/docs/master/start/intro/,看了第一頁
五、Ceph簡介和集羣搭建,http://blog.51niux.com/?id=161,看了ceph特色、集羣組件、cehp應用場景
六、Ceph術語,https://blog.csdn.net/wuxiaobingandbob/article/details/80016396,沒看
七、Ceph分佈式存儲系統介紹,https://blog.csdn.net/shuningzhang/article/details/50081641,看了Ceph物理部署邏輯示意圖和ceph部署組件的簡介
八、Ceph塊存儲介紹,https://www.cnblogs.com/luohaixian/p/8213748.html,看了塊的概念
九、Ceph的基本安裝,http://blog.51cto.com/linuxnote/1788333,大概看了安裝過程,可是爲何要這樣安裝沒有看
十、使用ceph-deploy安裝Ceph 12.x(一) 建立虛擬機環境,https://blog.csdn.net/nirendao/article/details/79357823,這個文章是安裝ceph的一個系列,有4篇,沒有怎麼看,留着看完寫第五節
十一、ceph documentation,http://docs.ceph.com/docs/master/install/,這裏有Ceph的詳細安裝方法,有三種ceph-deploy,manual,kuberbenate+helm,具體含義還不清楚,再看吧
十二、ceph工做原理及安裝,https://www.jianshu.com/p/25163032f57f,這篇很好,有安裝組件的結構圖示、有存儲數據的過程的示意圖等能夠參考