天天看點

Ceph分布式存儲實戰導讀

<b>前言</b>

<b></b>

随着資訊化浪潮的到來,全球各行各業逐漸借助資訊技術深入發展。據悉,企業及網際網路資料以每年50%的速率在增長。據權威調查機構gartner預測,到2020年,全球資料量将達到35zb,相當于80億塊4tb硬碟,資料結構的變化給存儲系統帶來了全新的挑戰。那麼有什麼方法能夠存儲這些資料呢?我認為ceph是解決未來十年資料存儲需求的一個可行方案。ceph是存儲的未來!sds是存儲的未來!

為什麼寫這本書

目前,磁盤具備容量優勢,固态硬碟具備速度優勢。但能否讓容量和性能不局限在一個存儲器單元呢?我們很快聯想到磁盤陣列技術(redundant array of independent disk,raid,不限于hdd)。磁盤陣列技術是一種把多塊獨立的硬碟按不同的方式組合起來形成一個硬碟組(disk group,又稱virtual disk),進而提供比單個硬碟更高的存儲性能與資料備份能力的技術。磁盤陣列技術既可提供多塊硬碟讀寫的聚合能力,又能提供硬碟故障的容錯能力。

鏡像技術(mirroring)又稱為複制技術(replication),可提供資料備援性和高可用性;條帶(striping),可提供并行的資料吞吐能力;糾删碼(erasure code),把資料切片并增加備援編碼而提供高可用性和高速讀寫能力。鏡像、條帶和糾删碼是磁盤陣列技術經典的資料分發方式,這3種經典的磁盤技術可通過組合方式提供更加豐富的資料讀寫性能。

傳統的磁盤陣列技術的關注點在于資料在磁盤上的分發方式,随着通用磁盤、通用伺服器,以及高速網絡的成本降低,使資料在磁盤上的分發擴充到在伺服器節點上的分發成為可能。鏡像技術、條帶技術和糾删碼技術基于伺服器節點的粒度實作後,這些技術的特點不再局限于單個裝置的性能,而是具備“橫向擴充”能力。我們暫且認為這是分布式存儲本質的展現。

分布式存儲解決了資料體量問題,對應用程式提供标準統一的通路接入,既能提升資料安全性和可靠性,又能提高存儲整體容量和性能。可以預見,分布式存儲是大規模存儲的一個實作方向。分布式存儲廣泛地應用于航天、航空、石油、科研、政務、醫療、視訊等高性能計算、雲計算和大資料處理領域。目前行業應用對分布式存儲技術需求旺盛,其處于快速發展階段。

ceph是加州大學聖克魯茲分校的sage weil博士論文的研究項目,是一個使用自由開源協定(lgplv2.1)的分布式存儲系統。目前ceph已經成為整個開源存儲行業最熱門的軟體定義存儲技術(software defined storage,sds)。它為塊存儲、檔案存儲和對象存儲提供了統一的軟體定義解決方案。ceph旨在提供一個擴充性強大、性能優越且無單點故障的分布式存儲系統。從一開始,ceph就被設計為能在通用商業硬體上高度擴充。

由于其開放性、可擴充性和可靠性,ceph成為了存儲行業中的翹楚。這是雲計算和軟體定義基礎設施的時代,我們需要一個完全軟體定義的存儲,更重要的是它要為雲做好準備。無論運作的是公有雲、私有雲還是混合雲,ceph都非常合适。國内外有不少的ceph應用方案,例如美國雅虎公司使用ceph建構對象存儲系統,用于flickr、雅虎郵箱和tumblr(輕量部落格)的後端存儲;國内不少公有雲和私有雲商選擇ceph作為雲主機後端存儲解決方案。

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

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

每個元件能夠線性擴充。

無任何單故障點。

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

運作于現有商業硬體之上。

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

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

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

由于國内許多企業決策者逐漸認識到ceph的優勢與前景,越來越多來自系統管理和傳統存儲的工程師使用ceph,并有相當數量的企業基于ceph研發分布式存儲産品,為了更好地促進ceph在國内傳播和技術交流,我們幾個愛好者成立了ceph中國社群。目前,通過網絡交流群、消息内容推送和問答互動社群,向國内關注ceph技術的同行提供資訊交流和共享平台。但是,由于資訊在傳遞過程中過于分散,偶爾編寫的文檔内容并不完整,導緻初學者在學習和使用ceph的過程中遇到不少疑惑。同時,由于官方文檔是通過英文釋出的,對英語不太熟悉的同行難于學習。鑒于此,ceph中國社群組織技術愛好者編寫本書,本書主要提供初級和中級層面的指導。根據調查回報以及社群成員的意見,我們确定了本書内容。

本書特色

在本書中,我們将采用穿插方式講述ceph分布式存儲的原理與實戰。本書側重實戰,循序漸進地講述ceph的基礎知識和實戰操作。從第1章起,讀者會了解ceph的前生今世。随着每章推進,讀者将不斷學習、不斷深入。我希望,到本書的結尾,讀者不論在概念上還是實戰上,都能夠成功駕馭ceph。每個章節在講述完基礎理論知識後會有對應的實戰操作。我們建議讀者在自己的電腦上按部就班地進行實戰操作。這樣,一來讀者不會對基礎理論知識感到困惑,二來可讓讀者通過實戰操作加深對ceph的了解。同時,如果讀者在閱讀過程中遇到困難,我們建議再重溫已閱章節或重做實驗操作,這樣将會加深了解,也可以加入ceph中國社群qq群(239404559)進行技術讨論。

讀者對象

本書适用于以下讀者。

ceph愛好者。

雲平台運維工程師。

存儲系統工程師。

系統管理者。

高等院校的學生或者教師。

本書是專門對上述讀者所打造的ceph入門級實戰書籍。如果你具備gnu/ linux和存儲系統的基本知識,卻缺乏軟體定義存儲解決方案及ceph相關的經驗,本書也是不錯的選擇。雲平台運維工程師、存儲系統工程師讀完本書之後能夠深入了解ceph原理、部署和維護好線上ceph叢集。同時,本書也适合大學高年級大學生和研究所學生作為ceph分布式存儲系統或者雲計算相關課程的參考書籍,能夠帶領你進入一個開源的分布式存儲領域,深入地了解ceph,有助于你今後的工作。

如何閱讀本書

由于ceph是運作在gnu/linux系統上的存儲解決方案,我們假定讀者掌握了存儲相關知識并熟悉gnu/linux作業系統。如果讀者在這些方面知識有欠缺,可參照閱讀其他書籍或專業資訊網站。

本書将講述如下的内容。

第1章 描述ceph的起源、主要功能、核心元件邏輯、整體架構和設計思想,并通過實戰的方式指導我們快速建立ceph運作環境。

第2章 描述ceph的分布式本質,深入分析ceph架構,并介紹如何使用librados庫。

第3章 描述crush的本質、基本原理,以及crush作用下資料與對象的映射關系。

第4章 描述ceph fs檔案系統、rbd塊存儲和object對象存儲的建立以及使用。

第5章 描述calamari的安裝過程和基本使用操作。 

第6章 描述ceph fs作為高性能計算和大資料計算的後端存儲的内容。

第7章 描述rbd在虛拟化和資料庫場景下的應用,包括openstack、cloudstack和zstack與rbd的結合。

第8章 描述基于ceph的雲盤技術方案和備份方案,描述網關的異地同步方案和多媒體轉換網關設計。

第9章 描述ceph的硬體選型、性能調優,以及性能測試方法。

第10章 描述crush的結構,并給出ssd與sata混合場景下的磁盤組織方案。

第11章 描述ceph的緩沖池原理和部署,以及糾删碼原理和糾删碼庫,最後描述糾删碼池的部署方案。

第12章 對3種存儲通路類型的生産環境案例進行分析。

第13章 描述ceph日常運維細節,以及常見錯誤的處理方法。

勘誤與支援

在本書的寫作過程,我們也參考了ceph中國社群往期沙龍一線工程師、專家分享的經驗和ceph官方文檔。我們熱切希望能夠為讀者呈現豐富而且權威的ceph存儲技術。由于ceph社群不斷發展,版本疊代速度快,筆者水準有限,書中難免存在技術延後和謬誤,懇請讀者批評指正。可将任何意見和建議發送到郵箱[email protected]或者[email protected],也可以釋出到ceph中國社群問答系統http://bbs.ceph.org.cn/。我們将密切跟蹤ceph分布式存儲技術的發展,吸收讀者寶貴意見,适時編寫本書的更新版本。ceph中國社群訂閱号為:“ceph_community”

“ceph中國社群訂閱号”會定期發送ceph技術文章、新聞資訊。也歡迎讀者通過這個微信訂閱号進行本書勘誤回報,本書的勘誤和更新也會通過訂閱号釋出。

緻謝

首先要感謝我們社群的全體志願者,社群的發展離不開全體志願者們無怨無悔的奉獻,正是有了你們才有了社群今日的繁榮,其次要感謝所有支援過我們的企業,是你們的慷慨解囊成就了ceph中國社群今日的壯大,最後感謝陳曉熹的校稿以及所有為本書編寫提供支援、幫助的人。未來,我們也非常歡迎有志将開源事業發揚光大的同學們積極加入我們的社群,和我們一起創造ceph未來的輝煌。

<b>目錄</b>

第1章 初識ceph

<a href="https://yq.aliyun.com/articles/82162/" target="_blank">1.1 ceph概述</a>

<a href="https://yq.aliyun.com/articles/82182/" target="_blank">1.2 ceph的功能元件</a>

<a href="https://yq.aliyun.com/articles/82277" target="_blank">1.3 ceph架構和設計思想</a>

<a href="https://yq.aliyun.com/articles/82282/" target="_blank">1.4 ceph快速安裝</a>

<a href="https://yq.aliyun.com/articles/82288/" target="_blank">1.5 本章小結</a>

第2章 存儲基石rados

<a href="https://yq.aliyun.com/articles/82307/" target="_blank">2.1 ceph功能子產品與rados</a>

<a href="https://yq.aliyun.com/articles/82313/" target="_blank">2.2 rados架構</a>

<a href="https://yq.aliyun.com/articles/82322/" target="_blank">2.3 rados與librados</a>

<a href="https://yq.aliyun.com/articles/82330/" target="_blank">2.4   本章小結</a>

第3章 智能分布crush

<a href="https://yq.aliyun.com/articles/82336/" target="_blank">3.1   引言</a>

<a href="https://yq.aliyun.com/articles/82341/" target="_blank">3.2 crush基本原理</a>

<a href="https://yq.aliyun.com/articles/82347/" target="_blank">3.3 crush關系分析</a>

<a href="https://yq.aliyun.com/articles/82352/" target="_blank">3.4 本章小結</a>

第4章 三大存儲通路類型 42

4.1 ceph fs檔案系統 42

4.1.1 ceph fs和mds介紹 43

4.1.2 部署mds 45

4.1.3 挂載ceph fs 46

4.2 rbd塊存儲 47

4.2.1 rbd介紹 47

4.2.2 librbd介紹 48

4.2.3 krbd介紹 48

4.2.4 rbd操作 50

4.2.5 rbd應用場景 56

4.3 object對象存儲 57

4.3.1 rgw介紹 57

4.3.2 amazon s3簡介 58

4.3.3 快速搭建rgw環境 61

4.3.4 rgw搭建過程的排錯指南 68

4.3.5 使用s3用戶端通路rgw服務 71

4.3.6 admin管理接口的使用 75

4.4 本章小結 78

第5章 可視化管理calamari 79

5.1 認識calamari 79

5.2 安裝介紹 79

5.2.1 安裝calamari-server 80

5.2.2 安裝romana(calamari-client) 82

5.2.3 安裝diamond 85

5.2.4 安裝salt-minion 86

5.2.5 重新開機服務 87

5.3 基本操作 87

5.3.1 登入calamari 87

5.3.2 workbench頁面 88

5.3.3 graph頁面 89

5.3.4 manage頁面 90

5.4 本章小結 92

第6章 檔案系統—高性能計算與大資料 93

6.1 ceph fs作為高性能計算存儲 93

6.2 ceph fs作為大資料後端存儲 98

6.3 本章小結 101

第7章 塊存儲—虛拟化與資料庫 102

7.1 ceph與kvm 102

7.2 ceph與openstack 106

7.3 ceph與cloudstack 110

7.4 ceph與zstack 114

7.5 ceph提供iscsi存儲 122

7.6 本章小結 128

第8章 對象存儲—雲盤與rgw異地災備 129

8.1 網盤方案:rgw與owncloud的整合 129

8.2 rgw的異地同步方案 133

8.2.1 異地同步原理與部署方案設計 134

8.2.2 region異地同步部署實戰 137

8.3 本章小結 146

第9章 ceph硬體選型、性能測試與優化 147

9.1 需求模型與設計 147

9.2 硬體選型 148

9.3 性能調優 151

9.3.1 硬體優化 152

9.3.2 作業系統優化 155

9.3.3 網絡層面優化 161

9.3.4 ceph層面優化 170

9.4 ceph測試 174

9.4.1 測試前提 175

9.4.2 存儲系統模型 175

9.4.3 硬碟測試 176

9.4.4 雲硬碟測試 182

9.4.5 利用cosbench來測試ceph 185

9.5 本章小結 189

第10章 自定義crush 191

10.1 crush解析 191

10.2 crush設計:兩副本執行個體 201

10.3 crush設計:ssd、sata混合執行個體 207

10.3.1 場景一:快–慢存儲方案 207

10.3.2 場景二:主–備存儲方案 214

10.4 模拟測試crush分布 217

10.5 本章小結 222

第11章 緩沖池與糾删碼 223

11.1 緩沖池原理 223

11.2 緩沖池部署 225

11.2.1 緩沖池的建立與管理 226

11.2.2 緩沖池的參數配置 226

11.2.3 緩沖池的關閉 228

11.3 糾删碼原理 229

11.4 糾删碼應用實踐 232

11.4.1 使用jerasure插件配置糾删碼 232

11.4.2 isa-l插件介紹 234

11.4.3 lrc插件介紹 235

11.4.4 其他插件介紹 235

11.5 本章小結 235

第12章 生産環境應用案例 237

12.1 ceph fs應用案例 237

12.1.1 将ceph fs導出成nfs使用 238

12.1.2 在windows用戶端使用ceph fs 239

12.1.3 openstack manila項目對接ceph fs案例 242

12.2 rbd應用案例 244

12.2.1 openstack對接rbd典型架構 244

12.2.2 如何實作cinder multi-backend 246

12.3 object rgw應用案例:讀寫分離方案 248

12.4 基于hls的視訊點播方案 249

12.5 本章小結 251

第13章 ceph運維與排錯 252

13.1 ceph叢集運維 252

13.1.1 叢集擴充 252

13.1.2 叢集維護 259

13.1.3 叢集監控 266

13.2 ceph常見錯誤與解決方案 277

13.2.1 時間問題 277

13.2.2 副本數問題 279

13.2.3 pg問題 282

13.2.4 osd問題 286

13.3 本章小結 292

繼續閱讀