拯救Linux系統(轉)

post0發表於2007-08-09
拯救Linux系統(轉)[@more@]

Linux系統管理員幾乎都有過處理癱瘓系統的經歷。如果是硬體問題,那麼透過更換主機板、電源或者控制器等出問題的部件,就可解決了;但如果是檔案系統崩潰、引導區出現問題或者配置不當導致系統無法啟動,就會出現“資料近在咫尺卻無法訪問”的現象。

  對於這種型別的問題,最簡單的解決辦法就是使用急救盤來啟動系統。急救盤可以是軟盤、光碟或者其它可移動的媒體。這種辦法可以幫助啟動損壞的系統,解決存在的問題並將其迅速恢復。

  Linux急救盤一般分為兩類,每一類都有其優點,也有其缺點。第一類急救盤一般由某一特定的Linux發行商提供,所以其解決的問題只是針對執行該發行版的機器上出現的問題。這種型別的急救盤可能是啟動過程中用軟盤製作的,或者直接在發行版的安裝盤上。不管是那一種情況,這種針對某一發行版的急救盤一般都反應了該發行版所用的啟動管理器、檔案系統和工具的一些情況。

  第二類急救盤是獨立於某一特定的發行版的,一般是在一張軟盤或者一張光碟之上。這種型別的急救盤是一種非常靈活的解決方案,它不依賴於任何一個發行版,使用它可以修復很多版本的Linux系統。不過,如果該工具不支援你使用的系統,那麼你就不得不採用其它的辦法了。

  很顯然,不管是那一種型別的急救盤,我們希望永遠都不要用上它,但是一旦真的碰上問題,就會發現有一張急救盤還是非常必要的。我們先來看一看各種需要使用急救盤的情況,然後關注一下由各Linux發行版的急救機制。在下一次,我們再透過比較來看一些獨立於發行版的、功能強大的急救盤。

  使用急救盤

  和所有其它的作業系統一樣,Linux自己帶有一些工具,它們可以在系統啟動過程中自動地修復一些常見問題。當然,在此所說的問題不包括硬體方面的錯誤,只是指啟動過程本身或者啟動程式自檢出現錯誤導致系統無法啟動的問題。例如,由於硬碟扇區(比如MBR)丟失或者損壞、載入程式需要的程式 (LILO 或者GRUB)丟失、錯誤的載入程式配置、核心丟失或者損壞導致的啟動問題。

  假設核心和載入程式檔案本身沒有問題,問題出現在 root檔案系統,那麼就可能會導致root或者/boot檔案系統不能正確識別、定位或者載入。作為啟動過程的一部分,大多數Linux系統的啟動指令碼會檢測啟動狀態,並且判斷上一次啟動時解除安裝過程是否徹底完成。在一般情況下,在啟動過程中就可以解決檔案系統崩潰的問題,但是如果崩潰影響到系統的啟動指令碼或者fsck工具本身,那麼系統就會出現無法啟動的現象。

  不同型別的急救盤有不同的能力。一些比較簡單的急救方案提供的就只有一個啟動扇區和一個可以讓你載入現有root檔案系統的核心;一些比較複雜的解決方案則會提供一個完整的工具集,它幾乎可以處理任何情況下的硬碟崩潰。

  一般情況的解決辦法

  計算機出現無法啟動的情形有很多種,不過在很多情況下,我們都可以使用相對簡單的辦法來進行恢復。下面是一些可以恢復系統的辦法:

  1.因為root檔案系統已經崩潰,系統甚至無法啟動到可以訪問fsck工具時候。這種情況比較簡單,可以從急救盤啟動,然後使用fsck來修復崩潰的檔案系統。我們可以使用一些標準的fsck常用的一些技巧來進行修復。如果檔案確實丟失了,那麼可以從其它的系統上把檔案複製至系統並且將其進行安裝,另外,如果能夠訪問源盤的話,可以從源盤重新安裝。

  2. 檔案系統配置不當也是一個問題。對於這種情況,可以從急救盤啟動,然後修復檔案系統配置檔案(/etc/fstab)或者使用諸如tune2fs、debugfs等工具來糾正配置不當的地方。

  3. 如果是載入程式有問題,那麼可以從急救盤啟動,然後修改載入程式的配置檔案,並且重新安裝部分或者全部的載入程式。

  4. 如果系統丟失了核心,也可以從急救盤啟動,載入Linux系統的root分割槽,然後重新編譯核心。

  5. 最壞的情況是檔案系統損壞得非常厲害,這時重新安裝整個檔案系統反而更容易一些。在這種情況下,可以從急救盤啟動,然後使用備份工具將有用的文件備份至網路或者其它可移動的儲存裝置上。當然,進行這些操作的前提是你的急救盤支援這些功能。

  很多常見的Linux發行版都會提供急救機制,下面我們就詳細看一看各種Linux發行版的急救機制。

  針對發行版的急救盤

  大部分的Linux發行版都把建立一個急救軟盤作為Linux安裝程式中的一部分。這些急救軟盤主要是在系統出現一些簡單的啟動配置錯誤或者載入程式出現問題時用於恢復系統的。比如:在重新編譯、安裝了一個新核心之後忘了升級載入程式的配置檔案;進行了升級載入程式的配置以後忘了執行LILO (如果使用 LILO作為啟動管理器的話)等等。

  各種發行版提供的這種急救盤具有的最大缺點是它們一般都不提供用於應付比較嚴重問題的工具。比如,Red Hat中使用“mkbootdisk”建立的急救盤只是用於定位系統的root檔案系統的。因此,此種急救盤只能用於與製作啟動盤的機器有相同分割槽的機器。

  當使用Red Hat等的軟盤急救時,如果分割槽和試圖去修復的系統不同,通常在急救盤的LILO提示符可以指定“root=/dev/root分割槽”選項,其中要用欲修復的系統的root分割槽來代替“root分割槽”。不過,因為這種型別的急救盤包含有一個用於製作急救盤系統的核心映像,因此它可能不支援你係統裡的硬體。比如,在一個不支援SCSI的系統裡,我們無法建立一個支援SCSI系統的急救盤,除非急救盤的核心中被編譯進去了對SCSI的支援。然而大部分急救軟盤並不包括可載入的核心模組。當然,這並不奇怪,畢竟軟盤的容量實在是有限。

  基於軟盤的急救盤的設計過於簡單,並且一般都不包含任何工具,因此無法修復損壞嚴重的系統。還是以Red Hat為例,使用“mkbootdisk”指令碼建立的急救盤只包含有一個啟動扇區、核心和與之有關的配置檔案。該急救盤主要是依賴於能夠定位和載入系統的 root檔案系統,然後再由此發現可以徹底修復系統的工具。因此如果你的系統root檔案系統已經崩潰或者有其它的損壞,就不能訪問那些修復系統的工具了。

  今天,大部分的Linux發行版都在其啟動光碟中有一個“應急”模式。它以常用的核心來啟動,然後給使用者提供對fsck和用於建立和修改啟動配置資訊的命令和工具。下面,我們來看一看從光碟啟動的各種Linux發行版的急救能力。

  以應急模式啟動Linux

  在商業領域裡,在選擇Linux發行版時,公司更傾向於整個公司都使用同一個Linux發行版。不過,不管有什麼理由,選擇一個有商家支援的版本還是很有必要的。諸如戴爾這樣的硬體廠商捆綁的Linux發行版一般都是針對他們的硬體進行最佳化和改進過的。所以,除非你使用的是他們捆綁的 Linux,否則他們是不會幫助你的。

  如果在一臺機器上安裝多個版本的作業系統或者在一個企業的桌面上使用多個版本的Linux,那麼就意味著在它出現問題的時候你必需要準備好一堆的Linux光碟。所幸的是,被損壞的Linux是各個不同的發行版,一般也可以用某一個發行版的光碟來修復它們。當然這還取決於你使用的硬體、檔案系統以及各個發行版所支援的引導管理器。

  我們來看一看比較流行的Linux發行版的各種應急模式,以及它們提供的可以幫助修復損壞Linux系統的工具。

  Debian

  從使用jigdo工具(Jigdo 是為了緩解龐大的 CD 和 DVD 光碟映像檔案對 Debian 映象網路造成的衝擊而開發出來的)建立的Debian 2.6 CD啟動時,有兩種急救機制可供選擇。可以從CD啟動,然後進行安裝,以修復現有的系統。此外,也可以使用“root=/dev/root分割槽”選項指定一個現存的root分割槽。在前一種情況中,選擇了所使用的語言以後,就可以進行一些“檢視分割槽表”、“執行一個shell”、“使系統可以啟動”、“製作一個啟動盤”等與修復相關的命令了。選擇執行一個Shell,可以訪問、操作ext2和ext3檔案系統的fsck、fdisk分割槽工具,以及用於 ext2檔案系統的mkfs工具和重建崩潰交換分割槽的mkswap工具。

  Mandrake 8.2

  Mankrake傳統、友好的使用者介面也反應在其提供發行版光碟的應急模式之上。從光碟啟動以後,按F1鍵可以進入一個高階選項列表,在 boot提示符下輸入“rescue”,然後按回車。啟動以後,Mankrake的應急模式會顯示一些選單選項:“Re-install Boot Loader”、“Restore Windows Boot Loader”、“Mount your partitions under /mnt”、 “Go to console”、“Reboot”和“Doc: what's addressed by this Rescue?”。這其中“Go to console”是這些選項中最有用的選項,因為它會給使用者一個root提示符。這樣,透過訪問相應的工具,使用者就可以修復自己的系統了。

Mankrake 8.2的應急模式提供了可用於ext2、ext3、JFS、ReiserFS和XFS檔案系統的fsck工具。對於那些損壞非常嚴重的不幸使用者,它還提供了fdisk和sfdisk分割槽工具以及用於ext2檔案系統的mkfs。如果載入程式損壞了,Mandrake應急模式還可以安裝grub。

  Red Hat 7.3

  Red Hat的應急模式非常強大。從第一張光碟啟動以後,按F4鍵,然後在LILO的boot提示符下鍵入“linux rescue”,這時系統以應急的核心啟動,然後就可選擇使用的語言和鍵盤。這時,應急模式就會嘗試載入現存Red Hat的root目錄,並將其載入至/mnt/sysimage。這時可以按下回車,登入到一個shell中。

  Red Hat的應急模式只包含可用於ext2、ext3和ReiserFS檔案系統的fsck版本。如果分割槽無法用fsck來恢復,那麼Red Hat的應急模式還提供了fdisk和sfdisk分割槽工具以及可以建立ext2、ext3、RAID、ReiserFS、交換分割槽甚至是VFAT檔案系統的命令。此外,它還包含了LILO。如果能夠發現並載入現存的分割槽,它還提供對grub的訪問。

  Slackware 8.1

  作為歷史最為久遠的Linux發行版之一,Slackware並不太關注其圖形介面,而是努力使其可以修復任何被損壞的Linux系統。從第一張光碟啟動以後,可以按下回車來載入標準核心,也可以按下F3來看一些可啟動的核心列表。這些核心分別支援特定的裝置子系統、檔案系統等,其中包括 SCSI、 XFS檔案系統、JFS檔案系統、RAID、USB等。

  一旦選擇了一個核心啟動,Slackware就會提供用於網路、 PCMCIA等檢測和初始化子系統的命令。因為恢復JFS和XFS檔案系統被處理成支援這些檔案系統核心的載入命令,因此,Slackware提供的 fsck只支援ext2和ext3檔案系統。如果問題非常嚴重,Slackware還提供了fdisk和cfdisk分割槽工具,支援ext2、ext3、 JFS、ReiserFS和XFS檔案系統的mkfs工具,此外還包括用於建立RAID裝置和被LVM使用的物理卷的命令。Slackware應急模式不包含LILO或者grub的安裝。

  SuSE 8.0

  眾所周知,SuSE是世界上最大的、更新最頻繁的Linux發行版之一。SuSE安裝盤也有應急模式,並且其提供的工具安全可以滿足你的需要。要讓SuSE 8.0執行於應急模式之下,首先從第一張光碟啟動,使用上下箭頭鍵選擇從初始化選單中選擇“Rescue System”,然後按下回車。這時候應急核心啟動,提示你選擇所用的鍵盤,並且會給出一個root提示。

  SuSE 8.0的應急模式提供了一個可以支援ext2、ext3、JFS、ReiserFS和XFS檔案系統的fsck,以及用於修復ReiserFS和XFS檔案系統、LVM(邏輯卷管理)和RAID支援的工具。對於分割槽損壞非常嚴重的情況,它還提供了fdisk和支援所有檔案型別的mkfs版本。如果需要重寫主硬碟的boot分割槽,SuSE 8.0還提供了LILO。

  好了,至此,現今流行的各Linux發行版的各種應急機制就介紹完了。對於同時在使用很多種發行版的企業來說,希望能夠發現一種放之四海而皆準的解決方案。下一次,將向大家介紹一些獨立於發行版的、可從網上免費下載的急救解決方案

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-938825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章