一:客户信息

海南某三甲醫院

二:案例背景

什麼是分佈式文件系統

分佈式文件系統(DistributedFile System,DFS)是一種能夠在多台計算機之間共享文件存儲資源的系統。它將文件存儲在多個節點上,這些節點通常是位於不同地理位置的服務器或計算機集羣。分佈式文件系統的核心目標是提高文件存儲的可靠性、可擴展性和性能,同時為用户提供透明的文件訪問體驗,彷彿文件是存儲在單一的本地文件系統中一樣。

Ceph的三種存儲結構

對象存儲:Ceph 提供 S3 和 Swift 兼容的RESTful API,用於存儲和檢索對象數據。

塊存儲:Ceph 提供塊設備接口,支持虛擬機的塊存儲,如 KVM、OpenStack 等虛擬化平台。

文件系統:Ceph 提供一個 POSIX 兼容的文件系統(CephFS),支持傳統的文件存儲需求。

三:案例描述

近期我司遇到一個華三的分佈式雲平台,有三台物理機,每台物理機使用24塊12TB的物理盤+3塊1TB的閃存+2塊480G的SSD系統盤,總容量為七百多TB,客户誤操作刪除了100TB的數據文件,雲平台才用的是文件存儲模式,通過NFS協議掛載傳入數據。。

四:解決方案

**1.**應急響應

客户聯繫我們以後,我方技術團隊面對這一緊急情況,立即讓客户的運維團隊啓動應急預案,採取了以下措施:

1.緊急停機:首先,為避免進一步的數據損壞,立即停止了所有可能影響到Ceph集羣的操作,包括數據寫入和讀取。

2.環境評估:對當前的Ceph分佈式集羣狀態進行全面評估,確認受影響的範圍及程度,包括哪些配置文件丟失,是否已造成數據損壞等。

**2.**恢復挑戰

在服務器沒有備份容災的情況下進行數據恢復是**挑戰性的,主要挑戰包括:

無備份可用:傳統的恢復方式依賴於已有的備份,而在沒有備份的情況下,需要通過日誌文件、元數據和其他剩餘數據來重建丟失的配置。

系統複雜性:雲平台與Ceph分佈式存儲的配置複雜,恢復過程中稍有不慎就可能造成數據的**性丟失。

時間緊迫:在實際業務環境中,服務的中斷會帶來巨大的損失,因此需要快速而準確地進行恢復。

**3.**案例評估

客户已經找過多家數據恢復公司進行恢復操作,雖未能成功恢復數據文件,但已經把三台物理機的87塊硬盤全部鏡像為虛擬磁盤的鏡像文件。因為華三大多數都是使用的ceph來管理,我司對各個版本的ceph都有過底層解析,經過溝通客户選擇相信我們,跳過現勘階段,直接將裝有鏡像文件的硬盤送至我司進行數據提取。

**4.**恢復方案

1、初步解析

在工作站上使用winhex查看物理盤和閃存盤,發現底層為ceph分佈式存儲,其下層是基於bluestore的分佈式結構,“上層”使用leveldb算法,“中間層”使用rocksdb運作。全局採用持久化的模式,算是一種標準化的新版ceph分佈式存儲系統。

Bluestore:

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_分佈式存儲

Leveldb:

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_分佈式存儲_02

告知客户2天內可讓客户看見我司隨機提取的數據文件。

2.恢復前的準備工作

1、從閃存盤獲取leveldb數據庫文件。

Leveldb-sst:

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_數據_03

2、解析rocksdb的運作模式,可以理解為“16進制結構的表信息”。

Rocksdb:

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_數據_04

3、獲取所有物理盤的osd位圖信息。

Osdmap:

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_數據_05

3、獲取必要信息

1、解析leveldb的表結構,依照特定的算法全盤獲取持久化之前的meta_data(元數據)。

2、解析當前rocksdb的運作模式,通過meta_data中記錄的信息與之關聯。

3、將所有物理盤上的osd信息按照特定的結構全部獲取,獲取每段osd信息上的“ID”信息。

4、獲取閃存盤上記錄的文件head信息。

5、獲取bluestore給每個對象分配的ID信息(包含文件名信息)。

4、分佈式空間碎片組合

將獲取的各種元數據信息導入到SQL數據庫內

1、將rocksdb與meta_data進行關聯,獲取每塊的空間信息

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_分佈式存儲_06

2、將head信息與空間信息進行關聯,使得可以通過head去訪問文件的在空間內的存儲地址。

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_文件系統_07

3、將從bluestore獲取的對象ID信息與head關聯。

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_分佈式存儲_08

4、將自建的SQL數據庫與每塊硬盤(osd)關聯

5、通過ID→head→空間信息→獲取分配的地址信息

5、開始數據文件的恢復提取

【服務器數據恢復】H3C華三Ceph分佈式存儲文件丟失數據恢復案例_分佈式存儲_09

五:案例總結

經過緊張而有序的工作,我方技術團隊終於成功恢復了Ceph分佈式存儲服務器集羣的配置文件,並確保了整個系統環境的穩定運行。此次事件雖然驚心動魄,但也帶來了寶貴的經驗教訓:

1. 加強備份管理:務必建立健全的備份機制,定期備份Ceph集羣關鍵配置文件和數據,確保備份的完整性和可用性,以防不測。

2. 提高安全意識:合理設置管理員權限,加強運維人員的安全教育和培訓,提升自身的運維能力和數據保護水平,降低人為錯誤的發生概率。

3. 完善應急預案:制定規範的操作流程,不斷完善和優化應急預案,確保在緊急情況下能夠迅速、有效地響應。

4. 加強監控與日誌分析:開啓日誌審計功能,記錄管理員的所有操作,便於追溯和排查問題,充分利用監控系統和日誌分析工具,及時發現並處理潛在問題。

Ceph是當前非常流行的開源分佈式存儲系統,具有高擴展性、高性能、高可靠性等優點,同時提供塊存儲服務(rbd)、對象存儲服務(rgw)以及文件系統存儲服務(cephfs)。目前也是OpenStack的主流後端存儲,和OpenStack親如兄弟,為OpenStack提供統一共享存儲服務。使用Ceph作為OpenStack後端存儲,具有如下優點:

所有的計算節點共享存儲,遷移時不需要拷貝根磁盤,即使計算節點掛了,也能立即在另一個計算節點啓動虛擬機(evacuate)。

利用COW(Copy On Write)特性,創建虛擬機時,只需要基於鏡像clone即可,不需要下載整個鏡像,而clone操作基本是0開銷,從而實現了秒級創建虛擬機。

Ceph RBD支持thin provisioning,即按需分配空間,有點類似Linux文件系統的sparse稀疏文件。創建一個20GB的虛擬硬盤時,最開始並不佔用物理存儲空間,只有當寫入數據時,才按需分配存儲空間。