:::

光碟救援模式(rescue mode)用fsck修復無法啟動的CentOS

2012-04-23_154621 光碟畫面

繼今天(實際上是昨天)下午寫的用救援模式暫時進入原本系統的研究,之後在救援模式用fsck花了許多時間修復檔案系統之後,居然順利讓我修復完成並且正常啟動了!

以下就記錄修復的過程。


問題敘述

這個作業系統是CentOS 5 final,提供DSpace服務。

前一篇一樣,我要處理的問題都是開機過程「Checking filesystems」時出現「e2fsck: aborted [FAILED]」 錯誤,然後Linux指示以下訊息:

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue): _

也許可以在維護模式(maintenance)中進行修復,但我摸了一陣子搞不太定。倒是利用CentOS 5 Final的救援模式,用fsck順利修復了系統本身。

從光碟進入救援模式 (rescue mode)

2012-04-23_234849 linux rescue

用光碟開機之後,輸入「linux rescue」就可以進入救援模式。上圖是按下<F5>之後對救援模式的說明。

接著要設定語系、鍵盤與網路。

2012-04-23_235030 continue

最後要決定是否掛載原本的系統。因為我們是要修復原本壞掉的系統,所以這邊要選擇「Continue」。

2012-04-23_235123 chroot hint

掛載完成,原本的系統被掛載到「/mnt/sysimage/」。

2012-04-23_235214 cmd   

接著會進入指令列模式,可以輸入指令進行操作。

請輸入以下指令,將原本的檔案系統視為根目錄:

sh-3.1# chroot /mnt/sysimage/

試著查詢一下現在的目錄看看吧:

sh-3.1# ls
bin dev halt lost+found mnt pgdb sbin sys var
boot dspace home media net proc selinux tmp
core.15890 etc lib misc opt root srv usr

其他的細節請看前一篇的「從光碟進入救援模式(rescue)」。

利用fsck修復檔案系統

在使用fsck修復之前,必須要先卸載要修復的檔案系統,否則會造成檔案系統毀損。

透過「mount」指令,可以知道要修復的檔案系統「/dev/VolGroup00/LogVol00」掛載在「/」根目錄。現在我們使用「umount」卸載檔案系統:

sh-3.1# umount /

接著就能用「fsck」來修復檔案系統囉,指令如下:

sh-3.1# fsck -y /dev/VolGroup00/LogVol00

記得要加上「-y」選項喔,不然會確認按到累死。

image

看到以下訊息,就知道fsck開始修復動作了:

fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/LogVol00 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes

修復的過程非常久。我的硬碟有2T大小,修復大概也要快兩個小時有吧。總之請耐心等待。

2012-04-24_052701 finish

修復完成之後會看到上圖的訊息。

image

重開機看看,這次就能夠正常運作囉!


小結:能在維護模式下用fsck修復嗎?

雖然透過光碟的救援模式(rescue mode)使用fsck的確能修復檔案系統,但畢竟這還是要片光碟,比較麻煩。不知道能不能在維護模式(maintenance)中就直接使用fsck修復呢?

2012-04-24_004010 maintenance

當然,直接用上述的作法來做,只會收到以下錯誤訊息:

Error allocating icount link information: Memory allocation failed
e2fsck: aborted

到這邊我就不知道該怎麼做才好了。因為時間的限制,我也沒有繼續找下去。未來有機會再繼續研究吧。