服務器Linux系統下的ext文件系統修復方案
一、故障描述
服務器是dell 730系列服務器,存儲陣列是MD3200系列存儲5T的Lun,操作系統是Linux centos 7,文件系統類型是EXT4,因意外斷電,導致系統不能正常啟動,修復之後系統可以正常啟動,但是掛載的5T分區不能正常訪問了,對這個5T的分區進行fsck修復,修復完成之後文件系統正常,但是丟失了部分文件,仔細查看之後缺失的部分文件在lost+found文件夾裏面,文件名稱已經被改變。
二、故障分析
1、備份數據
把MD3200存儲的5T的lun以只讀模式重新映射到一臺windows 2008的備份服務器上,接著使用專業的工具將整個5T卷以扇區的方式鏡像到已準備的備份空間上,以確保客戶的數據安全,之後的分析和恢復操作均在備份的數據上進行。
2、分析故障原因
仔細分析5T卷的底層數據發現,服務器的突然斷電導致故障虛擬機目錄下的目錄項出現破壞,但是這種破壞不會影響重要數據,只是破壞了文件的目錄項而已,可以通過人工修復即可解決。而之後對文件系統進行fsck修復,導致損壞的目錄項修復不成功,直接以目錄節點號命名放到lost+found文件夾下,則目錄項對應的數據區索引會被清掉,也不會影響刪除文件的實際數據。這種情況可根據刪除虛擬磁盤文件中的文件系統以及虛擬磁盤中的文件類型在VMFS卷自由空間中進行碎片匹配和合並,最終也可恢復刪除的虛擬磁盤文件。
三、實施方向
由於ext4文件系統文件丟失之後,文件的節點信息被清除了,所以無法根據文件的節點信息進行還原,只能根據丟失的文件的目錄項節點號和lost+found裏面的文件的名稱進行匹配,由於lost+found裏面的文件是以該文件的目錄項的節點號命名的,所以把目錄項節點號提取出來和lost+found的文件名稱進行匹配就可以還原之前的目錄結構。
四、恢復數據
按照實施方向思路進行底層分析,根據EXT4的文件系統結構信息,在底層的空間中掃描符合的目錄項的區域,並統計其數量和計算目錄項的節點號。再根據磁盤中的文件系統的信息將這些掃描到的目錄項節點號進行整合,把掃描到的目錄項節點號記錄到數據庫裏面,之後在通過lost+found裏面的文件記錄號和數據庫裏面的記錄號進行匹配。
五、恢復總結
由於客戶數據先是被突然斷電導致文件系統出現問題,接著人為fsck修復導致大量文件目錄結構丟失,並且又重新寫入部分數據,導致其存在數據覆蓋的可能性。由於對ext4文件系統底層結構足夠了解,並且有處理過類似故障類型的經驗。所以整個恢復過程中還算比較順利。匹配之後數據正常恢復,並且驗證沒有問題,整個數據恢復成功。
服務器Linux系統下的ext文件系統修復方案