修復己刪除的磁區

因為主機有2顆硬碟,為了要裝新的 Linux 作業系統,在分割磁區的時侯,手一滑,刪除了備份碟的磁區,因為有點擔心,所以沒有繼續安裝新的作業系統,也沒有做寫入的動作,用 LiveCD 把機器開起來,然後……
然後硬碟就快署了 @@"

工作環境︰
    原作業系統 Ubuntu Desktop 14.04
    2 個硬碟,一個系統(sda)、一個資料(sdb)
    資料碟分割時刪除磁區,但未做寫入動作

症狀︰
    雖然分割硬碟最後一步寫入的動作沒有作,但是硬碟掛載(mount)的時侯還是得到 Superblock Corrupted 的訊息,開檔案總管看,原始資料有佔了硬碟空間(看得到使用量),但是看不到檔案,初步判定資料還在,索引沒了,想起以前上課的時侯,老師有說,Superblock 有問題,可以從硬碟其它地方救回來,只是忘了用什麼救了,Google 了一下,用 fsck 或是 e2fsck 應該有救,選了 fsck。

在開始之前,
一定要卸載(umount)要修復的磁碟
一定要卸載(umount)要修復的磁碟
一定要卸載(umount)要修復的磁碟

實作(howto)︰
dumpe2fs /dev/sdb1 | grep superblock

會得到像這樣的訊息
  Primary superblock at 0, Group descriptors at 1-6
  Backup superblock at 32768, Group descriptors at 32769-32774
  Backup superblock at 98304, Group descriptors at 98305-98310
  Backup superblock at 163840, Group descriptors at 163841-163846


fsck -b 32768 /dev/sdb1

會得到像這樣的訊息
fsck 1.40.2
e2fsck 1.40.2
/dev/sdb1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #241 (32254, counted=32253).
Fix? yes   (從這裏一直按住了 Enter 直到完成這個步驟)


試著把硬碟掛載上來
mount /dev/sdb1 /mnt

ls /mnt
如果出現原本的檔案,就是 OK 了
其實我修完是直接重開,硬碟可以掛載,有看到原本的檔案,也可以動。


收工!


------------------------------------- 沒測 -------------------------------------
另外有找到這個 e2fsck,好像也行
e2fsck
-a: 如果發現問題自動修復
-b: 指定 superblock 位置
-B size: 指定區塊 size 大小
-c: 檢查是否有壞軌
-C file: 將檢查結果儲存到 file。
-d: 輸出 e2fsck 除錯(debug)結果。
-f: 強制檢查(e2fsck 預設檢查錯誤的檔案系統)
-F: 在檢查前將硬碟的 buffer cache 清空,避免發生錯誤
-l list: 壞軌區塊記錄放到 list 中
-d : 列印 e2fsck 的除錯结果。
-f : 强制檢查。
-n: 以唯讀放式(read-only)開啟檔案系統
-p: 關閉互動模式,如有問題自動修復,等同 -a
-v: 顯示詳細報告
-y: 啟用使用者互動模式

例︰
e2fsck -a -y /dev/sdb1

留言

這個網誌中的熱門文章

使用 Excel 計算2個地點之間的直線距離

LINE 儲存的檔案傳到 email 不方便 很不方便 非常不方便 但是有解的筆記

Excel 巨集合併多個 Excel 檔案