天天看點

Ceph介紹(一):基本原理

轉載;開源社群的明星項目—Ceph談

前言

啟迪雲作為一家知名私有雲提供商,面向客戶提供一套完整的私有雲解決方案。存儲作為私有雲的重中之重,是以啟迪雲後端也支援多種存儲,包括開源社群的明星項目—Ceph。

啟迪雲與Ceph實作了無縫對接,不僅優化了原有的功能,而且增加了啟迪雲特有的定制化的功能,為使用者資料提供了可靠性、易用性、一緻性。

簡介

誕生于2006年的Ceph,是開源社群的明星項目,也是私有雲事實上的标準-OpenStack的預設存儲後端。

Ceph是一種軟體定義存儲,可以運作在幾乎所有主流的Linux發行版(比如CentOS和Ubuntu)和其它類UNIX作業系統(典型如FreeBSD)。

Ceph的分布式基因使其可以輕易管理成百上千個節點、PB級及以上存儲容量的大規模叢集,同時基于計算的扁平尋址設計使得Ceph用戶端可以直接和服務端的任意節點通信,進而避免因為存在通路熱點而導緻性能瓶頸。

Ceph是一個統一存儲系統,即支援傳統的塊、檔案存儲協定,例如SAN和NAS;也支援對象存儲協定,例如S3和Swift。

Ceph介紹(一):基本原理

❖ Ceph和存儲的未來

所有存儲系統的要求都是統一、分布式、可靠、高性能且能夠大規模擴充至艾位元組,甚至更進階别。Ceph存儲系統是一個真正的解決方案,它可以應對這個星球上爆炸式增長的資料。其統一、分布式、高成本效益和可擴充的特性使它成為滿足今天和将來資料存儲需求的潛在解決方案。

Ceph介紹(一):基本原理

❖ Ceph雲存儲解決方案

所有想在存儲基礎設施上省錢的使用者最有可能很快就考慮采用軟體定義存儲(SDS)。SDS可以為在傳統存儲上有大投入但仍然沒有獲得必要的靈活性和擴充性的使用者提供一個很好的解決方案。Ceph是一個真正的SDS解決方案,它可以從軟體層面正确提供所有的企業級存儲特性。低成本、可靠性、可擴充性是Ceph的主要特點。

❖ Ceph統一存儲解決方案

從存儲廠商的角度來看,統一存儲的定義就是在單一的平台上同時提供基于檔案和基于塊的通路。企業存儲環境在單一平台提供NAS和SAN。

在Ceph中,統一存儲這個詞涵蓋的功能比現在的存儲廠商所聲稱的更多。Ceph是一個真正的統一存儲解決方案,它從單一統一軟體層提供對象、塊和檔案存儲。

在傳統基于檔案的存儲系統中,檔案是通過檔案目錄進行尋址的。相類似,Ceph中的對象通過唯一的辨別符進行尋址,并存儲在一個扁平的尋址空間中。剔除了中繼資料操作之後,對象提供了無限的規模擴充和性能提升。Ceph通過一個算法來動态計算存儲和擷取某個對象的位置。

下一代架構

傳統的存儲系統并不具備更智能地管理中繼資料的方法。傳統的存儲系統通過維護一張集中的查找表來跟蹤它們的中繼資料。用戶端每次發出讀寫操作請求時,存儲系統首先要查找這個巨大的中繼資料表,得到結果之後它才能執行用戶端請求的操作。對于一個小的存儲系統而言,也許不會感覺到性能問題,但對于一個大的存儲叢集來說,你将會受制于這種方法的性能限制,也會限制系統的擴充性。

Ceph引入了一個叫CRUSH的新算法,而不是儲存和操縱中繼資料。

CRUSH是Controlled Replication Under Scalable Hashing的縮寫,CRUSH算法在背景計算資料存儲和讀取的位置,而不是為每個用戶端請求執行中繼資料表的查找。通過動态計算中繼資料,不需要管理一個集中式的中繼資料表。

CRUSH使得Ceph能夠自我管理和自我治愈。當故障區域中的元件故障時,CRUSH能夠感覺哪個元件故障了,并确定其對叢集的影響。無須管理者的任何幹預,CRUSH就會進行自我管理和自我療愈,為因故障而丢失的資料執行恢複操作。

使用CRUSH,我們能夠設計一個沒有單點故障的高度可靠的存儲基礎設施。它也使得Ceph成為一個面向未來的高度可擴充和可靠的存儲系統。

相容性組合

Ceph是一個完備的企業級存儲系統,它支援多種協定以及通路方式。這個統一的存儲支援Ceph塊、檔案和對象存儲。

Ceph塊存儲

塊存儲是存儲區域網絡中使用的一個資料存儲類别。

在這種類型中,資料以塊的形式存儲在卷裡,卷會挂接到節點上。這些塊形成的卷會映射到作業系統中,并被檔案系統層控制。

Ceph引入了一個新的RBD協定,也就是Ceph塊裝置。RBD為用戶端提供了可靠、分布式、高性能的塊存儲。RBD已經被Linux核心支援,幾乎所有的Linux作業系統發行版都支援RBD。除了可靠性和性能之外,RBD也支援其他的企業級特性,如完整和增量式快照,精簡的配置,寫時複制式克隆以及全記憶體是緩存。

Ceph RBD支援的最大鏡像為16EB。這些鏡像可以作為磁盤映射到實體機裸機、虛拟機或者其他主機用。業界領先的開源hypervisor,例如KVM和Xen完全支援RBD。

Ceph介紹(一):基本原理

Ceph檔案系統

Ceph檔案系統(也就是CephFS)是一個相容POSIX的檔案系統,利用Ceph存儲叢集來儲存使用者資料。Linux核心驅動程式支援CephFS,這也使得CephFS高度适用于各大Linux作業系統發行版。CephFS将資料和中繼資料分開存儲,為上層的應用程式提供較高的性能以及可靠性。

在Ceph叢集内部,Ceph檔案系統庫(libcephfs)運作在RADOS庫(librados)之上,後者是Ceph存儲叢集協定,由檔案、塊和對象存儲共用。要使用CephFS,叢集節點上最少要配置一個Ceph中繼資料伺服器(MDS),用戶端可以采用多種方式使用CephFS。

如果要把Ceph挂在成檔案系統,用戶端可以使用本地Linux核心的功能或者使用Ceph社群提供的ceph-fuse驅動。

除此之外,用戶端可以使用第三方開源程式,例如NFS的ganesha和SMB/CIFS的Samba。這些程式通過libcephfs将使用者資料存入可靠的分布式Ceph存儲叢集。CephFS可以用來替代HDFS。也是通過libcephfs元件将資料存入Ceph叢集。為了無縫實作這個功能,Ceph社群為Hadoop和Hadoop插件提供了必要的CephFS Java接口。

Ceph介紹(一):基本原理

Ceph對象存儲

對象存儲是一種以對象形式而不是傳統檔案和塊形式存儲資料的方法。基于對象的存儲已經引起了行業界的大量關注。為靈活地使用它們的巨量資料,這些組織正快速采用對象存儲解決方案。

Ceph介紹(一):基本原理

Ceph是一個分布式對象存儲系統,通過它的對象網關(object gateway),也就是RADOS網關(radosgw)提供對象存儲接口。RADOS網關利用librgw(RADOS網關庫)和librados這些庫,允許應用程式跟Ceph對象存儲建立連接配接。Ceph通過RESTful API提供可通路且最穩定的多租戶對象存儲解決方案之一。

RADOS網關提供RESTful接口讓使用者的應用程式将資料存儲到Ceph叢集中。RADOS網關接口滿足一下特點:

相容Swift:為OpenStack Swift API提供的對象存儲功能;

相容S3:為Amazon S3 API提供的對象存儲功能;

Admin API:這也稱為管理API或者原生API,應用程式可以直接使用它來擷取通路存儲系統的權限以管理存儲系統。

要通路Ceph的對象存儲系統,也可以繞開RADOS網關層,librados軟體庫允許使用者的應用程式通過C、C++、Java、Python和PHP直接通路Ceph對象存儲。

Ceph介紹(一):基本原理

總結

以上是對Ceph的整體架構做了一些介紹,後續我們将對裡面的技術細節進行詳細的讨論。