《Ceph之RADOS設(shè)計(jì)原理與實(shí)現(xiàn)》是繼《Ceph設(shè)計(jì)原理與實(shí)現(xiàn)》之后,中興通訊Clove團(tuán)隊(duì)在Ceph領(lǐng)域的又一全新力作。Clove團(tuán)隊(duì)是Ceph開源社區(qū)國內(nèi)負(fù)盛名的組織貢獻(xiàn)者之一,自Jewel版起,連續(xù)4個(gè)版本代碼貢獻(xiàn)量位列世界前三。目前該團(tuán)隊(duì)擁有社區(qū)技術(shù)委員會(huì)成員一名,Ceph Mermber三名。鑒于Clove團(tuán)隊(duì)在Ceph不斷發(fā)展與壯大過程中做出的杰出貢獻(xiàn),創(chuàng)始人SageWeil先生再次為該書親自作序。
存儲(chǔ)是云計(jì)算的基石,Ceph是開源分布式軟件定義存儲(chǔ)解決方案中的領(lǐng)頭羊。該書以大量存儲(chǔ)技術(shù)的基本原理(例如分布式一致性、文件系統(tǒng)等)為主線,系統(tǒng)剖析了Ceph核心組件RADOS的設(shè)計(jì)原理與具體實(shí)現(xiàn)。通過閱讀該書可以掌握Ceph的核心設(shè)計(jì)理念與高級(jí)應(yīng)用技巧,從而快速提升自身對(duì)于Ceph的研發(fā)與運(yùn)維能力。
適讀人群 :本書適合于對(duì) Ceph 有一定了解,想更進(jìn)一步參與到 Ceph 開源項(xiàng)目中來,并致力于后續(xù)為 Ceph、特別是 RADOS 組件添磚加瓦的開發(fā)者或者高級(jí)開發(fā)者閱讀。此外,高級(jí)運(yùn)維人員 1)Ceph 創(chuàng)始人 Sage Weil 親自作序,王璞、陳緒、何寶宏、孫振鵬等專家力薦。
(2)作者是中興通訊Clove團(tuán)隊(duì)核心成員,同時(shí)也是Ceph 開源社區(qū)技術(shù)委員會(huì)成員與 Ceph Member聯(lián)袂奉獻(xiàn)。
(3)中興通訊Clove團(tuán)隊(duì)在Ceph項(xiàng)目的Commit數(shù)量,世界NO.2,僅次于創(chuàng)始團(tuán)隊(duì)Red Hat
(4)系統(tǒng)剖析 Ceph 核心組件 RADOS 的設(shè)計(jì)原理與具體實(shí)現(xiàn),全面掌握 Ceph 的核心設(shè)計(jì)理念與高級(jí)應(yīng)用技巧,快速提升對(duì)于 Ceph 的研發(fā)與運(yùn)維能力。
2018年3月,全球 Cephers 的盛會(huì)——Cephalocon APAC 2018 在北京舉行。來自RedHat、SUSE、Intel、中興通訊、中國移動(dòng)等 Ceph 生態(tài)聯(lián)盟成員的 1000 多位 Ceph 開發(fā)者、使用者和愛好者共聚一堂,探討 Ceph 的現(xiàn)狀與未來,彰顯了 Ceph 開源社區(qū)的蓬勃生機(jī)。
時(shí)光荏苒,自Ceph由Sage A. Weil在博士論文提出以來,十多年間,已經(jīng)從一個(gè)默默無聞的學(xué)生作品成長(zhǎng)為分布式存儲(chǔ)領(lǐng)域最具活力與領(lǐng)導(dǎo)力的開源項(xiàng)目。據(jù) Ceph 官方不完全統(tǒng)計(jì),在世界范圍內(nèi),目前已有超過 100 家公司(機(jī)構(gòu))研究與使用 Ceph,其中不乏歐洲原子能研究組織(CERN)這樣知名的全球性科研機(jī)構(gòu)和 Yahoo、阿里巴巴等著名的互聯(lián)網(wǎng)公司?梢姡鳛榉植际杰浖x存儲(chǔ)的標(biāo)桿,Ceph 領(lǐng)先的架構(gòu)和設(shè)計(jì)理念已經(jīng)深入人心。
Ceph 的魅力源于其架構(gòu)的前瞻性、可塑性和長(zhǎng)期演進(jìn)能力。事實(shí)上,在設(shè)計(jì)之初,Ceph 被定位成一個(gè)純粹的分布式文件系統(tǒng),主要用于解決大型超級(jí)計(jì)算機(jī)之間如何通過聯(lián)網(wǎng)的方式提供可擴(kuò)展的文件存儲(chǔ)服務(wù)。隨著云計(jì)算、大數(shù)據(jù)和人工智能逐漸成為信息時(shí)代的主旋律,Ceph 正不斷拓展自身的觸角,從取代 Swift 成為 OpenStack 首選存儲(chǔ)后端進(jìn)入公眾視野,到完美適配以 Amazon S3 為代表的公有云接口,再到征戰(zhàn)下一個(gè)沒有硝煙的虛擬化(技術(shù))高地——容器。時(shí)至今日,Ceph 已然成為一個(gè)兼容塊、文件、對(duì)象等各類經(jīng)典/新興存儲(chǔ)協(xié)議的超級(jí)統(tǒng)一存儲(chǔ)平臺(tái)。隨著 Ceph 的加速進(jìn)化,可以預(yù)見,我們將會(huì)看到越來越多的基于 Ceph 構(gòu)建的自定義存儲(chǔ)應(yīng)用。
為什么寫這本書
開源軟件誕生的土壤決定了大部分開源軟件從來就不是面向普通大眾的,典型的如 Linux,其無可視化界面的命令行操作方式和海量命令足以讓90%的用戶望而卻步。Ceph 作為一個(gè)出身于學(xué)院的開源作品也存在類似的缺點(diǎn)。此外,隨著自身的不斷演進(jìn)和完善,Ceph 已經(jīng)從最初的分布式文件系統(tǒng)逐漸成長(zhǎng)為一個(gè)全能的分布式統(tǒng)一存儲(chǔ)平臺(tái),因此其復(fù)雜程度遠(yuǎn)遠(yuǎn)超過功能相對(duì)單一的傳統(tǒng)存儲(chǔ)系統(tǒng)。更糟的是,雖然社區(qū)有建議的編碼規(guī)范,但是為了不挫傷貢獻(xiàn)者的積極性,這些規(guī)范并未作為強(qiáng)制要求,因此隨著貢獻(xiàn)者數(shù)量的快速增長(zhǎng),Ceph 代碼本身也不可避免地趨于異構(gòu)化。上述種種因素使得無論是使用還是開發(fā) Ceph 都難度巨大,再加上語言和文化背景的差異,足以造成大量國內(nèi) Ceph 初級(jí)玩家難以逾越的鴻溝。
距我們創(chuàng)作《Ceph 設(shè)計(jì)原理與實(shí)現(xiàn)》一書已經(jīng)過去了兩年。一方面,Ceph 代碼發(fā)生了巨大變化;另一方面,我們對(duì) Ceph 的認(rèn)知也有了較大提升。因此,我們兩位負(fù)責(zé)研究 RADOS 組件的同事基于前作中的相關(guān)章節(jié)重新創(chuàng)作了本書。
與前作相比,本書更加專注于 RADOS 這個(gè)基礎(chǔ)組件,而剝離了RBD、RGW、CephFS 等具體存儲(chǔ)應(yīng)用和案例實(shí)戰(zhàn)部分。這主要是基于以下考慮:
首先,RBD、RGW 和 CephFS與其承載的具體業(yè)務(wù)耦合度較高,例如 RBD 后續(xù)的重點(diǎn)工作是兼容 iSCSI/FC 傳統(tǒng)塊存儲(chǔ)接口,而要徹底掌握 RGW 則必然要對(duì)以 S3、Swift 為代表的新興對(duì)象存儲(chǔ)協(xié)議簇有比較透徹的了解等,限于篇幅,很難單純從 Ceph 的角度對(duì)這些組件做出比較完整和透徹的解讀。
其次,由于時(shí)間倉促,加之不少章節(jié)均由不同的作者獨(dú)立創(chuàng)作,因此前作中章節(jié)之間難免重復(fù)或者脫節(jié),而本書則更加注重章節(jié)之間銜接與編排的合理性。此外,由于作者數(shù)量大幅減少,本書風(fēng)格更加統(tǒng)一,相對(duì)而言讀者可以獲得更好的閱讀體驗(yàn)。
再次,藉本次重新創(chuàng)作,我們進(jìn)一步削弱了前作中相關(guān)章節(jié)與代碼之間的耦合性,更加側(cè)重于闡述設(shè)計(jì)理念。由于 Ceph 社區(qū)十分活躍,貢獻(xiàn)者數(shù)量眾多,每個(gè)版本代碼都會(huì)發(fā)生翻天覆地的變化,因此,理解設(shè)計(jì)原理,以不變應(yīng)萬變,無疑比掌握某個(gè)特定版本的代碼更為重要。
最后,需要再次強(qiáng)調(diào)的是,雖然本書部分章節(jié)源自《Ceph 設(shè)計(jì)原理與實(shí)現(xiàn)》一書,但是基本上都進(jìn)行了重新創(chuàng)作。重復(fù)錄入這些章節(jié)不是簡(jiǎn)單的查漏補(bǔ)缺,而是進(jìn)一步提煉與升華,它們是本書不可或缺的組成部分。事實(shí)上,與新增內(nèi)容相比,重新創(chuàng)作這些章節(jié)花費(fèi)了我們更多的時(shí)間與精力。
本書的讀者對(duì)象
本書適合于對(duì) Ceph 有一定了解,想更進(jìn)一步參與到 Ceph 開源項(xiàng)目中來,并致力于后續(xù)為 Ceph,特別是 RADOS 組件添磚加瓦的開發(fā)者或者高級(jí)開發(fā)者閱讀。
此外,高級(jí)運(yùn)維人員通過閱讀本書也能夠了解和掌握 Ceph 的核心設(shè)計(jì)理念及高級(jí)應(yīng)用技巧,從而在日常運(yùn)維工作中更加得心應(yīng)手。
與《Ceph設(shè)計(jì)原理與實(shí)現(xiàn)》力求如實(shí)反映源碼的實(shí)現(xiàn)細(xì)節(jié)不同,本書是 Ceph(特別是 RADOS 組件)設(shè)計(jì)思想與基本理念的高度濃縮。有條件的讀者可以將兩本書對(duì)照閱讀,相信可以有更大收獲。
本書的主要內(nèi)容
本書主要介紹 Ceph 的核心——RADOS。具體編排如下:
第1章 一生萬物——RADOS 導(dǎo)論
Ceph 是集傳統(tǒng)塊、文件存儲(chǔ)以及新興對(duì)象存儲(chǔ)于一身的超級(jí)分布式統(tǒng)一存儲(chǔ)平臺(tái)。
Ceph 在架構(gòu)上采用存儲(chǔ)應(yīng)用與存儲(chǔ)服務(wù)完全分離的模式,并基于 RADOS 對(duì)外提供高性能和可輕松擴(kuò)展的存儲(chǔ)服務(wù)。理論上,基于 RADOS 及其派生的 librados 標(biāo)準(zhǔn)庫可以開發(fā)任意類型的存儲(chǔ)應(yīng)用,典型的如 Ceph 當(dāng)前的三大核心應(yīng)用:RBD、RGW和 CephFS。
作為全書的開始,本章旨在為讀者建立一個(gè) RAD
作者簡(jiǎn)介
謝型果
中興通訊軟件工程師,6 年存儲(chǔ)研發(fā)經(jīng)驗(yàn),精通本地文件系統(tǒng)ZFS。2014年開始研究Ceph,目前是 Ceph 開源社區(qū)技術(shù)委員會(huì)成員兼 Ceph Member,主要研究方向?yàn)?RADOS。
嚴(yán) 軍
中興通訊軟件工程師,6 年存儲(chǔ)研發(fā)經(jīng)驗(yàn),先后從事 NAS 與分布式統(tǒng)一存儲(chǔ)產(chǎn)品研發(fā)。2016 年加入 Ceph 開源社區(qū),主要研究領(lǐng)域?yàn)?RADOS 與分布式存儲(chǔ)系統(tǒng) QoS,目前是 Ceph 開源社區(qū)的 Ceph Member。
序1
序2
序3
前言
第1章 一生萬物——RADOS導(dǎo)論 1
1.1 RADOS概述 3
1.2 存儲(chǔ)池與PG 5
1.3 對(duì)象演進(jìn)與排序 6
1.4 stable_mod與客戶端尋址 10
1.5 PG分裂與集群擴(kuò)容 13
1.6 總結(jié)和展望 17
第2章 計(jì)算尋址之美與數(shù)據(jù)平衡之殤——CRUSH 19
2.1 抽簽算法 20
2.2 CRUSH算法詳解 24
2.2.1 集群的層級(jí)化描述——cluster map 25
2.2.2 數(shù)據(jù)分布策略——placement rule 27
2.3 調(diào)制CRUSH 33
2.3.1 編輯CRUSH map 34
2.3.2 定制CRUSH規(guī)則 38
2.4 數(shù)據(jù)重平衡 40
2.4.1 reweight 42
2.4.2 weightset 45
2.4.3 upmap 47
2.4.4 balancer 48
2.5 總結(jié)和展望 52
第3章 集群的大腦——Monitor 54
3.1 集群表OSDMap 56
3.2 集群管理 60
3.2.1 OSD管理 60
3.2.2 存儲(chǔ)池管理 63
3.2.3 告警管理 66
3.3 總結(jié)和展望 66
第4章 存儲(chǔ)的基石——OSD 68
4.1 OSD概述 69
4.1.1 集群管理 70
4.1.2 網(wǎng)絡(luò)通信 71
4.1.3 公共服務(wù) 72
4.2 OSD上電 74
4.3 故障檢測(cè) 75
4.4 空間管理 78
4.5 總結(jié)和展望 82
第5章 高效本地對(duì)象存儲(chǔ)引擎——BlueStore 84
5.1 設(shè)計(jì)原理 85
5.2 磁盤數(shù)據(jù)結(jié)構(gòu) 89
5.2.1 PG 89
5.2.2 對(duì)象 89
5.3 緩存機(jī)制 97
5.3.1 概述 97
5.3.2 實(shí)現(xiàn) 100
5.4 磁盤空間管理 103
5.4.1 概述 103
5.4.2 BitmapFreelistManager 106
5.4.3 BitmapAllocator 107
5.5 BlueFS 109
5.5.1 概述 109
5.5.2 磁盤數(shù)據(jù)結(jié)構(gòu) 112
5.5.3 塊設(shè)備 116
5.6 實(shí)現(xiàn)原理 116
5.6.1 mkfs 117
5.6.2 mount 117
5.6.3 read 119
5.6.4 write 121
5.7 使用指南 126
5.7.1 部署B(yǎng)lueStore 127
5.7.2 配置參數(shù) 129
5.8 總結(jié)和展望 132
第6章 移動(dòng)的對(duì)象載體——PG 134
6.1 基本概念與術(shù)語 135
6.2 讀寫流程 138
6.2.1 消息接收與分發(fā) 145
6.2.2 do_request 147
6.2.3 do_op 149
6.2.4 execute_ctx 155
6.3 狀態(tài)遷移 163
6.3.1 狀態(tài)機(jī)概述 164
6.3.2 創(chuàng)建PG 167
6.3.3 Peering 170
6.4 總結(jié)和展望 184
第7章 在線數(shù)據(jù)恢復(fù)——Recovery和Backfill 185
7.1 Recovery 186
7.1.1 資源預(yù)留 186
7.1.2 對(duì)象修復(fù) 187
7.1.3 增量Recovery和異步Recovery 191
7.2 Backfill 192
7.3 總結(jié)和展望 199
第8章 數(shù)據(jù)正確性與一致性的守護(hù)者——Scrub 201
8.1 Scrub的指導(dǎo)思想 202
8.2 Scrub流程詳解 207
8.2.1 資源預(yù)留 207
8.2.2 范圍界定 209
8.2.3 對(duì)象掃描 211
8.2.4 副本比對(duì) 213
8.2.5 統(tǒng)計(jì)更新與自動(dòng)修復(fù) 215
8.3 Scrub搶占 215
8.4 總結(jié)和展望 218
第9章 基于dmClock的分布式流控策略 219
9.1 概述 220
9.2 dmClock基本原理 221
9.2.1 mClock 221
9.2.2 dmClock 224
9.3 dmClock算法實(shí)現(xiàn) 225
9.3.1 I/O請(qǐng)求入隊(duì) 227
9.3.2 I/O請(qǐng)求出隊(duì) 227
9.3.3 實(shí)例分析 229
9.4 在Ceph中的應(yīng)用實(shí)踐 233
9.4.1 client的界定 233
9.4.2 支持帶寬限制 235
9.4.3 存儲(chǔ)卷的QoS 237
9.4.4 集群流控策略 240
9.5 總結(jié)和展望 244
第10章 糾刪碼原理與實(shí)踐 246
10.1 RAID技術(shù)概述 247
10.2 RSRAID和Jerasure 253
10.2.1 計(jì)算校驗(yàn)和 254
10.2.2 數(shù)據(jù)恢復(fù) 255
10.2.3 算術(shù)運(yùn)算 256
10.2.4 缺陷與改進(jìn) 261
10.2.5 Jerasure 262
10.3 糾刪碼在Ceph中的應(yīng)用 264
10.3.1 術(shù)語 266
10.3.2 新寫 268
10.3.3 讀 269
10.3.4 覆蓋寫 271
10.3.5 日志 274
10.3.6 Scrub 275
10.4 總結(jié)和展望 275
......