Linux, 工作, 生活, 家人

Gentoo, Linux, UNIX

How To Rescue Reiserfs with bad sector .

前兩天,本人奶油桂花手,搞爛了我 Notebook 的 Linux Root Partition …….
我的 Linux Root Partition 在 /dev/hda3
而爛掉的原因是在 SuperBlock 上有幾個 Bad Sectors … 大概就 128K 左右的大小.

因為我的硬碟是 IBM 的,我去找 DFT 去修….
結果 DFT 碰到有問題的 Sectors 也是過不去.
卡死在那邊……

今天晚上,找來了 PCMCIA 的 USB 2.0 轉卡和 USB2IDE 接一顆外接的 40G HDD 到 notebook 上.
用 Gentoo 2005.0 開機(註 2004.03 有一些問題, USB Driver 怪怪的)

首先先將有問題的 Partition Dump 出來到 40G 的硬碟上
由於 dd 沒有辦法 dump 有問題的資料,我找到 dd_rescue
這隻程式可以 copy 有問題的資料 (要不然怎麼叫 dd_rescue)
#dd_rescue /dev/hda3 dumpdata.img
用這一隻程式 dump 出來以後,就可以直接針對該檔案做 Rescue
#reiserfsck –rebuild-sb dumpdata.img
完整的檢查 reiserfs …..
#reiserfsck dumpdata.img

因為我的 Bad Sectors 只佔了 128K
所以我的想法是,只要在分割硬碟的時候,跳過那個地方,應該就沒有問題了.

所以用 fdisk 刪除 /dev/hda 的 Primary #3 和 Primary #4 .
重建 Primary #3 , Cylinder 往後移一點(我是移到整數). 大小不變.
而我的 Primary #4 是 linux swap . 所以就小一點,犧牲一下囉.

修改完 /dev/hda 後,就儲存進 hda.

接下來是 Restore 回去
#dd_rescue dumpdata.img /dev/hda3
其實可以改用 dd 的,不過 dd_resue 有進度,有速度,感覺比較爽…..

Restore 回去後
就mount 上去, chroot 進去, 再跑一次 lilo 就 OK 了…..

跑到現在是沒有什麼問題啦…..

*後記:
其實很多 Try and Error 的過程沒有說
例如: 本來要用 samba mount .結果 cdrom 上沒有 mount.smbfs
而且我系統上的 mount.smbfs depend on libldap.so.2 後面又 reference 一堆 library
我就懶得弄
接下來是將 IDE2USB 裝到 USB 1.1 …Dump 的速度才 800K/s , 換 USB 2.0 大概有 5500K/s – 6500K/s
不過如果你的 reiserfs 掛了,不巧是掛在 SuperBlock , 可以用這個方法救救看..

*後記2:
大家都知道我是晚輩,刻苦刻難,所以這顆有壞軌的我會一直用呀………
如果長輩們要捐 Notebook 給我的,請匯款給我….. XD

發佈留言