:::

用光碟救援模式進入壞掉的CentOS系統

2012-04-23_154456 dspace 虛擬機器無法開啟

我這邊使用VirtualBox架設CentOS的時候,時常遇到開機程序無法順利進行的問題。雖然可以進入單機維護模式,但卻不能透過網路將檔案拿出來。後來發現可以用CentOS光碟的Linux救援模式來開機,並順利進入原本應該是壞掉的系統中,而且居然還可以順利開啟網頁服務來使用,就像是在原本的系統一樣。

當然,這並不是完整的解決方案,而只是我還在研究如何修復中的一個發現的筆記而已。


問題敘述

上述的問題都是在開機過程中進入到「Checking filesystems」的步驟時出現「e2fsck: aborted [FAILED]」 的錯誤訊息,然後出現以下訊息:

*** 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): _

雖然可以輸入root密碼進入維護模式,但是因為不能用網路,所以還要找其他的方法來取出檔案,對我來說是比較麻煩的。

於是我嘗試使用CentOS 5 Final的光碟來修復看看。

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

2012-04-23_154621 光碟畫面

從CentOS 5 Final光碟中看到的畫面如上。如果要進入救援模式(rescue mode),我們可以先按 <F5>看一下說明。

2012-04-23_154647 救援模式說明

簡單來說,輸入「linux rescue」並按下 <ENTER>就可以進入救援模式。

 2012-04-23_154722 linux rescue

救援模式設定

進入救援模式之後,會有幾項設定需要確認:

2012-04-23_154812 語言

操作語言。用英文最穩啦,沒有亂碼問題。

2012-04-23_154835 鍵盤

鍵盤配置。台灣通常都是用美規的「us」。

 2012-04-23_154904 網路

是否要啟動網路,選擇「Yes」。

2012-04-23_154925 網路設定

網路的相關配置。按<TAB>切換操作項目,移到「OK」進入下一步。

2012-04-23_154949 讀取模式

掛載原本系統

是否掛載原本的檔案系統到「/mnt/sysimage」。選擇「Continue」吧。

2012-04-23_155045 chroot

掛載完成之後,你就可以用「chroot /mnt/sysimage」指令進入原本的root環境。

進入原本系統

2012-04-23_155125 cmd

接著進入到了指令列,輸入「chroot /mnt/sysimage」 吧。

2012-04-23_155152 輸入之後

雖然系統沒有回應,但現在你已經是以root身分進入原本的系統中,而各種服務都可以正常使用。

啟動DSpace服務

以我在實驗室常用的DSpace來說,你可以透過以下指令來啟動DSpace:

sh-3.1# export JAVA_HOME=/usr/java/jdk1.6.0_06
sh-3.1# /opt/apache-tomcat-6.0.16/bin/startup.sh
sh-3.1# /etc/init.d/postgresql start

同理,要啟動SSH也可以輸入以下指令:

sh-3.1# service sshd start

就跟在原本系統一樣操作。


小結:救援模式只是應急的技巧

儘管用這種方式可以啟動網頁服務,至少大致上看起來是沒問題,不過畢竟不是長久之道。

我本來想試著用upgrade升級原本系統,可是失敗了。現在試著在救援模式中用fsck –y /dec/VolGroup00/LogVol00來修復看看,目前仍在跑,但我覺得成功機率應該不大。

最後的方法就是先在救援模式中取出必要的檔案,然後再架一台同樣環境但可以正常運作的機器,把檔案復原回去吧。