天天看點

Ceph:一個新時代的開始

 開放性、可擴充性和可靠性,使Ceph 成為了存儲行業中的翹楚。這是雲計算和軟體定義基礎設施的時代,我們需要一個完全軟體定義的存儲,更重要的是它要為雲做好了準備。無論你運作的是公有雲、私有雲還是混合雲,Ceph 都非常合适。 

    目前Ceph 是一種已經震撼了整個存儲行業的最熱門的軟體定義存儲技術。它是一個開源項目,為塊存儲、檔案存儲和對象存儲提供了統一的軟體定義解決方案。Ceph 旨在提供一個擴充性強大、性能優越且無單點故障的分布式存儲系統。從一開始,Ceph 就被設計為能在通用商業硬體上運作,并且支援高度擴充(逼近甚至超過艾位元組的數量)。 

    如今的軟體系統非常智能,已經可以最大限度地利用商業硬體來運作規模龐大的基礎設施。Ceph 就是其中之一;它明智地采用商業硬體來提供企業級穩固可靠的存儲系統。 

    Ceph 已被不斷完善,并融入以下建設性理念: 

    每個元件能夠線性擴充 

    無任何單故障點 

    解決方案必須是基于軟體的、開源的、适應性強的 

    運作于現有商業硬體之上 

    每個元件必須盡可能擁有自我管理和自我修複能力 

    對象是Ceph 的基礎,也是Ceph 的建構部件,并且Ceph 的對象存儲很好地滿足了當下及将來非結構化資料存儲需求。相比傳統存儲解決方案,對象儲存有其獨特優勢;我們可以使用對象存儲實作平台和硬體獨立。Ceph 謹慎地使用對象,通過在叢集内複制對象來實作可用性;在Ceph 中,對象不依賴于實體路徑,這使其獨立于實體位置。這種靈活性使Ceph 能實作從PB(petabyte)級到EB(exabyte)級的線性擴充。 

    Ceph 性能強大,具有超強擴充性及靈活性。它可以幫助使用者擺脫昂貴的專有存儲孤島。Ceph 是真正的在商業硬體上運作的企業級存儲解決方案,是一個低成本但功能豐富的存儲系統。Ceph 通用存儲系統同時提供塊存儲、檔案存儲和對象存儲,使客戶可以按需使用。 

資料存儲需求在過去的幾年中爆發性增長。研究表明,大型組織中的資料每年以40%到60%的速度增長,許多公司的資料規模每年會增加一倍。IDC 分析師估計,2000 年全球共有數字資料54.4 艾位元組(Exabyte);到2007 年,達到295 艾位元組;到2020 年,有望達到44 澤位元組(Zettabyte)。傳統存儲系統無法應對這種資料增速,我們需要像Ceph 這樣的分布式可擴充系統,而且最重要的是它經濟實惠。Ceph 專門用來應對當今以及将來的資料存儲需求。

SDS(軟體定義存儲) 

SDS 可以降低你存儲基礎設施的TCO (Total Cost of Ownership,總體擁有成本)。除降低存儲成本外,SDS 還具有靈活性、可擴充性和可靠性。Ceph 是一個真正的SDS 方案,它運作在無廠商鎖定的商業硬體之上,并使每GB 資料存儲成本降至很低。不像傳統存儲 

系統硬體必須和軟體綁定在一起,在SDS 中,你可以自由地從任何制造商那裡選擇商業硬 

件,可随意按自己的需要設計異構的硬體解決方案。Ceph 基于這些硬體,通過軟體定義存儲的方法來全方位地滿足你的各種需求,并在軟體層中提供了所有企業級存儲特性。

雲存儲 

    雲基礎設施的難點之一是存儲。每一個雲基礎設施都需要可靠的、低成本、可擴充、與雲其他子產品相比更緊密內建的存儲系統。有很多号稱雲就緒的傳統存儲解決方案已經在市場上出現了,但如今我們的存儲不僅要能夠與雲系統結合,還有很多其他需求。我們需要能和雲系統完全內建、可提供更低TCO 且具有完全可靠性和可擴充性的存儲系統。雲系統是軟體定義的,建立在商業硬體之上;類似地,雲所需要的存儲系統也必須采用同樣方式,也就是基于商業硬體以及軟體定義,而Ceph 是雲存儲的最佳選擇。 

    Ceph 已迅速發展,并逐漸成為真正的雲存儲後端。它已入駐各個大型開源雲平台,比如OpenStack、CloudStack 和OpenNebula。此外,Ceph 已成功與雲計算廠商如Red Hat、Canonical、Mirantis、SUSE 等建立互利夥伴關系。這些公司正幫助Ceph 經曆重要時刻,包括使其作為他們Openstack 雲平台的指定存儲後端,這些都正逐漸使Ceph 成為雲存儲技術領域中炙手可熱的技術。 

    OpenStack 開源項目是公有雲和私有雲領域的最佳範例之一。它已經被證明是一個純粹的開源雲解決方案。 OpenStack 包含很多項目,如Cinder、Glance 和Swift,可為OpenStack提供存儲功能。這些OpenStack 元件需要具備像Ceph 這樣可靠、可擴充、統一內建的存儲後端。出于這個原因,OpenStack 和Ceph 社群已經在一起合作很多年,開發了完全相容OpenStack 的Ceph 存儲後端。 

基于Ceph 的雲基礎設施提供了服務供應商急需的靈活性,來建立存儲即服務和基礎設施即服務的解決方案。這是他們無法從其他傳統企業存儲解決方案中獲得的,因為這些方案并不旨在滿足雲計算需求。通過使用Ceph,服務提供商可以提供低成本的可靠的雲存儲給他們的客戶。

統一的下一代存儲架構 

    近來,統一存儲的定義已經發生變化。幾年前,所謂“統一存儲”指的是由一個單一的系統來提供檔案存儲和塊存儲。現在,因為最近的技術進步,例如雲計算、大資料、物聯網,新類型的存儲一直在演變,對象存儲也随之出現。是以,所有不支援對象存儲的存儲系統都不是真正的統一存儲解決方案。真正的統一存儲是像Ceph 這樣的——能在一個系統中統一地提供塊存儲、檔案存儲和對象存儲。 

在Ceph 中,“統一存儲”這個概念比現有存儲廠商所宣稱的更有意義。從設計上,Ceph已經完全為未來做好了準備,被構造為能夠處理海量資料。我們強調Ceph“為未來做好了準備”,是特指其對象存儲功能,它比塊存儲和檔案存儲更适合當今的非結構化資料。Ceph不僅支援塊存儲和檔案存儲,更重要的是可以基于對象來實作塊存儲和檔案存儲。對象通過消除中繼資料操作來提供更好的性能和極大的擴充。Ceph 使用算法來動态地計算對象應當被儲存和擷取的位置。 

    SAN 和NAS 系統的傳統存儲架構是非常局限的。基本上,它們具有傳統控制節點的高可用性,也就是說,一個存儲控制節點出現故障後,将從第二個控制節點提供資料。但是,如果第二個控制節點同時出現故障呢?甚至更糟糕的情況,如果整個磁盤櫃發生故障呢?在大多數情況下,最終會丢失資料。這種存儲架構無法承受多次故障,是以絕對不是我們想要的。傳統存儲系統的另一個缺點是其資料存儲和通路機制。它擁有一個中心中繼資料查找表,每次在用戶端發送一個讀寫操作請求後,存儲系統首先在巨大的中繼資料表中進行查找,在确定實際資料的位置後再執行用戶端操作。對于較小的存儲系統,你可能不會注意到性能問題,但對于一個大型存儲叢集,你一定會被這種方法的性能限制限制,它甚至會限制你的可擴充性。 

    Ceph 不拘泥于這樣的傳統存儲架構;事實上,它的架構已經完全被革新了。它不再存儲和進行中繼資料,而是引入了一個新的方法:即CRUSH(Controlled Replication UnderScalable Hashing)算法。CRUSH 表示資料存儲的分布式選擇算法。CRUSH 算法取代了在中繼資料表中為每個用戶端請求進行查找,它計算系統中資料應該被寫入或讀出的位置。通過計算中繼資料,就不再需要管理中繼資料表了。現代計算機速度驚人,可以非常迅速地執行CRUSH 查找。此外,其計算量通常不大,還可以分布到叢集的多個節點上。除此之外,CRUSH 還獨具基礎架構感覺功能。它能了解基礎設施各個部件之間的關系。CRUSH儲存資料的多個副本,這樣即使一個故障域的幾個元件都出現故障,資料依然可用。正是得益于CRUSH 算法,Ceph 可以處理多個元件故障,以保證可靠性和持久性。 

CRUSH 算法使Ceph 實作了自我管理和自我修複。在一個故障域内某元件發生故障時,CRUSH 能感覺到是哪個元件出了故障,并判斷該故障對叢集的影響。在沒有任何管理幹預情況下,CRUSH 自我管理并通過恢複因故障丢失的資料而自愈。CRUSH 從叢集所維護的副本中重新産生資料。如果你已經正确配置了Ceph CRUSH map,它就會確定你的資料至少有一個副本始終可以通路。通過使用CRUSH,我們能設計出一個無單一故障點的高度可靠的存儲基礎設施。它使Ceph 成了一個面向未來的高可擴充和高可靠的存儲系統。 

    Ceph 架構概述 

    Ceph 内部架構非常直接,下圖将幫助我們了解: 

Ceph:一個新時代的開始

    Ceph monitor(螢幕,簡稱MON):Ceph monitor 通過儲存一份叢集狀态映射來維護整個叢集的健康狀态。它分别為每個元件維護映射資訊,包括OSD map、MONmap、PG map(會在後面的章節中讨論)和CRUSH map。所有群集節點都向MON節點彙報狀态資訊,并分享它們狀态中的任何變化。Ceph monitor 不存儲資料;這是OSD 的任務。 

    Ceph 對象儲存設備(OSD):隻要應用程式向Ceph 叢集發出寫操作,資料就會被以對象形式存儲在OSD 中。這是Ceph 叢集中唯一能存儲使用者資料的元件,同時使用者也可以發送讀指令來讀取資料。通常,一個OSD 守護程序會被捆綁到叢集中的一塊實體磁盤上。是以,在通常情況下,Ceph 叢集中的實體磁盤的總數,與在磁盤上運作的存儲使用者資料的OSD 守護程序的數量是相同的。 

    Ceph 中繼資料伺服器(MDS):MDS 隻為CephFS 檔案系統跟蹤檔案的層次結構和存儲中繼資料。Ceph 塊裝置和RADOS 并不需要中繼資料,是以也不需要Ceph MDS守護程序。MDS 不直接提供資料給用戶端,進而消除了系統中的故障單點。 

    RADOS(Reliable Autonomic Distributed Object Store):RADOS 是Ceph 存儲叢集的基礎。在Ceph 中,所有資料都以對象形式存儲,并且無論是哪種資料類型,RADOS 對象存儲都将負責儲存這些對象。RADOS 層可以確定資料始終保持一緻。

    要做到這一點,須執行資料複制、故障檢測和恢複,以及資料遷移和在所有叢集節點實作再平衡。 

librados:librados 庫為PHP、Ruby、Java、Python、C 和C++這些程式設計語言提供了友善地通路RADOS 接口的方式。同時它還為諸如RBD、RGW 和CephFS 這些元件提供了原生的接口。Librados 還支援直接通路RADOS 來節省HTTP 開銷。 

    RADOS 塊裝置(RBD):衆所周知,RBD 是Ceph 塊裝置,提供持久塊存儲,它是自動精簡配置并可調整大小的,而且将資料分散存儲在多個OSD 上。RBD 服務已經被封裝成了基于librados 的一個原生接口。 

    RADOS 網關接口(RGW):RGW 提供對象存儲服務。它使用librgw(Rados Gateway Library)和librados,允許應用程式與Ceph 對象存儲建立連接配接。RGW 提供了與Amazon S3 和OpenStack Swift 相容的RESTful API。 

    CephFS:Ceph 檔案系統提供了一個使用Ceph 存儲叢集存儲使用者資料的與POSIX相容的檔案系統。和RBD、RGW 一樣,CephFS 服務也基于librados 封裝了原生接口。 

本文轉自    OpenStack2015 部落格,原文連結:      http://blog.51cto.com/andyliu/1858158  如需轉載請自行聯系原作者