【北亞企安資料恢復】Ceph儲存原理&Ceph資料恢復流程

北亞資料恢復發表於2023-09-26

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、修復卷的檔案系統和其中檔案。

對於損壞缺失程度不高的卷檔案系統,嘗試修復損壞的卷,得到卷中的檔案。

對於有固定格式的檔案,嘗試修復損壞檔案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2986022/,如需轉載,請註明出處,否則將追究法律責任。