3dwoo大學簡體電腦書店
Ceph之RADOS設計原理與實現
( 簡體 字)
作者:謝型果 嚴軍類別:1. -> 程式設計 -> 綜合
出版社:機械工業出版社Ceph之RADOS設計原理與實現 3dWoo書號: 50394
詢問書籍請說出此書號!
有庫存
NT售價: 395
出版日:12/1/2018
頁數:274
光碟數:0
站長推薦:
印刷:語系: ( 簡體 字 )
ISBN:9787111613893 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
序1
序2
序3
前言
第1章 一生萬物——RADOS導論 1
1.1 RADOS概述 3
1.2 存儲池與PG 5
1.3 對象演進與排序 6
1.4 stable_mod與客戶端尋址 10
1.5 PG分裂與集群擴容 13
1.6 總結和展望 17
第2章 計算尋址之美與數據平衡之殤——CRUSH 19
2.1 抽簽算法 20
2.2 CRUSH算法詳解 24
2.2.1 集群的層級化描述——cluster map 25
2.2.2 數據分布策略——placement rule 27
2.3 調制CRUSH 33
2.3.1 編輯CRUSH map 34
2.3.2 定制CRUSH規則 38
2.4 數據重平衡 40
2.4.1 reweight 42
2.4.2 weight-set 45
2.4.3 upmap 47
2.4.4 balancer 48
2.5 總結和展望 52
第3章 集群的大腦——Monitor 54
3.1 集群表OSDMap 56
3.2 集群管理 60
3.2.1 OSD管理 60
3.2.2 存儲池管理 63
3.2.3 告警管理 66
3.3 總結和展望 66
第4章 存儲的基石——OSD 68
4.1 OSD概述 69
4.1.1 集群管理 70
4.1.2 網絡通信 71
4.1.3 公共服務 72
4.2 OSD上電 74
4.3 故障檢測 75
4.4 空間管理 78
4.5 總結和展望 82
第5章 高效本地對象存儲引擎——BlueStore 84
5.1 設計原理 85
5.2 磁盤數據結構 89
5.2.1 PG 89
5.2.2 對象 89
5.3 緩存機制 97
5.3.1 概述 97
5.3.2 實現 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 磁盤數據結構 112
5.5.3 塊設備 116
5.6 實現原理 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 部署BlueStore 127
5.7.2 配置參數 129
5.8 總結和展望 132
第6章 移動的對象載體——PG 134
6.1 基本概念與術語 135
6.2 讀寫流程 138
6.2.1 消息接收與分發 145
6.2.2 do_request 147
6.2.3 do_op 149
6.2.4 execute_ctx 155
6.3 狀態遷移 163
6.3.1 狀態機概述 164
6.3.2 創建PG 167
6.3.3 Peering 170
6.4 總結和展望 184
第7章 在線數據恢復——Recovery和Backfill 185
7.1 Recovery 186
7.1.1 資源預留 186
7.1.2 對象修復 187
7.1.3 增量Recovery和異步Recovery 191
7.2 Backfill 192
7.3 總結和展望 199
第8章 數據正確性與一致性的守護者——Scrub 201
8.1 Scrub的指導思想 202
8.2 Scrub流程詳解 207
8.2.1 資源預留 207
8.2.2 范圍界定 209
8.2.3 對象掃描 211
8.2.4 副本比對 213
8.2.5 統計更新與自動修復 215
8.3 Scrub搶占 215
8.4 總結和展望 218
第9章 基于dmClock的分布式流控策略 219
9.1 概述 220
9.2 dmClock基本原理 221
9.2.1 mClock 221
9.2.2 dmClock 224
9.3 dmClock算法實現 225
9.3.1 I/O請求入隊 227
9.3.2 I/O請求出隊 227
9.3.3 實例分析 229
9.4 在Ceph中的應用實踐 233
9.4.1 client的界定 233
9.4.2 支持帶寬限制 235
9.4.3 存儲卷的QoS 237
9.4.4 集群流控策略 240
9.5 總結和展望 244
第10章 糾刪碼原理與實踐 246
10.1 RAID技術概述 247
10.2 RS-RAID和Jerasure 253
10.2.1 計算校驗和 254
10.2.2 數據恢復 255
10.2.3 算術運算 256
10.2.4 缺陷與改進 261
10.2.5 Jerasure 262
10.3 糾刪碼在Ceph中的應用 264
10.3.1 術語 266
10.3.2 新寫 268
10.3.3 讀 269
10.3.4 覆蓋寫 271
10.3.5 日志 274
10.3.6 Scrub 275
10.4 總結和展望 275
本書是繼《Ceph設計原理與實現》之后,中興通訊Clove團隊在Ceph領域的又一全新力作。Clove團隊是Ceph開源社區國內最負盛名的組織貢獻者之一,自Jewel版起,連續4個版本代碼貢獻量位列世界前三。目前該團隊擁有社區技術委員會成員一名,Ceph Member三名。鑒于 Clove團隊在Ceph不斷發展與壯大過程中做出的杰出貢獻,創始人Sage Weil先生再次為本書親自作序。

存儲是云計算的基石,Ceph是開源分布式軟件定義存儲解決方案中的領頭羊。本書以大量存儲技術的基本原理(例如分布式一致性、文件系統等)為主線,系統剖析了Ceph核心組件 RADOS的設計原理與具體實現。通過閱讀本書可以掌握Ceph的核心設計理念與高級應用技巧,從而快速提升自身對于Ceph的研發與運維能力。

本書核心內容包括:

Ceph架構及基本設計理論解析

CRUSH算法詳解與工程應用

高性能本地對象存儲引擎—BlueStore

分布式一致性與在線數據恢復

分布式QoS與Ceph中的流控策略

糾刪碼原理及其在Ceph中的應用實踐
2018年3月,全球 Cephers 的盛會——Cephalocon APAC 2018 在北京舉行。來自RedHat、SUSE、Intel、中興通訊、中國移動等 Ceph 生態聯盟成員的 1000 多位 Ceph 開發者、使用者和愛好者共聚一堂,探討 Ceph 的現狀與未來,彰顯了 Ceph 開源社區的蓬勃生機。

時光荏苒,自Ceph由Sage A. Weil在博士論文提出以來,十多年間,已經從一個默默無聞的學生作品成長為分布式存儲領域最具活力與領導力的開源項目。據 Ceph 官方不完全統計,在世界范圍內,目前已有超過 100 家公司(機構)研究與使用 Ceph,其中不乏歐洲原子能研究組織(CERN)這樣知名的全球性科研機構和 Yahoo、阿里巴巴等著名的互聯網公司。可見,作為分布式軟件定義存儲的標桿,Ceph 領先的架構和設計理念已經深入人心。

Ceph 的魅力源于其架構的前瞻性、可塑性和長期演進能力。事實上,在設計之初,Ceph 被定位成一個純粹的分布式文件系統,主要用于解決大型超級計算機之間如何通過聯網的方式提供可擴展的文件存儲服務。隨著云計算、大數據和人工智能逐漸成為信息時代的主旋律,Ceph 正不斷拓展自身的觸角,從取代 Swift 成為 OpenStack 首選存儲后端進入公眾視野,到完美適配以 Amazon S3 為代表的公有云接口,再到征戰下一個沒有硝煙的虛擬化(技術)高地——容器。時至今日,Ceph 已然成為一個兼容塊、文件、對象等各類經典/新興存儲協議的超級統一存儲平臺。隨著 Ceph 的加速進化,可以預見,我們將會看到越來越多的基于 Ceph 構建的自定義存儲應用。

為什么寫這本書

開源軟件誕生的土壤決定了大部分開源軟件從來就不是面向普通大眾的,典型的如 Linux,其無可視化界面的命令行操作方式和海量命令足以讓90%的用戶望而卻步。Ceph 作為一個出身于學院的開源作品也存在類似的缺點。此外,隨著自身的不斷演進和完善,Ceph 已經從最初的分布式文件系統逐漸成長為一個全能的分布式統一存儲平臺,因此其復雜程度遠遠超過功能相對單一的傳統存儲系統。更糟的是,雖然社區有建議的編碼規范,但是為了不挫傷貢獻者的積極性,這些規范并未作為強制要求,因此隨著貢獻者數量的快速增長,Ceph 代碼本身也不可避免地趨于異構化。上述種種因素使得無論是使用還是開發 Ceph 都難度巨大,再加上語言和文化背景的差異,足以造成大量國內 Ceph 初級玩家難以逾越的鴻溝。

距我們創作《Ceph 設計原理與實現》一書已經過去了兩年。一方面,Ceph 代碼發生了巨大變化;另一方面,我們對 Ceph 的認知也有了較大提升。因此,我們兩位負責研究 RADOS 組件的同事基于前作中的相關章節重新創作了本書。

與前作相比,本書更加專注于 RADOS 這個基礎組件,而剝離了RBD、RGW、CephFS 等具體存儲應用和案例實戰部分。這主要是基于以下考慮:

首先,RBD、RGW 和 CephFS與其承載的具體業務耦合度較高,例如 RBD 后續的重點工作是兼容 iSCSI/FC 傳統塊存儲接口,而要徹底掌握 RGW 則必然要對以 S3、Swift 為代表的新興對象存儲協議簇有比較透徹的了解等,限于篇幅,很難單純從 Ceph 的角度對這些組件做出比較完整和透徹的解讀。

其次,由于時間倉促,加之不少章節均由不同的作者獨立創作,因此前作中章節之間難免重復或者脫節,而本書則更加注重章節之間銜接與編排的合理性。此外,由于作者數量大幅減少,本書風格更加統一,相對而言讀者可以獲得更好的閱讀體驗。

再次,藉本次重新創作,我們進一步削弱了前作中相關章節與代碼之間的耦合性,更加側重于闡述設計理念。由于 Ceph 社區十分活躍,貢獻者數量眾多,每個版本代碼都會發生翻天覆地的變化,因此,理解設計原理,以不變應萬變,無疑比掌握某個特定版本的代碼更為重要。

最后,需要再次強調的是,雖然本書部分章節源自《Ceph 設計原理與實現》一書,但是基本上都進行了重新創作。重復錄入這些章節不是簡單的查漏補缺,而是進一步提煉與升華,它們是本書不可或缺的組成部分。事實上,與新增內容相比,重新創作這些章節花費了我們更多的時間與精力。

本書的讀者對象

本書適合于對 Ceph 有一定了解,想更進一步參與到 Ceph 開源項目中來,并致力于后續為 Ceph,特別是 RADOS 組件添磚加瓦的開發者或者高級開發者閱讀。

此外,高級運維人員通過閱讀本書也能夠了解和掌握 Ceph 的核心設計理念及高級應用技巧,從而在日常運維工作中更加得心應手。

與《Ceph設計原理與實現》力求如實反映源碼的實現細節不同,本書是 Ceph(特別是 RADOS 組件)設計思想與基本理念的高度濃縮。有條件的讀者可以將兩本書對照閱讀,相信可以有更大收獲。

本書的主要內容

本書主要介紹 Ceph 的核心——RADOS。具體編排如下:

第1章 一生萬物——RADOS 導論

Ceph 是集傳統塊、文件存儲以及新興對象存儲于一身的超級分布式統一存儲平臺。

Ceph 在架構上采用存儲應用與存儲服務完全分離的模式,并基于 RADOS 對外提供高性能和可輕松擴展的存儲服務。理論上,基于 RADOS 及其派生的 librados 標準庫可以開發任意類型的存儲應用,典型的如 Ceph 當前的三大核心應用:RBD、RGW和 CephFS。

作為全書的開始,本章旨在為讀者建立一個 RADOS 的初步印象,主要介紹包括 OSD、Monitor、存儲池、PG、對象等在內的一眾基本概念。

第2章 計算尋址之美與數據平衡之殤——CRUSH

CRUSH 是 Ceph 兩大核心設計之一。CRUSH 良好的設計理念使其具有計算尋址、高并發和動態數據均衡、可定制的副本策略等基本特性,進而能夠非常方便地實現諸如去中心化、有效抵御物理結構變化并保證性能隨集群規模呈線性擴展、高可靠等高級特性,因而非常適合 Ceph 這類對可擴展性、性能和可靠性都有嚴苛要求的大型分布式存儲系統。

CRUSH 最大的痛點在于,在實際應用中,很容易出現由于 CRUSH 的先天缺陷導致 PG 分布不均,進而導致集群出現 OSD 之間數據分布失衡、集群整體空間利用率不高的問題,為此社區引入了包括 reweight、weight-set、upmap、balancer 在內的一系列手段加以改進。

第3章 集群的大腦——Monitor

Monitor 是基于 Paxos 兼職議會算法構建的、具有分布式強一致性的小型集群,主要負責維護和傳播集群表的權威副本。Monitor 采用負荷分擔的方式工作,因此,任何時刻、任意類型的客戶端或者 OSD都可以通過和集群中任意一個 Monitor 進行交互,以索取或者請求更新集群表。基于 Paxos 的分布式一致性算法可以保證所有 Monitor 的行為自始至終都是正確和自洽的。

第4章 存儲的基石——OSD

對象存儲起源于傳統的 NAS(例如 NFS)和 SAN 存儲,其基本思想是賦予底層物理存儲設備(例如磁盤)一些 CPU、內存資源等,使之成為一個抽象的對象存儲設備(即 OSD),能夠獨立完成一些低級別的文件系統操作(例如空間分配、磁盤 I/O 調度等),以實現客戶端 I/O 操作(例如讀、寫)與系統調用(例如打開文件、關閉文件)之間的解耦。

與傳統對象存儲僅僅賦予 OSD 一些初級的“智能”不同,Ceph 開創性地認為,這種“智能”可以被更進一步地用于執行故障恢復與數據自動平衡、提供完備的高性能本地對象存儲服務等復雜任務上,從而使得基于 OSD 構建高可靠、高可擴展和高并發性能的大型分布式對象存儲系統成為可能。

第5章 高性能本地對象存儲引擎——BlueStore

BlueStore是默認的新一代高性能本地對象存儲引擎。BlueStore 在設計中充分考慮了對下一代全 SSD 以及全NVMe SSD閃存陣列的適配,增加了數據自校驗、數據壓縮等熱點增值功能,面向 PG 提供高效、無差異和符合事務語義的本地對象存儲服務。

第6章 移動的對象載體——PG

面向分布式的設計使得 Ceph 可以輕易管理擁有成百上千個節點、PB 級以上存儲容量的大規模集群。

通常情況下,對象大小是固定的。考慮到 Ceph 隨機分布數據(對象)的特性,為了最大程度地實現負載均衡,不會將對象粒度設計得很大,因此即便一個普通規模的 Ceph 集群,也可以存儲數以百萬計的對象,這使得直接以對象為粒度進行資源和任務管理的代價過于昂貴。

簡言之,PG 是一些對象的集合。引入 PG 的優點在于:首先,集群中 PG 數量經過人工規劃因而嚴格可控(反之,集群中對象的數量則時刻處于變化之中),這使得基于 PG 精確控制單個 OSD 乃至整個節點的資源消耗成為可能;其次,由于集群中 PG 數量遠遠小于對象數量,并且 PG 的數量和生命周期都相對穩定,因此以 PG 為單位進行數據同步或者遷移等,相較于直接以對象為單位而言,難度更小。

PG 最引人注目之處在于其可以在 OSD 之間(根據 CRUSH 的實時計算結果)自由遷移,這是 Ceph 賴以實現自動數據恢復、自動數據平衡等高級特性的基礎。

第7章 在線數據恢復——Recovery與Backfill

在線數據恢復是存儲系統的重要研究課題之一。

與離線恢復不同,在線數據恢復的難點在于數據本身一直處于變化之中,同時在生產環境中一般都有兼顧數據可靠性和系統平穩運行的要求,因此如何合理地處理各種業務之間的沖突,恰當地分配各種業務之間的資源(例如 CPU、內存、磁盤和網絡帶寬等),在盡可能提升數據恢復速度的同時,降低甚至完全避免數據恢復對正常業務造成干擾則顯得至關重要。

按照能否依據日志進行恢復,Ceph 將在線數據恢復細分為 Recovery 和 Backfill 兩種方式。通常意義上,兩者分別用于應對臨時故障和永久故障,當然后者也常用于解決由于集群拓撲結構變化導致的數據和負載不均衡問題。

第8章 數據正確性與一致性的守護者——Scrub

Scrub 是一種重要的輔助機制,用于守護集群數據的正確性與一致性。

實現上,Scrub 主要依賴對象的有序性與信息摘要技術,前者使其可以不重復(從而高效)地遍歷集群中的所有對象,后者則提供了一種快速檢測數據正確性和一致性的手段。

與數據恢復類似,Scrub 也分在線和離線兩種方式。同樣,由于數據本身一直處于變化之中,為了捕獲數據錯誤和一致性問題,要求Scrub周期性地執行,同時為了能夠完整地完成一次深度掃描,則要求Scrub基于合適的粒度、以合理的規則執行。

第9章 基于dmClock的分布式流控策略

dmClock是一種基于時間標簽的分布式I/O調度算法。Ceph采用dmClock主要希望解決客戶端業務與集群內部操作的I/O資源合理分配問題,但由于種種原因,這一部分研究進展比較緩慢。通過深入研究dmClock算法,我們在社區的基礎上對其進行了改進和應用實踐,增加了塊設備卷粒度QoS與OSD粒度的數據恢復流量自適應控制的支持,并基于此進一步優化了整個集群的流控策略。

第10章 糾刪碼原理與實踐

Ceph 傳統的3副本數據備份方式能夠在取得高可靠性的前提下最小化客戶端請求的響應時延,因而特別適合對可靠性和性能都有一定要求的存儲應用。這種目前使用最廣泛的備份方式的缺點在于會大量占用額外的存儲空間,因而導致集群的實際空間利用率不高。與之相反,糾刪碼以條帶為單位,通過數學變換,將采用任意k + m備份策略所消耗的額外存儲空間都成功控制在 1 倍以內,而代價是計算資源消耗變大和客戶端請求響應時延變長,因而適合對時延不敏感的“冷數據”(例如備份數據)應用。

勘誤與支持

《Ceph設計原理與實現》一書出版之后,我們收到了不少讀者朋友的來信,指出了書中的錯誤和疏漏,在此對這些熱心的讀者朋友們一并表示感謝。

本書在前作的基礎上,對相關章節進一步做了大幅修訂,同時增加了大量新的章節。由于寫作和認知水平有限,問題仍然在所難免,歡迎新老讀者們通過以下電子郵箱對本書進行指正:

致謝

Ceph 官方社區的源代碼是創作本書的原始素材,因此我們首先感謝 Ceph 官方社區和創始人 Sage A. Weil 先生。

其次,我們要感謝所在部門的主管領導譚芳,感謝他在日常工作中給予我們的關照,以及對于出版《Ceph 設計原理與實現》與本書不遺余力的支持。

再次,感謝 Clove 團隊,本書很大程度上是整個團隊的智慧結晶。此外,我們要特別感謝宋維斌、韋巧苗、羅慕堯、朱尚忠、朱凱波等幾位同事,他(她)們通讀了本書的初稿,提出了大量寶貴的修改意見,極大地增強了本書的專業性與可讀性。

最后,感謝 IT 學院的閆林老師對于出版《Ceph設計原理與實現》及本書給予的鼓勵和巨大幫助。



謝型果 嚴軍  

2018年8月
pagetop