1. 程式人生 > >修復損壞的 ext4 大分割槽資料

修復損壞的 ext4 大分割槽資料

http://exaos.github.io/blog/2013/03/05_fix-bad-ext4.html

新買了一塊 3TB 的硬碟和一個兩座的硬碟底座,很開心。由於我的主系統是 Linux, 所以就格式化成了 ext4 分割槽。在 Windows 系統下可以通過工具 ext2fsd 來訪問。朋友說有很多高清電影等資料可以分享,就把硬碟借給他,結果悲劇了:他說在拷貝檔案到 2TB 左右時,硬碟掛了,識別不了了。沒辦法,我只好自己試著修復一下。如後是資料恢復過程的摘要。

通過 dmesg 得到系統提示, GPT 分割槽表被破壞。使用 GNU Parted 工具恢復一下 GPT 分割槽表,問題解決。

此時使用 gdisk

 工具檢視硬碟分割槽,顯示分割槽為 Microsoft basic data 格式,而我原來的分割槽為 ext4. 用 gdisk 的命令 t 更換分割槽型別為 0x8300, 即 Linux filesystem. 儲存退出,問題解決。

此時無法載入分割槽,出現的錯誤如下:

e2fsck: 超級塊無效, trying backup blocks...
e2fsck: Bad magic number in super-block 當嘗試開啟 /dev/sdh1 時

The 超級塊 could not be read or does not describe a correct ext2
檔案系統.  If the 裝置 is valid and it really contains an ext2
檔案系統 (and not swap or ufs or something else), then the 超級塊
is corrupt, and you might try running e2fsck with an alternate 超級塊:
    e2fsck -b 8193 <裝置>

此時用 dumpe2fs 工具檢視分割槽資訊,得到如下的錯誤資訊:

dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block 當嘗試開啟 /dev/sdh1 時
找不到有效的檔案系統超級塊.

使用 testdisk 檢測硬碟,找到分割槽的 superblock 位置如下:

  • 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616

嘗試使用備份的超級塊載入硬碟分割槽:

-> % sudo mount -t ext4 -r -o sb=819200 /dev/sdh1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdh1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

不管這些,直接嘗試從 819200 超級塊的位置恢復檔案系統:

[email protected]:~# fsck.ext4 -b 819200 -p -v /dev/sdh1 
EADEPOT was not cleanly unmounted, 強制檢查.
EADEPOT: Inode 1598038, i_塊s is 7830912, 應為 7822912.  已處理.
... ...

分割槽資料總算是正常找回了,丟失的內容不多。

小結:

  • 在硬碟出現故障時,沒想清楚前不要著急著動手修復。
  • 分析故障,首先排除硬體故障,其後排查是否分割槽表有誤。本次修復資料經歷中涉及到的分割槽表使用的是 GPT 格式,因此,絕不可按處理 MBR 分割槽格式的方法對待。現在, 2TB 以上的硬碟越來越普遍,老舊的 MBR 分割槽格式逐漸被淘汰,你的工具應該跟上時代。在 Linux 下應該學會使用 gdiskparted等較新的工具。 fdisk 等很實用,但只適用於 MBR 格式的分割槽表。
  • 修復硬碟資料時,首先要將分割槽格式恢復到正確的配置上。比如 EXT3, NTFS, 等。
  • 修復資料時,不要著急著直接修復,不妨先使用引數 -n 之類的先看看具體情況,如果沒什麼問題,再直接修復。與 ext2/3/4 相關的工具都在軟體包e2progs 中,包括 e2fsckdumpe2fs, 等。
  • testdisk 工具很好用,但涉及底層,操作須謹慎。

參考:


相關推薦

no