學校機房採用一臺IBM小型機做爲OJ服務器,如今浙江大學的馬宏菩學長給它裝了CentOS 6.4,作了精密的配置,目標是它能正常工做十年以上。事實也證實他的工做何其卓越:從配置好到如今一年多時間歷來沒有遇到過任何系統問題,性能一直穩定得像放射性同位素的半衰期同樣,做爲一臺OJ簡直棒極了。他畢業後由我負責維護。shell
而我其實也即將畢業,天然須要將來的學生學習維護。然而新的信息組學生並無在初中用過Linux操做系統的,就算高中開始用,也都只是玩玩Ubuntu的圖形界面,至少沒有一個會用Vim/Emacs的,就知道水平如何了。數據庫
前幾天,他們將一組數據送上OJ,由於cp命令參數弄反,而後sudo rm * -r,不知道怎麼回事就把/lib給刪掉了……不久rm就崩潰了,中止運行。而後系統就廢掉了,開機不久Kernel就由於動態庫調用失敗panic。
服務器
向馬宏菩學長請教後我準備了兩套方案:
1.用CentOS 6.4 LiveCD進入系統,把LiveCD的/lib複製給系統,先讓系統基本的功能可以運行,而後再安裝失去的功能
2.重裝工具
顯然我是不想重裝的,一是這臺機器數據不少,二是這樣一臺機器至關難裝機,儘管馬宏菩學長已經作到了RAID5磁盤陣列區塊對齊(請點擊這裏看他如何實現對齊的文章),解決了最難的問題,但重裝仍是讓人以爲可怕的。並且還要考慮恢復MySQL數據庫什麼的。因此我仍是但願方案1可用。性能
所以我刻錄了CentOS6.4的LiveDVD和安裝DVD,而後開進去。開進去幹的第一件事就是備份數據。最初我讓學弟們給我格式化一塊空置的本來是NTFS的1TB移動硬盤爲ext4,結果他格式化成了exFAT……而我只是開啓了複製就去上晚自習了,下課回來一看才發現不妙,仍是本身去格式化,而後扔在那裏備份了一個晚上,到次日中午下課,過去看已經備份完了。學習
我最擔憂的是他們不只僅刪了/lib,結果仔細一看,除了lib找不到,其餘都在,還把用於存放數據的目錄移動到了根底下。進去一看,竟然有個目錄叫lib,大喜,趕忙將其複製出來,重啓,而後依然Kernel panic,依然是動態庫調用錯誤。操作系統
這下比較鬱悶了。仔細看了看複製出來的/lib目錄,發現裏面有一些失效的連接,都是庫的特定版本命名。看來他們可能確實刪掉了一些庫。日誌
這時強大的Shell工具就派上用場了。先用ls生成系統的/lib目錄內容以及LiveDVD的/lib目錄內容,而後用diff比對一下,就知道/lib缺乏了哪些文件了。將它們逐個複製過去,大功告成,成功開機。blog
然而問題又來了:雖然Kernel不會panic了,但恢復得並不完整。因爲這臺服務器常常有小白來管理,所以它裝了圖形界面,gdm+gnome2。剛開始進入系統時,gdm正常,但一log out出來,gdm就沒法加載用戶列表了。CentOS的診斷系統報告只是缺乏gvfs,不太可能形成這樣的問題。get
再問馬宏菩學長,他提示我考慮看看日誌。翻開日誌,裏面全是pluseaudio的報錯……好吧你做爲一臺服務器有圖形界面已經夠bug了,竟然還有pluseaudio……無視它,翻了越200行,終於看到一行特別的:dbus加載錯誤。問題找到,重裝dbus,一切恢復正常。
本來計劃此次維修用時在3天~5天,但僅僅用了一箇中午就結束了。
這是我第一次遇到一臺弄到沒法開機的Linux,給了我許多啓示。 1.會盡量避免重裝,是一個系統管理員和街邊修電腦的人遇到故障時最大的差異。重裝是以破壞用戶數據和使用習慣爲代價的,能避免必定要避免。而避免的方法就是認真分析發生的故障或問題。 2.遇到問題請看日誌,日誌能給你最重要的提示。 3.系統交給小白以前必定要對他們進行認真的培訓。