伺服器zfs檔案系統故障資料恢復過程

2021-10-03 12:04:07 字數 1397 閱讀 8601

伺服器在正常執行的時候突然崩潰,沒有斷電、進水、異常操作、機房不穩定等外部因素。伺服器管理員對裝置進行重啟後發現無法進入系統,需要對伺服器內的資料進行恢復。

伺服器管理員對所有硬碟進行扇區級映象後將映象檔案送到資料恢復中心進行資料恢復。伺服器資料恢復工程師對客戶的故障伺服器進行底層資料分析得到如下資訊:故障伺服器採用zfs檔案系統;所有磁碟被分為4個組,每組8塊硬碟;熱備盤全部啟用。

在伺服器zfs檔案系統中,池被稱為zpool。zpool的子裝置可以有很多種類,包括塊裝置、檔案、磁碟等等,在本案例中所採用的是其中的一種------三組raidz作為子裝置。

經過分析發現,三組raidz內有兩組分別啟用熱備盤個數為1和3。在啟用熱備盤後,第一組內仍出現一塊離線盤,第二組內則出現兩塊。以此進行故障現場模擬:三組raidz內第一二組分別出現離線盤,熱備盤及時進行替換;熱備盤無冗餘狀態下第一組出現一塊離線盤,第二組出現兩塊離線盤,zpool進入高負荷狀態(每次讀取資料都需要進行校驗得到正確資料);第二組內出現第三塊離線盤,raidz崩潰、zpool下線、伺服器崩潰。

zfs管理的儲存池與常規儲存不同,所有磁碟都由zfs進行管理。常規raid在儲存資料時,只按照特定的規則組建池,不關心檔案在子裝置上的位置。而zfs在資料儲存時會為每次寫入的資料分配適當大小的空間,並計算得到指向子裝置的資料指標。這種特性使得raidz缺盤時無法直接進行校驗得到資料,必須將整個zpool作為乙個整體進行解析。

手工擷取事務塊資料,編寫程式獲取最大事務號入口:

獲取檔案系統入口

解析資料指標

獲取到檔案系統入口點在各磁碟分布情況後,開始手工擷取並分析檔案系統內部結構,入口分布所在的磁碟組無缺失盤,可直接提取資訊。根據zfs檔案系統的資料儲存結構順利找到客戶對映的lun名稱,進而找到其節點。

經過仔細分析,發現在此儲存中的zfs版本與開源版本有較大差別,無法使用公司原先開發的解析程式進行解析,所以重新編寫了資料提取程式。

提取資料程式

由於磁碟組內缺盤個數較多,每個io流都需要通過校驗得到,提取進度極為緩慢。與客戶溝通後得知,此zvol卷對映到xenserver作為儲存裝置,客戶所需的檔案在其中乙個大小約為2t的vhd內。提取zvol卷頭部資訊,按照xenstore卷儲存結構進行分析,發現2t vhd在整個卷的尾部,計算得到其起始位置後從此位置開始提取資料。

聯絡客戶驗證資料,確定檔案數量與系統自動記錄的檔案個數一致。驗證檔案可用性,檔案全部可正常開啟,伺服器資料恢復成功。

如何解決AIX的檔案系統故障

在進行檔案系統維護和管理過程中,會碰到這樣一些問題,例如無法安裝檔案系統或者無法拆卸檔案系統,當檔案系統的超級塊被破壞,而無法正常使用檔案系統,如何修復rootvg中的主要檔案系統,下面就討論如何解決一些常見的檔案系統問題。一 恢復超級塊錯誤 修復該檔案系統時,出現下面錯誤提示,並異常終止 fsck...

ZFS檔案系統資料恢復的方法

恢復資料的方法 python的實現 zfs是乙個非常穩定可靠的檔案系統,但是還是有一定機率會出現系統壞掉,使用者資料不能讀取出來的情況。如果乙個zfs儲存同時連線到2個控制器,兩個控制器同時zpool import池,由於元資料覆蓋,就會出現整個檔案系統壞掉。首先應該參考官網 其中修復 zfs 儲存...

搭建ftp檔案系統伺服器

ubuntu安裝配置 1.安裝 sudo apt get install vsftpd 2.編輯配置檔案 vim etc vsftpd.conf 可以使用以下配置 注意 中不可有tab,或空格,會影響ftp啟動 這些設定系統預設是開啟的,可以不管 listen no listen ipv6 yes ...