Ceph分布式存儲技術介紹_第1頁
Ceph分布式存儲技術介紹_第2頁
Ceph分布式存儲技術介紹_第3頁
Ceph分布式存儲技術介紹_第4頁
Ceph分布式存儲技術介紹_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Ceph分布式存儲技術介紹Chapter 1第 1 章Ceph 存儲介紹本章將講述以下主題:Ceph 概要Ceph 的歷史和發展Ceph 和存儲的未來兼容性組合Ceph 與其他存儲方案概要Ceph 是一個開源項目,它提供軟件定義的、統一的存儲解決方案。Ceph 是一個可大規模擴展、高性能并且無單點故障的分布式存儲系統。從一開始它就運行在通用商用硬件上, 具有高度可伸縮性,容量可擴展至 EB 級別,甚至更大。Ceph 因為其開放、可擴展、分布式的本質在存儲領域引起了強烈反響。如今,公有云、私有云以及混合云模型是提供大規模基礎設施的主流方案,而 Ceph 正變成一個流行的云存儲解決方案。云依賴于商

2、用硬件,而 Ceph 能夠充分利用商用硬件為你提供一個企業級、穩定、高度可靠的存儲系統。Ceph 的架構在設計之初就包含下列特性:所有的組件必須可擴展。不能存在單點故障。解決方案必須是軟件定義的、開源的并且可適配。Ceph 軟件應該運行在通用商用硬件之上。所有組件必須盡可能自我管理。Ceph 為企業提供了杰出的性能,無限的擴展性,強大并且靈活的存儲產品,從而幫助他們擺脫了昂貴的專用存儲。Ceph 是一個運行于商用硬件之上的企業級、軟件定義、統一存儲解決方案,這也使得它成為最具性價比而且功能多樣的存儲系統。Ceph 存儲系統在同一個底層架構上提供了塊、文件和對象存儲,使得用戶可以自主選擇他們需要

3、的存儲方式。對象是 Ceph 的基礎,也就是它的基本存儲單元。任何格式的數據,不管是塊、對象還是文件,都以對象的形式保存在 Ceph 集群的歸置組(Placement Group,PG)中。類似Ceph 這樣的對象存儲能夠滿足現在以及將來對于非結構化數據存儲的需求。與傳統基于文件的存儲方案比較,基于對象的存儲系統有它自己的優點。使用對象存儲,我們可以將平臺和硬件獨立開來。Ceph 能夠智能地處理對象,并且可以為每個對象都創建跨集群副本以提高其可靠性。在 Ceph 中,由于對象沒有物理存儲路徑綁定,使得對象非常靈活并且與位置無關。這也使得 Ceph 的規模能夠近線性地從 PB 級別擴展到 EB

4、級別。Ceph 的歷史和發展Ceph 是圣克魯茲加利福尼亞大學的 Sage Weil 在 2003 年開發的,也是他的博士學位項目的一部分。初始的項目原型是大約 40000 行 C+ 代碼的 Ceph 文件系統,并于 2006 年作為參考實現和研究平臺遵循 LGPL 協議(Lesser GUN Public License)開源。美國勞倫斯利物莫國家實驗室(Lawrence Livermore National Laboratory)資助了 Sage 的初始研究工作。2003 2007 年是 Ceph 的研究開發時期。在這期間,它的核心組件逐步形成,并且社區對項目的貢獻也已經開始逐漸變大。Ce

5、ph 沒有采用雙重許可模式,也就不存在只針對企業版的特性。2007 年年末,Ceph 已經越來越成熟,并開始等待孵化。此時,DreamHost(洛杉磯的一個虛擬主機和域名注冊公司)參與進來,從 2007 年到 2011 年對 Ceph 進行孵化。在這期間 Ceph 逐漸成型。已有的組件變得更加穩定、可靠;各種新特性也已經實現,未來的路線圖也已設計好。至此,Ceph 項目真正開始進入企業選擇意向和路線圖。在這期間,多個有名的開發者開始參與到 Ceph 項目中,他們中包括 Yehuda Sadeh、Weinraub、GregoryFarnum、Josh Durgin、Samuel Just、Wid

6、o den Hollander 和 Loc Dachary。2012 年 4 月,Sage Weil 在 DreamHost 的資助下成立了一家新公司 Inktank。成立 Inktank 的主要目的是提供廣泛的 Ceph 專業服務和技術支持。Inktank 是 Ceph 背后的公司, 它的主要目的是給他們的企業客戶提供專業知識、處理流程、工具和支撐,使他們能夠有效地采用和管理 Ceph 存儲系統。Sage 是 Inktank 的 CTO 和創始人。2013 年,Inktank 籌集了1350 萬美元的資金。2014 年 4 月 30 日,世界領先的開源解決方案提供商 Red Hat 同意以大

7、約 1.75 億美元的現金收購 Inktank。Inktank 的客戶包括 Cisco、CERN 和 Deutsche Telekom 以及它們的合作伙伴(如 Dell 和 Alcatel-Lucent)等,如今,Ceph 的軟件定義存儲解決方案, 使它們都成了 Red Hat 的客戶和合作伙伴。更多的信息請訪問 HYPERLINK / 。Ceph 這個詞是寵物章魚的一個常見綽號。Ceph 可以看作 Cephalopod 的縮寫,它屬于海洋軟體類動物家族。Ceph 以章魚作為自己的吉祥物,表達了 Ceph 跟章魚一樣的并行行為。Inktank 這個詞與章魚有一定關系。漁民有時候也把章魚稱為墨魚

8、,因為它們可以噴射墨汁。這就解釋了為什么章魚(Ceph)跟墨魚(Inktank)有一定關系。同樣,Ceph 和Inktank 有很多共同點。你可以認為 Inktank 就是 Ceph 的智庫。注意Sage Weil 是 DreamHost 的聯合創始人之一。Ceph 發行版2007 年年末 Ceph 項目啟動時,它最先由 DreamHost 孵化。2008 年 5 月 7 日,Sage 發布了 Ceph 0.2 版本,之后開發進展逐漸加快。版本發布時間間隔縮短并且現在每隔一個月都會有新版本的更新。2012 年 7 月 3 日,Sage 宣布到目前為止最重要的一個版本 Argonaut(0.48

9、 版本)發布。下表列出了 Ceph 發布的主要版本,包括 Long Term Support (LTS) 版本。更多的信息請訪問 /category/releases/。Ceph 版本名稱Ceph 版本號發布日期Argonaut0.48 版本 (LTS)2012 年 6 月 3 日Bobtail0.56 版本 (LTS)2013 年 1 月 1 日Cuttlesh0.61 版本2013 年 5 月 7 日Dumpling0.67 版本 (LTS)2013 年 8 月 14 日Emperor0.72 版本2013 年 11 月 9 日Firey0.80 版本 (LTS)2014 年 5 月Gia

10、nt0.87 版本(尚未發布)提示Ceph 的版本名稱依據字母表的順序,下一個版本將以字母 I 開頭。Ceph 和存儲的未來企業存儲需求最近幾年暴發性增長。研究表明,大企業的數據年增長率為 40% 60%, 而且許多公司的數據占用空間每年翻一番。IDC 分析師估計 2000 年全世界數據量大約是54.4EB 。2007 年這個數字達到 295EB,而到 2014 年年底,預計會達到 8591EB。1EB=1018 字節。 2014 年編寫本書時預計的數據量。所有存儲系統的要求都是統一、分布式、可靠、高性能,最重要的是,能夠大規模擴展至艾字節,甚至更高級別。Ceph 存儲系統是一個真正的解決方案

11、,它可以應對這個星球上爆炸式增長的數據。Ceph 能夠閃電式興起的原因在于它活躍的社區以及用戶真正相信 Ceph 的能力。數據的生成是一個永無止境的過程。我們無法停止數據的生成,但我們需要縮小數據生成和數據存儲之間的差距。Ceph 剛好合適用于縮小這個差距;其統一、分布式、高性價比和可擴展的特性使它成為滿足今天和將來數據存儲需求的潛在解決方案。開源 Linux 社區 2008 年就預見到 Ceph 的潛力,并將其加入 Linux 內核主線。這已經成為 Ceph 的里程碑事件,因為至今還沒有其他競爭對手能夠加入。客戶端文件存儲塊存儲對象存儲統一存儲方案Ceph 存儲集群分布式存儲Ceph S/W

12、Linux OSCEPH操作系統CEPH操作系統CEPH操作系統CEPH操作系統CEPH操作系統內存磁盤網絡CPU內存磁盤網絡CPU內存磁盤網絡CPU內存磁盤網絡CPU內存磁盤網絡CPU商用硬件服務器 N服務器 1服務器 2服務器 3服務器 4Ceph 云存儲解決方案在云基礎設施開發中問題最多的領域就是存儲。云環境要求其存儲能夠以低成本縱向和橫向擴展,而且能夠容易與云框架中其他組件集成。這樣的存儲系統需求是決定整個云項目總體成本(TCO)的一個重要方面。幾個傳統的存儲供應商聲稱能夠提供跟云框架集成的功能,但如今我們需要更多的特性,而不僅僅是支持集成。傳統的存儲解決方案或許在前幾年成功地證明了自

13、己,但現在它們并不是一個好的統一云存儲解決方案。同時,傳統存儲系統部署和長期運行的成本太高,而且縱向擴展和橫向擴展是它們的弱項。今天,我們需要一個完全重新定義的存儲解決方案來滿足當前以及未來的需要,這個系統建立在開源軟件以及商用硬件之上,能夠以經濟高效的方式提供我們所需要的擴展性。Ceph 已經在快速演變以縮小與真正云存儲后端的差距。它通過與 OpenStack、CloudStack 和 OpenNebula 等每一個主流開源云平臺結合,使得自己保持在云時代舞臺的中央。除此之外,Ceph 已經與 Canonical、Red Hat 和 SUSE 這些 Linux 領域的巨人建立了伙伴關系。這些

14、公司投入更多的時間來將 Ceph 這個分布式、可靠、可擴展的存儲集群集成到它們的 Linux 和云軟件發行版中。Ceph 與這些 Linux 巨人緊密配合,給它們的云平臺提供可靠的多功能存儲后端。OpenStack 項目大力推動了公有云和私有云的發展。它已經證明了自己是一個端到端云解決方案。它自己的內部核心存儲組件 Swift 提供基于對象的存儲和 Nova-Volume(也稱為Cinder),而 Cinder 則為 VM 提供塊存儲。與 Swift(它僅提供對象存儲)不同,Ceph 是一個包含塊存儲、文件存儲和對象存儲的統一存儲解決方案,這樣可以通過單一存儲集群為 OpenStack 提供多

15、種存儲類型。因此,你可以輕松而高效地為 OpenStack 云管理存儲。OpenStack 和 Ceph 社區已經一起合作了許多年,致力于為 OpenStack 云開發一個完全支持的 Ceph 存儲后端。從 Folsom(OpenStack 第6 個主要版本)開始,Ceph 已經完全與 OpenStack 集成。Ceph 開發人員確保 Ceph 能夠適用于 OpenStack 的最新版,同時貢獻新特性以及修正 bug。OpenStack 通過它的 cinder 和glance 組件使用 Ceph 最苛刻的特性 RADOS 塊設備(RBD)。Ceph RBD 通過提供精簡配置的快照復制(snap

16、shotted-cloned)卷幫助 OpenStack 快速配置數百個 VM 實例,這種方式既減少空間需求,又非常快速。云平臺使用 Ceph 作為存儲后端,在服務提供商建立 SaaS 和 IaaS 解決方案的過程中可以為其提供很多必要的便利性。這是傳統企業級存儲解決方案所不能提供的,因為它們并不是為了滿足云需求而設計的。使用 Ceph 作為云平臺存儲后端,云服務提供商可以為它的客戶提供低成本的云服務。相對 Amazon 等其他存儲提供商而言,Ceph 使得云服務提供商能夠提供相對低價的企業存儲。Dell、SUSE 和 Canonical 為它們的 OpenStack 云解決方案提供并支持 C

17、eph 部署和配置管理工具,例如 Dell Crowbar 和 Juju 可以容易地自動部署 Ceph 存儲。其他的配置管理工具(例如 Puppet、Chef、SaltStack 和 Ansible)都是很流行的 Ceph 自動部署工具。這些工具都有自己開源成熟的 Ceph 模塊,這些模塊很容易用來部署 Ceph。在例如云這樣的分布式的環境中,每一個組件都必須能夠擴展。這些管理工具是快速擴展你的基礎設施的基本工具。如今,Ceph 與這些工具完全兼容,允許用戶瞬間部署和擴展 Ceph 集群。提 從 OpenStack Folsom 版本開始,nova-volume 組件變成了 cinder ;然

18、而,nava-volume示命令在 OpenStack 中仍然可用。Ceph 軟件定義存儲解決方案所有想在存儲基礎設施上省錢的用戶最有可能很快就考慮采用軟件定義存儲(SDS)。SDS 可以為在傳統存儲上有大投入但仍然沒有獲得必要的靈活性和擴展性的用戶提供一個很好的解決方案。Ceph 是一個真正的 SDS 解決方案,它是開源軟件,運行在商用硬件上, 因此不存在廠商鎖定,并且能提供低成本存儲。SDS 方案提供了客戶急需的硬件選擇的靈活性。客戶可以根據自身的需要選擇任意制造商的商用硬件,并自由地設計異構的硬件解決方案。在此硬件解決方案之上的 Ceph 的軟件定義存儲可以很好地工作。它可以從軟件層面正

19、確提供所有的企業級存儲特性。低成本、可靠性、可擴展性是 Ceph 的主要特點。Cehp 統一存儲解決方案從存儲廠商的角度來看,統一存儲的定義就是在單一的平臺上同時提供基于文件和基于塊的訪問。企業存儲環境在單一平臺提供 NAS 與 SAN,這就可以認為是一個統一存儲解決方案了。在 20 世紀 90 年代末至 21 世紀 20 年代初已經證明 NAS 和 SAN 技術是成功的。但如果我們考慮將來,我們能確保 NAS 和 SAN 能夠在接下來的 50 年中管理存儲?它們有足夠的潛力處理幾艾字節的數據?恐怕不能。在 Ceph 中,統一存儲這個詞涵蓋的功能比現有的存儲廠商所聲稱的更多。Ceph 從一開始

20、設計就是面向為未來的。它的構建塊在設計時就考慮能夠處理大量的數據。Ceph 是一個真正的統一存儲解決方案,它從單一統一軟件層提供對象、塊和文件存儲。當我們說 Ceph 是面向未來的存儲時,更多地指的是它的對象存儲能力。對象存儲比塊或者文件存儲更適合如今混合的非結構化數據。在 Ceph 中,無論是塊存儲還是文件存儲,都依賴于智能對象。Ceph 底層中并不存在塊和文件的管理,而是管理對象并且在對象之上支持基于塊和文件的存儲。在傳統基于文件的存儲系統中,文件是通過文件目錄進行尋址的。類似地,Ceph 中的對象通過唯一的標識符進行尋址,并存儲在一個扁平的尋址空間中。剔除了元數據操作之后,對象提供了無限

21、的規模擴展和性能提升。Ceph 通過一個算法來動態計算存儲和獲取某個對象的位置。下一代架構傳統的存儲系統并不具備更智能地管理元數據的方法。元數據是關于數據的信息,它決定了數據將往哪里存儲,從哪里讀取。傳統的存儲系統通過維護一張集中的查找表來跟蹤它們的元數據。也就是說,客戶端每次發出讀寫操作請求時,存儲系統首先要查找這個巨大的元數據表,得到結果之后它才能執行客戶端請求的操作。對于一個小的存儲系統而言,你或許不會感覺到性能問題,但對于一個大的存儲集群來說,你將會受制于這種方法的性能限制。它也會限制系統的擴展性。Ceph 沒有采用傳統的存儲架構,而是用下一代架構完全重塑了它。Ceph 引入了一個叫

22、CRUSH 的新算法,而不是保存和操縱元數據。CRUSH 是 Controlled Replication Under Scalable Hashing 的縮寫。更多信息請訪問 HYPERLINK /resources/publications/ /resources/publications/。 CRUSH 算法在后臺計算數據存儲和讀取的位置,而不是為每個客戶端請求執行元數據表的查找。通過動態計算元數據,Ceph 也就不需要管理一個集中式的元數據表。現代計算機計算速度極快,能夠非常快地完成 CRUSH 查找。另外,利用分布式存儲的功能可以將一個小的計算負載分布到集群中的多個節點。CRUSH

23、清晰的元數據管理方法比傳統存儲系統的更好。除此之外,CRUSH 還有一個獨特的基礎設施感知能力。它能了解基礎設施中不同組件之間的關系,從最初的系統磁盤、池、節點、機架、電源插板、交換機到現在的數據中心,以及數據中心房間等。這些都是任何基礎設施中的故障區域。CRUSH 會以多副本的方式保存數據,以保證在故障區域中有些組件故障的情況下數據依舊可用。用戶在 Ceph 的CRUSH map 中可以自由地為他們的基礎設施定義故障區域。這也就使得 Ceph 管理員能夠在自己的環境中高效地管理他們的數據。CRUSH 使得 Ceph 能夠自我管理和自我療愈。當故障區域中的組件故障時,CRUSH 能夠感知哪個組

24、件故障了,并確定其對集群的影響。無須管理員的任何干預,CRUSH 就會進行自我管理和自我療愈,為因故障而丟失的據數執行恢復操作。CRUSH 根據集群中維護的其他副本來重新生成丟失的數據。在任何時候,集群數據都會有多個副本分布在集群中。使用 CRUSH,我們能夠設計一個沒有單點故障的高度可靠的存儲基礎設施。它也使得Ceph 成為一個面向為來的高度可擴展和可靠的存儲系統。Raid 時代的終結Raid 技術許多年來都是存儲系統的基礎。對于近 30 年來所生成的幾乎每一種數據類型而言,Raid 技術都被證明是成功的。然而,所有的時代都會有終結的時候,這一次輪到了RAID。基于 RAID 的存儲系統已經

25、開始顯露出其局限性,而且不能滿足未來的存儲需求。磁盤制造技術這些年越來越成熟。制造商如今能夠以更低的價格生產更大容量的企業級硬盤。我們不再提 450GB、600GB 甚至 1TB 的磁盤,因為現在有很多容量更大、性能更好的選擇。較新的企業級磁盤規格可以達到 4TB 甚至 6TB。磁盤的存儲容量將會每年持續增長。想象一下由眾多 4TB 或者 6TB 磁盤組成的基于 RAID 的企業級存儲系統;如果磁盤故障,RAID 將需要花費幾小時甚至幾天的時間來修復單個故障的磁盤。與此同時,如果其他的磁盤也故障了,那將會導致混亂。使用 RAID 技術修復多個大硬盤是一個很繁瑣的過程。另外,RAID 需要很多整

26、塊的磁盤來充當備用盤。這也會影響到 TCO,如果你不配置備用盤,將會將會遇到麻煩。RAID 機制要求在同一個 RAID 組中的磁盤必須完全相同。如果你改動了磁盤容量、轉速和磁盤類型,則你可能要面臨懲罰。這樣做將會對于存儲系統的容量和性能產生不利影響。基于 RAID 的企業級存儲系統通常都需要昂貴的硬件RAID 卡,這也增加了系統總成本。當達到某個極限之后,RAID 卡會進入一個死胡同,也就是它不能縱向或者橫向擴展了。盡管你不差錢,此時你也不能再為存儲系統增加任何容量。RAID5 可以容忍一個磁盤故障,而RAID6 可以容忍兩個磁盤故障,這已經是 RAID 系統最大的容忍度了。在 RAID 數據

27、恢復的過程中,客戶端基本無法執行任何 I/O 操作。RAID 系統最大的限制因素是它只能防止磁盤故障,而不能為網絡、服務器硬件、OS、交換設備的故障或者區域災害提供保護措施。RAID 最多能為你提供防止兩個磁盤故障的措施。在任何情況下你無法容忍超過兩個的磁盤故障。因此,我們需要一個能夠克服所有這些缺點并兼顧性價比的系統。Ceph 存儲系統是當今處理這些問題的最佳選擇。對于數據可靠性,Ceph 采用數據副本方式。也就是不使用RAID,因此它能夠簡單地克服在基于 RAID 的企業級存儲系統上出現的所有問題。Cpeh 是一個軟件定義的存儲,因此它不需要任何特殊硬件來提供數據副本功能。另外,數據副本級

28、別可以通過命令高度定制化。這也就意味著 Ceph 存儲管理員能夠輕松地根據自身需要和底層基礎設施特點來管理副本策略。在一個或者多個磁盤故障的情況下,Ceph 的副本處理方式比 RAID 的處理方式更好。當磁盤故障時,該磁盤上所有的數據馬上開始從對等磁盤上進行恢復。因為 Ceph 是分布式系統,所以數據恢復時所有的初始副本和復制副本可以分布到集群中所有的磁盤上,使得不會有初始副本和復制副本位于同一個磁盤的情況,并且它們必須駐留在 CRUSH map 中定義的不同故障區域中。因此,所有的磁盤都參與數據恢復。這使得恢復操作非常快,并且不存在性能瓶頸。這樣的恢復操作不需要任何熱備磁盤;數據只是簡單地復

29、制到 Ceph 集群中其他的磁盤上。Ceph 采用加權機制選擇磁盤,因此不同容量的磁盤不會造成問題。Ceph 存儲根據磁盤權重存儲數據,這個權重分配可以由 Ceph 自行管理, 也可以通過自定義 CRUSH map 管理。除了數據副本方法外,Ceph 還支持其他用于保證數據可靠性的方法,比如糾刪碼技術。在提供同樣級別可靠性的情況下,糾刪碼方式比副本方式更加節省存儲空間。糾刪碼方式下, 毀損的數據借助糾刪碼計算通過算法進行恢復或再次生成。可以在同一個Ceph 集群的不同存儲池中分別使用這兩種數據恢復技術。我們將在后續的章節中進一步學習糾刪碼技術。兼容性組合Ceph 是一個完備的企業級存儲系統,它

30、支持多種協議以及訪問方式。這個統一的存儲系統支持塊、文件和對象存儲。然而,截至本書創作期間,Ceph 的塊和對象存儲已經可以推薦生產環境中使用,而 Ceph 文件系統則還處在 QA 測試中,很快就能完成。下面簡要討論它們。Ceph 塊存儲塊存儲是存儲區域網絡中使用的一個數據存儲類別。在這種類型中,數據以塊的形式存儲在卷里,卷會掛接到節點上。它可以為應用程序提供更大的存儲容量,并且可靠性和性能都更高。這些塊形成的卷會映射到操作系統中,并被文件系統層控制。Ceph 引入了一個新的 RBD 協議,也就是 Ceph 塊設備(Ceph Block Device)。RBD 為客戶端提供了可靠、分布式、高性

31、能的塊存儲。RBD 塊呈帶狀分布在多個 Ceph 對象之上,而這些對象本身又分布在整個 Ceph 存儲集群中,因此能夠保證數據的可靠性以及性能。RBD 已經被 Linux 內核支持,換句話說,RBD 驅動程序在過去的幾年里已經很好地跟Linux 內核集成。幾乎所有的 Linux 操作系統發行版都支持 RBD。除了可靠性和性能之外, RBD 也支持其他的企業級特性,例如完整和增量式快照,精簡的配置,寫時復制(copy-on-write)式克隆,以及其他特性。RBD 還支持全內存式緩存,這可以大大提高它的性能。Ceph RBD 支持的最大鏡像為 16EB。這些鏡像可以作為磁盤映射到物理裸機、虛擬機

32、或者其他主機使用。業界領先的開源 hypervisor,例如 KVM 和 Xen 完全支持 RBD,并利用它為自個的客戶虛擬機提供 RBD 特性。其他專有的 hypervisor(例如 VMware 和微軟的HyperV)很快也會支持 RBD。為了支持這些 hypervisor,社區已經做了大量的工作。Ceph 塊設備完全支持云平臺,例如 OpenStack、CloudStack 等。在這些云平臺中它已經被證明是成功的,并且具有豐富的特性。在 OpenStack 中,可以通過 cinder(塊)和 glance(image)組件來使用 Ceph 塊設備。這樣做可以讓你利用 Ceph 塊存儲的

33、copy-on-write 特性在很短的時間內創建上千個 VM。客戶端VMhypervisor文件系統KRBDlibrbd內核Ceph 集群Ceph 文件系統Ceph 文件系統(也就是 CephFS)是一個兼容 POSIX 的文件系統,它利用 Ceph 存儲集群來保存用戶數據。Linux 內核驅動程序支持 CephFS,這也使得 CephFS 高度適用于各大Linux 操作系統發行版。CephFS 將數據和元數據分開存儲,為上層的應用程序提供較高的性能以及可靠性。在 Cpeh 集群內部,Ceph 文件系統庫(libcephfs)運行在 RADOS 庫(librados)之上, 后者是 Ceph

34、 存儲集群協議,由文件、塊和對象存儲共用。要使用 CephFS,你的集群節點上最少要配置一個 Ceph 元數據服務器(MDS)。然而,需要注意的是,單一的 MDS 服務器將成為 Ceph 文件系統的單點故障。MDS 配置后,客戶端可以采用多種方式使用 CephFS。如果要把 Ceph 掛載成文件系統,客戶端可以使用本地 Linux 內核的功能或者使用 Ceph 社區提供的 ceph-fuse(用戶空間文件系統)驅動。除此之外,客戶端可以使用第三方開源程序,例如 NFS 的 Ganesha 和 SMB/CIFS 的Samba。這些程序通過 libcephfs 將用戶數據存入可靠的分布式 Ceph

35、 存儲集群。CephFS 也可以用來替代 Apache Hadoop File System (HDFS)。它也是通過 libcephfs 組件將數據存入Ceph 集群。為了無縫實現這個功能,Ceph 社區為 Hadoop 和 Hadoop 插件提供了必要的CephFS Java 接口。libcephfs 和 librados 組件都非常靈活,你甚至可以生成自定義程序與它交互,并將數據保存到底層的 Ceph 存儲集群中。截至本書創作期間,CephFS 是 Ceph 存儲系統中唯一一個還不能夠用于生產環境的組件。它在快速完善,預計很快就能用于生產環境。目前,在測試和開發環境中,它很受歡迎,并且提

36、供了企業級存儲需要的特性,例如動態再平衡和子目錄快照。下圖展現了使用CephFS 的不同方式。客戶端應用GaneshaSambaHadoopNFSGIFSSMBCeph-fuse Ceph Fuse內核Ceph 集群Ceph 對象存儲對象存儲是一種以對象形式而不是傳統文件和塊形式存儲數據的方法。基于對象的存儲已經引起了行業界的大量關注。為靈活地使用它們的巨量數據,這些組織正快速采用對象存儲解決方案。Ceph 是一個眾所周知的真正的對象存儲系統。Ceph 是一個分布式對象存儲系統, 通過它的對象網關(object gateway),也就是RADOS 網關(radosgw)提供對象存儲接口。RAD

37、OS 網關利用 librgw(RADOS 網關庫)和librados 這些庫,允許應用程序跟 Ceph 對象存儲建立連接。Ceph 通過 RESTful API 提供可訪問且最穩定的多租戶對象存儲解決方案之一。RADOS 網關提供 RESTful 接口讓用戶的應用程序將數據存儲到 Ceph 集群中。RADOS 網關接口滿足以下特點。兼容 Swift:這是為 OpenStack Swift API 提供的對象存儲功能。兼容 S3:這是為 Amazon S3 API 提供的對象存儲功能。Admin API:這也稱為管理 API 或者原生 API,應用程序可以直接使用它來獲取訪問存儲系統的權限以管理

38、存儲系統。要訪問 Ceph 的對象存儲系統,也可以繞開 RADOS 網關層,這樣更靈活并且速度更快。librados 軟件庫允許用戶的應用程序通過 C、C+、Java、Python 和 PHP 直接訪問 Ceph 對象存儲。Ceph 對象存儲具備多站點(multisite)的能力,也就是說它能為災難恢復提供解決方案。通過 RADOS 或者聯合網關可以配置多站點的對象存儲。下圖展現了 Ceph 中可以使用的各種 API 系統。客戶端應用Swift API S3 APIRados 網關Admin APIRESTful HTTP/SAccess直接訪問Ceph 集群Ceph 與其他存儲解決方案存儲系

39、統需要轉變;專有存儲系統無法以一個相對較低的預算滿足未來數據存儲需要。硬件采購、授權、支持和管理成本使得專有存儲系統非常昂貴。相反,開源存儲技術很好地證明了它們的性能、可靠性、可擴展性和更低的 TCO。許多政府機構、民間組織、大學、研究機構、醫療中心,以及 HPC 系統已經在使用一些開源存儲解決方案。然而,Ceph 獲得了巨大的反饋并越來越流行,將其他開源以及專有的存儲解決方案甩在身后。以下是一些與 Ceph 競爭的開源存儲解決方案。我們將簡要地討論這些存儲解決方案的缺點,這些缺點在 Ceph 中已經處理。GPFSGPFS(General Parallel File System,通用并行文件

40、系統)是一個分布式文件系統,由IBM 開發及擁有。這是一個專有、閉源的存儲系統,這使得它缺少吸引力并且難以適應。存儲硬件加上授權以及支持成本使得它非常昂貴。另外,它提供的存儲訪問接口非常有限; 它既不能提供塊存儲,也不能提供 RESTful 接口來訪問存儲系統,因此這是一個限制非常嚴格的系統。甚至最大的數據副本數都限制只有 3 個,這在多個組件同時故障的情形下降低了系統的可靠性。iRODSiRDOS 是面向規則的數據系統的代表,它是依據第三條款(3-clause)BSD 協議發布的開源數據管理軟件。iRDOS 不是一個高度可靠的存儲系統,因為它的 iCAT 元數據服務器是單點(single p

41、oint of failure,SPOF),并且它不提供真正的 HA。另外,它提供的存儲訪問接口很有限;既不能提供塊存儲,也不能提供 RESTful 接口來訪問存儲系統,因此這是一個限制非常嚴格的系統。它更適合于存儲少量大文件,而不是同時存儲小文件和大文件。iRdos 采用傳統的工作方式,維護一個關于物理位置(與文件名相關聯)的索引。由于多個客戶端都需要從元數據服務器請求文件位置,使得元數據服務器需要承受更多的計算負載, 從而導致單點故障以及性能瓶頸。HDFSHDFS 是一個用 Java 寫的并且為 Hadoop 框架而生的分布式可擴展文件系統。HDFS 不是一個完全兼容 POSIX 的文件系

42、統,并且不支持塊存儲,這使得它的適用范圍不如 Ceph。HDFS 的可靠性不需要討論,因為它不是一個高度可用的文件系統。HDFS 中的單點故障以及性能瓶頸主要源于它單一的 NameNode 節點。它更適合于存儲少量大文件,而不是同時存儲小文件和大文件。LustreLustre 是一個由開源社區推動的并行分布式文件系統,依據 GNU(General Public License,通用公共許可證)發布。在 Lustre 中,由單獨一個服務器負責存儲和管理元數據。因此,從客戶端來的所有 I/O 請求都完全依賴于這個服務器的計算能力,但對企業級計算來說通常這個服務器的計算能力都比較低。與 iRDOS

43、和 HDFS 類似,Lustre 適合于存儲少量大文件,而不是同時存儲小文件和大文件。與 iRDOS 類似,Lustre 管理一個用于映射物理位置和文件名的索引文件,這就決定了它是一個傳統的架構,而且容易出現性能瓶頸。Lustre 不具備任何節點故障檢測和糾正機制。在節點出現故障時,客戶端只能自行連接其他節點。GlusterGlusterFS 最初由 Gluster 公司開發,該公司 2011 年被 Red Hat 收購。GlusterFS 是一個橫向擴展的網絡附加(network-attached)文件系統。在 Gluster 中,管理員必須明確使用哪種安置策略來將數據副本存儲到不同地域的機

44、架上。Gluster 本身不內置塊訪問、文件系統和遠程副本,而是以擴展(add-ons)的方式支持。Ceph如果我們比較 Ceph 和現存的其他存儲解決方案,由于 Ceph 特性豐富,它明顯與眾不同。它克服了現有存儲系統的局限性,并已經被證明是昂貴的老存儲系統的理想替代品。它是運行于任何商用硬件上的開源軟件定義存儲解決方案,這使得它也是一個經濟的存儲解決方案。Ceph 提供了各種接口讓客戶端連接 Ceph 集群,這為客戶端增加了靈活性。對于數據保護,Ceph 并不依賴于 RAID 技術,因為它存在本章前面提到的各種限制。而是采用了已經被證明比 RAID 更好的副本和糾刪碼方案。Ceph 的每一

45、個組件都是可靠的并支持高可用性。如果你在配置 Ceph 組件的過程中牢記冗余,我們可以自信地說 Ceph 不存在任何單點故障。而單點故障是當今其他存儲解決方案的一大挑戰。Ceph 最大的優點是它的統一特性,它同時提供了現成的塊、文件和對象存儲解決方案,而其他的存儲系統仍然不具備這樣的特性。Ceph 既適合存儲小文件,也適合存儲大文件,而且不存在任何性能問題。Ceph 是一個分布式存儲系統;客戶端可以與 Ceph 快速地交互。它不采用傳統的數據存儲方法去維護一個綁定到某個物理位置或者文件的元數據;而是引入一個新的機制,允許客戶端動態計算它們所需要的數據存儲位置。這提升了客戶端的性能,因為它們不再

46、需要等待從集中的元數據服務器獲取數據的位置和內容。此外,在 Ceph 集群內部,數據的存放位置絕對是透明和自動的;客戶端和管理員都不需要對數據在不同故障區域存放位置感到煩惱。Ceph 的智能系統自動管理這一切。Ceph 被設計成一個自愈和自治系統。在災難中,當其他的存儲系統無法可靠應對多點故障時,Ceph 卻堅若磐石。Ceph 能夠檢測并修正每一種故障區域中的故障,例如磁盤、節點、網絡、機架、集裝箱式數據中心、數據中心,甚至不同地域。Ceph 試圖自動地管理故障狀況,并在數據中斷前盡可能修復它。其他的存儲解決方案至多僅提供磁盤的可靠性或在節點故障時的可靠性。作為比較而言,單就這幾個特性就可以讓

47、 Ceph 占盡風頭,脫穎而出。總結Ceph 是一個開源的軟件定義存儲解決方案,它運行在商用硬件之上,從而使企業擺脫昂貴的、限制性的、專用的存儲系統。它提供了一個統一的、分布式的、高度可擴展的并且高可靠的對象存儲解決方案,這非常符合當今以及將來的非結構化數據存儲需要。當今世界的存儲需求爆炸性增長,因此我們需要一個這樣的存儲系統,它能夠擴展到數艾字節級別, 而不會影響數據的可靠性和系統性能。Ceph 經得起未來的考驗,并為所有的這些問題提供解決方案。Ceph 滿足真正的云存儲解決方案的需求,并支持幾乎所有的云平臺。如今從任何角度看,Ceph 都是一個宏大的存儲解決方案。Chapter 2第 2

48、章Ceph 實戰部署本章將涵蓋以下主題:使用 VirtualBox 創建沙箱環境從零開始部署你的第一個 Ceph 集群擴展你的 Ceph 集群增加 monitor 和 OSD使用 VirtualBox 創建沙箱環境我們可以使用 Oracle VirtualBox 虛擬機創建沙箱環境來進行 Ceph 部署實驗。這個虛擬環境可以幫助我們發現和執行 Ceph 存儲集群實驗,就好像我們在真實環境中一樣。由于Ceph 是開源的軟件定義存儲軟件,它可以部署在生產環境的商用硬件之上,因此出于測試目的,我們可以在虛擬機中模仿一個全功能的 Ceph 環境。Oracle VirtualBox 是一個免費的軟 件,

49、在其官網 HYPERLINK / 上可以下載 Windows、Mac OS X 和 Linux 版本。我們在安裝 VirtualBox 時必須滿足其系統要求,以便它在我們的測試過程中能夠正常工作。在本書余下的章節中,我們將會使用到這個 VirtualBox 虛擬機中創建的 Ceph 測試環境。我們假定你的主機操作系統是 UNIX 變種;對于 Microsoft Windows,主機需要絕對路徑來運行 VBoxManage 命令,默認命令是c:Program FilesOracleVirtualBoxVBoxManage.exe.。VirtualBox 的系統要求依賴于要在物理主機上運行的虛擬機

50、個數以及它們的配置。你的虛擬機或許需要一個 x86 類型的處理器(Intel 或者 AMD),幾十億字節的內存(用于運行三個 Ceph 虛擬機),還有幾十億字節的硬盤空間。我們首先需要從 HYPERLINK / /下載 VirtualBox,然后根據安裝步驟進行安裝。我們也需要從 HYPERLINK /6.4/isos/ /6.4/isos/下載 CentOS 6.4 Server ISO 鏡像。為了搭建沙箱環境,需要創建至少三個虛擬機;可以根據自己的物理主機配置情況創建更多的虛擬機用于 Ceph 集群。首先創建第一個 VM,并安裝 OS;然后將其克隆兩次。這樣可以節省大量時間,提高生產效率。

51、下面我們開始執行下列步驟,創建第一個虛擬機。注 本演示中使用的 VirtualBox 主機操作系統是 Mac OS X,這是一個類 UNIX 系統。意如果你在非 UNIX 主機(比如 Windows)上執行這些步驟, 則需要注意 virtualboxhostonly adapter 的名字可能會類似于 VirtualBox Host-Only Ethernet Adapter #。在運行這些命令時請注意使用正確的適配器名稱。在 Windows 主機上,可以通過 Oracle VM VirtualBox 管理器中的 File| VirtualBox Settings| Network|Host-

52、onlyNetworks 查看 VirtualBox 網絡選項。1)VirtualBox 軟件安裝完成后,可以使用默認創建的網絡適配器,或者可以創建一個新的適配器并指定其 IP。對于 UNIX 類 VirtualBox 主機,命令如下。# VBoxManage hostonlyif remove vboxnet1# VBoxManage hostonlyif create# VBoxManage hostonlyif ipconfig vboxnet1 -ip - netmask 對于 Windows VirtualBox 主機,命令如下。# VBoxManage.exe hostonlyif

53、 remove VirtualBox Host-Only Ethernet Adapter# VBoxManage.exe hostonlyif create# VBoxManage hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter -ip -netmask 2)VirtualBox 自帶 GUI 管理器。如果你的主機運行的是 Linux 操作系統,那么它應該已經安裝 X-desktop 環境(Gnome 或者 KDE)。打開 Oracle VM VirtualBox 管理器,并按照以下配置創建一個新的虛擬機。可以使用 GUI

54、上的 New Virtual Machine Wizard,或者使用每個步驟最后部分列出的 CLI 命令創建虛擬機:1 CPU1024 MB 內存。10 GB X 4 硬盤(一個 OS 的驅動器,三個 Ceph OSD 的驅動器)兩個網絡適配器掛載到 VM 的 CentOS 6.4 ISO以下是使用 CLI 命令創建虛擬機的步驟:創建你的第一個虛擬機。# VBoxManage createvm -name ceph-node1 -ostype RedHat_64 -register# VBoxManage modifyvm ceph-node1 -memory 1024 -nic1 nat-n

55、ic2 hostonly -hostonlyadapter2 vboxnet1對于 Windows VirtualBox 主機使用以下命令,則:# VBoxManage.exe modifyvm ceph-node1 -memory 1024 -nic1 nat -nic2 hostonly -hostonlyadapter2 VirtualBox Host- Only Ethernet Adapter創建 CD 驅動器并掛載 CentOS ISO 鏡像到第一個虛擬機上:# VBoxManage storagectl ceph-node1 -name IDE Controller -add i

56、de -controller PIIX4 -hostiocache on -bootable on# VBoxManage storageattach ceph-node1 -storagectl IDE Controller -type dvddrive -port 0 -device 0 -medium CentOS-6.4-x86_64-bin-DVD1.iso注 確保你在 CentOS ISO 鏡像文件所在的目錄執行上述命令,否則你需要指定它的存儲意目錄。創建 SATA 接口的磁盤,并掛載到 VM 中,用于安裝 OS ;創建 VM 磁盤時需要確保VirtualBox 主機有足夠的磁盤空

57、間。否則,需要選擇主機中其他有足夠空間的磁盤。# VBoxManage storagectl ceph-node1 -name SATA Controller -add sata -controller IntelAHCI-hostiocache on -bootable on# VBoxManage createhd -filename OS-ceph-node1.vdi -size 10240# VBoxManage storageattach ceph-node1 -storagectl SATA Controller -port 0 -device 0 -type hdd -mediu

58、m OS- ceph-node1.vdi創建 Ceph 的第一個 SATA 磁盤并掛載到 VM 中:# VBoxManage createhd -filename ceph-node1-osd1.vdi-size 10240# VBoxManage storageattach ceph-node1 -storagectl SATA Controller -port 1 -device 0 -type hdd -medium ceph- node1-osd1.vdi創建 Ceph 的第二個 SATA 磁盤并掛載到 VM 中:# VBoxManage createhd -filename ceph

59、-node1-osd2.vdi-size 10240# VBoxManage storageattach ceph-node1 -storagectl SATA Controller -port 2 -device 0 -type hdd -medium ceph- node1-osd2.vdi創建 Ceph 的第二個 SATA 磁盤并掛載到 VM 中:# VBoxManage createhd -filename ceph-node1-osd3.vdi-size 10240# VBoxManage storageattach ceph-node1 -storagectl SATA Contr

60、oller -port 3 -device 0 -type hdd -medium ceph- node1-osd3.vdi3)至此,我們已經做好了啟動 ceph-node1 VM 的準備。可以通過點擊 Oracle VMVirtualBox 管理器上 Ceph-node1 VM 的 Start 按鈕啟動它,或者通過運行下面的命令啟動它:# VBoxManage startvm ceph-node1 -type gui4)VM 啟動時它應該從 ISO 鏡像引導。之后,你就應當在 VM 中安裝 CentOS。如果你不熟悉 Linux OS 的安裝,可以參考 /site/documentation

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論