Ceph存儲基本架構:
Ceph存儲可分為塊存儲,對象存儲和文件存儲。Ceph基于對象存儲,對外提供三種存儲接口,故稱為統一存儲。
Ceph的底層是RADOS(分布式對象存儲系統),RADOS由兩部分組成:OSD和MON。
MON負責監控整個集群,維護集群的健康狀態,維護展示集群狀態的各種圖表,如OSDMap、MonitorMap、PGMap和CRUSHMap。
OSD負責存儲數據、復制數據、平衡數據、恢復數據,與其它OSD間進行心跳檢查等。通常情況下一塊硬盤對應一個OSD。
Ceph數據的存儲過程:
無論使用哪種存儲方式(對象、塊、文件),存儲的數據都會被切分成對象(Objects)。
存儲池:
不同用戶因為不同的目的把對象存儲在不同的存儲池里,這些對象分布于OSD上。
對象保存在不同的存儲池(Pool)中,是對象存儲的邏輯組,對應不同的用戶。存儲池管理著歸置組數量、副本數量、和存儲池規則集。
歸置組:
歸置組(PGPlacementGroup)是對象池的片段,Ceph根據對象的Oid和一些其他信息做計算操作,映射到歸置組,無數的對象被劃分到不同的歸置組。PG是一個邏輯概念,它在數據尋址時類似于數據庫中的索引。
每個對象都會固定映射進一個PG中,所以當我們要尋找一個對象時,只需要先找到對象所屬的PG,然后遍歷這個PG就可以了,無需遍歷所有對象。而且在數據遷移時,也是以PG作為基本單位進行遷移。
OSD:
最后PG會根據管理員設置的副本數量進行復制,然后通過crush算法存儲到不同的OSD節點上,最終把PG中的所有對象存儲到OSD節點上。
BlueStore:
新版本中,Ceph默認以Bluestore存儲引擎,作為RADOS中OSD的ObjectStore存儲底層實現BlueStore整體架構。
存儲空間:
BlueStore將整個存儲空間分為3個部分:WAL,DB,SLOW
慢速(Slow)空間:主要用于存儲對象數據,由BlueStore管理。
高速(DB)空間:存儲blufs和rocksdb產生的數據,由BlueFS直接管理,如果不存在或者DB設備空間不足,則選擇Slow類型設備空間。
超高速(WAL)空間:主要存儲RocksDB的WAL(即.log)文件,由BlueFS直接管理,如果不存在或者WAL設備空間不足,則逐級降級選擇DB、SLOW分區。
Rocksdb:
BlueStore使用Rocksdb作為自己元數據存儲的底層實現,將各種元數據以kv型記錄的方式存在數據庫中。
寫入機制:任何元數據的寫入都會先寫到WAL,然后再寫入MemoryTable(Memtable)。
當一個Memtable寫滿了之后,就會變成immutable的Memtable,RocksDB在后臺會通過一個flush線程將這個Memtableflush到磁盤,生成一個SortedStringTable(SST)文件。
BlueFS:
BlueFS與通用文件系統不同,是Bluestore專為Rocksdb所設計的精簡文件系統。
BlueFS的文件和目錄的元數據以日志事務的形式保存在日志文件中,在上電過程中,replay日志文件中的事務,就可以加載所有的元數據到內存中。
北亞企安針對Ceph的數據恢復流程:
1、制作磁盤鏡像,用于數據提取和備份。
2、提取BlueFS中數據庫文件。從磁盤鏡像的分區獲取超級塊,得到日志的節點信息。回放整個日志中的事務,得到目錄結構和數據庫文件節點信息,根據數據庫文件節點信息提取數據庫文件。提取從每個OSD提取出來的數據庫中的object記錄。
3、對于損壞的數據庫,根據文件格式提取數據庫完好文件中的object記錄。
4、解析object記錄,從各鏡像上提取對應的object數據。
5、根據object的id按序組合卷文件的所有object數據塊,還原整個卷數據。
6、修復卷的文件系統和其中文件。
對于損壞缺失程度不高的卷文件系統,嘗試修復損壞的卷,得到卷中的文件。
對于有固定格式的文件,嘗試修復損壞文件。
審核編輯 黃宇
-
數據恢復
+關注
關注
10文章
507瀏覽量
17210 -
分布式存儲
+關注
關注
4文章
164瀏覽量
19461 -
Ceph
+關注
關注
1文章
22瀏覽量
9388
發布評論請先 登錄
相關推薦
評論