1. 程式人生 > >解析Ceph和9000分散式儲存

解析Ceph和9000分散式儲存

       Ceph是呼聲很高的開源分散式的SDS產品儲存系統。同時提供物件儲存、塊儲存和檔案系統儲存三種功能,滿足不同應用需求。Ceph使用C++語言開發,遵循LGPL協議開源。Sage Weil(Ceph論文發表者)於2011年創立了以Inktank公司主導Ceph的開發和社群維護。2014年Redhat收購 inktank公司,併發布Inktank Ceph企業版,業務場景聚焦雲、備份和歸檔,支援物件和塊儲存應用。從此出現Ceph開源社群版本和Redhat企業版。

      OceanStor 9000是國內比較流行的商業分散式檔案系統,基於華為上一代CSS-F海量儲存系統而演進,在架構上拋棄了元資料節點,從而採用分散式全對稱架構。在媒資、高效能運算、大資料和視訊監控都有很多成功案例和交付經驗。今天我們花點時間討論下Ceph和9000儲存架構、應用場景和相容性等方面的差異。

Cehp的基礎服務架構

      Cehp的基礎服務架構主要包括了ObjectStorage Device(OSD),Monitor和MDS。基於此,Ceph提供了Librados原生物件基礎庫、Librbd塊儲存庫、Librgw基於S3和Swift相容的物件庫和Libceph檔案系統庫。

      OSD(Object Storage Device)負責儲存資料,處理資料複製、資料恢復、資料再均衡以及通過心跳機制監測其它OSD狀況並報告給Ceph Monitors。

      Monitor負責監控叢集狀態,包括監控自身狀態、叢集OSD狀態、PlacementGroup(儲存組織和位置對映)狀態、CRUSH狀態(Controlled Replication Under Scalable Hashing,一種偽隨機資料分佈演算法)。同時,Monitor還會記錄它們的每一個歷史狀態改變版本資訊,以確定叢集該遵循哪個版本。

      MDS負責檔案系統的元資料儲存和管理,也就是如前所說,塊儲存和物件儲存服務是不需要這個模組的。MDS負責提供標準的POSIX檔案訪問介面。

      搭建一臺Ceph系統至少需要1個Ceph Monitor和2個Ceph OSD邏輯角色,而Ceph Metadata server僅僅是執行CephFS時儲存檔案元資料。但在物理部署上,這些邏輯角色可以執行在同一臺物理機上的。Ceph儲存資料預設是2副本拷貝,所以不管是提供Object、Block還是File system服務,最小的Ceph系統需要2臺OSD儲存伺服器。

9000的基礎服務架構

      9000是一個比較龐大的集群系統,在內部又由很多個負責不同角色的小叢集組成。這些叢集都部署在普通儲存節點之上,ISM、CMS和Monitoring叢集分別負責GUI管理配置、系統叢集管理和狀態監控,節點處於Active Standby模式保證系統可靠性。

      CA(Client Agent)負責檔案系統協議的語義解析執行,是檔案系統業務發動機,檔案切片、資料組合都由CA完成。9000支援標準CIFS、NFS和私有客戶端;在私有客戶端場景下,CA/SCA安裝在伺服器上,基於VFS檔案系統開發併兼容Posix介面標準。

      MDS(MetaData Service)管理檔案系統的元資料,在9000中元資料和使用者資料都保持在儲存節點上,元資料採用高可靠多副本儲存。元資料管理服務管理著整個系統的元資料和檔案資料的佈局資訊,負責系統的資源分配。每個儲存節點都是元資料節點。


      客戶端對物件服務的請求,通過OSC物件介面服務來響應,首先查詢OMD物件儲存元資料,然後根據查詢結果獲取物件位置並讀寫對於物件。OMD以叢集的模式提供物件元資料服務,部署在每個物件儲存物理節點上。

      OBS是整個系統的基礎伺服器系統,基於物件儲存系統,資料通過Key-Value的形式儲存在磁碟上,基於OBS系統提供上層NAS和Object儲存服務。OBS-C是客戶端、負責資料的操作;OBS-S是服務端、提供資料儲存服務,資料以物件的形式存放在資料子域中。

Cehp的軟體體系架構

(1)基礎儲存系統RADOS

RADOS(Reliable, Autonomic, Distributed Object Store)一層本身就是一個完整的物件儲存系統,包括Cehp的基礎服務(MDS,OSD,Monitor),所有儲存在Ceph系統中的使用者資料事實上最終都是由這一層來儲存的。而Ceph的高可靠、高可擴充套件、高效能、高自動化等等特性本質上也是由這一層所提供的。因此,理解RADOS是理解Ceph的基礎與關鍵。


      RADOS在物理形態上由大量的儲存裝置節點組成,每個節點擁有自己的硬體資源(CPU、記憶體、硬碟、網路),並執行著作業系統和檔案系統。

(2)基礎庫librados

      這一層的功能是對RADOS進行抽象和封裝,並向上層提供不同API,以便直接基於RADOS進行原生物件或上層物件、塊和檔案應用開發。特別要注意的是,RADOS是一個物件儲存系統,因此,基於librados實現的API也只是針對物件儲存功能的。

      RADOS所提供的原生librados API包括C和C++兩種。Librados在部署上和基於其上開發的應用位於同一臺機器。應用呼叫本機上的librados API,再由後者通過socket與RADOS叢集中的節點通訊並完成各種操作。

(3)高層儲存應用介面

      這一層包括了RADOSGW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System)三個部分,其作用是在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層介面。

      RADOS GW是一個提供與Amazon S3和Swift相容的RESTful API的gateway,以供相應的物件儲存應用開發使用。RADOS GW提供的API抽象層次更高,但功能則不如librados強大。因此,開發者應針對自己的需求選擇使用。

      RBD則提供了一個標準的塊裝置介面,常用於在虛擬化的場景下為虛擬機器建立volume。如前所述,Red Hat已經將RBD驅動整合在KVM/QEMU中,以提高虛擬機器訪問效能。

      CephFS是一個POSIX相容的分散式檔案系統。目前還處在開發狀態,因而Ceph官網並不推薦將其用於生產環境中。

(4)伺服器客戶端層

      這一層就是不同場景下對於Ceph各個應用介面的各種應用方式,例如基於librados直接開發的物件儲存應用,基於RADOS GW開發的物件儲存應用,基於RBD實現的雲硬碟等等。


      Ceph Client是基於Fuse層(User SpacE)和VFS檔案系統開發,相容Posix介面標準。在Ceph儲存系統中,Ceph Metadata Daemon 提供了元資料伺服器,而Ceph Object Storage Daemon 提供了資料和元資料的實際儲存。Ceph對DFS、Block和Object資料寫入和讀取,都需Client利用Crush演算法(負責叢集中的資料放置和檢索的演算法)完成儲存位置計算和資料組裝。

9000的軟體體系架構

(1)基礎服務層

      OBS是整個系統的基礎伺服器系統,資料通過Key-Value的形式儲存在磁碟上,基於OBS系統提供上層NAS和Object儲存服務。採用Key-Value方式進行編址及儲存,可以減少原來LBA方式的元資料儲存量。

(2)資料處理層

      基於OBS基礎服務層,通過資料處理層構建NAS和Object服務。NAS的主要核心模組是MDS元資料服務和CA資料服務,每次資料請求都需要CA查詢不同節點上的不同元資料定位請求檔案的位置,並把從每個儲存節點讀取到的資料進行彙總,統一返回給客戶端。Object的主要可行模組是OSC物件介面服務和OMD物件儲存元資料服務。

(3)儲存服務層

      9000提供NAS和物件兩種型別服務,同時提供了豐富的儲存增值服務。物件包括資料重刪、多版本、多租戶、Swift和S3等服務;NAS包括快照、檔案複製、分級儲存、負載均衡等增值服務和HDFS、NDMP等服務。

由於9000叢集管理、監控等服務都是採用1 Active主2 Standby備模式,且EC演算法等要求,所以9000儲存系統支援最少3節點起配;當NAS和物件共存時,做小節點是5節點起配。檔案和物件元資料相互分離,但使用者資料空間是共享的。

OpenStack的相容和支援

      Ceph儲存軟體最常見的用途之一是作為OpenStack雲端儲存後端,另一個用途是在 RADOS中存放和檢索VM映象(OpenStack Glance映象服務)。目前以HP、Dell、Intel等為代表的企業IT領導廠商和以Mirantis、eNovance、UnitedStack為代表的OpenStack社群新興廠商,都將Ceph作為重要的乃至於首選的開源儲存解決方案。

      Ceph事實上是目前OpenStack生態系統中呼聲最高的開源儲存解決方案。Ceph的物件儲存(Object Storage)可以對接網盤等應用業務;塊裝置儲存(Block Device Storage)可以對接(IaaS),例如OpenStack、CloudStack、Zstack、Eucalyptus以及KVM虛擬化等主流的IaaS雲平臺軟體,檔案系統(CephFS)尚不成熟。

      目前已經與QEMU虛機化(硬體虛擬化)整合,通過相關命令呼叫管理Ceph塊儲存服務(RBD)。支援通過對OpenStacklibvirt和QEMU之間的配置,來實現對KVM、XEN、LXC、VirtualBOX等各種虛機映象管理。


      支援通過libvirt將Ceph塊儲存服務(RBD)加入到OpenStack,已經完成與Glance(VM映象管理)、Cinder(塊儲存)整合。通過Glance儲存虛機映象到CephRBD或者通過Cinder啟動虛機。

      Ceph物件(Object Gateway)目前支援Amazon S3和OpenStack Swift,整合支援了OpenStack的keystone身份認證。

      9000目前計劃支援Openstack Malina NAS介面,實現也Openstack進行對接。另外也支援Amazon S3和OpenStack Swift,整合支援了OpenStack的keystone身份認證。由於目前9000還不支援SAN儲存,所以無法實現與OpenStack Glance映象整合。

學習總結

      Ceph基礎庫Librados和高層應用都提供了API,但是二者面向的使用者物件不同。librados API更底層,沒有賬戶、容器等等高階概念,它更適合對儲存系統理解深刻並進行功能定製和效能深度優化的儲存高階使用者;而RADOS Gateway等的高階應用API則更加適合應用的開發者。下面我們對Ceph和9000儲存系統進行簡單對比。

      擴充套件性: Ceph針對的場景主要是大規模和分散式儲存,資料量級一般希望PB級別以上,儲存節點成千上萬。9000目前最大支援288節點、60PB容量,據悉未來規劃切平臺到RH系列X86伺服器之後,在節點上應該無限制。

      系統架構: 9000和Ceph在架構上很相似,分散式、全對稱、X86商業硬體的SDS架構,儲存層資料基於物件儲存在磁碟上。區別在於9000整合CA資料訪問客戶端,對外提供標準的CIFS和NFS,可以相容Windows、Linux、Unix和Mac OS等系統,支援NAS和Object儲存服務;Ceph需要單獨的伺服器客戶端,目前主要相容Linux主流系統。

      應用場景: Ceph支援NAS、SAN和Object服務,服務介面更豐富,但主要提供SAN和Object儲存,一般用於和OpenStack雲對接,聚焦備份和歸檔;9000支援NAS和Object服務,針對大資料、媒資和HPC場景設計,所以主要用於高頻寬媒資編輯、基因測序、視訊監控和容量資源池等場景,兩者應用場景有些不同。

      可靠性和容量利用率: Ceph採用Crush演算法(類似EC)和雙副本方法儲存資料,但是Ceph資料儲存和檢索處理都在Clinet端處理,在資料讀寫過程中可能對Clinet伺服器端的效能有些影響。9000也是採用EC(Erasure Code)和多副本技術,所以在可靠性和容量使用率上與Ceph基本一致;但9000資料的切片和聚合都在儲存上實現,對主機沒有什麼影響。

      軟體特性: Ceph和9000都實現了檔案快照、HDFS等特性,但是檔案分級、檔案複製、NDMP等在Ceph中暫時還沒看到。Ceph實現了塊儲存快照、Thin和複製等功能。雖然說Ceph在NAS功能上比較欠缺,但目前Ceph發展的策略是從Block、Object到FilesyStem。

      統一管理: 目前Ceph採用CLI和配置檔案方式完成系統配置和管理,這基本上是開源專案的典型一個特點,對運維管理人員要求比較高。9000支援統一GUI管理、配置和監控,比較方便運維。但是Ceph在雲集成方面的能力值得9000學習和借鑑。

溫馨提示:
請搜尋“ICT_Architect”“掃一掃”下面二維碼關注公眾號,獲取更多精彩內容。

相關推薦

解析Ceph9000分散式儲存

       Ceph是呼聲很高的開源分散式的SDS產品儲存系統。同時提供物件儲存、塊儲存和檔案系統儲存三種功能,滿足不同應用需求。Ceph使用C++語言開發,遵循LGPL協議開源。Sage We

解析CephOceanStor 9000分散式儲存

      Ceph是呼聲很高的開源分散式的SDS產品儲存系統。同時提供物件儲存、塊儲存和檔案系統儲存三種功能,滿足不同應用需求。Ceph使用C++語言開發,遵循LGPL協議開源。Sage Weil(Ceph論文發表者)於2011年創立了以Inktank公司主導

分散式儲存-ceph原理

一、ceph核心元件:   Ceph提供了RADOS、OSD、MON、Librados、RBD、RGW和Ceph FS等功能元件,但其底層仍然使用RADOS儲存來支撐上層的那些元件;   核心元件:Ceph OSD,Ceph Monitor,

Linux叢集儲存——day4——Ceph分散式儲存搭建、OSD塊儲存、COW快照、RBD儲存映象

Ceph的專有名詞 OSDs 儲存裝置 Monitors 叢集監控元件 MDSs 存放檔案系統的元資料 部署Ceph分散式儲存  

分散式儲存中HDFS與Ceph兩者的區別是什麼,各有什麼優勢?

過去兩年,我的主要工作都在Hadoop這個技術棧中,而最近有幸接觸到了Ceph。我覺得這是一件很幸運的事,讓我有機會體驗另一種大型分散式儲存解決方案,可以對比出HDFS與Ceph這兩種幾乎完全不同的儲存系統分別有哪些優缺點、適合哪些場景。 對於分散式儲存,尤其是開源的分散式儲存,站在一個SRE的角度,我認為

HDFS分散式儲存架構讀寫機制總結

 如上圖所示,HDFS也是按照Master和Slave的結構。分NameNode、SecondaryNameNode、DataNode這幾個角色。   NameNode:是Master節點,是大領導。管理資料塊對映;處理客戶端的讀寫請求;配置副本策略;管理HDFS的名稱空間;   

《大規模分散式儲存系統:原理解析與架構實戰》pdf附網盤下載連結送給還在迷茫的你

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的

持續整合系列(6)------分散式儲存ceph部署

持續整合系列(6)------k8s結合ceph實現動態申請pv 目標 預設情況下,pod使用的儲存需要先手動建立pv,再通過pvc申請已建立的pv,步驟繁瑣;利用kubernetes的新特性allows storage volumes to be cre

分散式儲存Ceph之PG狀態詳解

本文是滴滴雲開源框架教程系列文章的一篇。 上次分享了《Ceph介紹及原理架構分享》,這次來分享Ceph中的PG各種狀態詳解,PG是最複雜和難於理解的概念之一,PG的複雜如下: 在架構層次上,PG位於RADOS層的中間。 a. 往上負責接收和處理來自客戶端的請求

helm部署ceph在k8s上做分散式儲存

先在k8s上機器上拉取映象 docker pull docker.io/ceph/daemon:tag-build-master-luminous-ubuntu-16.04 docker pull docker.io/kolla/ubuntu-source-kubernetes-en

分散式儲存平行計算的一點思考

分散式儲存: 首先是檔案在HDFS上面以128M塊大小儲存(3份),這三塊是在不同節點的(機架感知),我覺的好處是容錯還有當計算是這個節點資源不夠可以去塊所在的另一節點執行,不用拉取資料。 可以通過fs.getfileblocklocation()獲取塊位置 平行計算: 1、MR使用預設的輸

Seafile深入學習(十一) Ceph的rados物件儲存層直接對接

Seafile作為一個應用的角色,作為客戶端直接訪問Ceph的rados層。同樣是直接在配置檔案裡建立三個用於存放Seafile資料物件的桶,我們有一個資料庫id可以定位這些內容,方便你在物件儲存中找到同一個資料庫的資料。配置過程:這裡我們預設會在Ceph客戶端以管理員的身份

【高效能】Lustre分散式儲存檔案系統介紹故障分析

Lustre是應用廣泛的linux開源分散式儲存檔案系統,其容量可輕易擴容到PB級別,在HPC、雲上有相應的使用。 Lustre由元資料伺服器MDS、資料儲存伺服器OSS組成。MDS伺服器負責管理OSS伺服器上的資料,並處理來自客戶端的資料請求。每個OSS伺服器的本地儲存

k8s(十二)、分散式儲存Ceph RBD使用

前言 Ceph儲存有三種儲存介面,分別是: 物件儲存 Ceph Object Gateway 塊裝置 RBD 檔案系統 CEPHFS Kubernetes支援後兩種儲存介面,支援的接入模式如下圖: 在本篇將測試使用ceph rbd作持久化儲存後端 RBD建立

基於 Ceph RBD 實現 Docker 叢集的分散式儲存

以 Docker 為代表的容器技術在雲端計算領域正扮演著越來越重要的角色,甚至一度被認為是虛擬化技術的替代品。企業中對於有狀態的容器,往往需要將資料儲存在額外的儲存空間。Docker 引入了 Volume 機制,能夠將永久資料獨立於容器之外。正式的生產環境,Docker 通常

Paxos分散式儲存系統

1.paxos解決的問題 用來確定一個不可變變數的取值,取值可以是任意二進位制資料,該變數的取值一旦確定將不再更改,並且可以被獲取到(不可變性,可讀取性) 2.分散式儲存系統中paxos應用: <1>資料本身可變,採用多副本進行

Ceph分散式儲存系統

Ceph是根據加州大學Santa Cruz分校的Sage Weil的博士論文所設計開發的新一代自由軟體分散式檔案系統,其設計目標是良好的可擴充套件性(PB級別以上)、高效能及高可靠性。Ceph其命名和UCSC(Ceph 的誕生地)的吉祥物有關,這個吉祥物是“Sa

什麼是Ceph儲存?什麼是分散式儲存?簡單明瞭帶你學Ceph--<1>

Ceph儲存介紹 為什麼要用Ceph Ceph是當前非常流行的開源分散式儲存系統,具有高擴充套件性、高效能、高可靠性等優點,同時提供塊儲存服務(rbd)、物件儲存服務(rgw)以及檔案系統儲存服務(cephfs),Ceph在儲存的時候充分利用儲存節點的計算能力,在儲存每一個數據時都會通過計算得出該資料的位置

一步一步安裝配置Ceph分散式儲存叢集

Ceph可以說是當今最流行的分散式儲存系統了,本文記錄一下安裝和配置Ceph的詳細步驟。 提前配置工作 從第一個叢集節點開始的,然後逐漸加入其它的節點。對於Ceph,我們加入的第一個節點應該是Monitor,我們設定為Monitor1。 我使用的作業系統是Ubuntu Server 19.10,目前沒有對應的

滴滴Ceph分散式儲存系統優化之鎖優化

![](https://img2020.cnblogs.com/other/1632886/202009/1632886-20200901135524592-2085150991.png) ![](https://img2020.cnblogs.com/other/1632886/202009/163288