Ceph存儲(chǔ)基本架構(gòu):
Ceph存儲(chǔ)可分為塊存儲(chǔ),對(duì)象存儲(chǔ)和文件存儲(chǔ)。Ceph基于對(duì)象存儲(chǔ),對(duì)外提供三種存儲(chǔ)接口,故稱為統(tǒng)一存儲(chǔ)。
Ceph的底層是RADOS(分布式對(duì)象存儲(chǔ)系統(tǒng)),RADOS由兩部分組成:OSD和MON。
MON負(fù)責(zé)監(jiān)控整個(gè)集群,維護(hù)集群的健康狀態(tài),維護(hù)展示集群狀態(tài)的各種圖表,如OSDMap、MonitorMap、PGMap和CRUSHMap。
OSD負(fù)責(zé)存儲(chǔ)數(shù)據(jù)、復(fù)制數(shù)據(jù)、平衡數(shù)據(jù)、恢復(fù)數(shù)據(jù),與其它OSD間進(jìn)行心跳檢查等。通常情況下一塊硬盤(pán)對(duì)應(yīng)一個(gè)OSD。
Ceph數(shù)據(jù)的存儲(chǔ)過(guò)程:
無(wú)論使用哪種存儲(chǔ)方式(對(duì)象、塊、文件),存儲(chǔ)的數(shù)據(jù)都會(huì)被切分成對(duì)象(Objects)。
存儲(chǔ)池:
不同用戶因?yàn)椴煌哪康陌褜?duì)象存儲(chǔ)在不同的存儲(chǔ)池里,這些對(duì)象分布于OSD上。
對(duì)象保存在不同的存儲(chǔ)池(Pool)中,是對(duì)象存儲(chǔ)的邏輯組,對(duì)應(yīng)不同的用戶。存儲(chǔ)池管理著歸置組數(shù)量、副本數(shù)量、和存儲(chǔ)池規(guī)則集。
歸置組:
歸置組(PGPlacementGroup)是對(duì)象池的片段,Ceph根據(jù)對(duì)象的Oid和一些其他信息做計(jì)算操作,映射到歸置組,無(wú)數(shù)的對(duì)象被劃分到不同的歸置組。PG是一個(gè)邏輯概念,它在數(shù)據(jù)尋址時(shí)類似于數(shù)據(jù)庫(kù)中的索引。
每個(gè)對(duì)象都會(huì)固定映射進(jìn)一個(gè)PG中,所以當(dāng)我們要尋找一個(gè)對(duì)象時(shí),只需要先找到對(duì)象所屬的PG,然后遍歷這個(gè)PG就可以了,無(wú)需遍歷所有對(duì)象。而且在數(shù)據(jù)遷移時(shí),也是以PG作為基本單位進(jìn)行遷移。
OSD:
最后PG會(huì)根據(jù)管理員設(shè)置的副本數(shù)量進(jìn)行復(fù)制,然后通過(guò)crush算法存儲(chǔ)到不同的OSD節(jié)點(diǎn)上,最終把PG中的所有對(duì)象存儲(chǔ)到OSD節(jié)點(diǎn)上。
BlueStore:
新版本中,Ceph默認(rèn)以Bluestore存儲(chǔ)引擎,作為RADOS中OSD的ObjectStore存儲(chǔ)底層實(shí)現(xiàn)BlueStore整體架構(gòu)。
存儲(chǔ)空間:
BlueStore將整個(gè)存儲(chǔ)空間分為3個(gè)部分:WAL,DB,SLOW
慢速(Slow)空間:主要用于存儲(chǔ)對(duì)象數(shù)據(jù),由BlueStore管理。
高速(DB)空間:存儲(chǔ)blufs和rocksdb產(chǎn)生的數(shù)據(jù),由BlueFS直接管理,如果不存在或者DB設(shè)備空間不足,則選擇Slow類型設(shè)備空間。
超高速(WAL)空間:主要存儲(chǔ)RocksDB的WAL(即.log)文件,由BlueFS直接管理,如果不存在或者WAL設(shè)備空間不足,則逐級(jí)降級(jí)選擇DB、SLOW分區(qū)。
Rocksdb:
BlueStore使用Rocksdb作為自己元數(shù)據(jù)存儲(chǔ)的底層實(shí)現(xiàn),將各種元數(shù)據(jù)以kv型記錄的方式存在數(shù)據(jù)庫(kù)中。
寫(xiě)入機(jī)制:任何元數(shù)據(jù)的寫(xiě)入都會(huì)先寫(xiě)到WAL,然后再寫(xiě)入MemoryTable(Memtable)。
當(dāng)一個(gè)Memtable寫(xiě)滿了之后,就會(huì)變成immutable的Memtable,RocksDB在后臺(tái)會(huì)通過(guò)一個(gè)flush線程將這個(gè)Memtableflush到磁盤(pán),生成一個(gè)SortedStringTable(SST)文件。
BlueFS:
BlueFS與通用文件系統(tǒng)不同,是Bluestore專為Rocksdb所設(shè)計(jì)的精簡(jiǎn)文件系統(tǒng)。
BlueFS的文件和目錄的元數(shù)據(jù)以日志事務(wù)的形式保存在日志文件中,在上電過(guò)程中,replay日志文件中的事務(wù),就可以加載所有的元數(shù)據(jù)到內(nèi)存中。
北亞企安針對(duì)Ceph的數(shù)據(jù)恢復(fù)流程:
1、制作磁盤(pán)鏡像,用于數(shù)據(jù)提取和備份。
2、提取BlueFS中數(shù)據(jù)庫(kù)文件。從磁盤(pán)鏡像的分區(qū)獲取超級(jí)塊,得到日志的節(jié)點(diǎn)信息?;胤耪麄€(gè)日志中的事務(wù),得到目錄結(jié)構(gòu)和數(shù)據(jù)庫(kù)文件節(jié)點(diǎn)信息,根據(jù)數(shù)據(jù)庫(kù)文件節(jié)點(diǎn)信息提取數(shù)據(jù)庫(kù)文件。提取從每個(gè)OSD提取出來(lái)的數(shù)據(jù)庫(kù)中的object記錄。
3、對(duì)于損壞的數(shù)據(jù)庫(kù),根據(jù)文件格式提取數(shù)據(jù)庫(kù)完好文件中的object記錄。
4、解析object記錄,從各鏡像上提取對(duì)應(yīng)的object數(shù)據(jù)。
5、根據(jù)object的id按序組合卷文件的所有object數(shù)據(jù)塊,還原整個(gè)卷數(shù)據(jù)。
6、修復(fù)卷的文件系統(tǒng)和其中文件。
對(duì)于損壞缺失程度不高的卷文件系統(tǒng),嘗試修復(fù)損壞的卷,得到卷中的文件。
對(duì)于有固定格式的文件,嘗試修復(fù)損壞文件。
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
711瀏覽量
18978 -
分布式存儲(chǔ)
+關(guān)注
關(guān)注
4文章
182瀏覽量
20167 -
Ceph
+關(guān)注
關(guān)注
1文章
25瀏覽量
9686
發(fā)布評(píng)論請(qǐng)先 登錄
基于DPU的Ceph存儲(chǔ)解決方案
基于全HDD aarch64服務(wù)器的Ceph性能調(diào)優(yōu)實(shí)踐總結(jié)
Ceph是什么?Ceph的統(tǒng)一存儲(chǔ)方案簡(jiǎn)析
Ceph分布式存儲(chǔ)中遇到的問(wèn)題和解決辦法
還在用Ceph嗎?不如試試性能更好的碧海存儲(chǔ)
元核云如何解決Ceph分布式存儲(chǔ)中的問(wèn)題
盤(pán)點(diǎn)分布式存儲(chǔ)系統(tǒng)的主流框架
云存儲(chǔ)中的Ceph分布式文件系統(tǒng)及節(jié)點(diǎn)選擇
Ceph分布式存儲(chǔ)系統(tǒng)性能優(yōu)化研究綜述
一個(gè)去中心化的分布式存儲(chǔ)系統(tǒng)Ceph概述
一文參透分布式存儲(chǔ)系統(tǒng)Ceph的架構(gòu)設(shè)計(jì)、集群搭建
SDNLAB技術(shù)分享:Ceph在云英的實(shí)踐
Ceph分布式存儲(chǔ)系統(tǒng)解析
分布式數(shù)據(jù)恢復(fù)—Ceph+TiDB數(shù)據(jù)恢復(fù)報(bào)告
Ceph分布式存儲(chǔ)簡(jiǎn)介&Ceph數(shù)據(jù)恢復(fù)流程
評(píng)論