RHEL6之圖解RHEL6.0排錯

 




Rhel6.0 troubshtoting  詳談
模擬環境:

一臺安裝完好的rhel 6.0 機器,系統可正常啓動且可正常使用

一.查看下系統環境

[root@xiaomo ~]# uname -r                   #RHEL6默認安裝內核
2.6.32-71.el6.i686
[root@xiaomo ~]# ifconfig                
eth0      Link encap:Ethernet  HWaddr 00:0C:29:80:49:5D  
          inet addr:192.168.1.8  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe80:495d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:68989 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4616919 (4.4 MiB)  TX bytes:18653 (18.2 KiB)
          Interrupt:18 Base address:0x1080

下面我們將對該系統做破壞,troubshooting即將開始!
1.破壞grub引導分區
2.破壞/boot啓動目錄
3.破壞/etc/fstab文件
4.破壞/etc/inittab文件
5.破壞/etc/rc.d/rc.syslnit文件

二.簡述Troubleshooting
    不難看出這些目錄和文件都是系統啓動必須目錄和文件,如果這些文件丟失,那麼將無法正常啓動系統、掛載分區、加載內核,下面我們來破壞一下系統,在破壞之前,想說明的是,我們爲什麼要破壞系統?這問題一定要了解,不然接下來的一切都是毫無意義的,前文說過這些文件是系統內置關鍵的引導和加載的文件,甚至還有系統的內核文件,之所以破壞這些文件目的就是爲了掌握恢復它的能力,linux服務器在運行狀態下,服務是linux的核心,但內核文件和系統啓動文件同樣重要,當某天你的系統內核崩潰啓動不了,那就更不要談服務器上所運行的服務,當然,一臺穩定的服務器在上線前都是需要經過至少兩週的環境測試和運行狀態的記錄巡檢,目的就是爲了讓Down機概率降至最低,讓企業爲之付出的損失降至最低!業界的朋友都該知道,並不是每個公司都有條件做熱備的,也不是每個公司都能用得了專業的NAS存儲設備的,練就排錯的能力是爲了能在企業中更快的恢復好系統,讓線上的服務器儘快的穩定運行!需要說明的是:在rhel5考試中從2009年5月份改版後,troubleshooting就不再納入rhce的考試內容,但掌握Troubleshooting對個人和企業而言是非常實用的!閒話至此,希望對各位理解Troubleshooting能有所幫助,具體看演示操作!

三.解析破壞文件

[root@xiaomo ~]# ls /boot/                #引導文件(包括Grub,和kernel文件)
config-2.6.32-71.el6.i686         lost+found
efi                               symvers-2.6.32-71.el6.i686.gz
grub                              System.map-2.6.32-71.el6.i686
initramfs-2.6.32-71.el6.i686.img  vmlinuz-2.6.32-71.el6.i686
[root@xiaomo ~]# cat /etc/fstab  
       #系統分區信息文件,每行對應不同的文件系統
#
# /etc/fstab
# Created by anaconda on Mon Dec 13 20:56:55 2010
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=8198fbbe-c92b-4664-a14c-9f93eacff62b /                       ext4    defaults        1 1

#在rhel5裏是指定LABEL來認系統掛載目錄,rhel6中改用指定UUID(硬盤的ID號),可防止內核升級後硬盤掛載出錯 (下同)
UUID=854051dd-0957-45e6-90eb-d6744700f0ca /boot                   ext4    defaults        1 2
UUID=0715b26e-eaa6-4127-a2b4-8d9a95c332d7 /tmp                    ext4    defaults        1 2
UUID=e89f2531-28bd-4e55-a2b4-48ddef30b0ba /usr                    ext4    defaults        1 2
UUID=b134a11d-90e9-4d6b-b7bd-81ac13835772 /var                    ext4    defaults        1 2
UUID=244e7420-4da2-478b-b9ba-04f056cc21da swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0                                                                        
[root@xiaomo ~]# vim /etc/inittab                
#開機啓動文件
[root@xiaomo ~]#cat /etc/rc.d/rc.sysinit     #系統啓動文件,多用於測試掛載,具體看該文件內具體介紹請看該貼:http://blog.csdn.net/jiangcl2075 ... /01/15/5192215.aspx
四、破壞文件

[root@xiaomo ~]# rm -rf /boot/*                        
[root@xiaomo ~]#mv /etc/fstab /etc/fstab.backup                                 
[root@xiaomo ~]# rm -rf /etc/inittab 
[root@xiaomo ~]# rm -rf /etc/rc.d/*

#這裏簡單闡述/etc/fstab 這個文件,是系統安裝時生成的文件,記錄系統的磁盤和分區掛載信息,這裏需要記住其文件格式纔可以恢復,其他的文件包括內核都可以使用安裝軟件包來實現修復,所以這裏該文件在安裝好系統後最好做個備份,在破壞時也最好不要rm直接刪除,可以通過修改其文件格式和文件名讓該文件失效;

五、重啓系統

1-1.jpg

#重啓系統後看到以上信息,說明你的grub已經被破壞,這時你可以嘗試去修復Grub,會發現kernel 根本無法加載。下面開始我們漫長的修復過程。
六、修復系統
1.        掛載光盤,這裏指需要掛載rhel6.0的光盤,可以通過光驅、U盤、ftp等多種方式實現,這裏就不多過說明,在這裏我是用光驅掛載
2.        光盤放好後,調開啓啓動項至CDROM/DVDROM爲首選啓動項
3.        啓動後默認會發現到了安裝系統的初始化界面

2-2.jpg
#這裏我們選擇 Rescue installed system  RHEL6裏有所改動,rhel5是需要輸入linux rescue的

4.        默認進入安裝系統的狀態,不過不同於安裝系統狀態的是多了個選項,這裏根據你使用的掛盤方式來定,一般nfs 和 DVD常用,這裏我選擇Local CD/DVD。 

3-3.jpg 
4-1.jpg 
#如果你是通過網絡ftp傳輸掛載安裝文件的,那麼這裏必須要啓動網卡,本地實用upan或光驅一類的外接設備則無需開啓,這裏我是無需開啓的,我選擇“NO”。

本帖隱藏的內容需要回復纔可以瀏覽

5-1.jpg

#上面爲提示信息,提示你未掛載sysp_w_picpath ,先不管,直接Continue 


6-1.jpg 
#這裏直接ok,具體信息見提示信息,這裏麼提示你 chroot /mnt/sysp_w_picpath 那麼就說明你不可以直接執行chroot /mnt/sysp_w_picpath 掛載/ 目錄,那麼爲啥出現這個提示,是因爲我們的fstab 這個文件損壞,需要恢復該文件後,纔可以直接掛載/ 。
7-1.jpg 
#這裏選擇 shell Start shell 

5.        注意,此時還沒有進入系統真實的/ 目錄

9-1.jpg
#從fdisk 信息不難看出,已經加密的 “*” ,肯定是我的引導分區,而我的真實/ 安裝在/dev/sda2上的。

10-1.jpg
#現在chroot 還不可以,因爲fstab文件丟失,系統不知道/ 掛載在什麼地方

11-1.jpg
#這裏,在chroot之前 bash-4.1# 目錄下的/ 是內存中的 / ,也叫僞根;chroot後 sh-4.1#目錄下的/ 纔是系統真實的/ ,也叫真根 ,對於如何辨別自己的系統哪個目錄纔是/ 分區可以通過 e2label /dev/sda* 來查詢,或者自己多嘗試掛載,這裏用mout是手動掛載自己的/ 目錄

12-1.jpg
#進入系統真實 / 目錄後,首先要做的就是恢復 /etc/fstab 這個文件,是系統分區掛載信息的核心文件,這裏我做了備份,當然,我未對該文件進行修改,感興趣的朋友可以研究該文件內容,然後詳細瞭解各項作用,刪除後重新寫都是可以的,修復好改文件後,再接着troubshooting!

13-1.jpg 
#修改好後退出重啓,再次進入rescue模式,因爲其他文件還沒有恢復,進rescue模式就不再談了

14-1.jpg 
#再次進入rescue模式後,在進shell 之前,提示變了,提示我可以直接 chroot 掛載目錄,默認OK,下一步進入shell 

15-1.jpg

#這裏直接 chroot /mnt/sysp_w_picpath  就可以掛載/ 目錄了

16-1.jpg 
# / 掛載好後,ls查看 /boot 目錄,無任何文件,那麼,現在需要掛載光盤,來恢復這個文件;這裏需要注意的是 在rescue 模式下 /dev/scd0 爲光盤所在分區媒介,掛載目錄至 /mnt/source (這裏這個目錄可自定義); 區別於rhel5 的rescue 光盤存放分區 ;進入光盤的Package目錄

17-1.jpg
# 安裝內核的rpm包,安裝好後再查看 /boot/ 分區信息,這裏完全可以再光盤目錄下安裝,無需copy出來,包括RHEL5也是支持的;但這裏我們未發現 grub目錄,這需要再安裝
Grub引導目錄
18-1.jpg
#安裝grub ,再次查看 /boot/ 目錄已經有該目錄了,這裏注意,在rescue一切文件都是白色的
19-1.jpg
#進入grub目錄,發現麼grub.conf 引導文件,那麼我們手工創建該文件,直接vim編輯後保存即可
20-1.jpg

#grub.conf 文件內容,這幾行是grub.conf 引導文件必須的,其中 root=/dev/sda2是我本機的真實 / 目錄,這裏可以先不要填寫硬盤的UUID號,如果非要填寫可以查看系統/etc/fstab文件,複製主硬盤的UUID號即可,在rhel5裏可以通過制定LABEL來指定,對於相關引導文件的記憶可參考 /boot 目錄下文件,只要記住命令格式即可,對該文件不做過多解釋

到這裏,Groub引導已經修復好了,下面開始我們的文件修復 
21-1.jpg 
# 這裏 rpm –qf 查詢 系統文件對應的安裝包,rpm –ql 查詢安裝包對應生成哪些系統文件,查詢後會發現initscripts-xxxx.rpm 生成很多系統關鍵文件,所以這裏不能直接安裝該包,需要對該包copy 出來,解壓後,然後copy 需要的系統文件即可!
22-1.jpg
# 這裏copy initscipts-9.03.17-1.el6.i686.rpm 至 /tmp 目錄下,用rpm2cipo 指令通過管道cpio –imd解壓該rpm包,解壓後,會發現,這個文件內容都是/ 目錄下關鍵的目錄文件

23-1.jpg 
#修復 被刪除的 inittbab文件,修復 /etc/rc.d/ 文件

至此,所有的破壞修復已經完成,在修復後,還可以根據要求修改文件相關參數,當然也有必要對你修復好的每個文件進行檢查,查看文件參數是否正確等;

24-1.jpg 
#exit 退出系統真實/ ,第二個exit 退出虛擬 / 也稱 僞 / ,reboot,reboot後就不要再從光盤引導,直接硬盤引導,看測試效果。
25-1.JPG

26-1.JPG

27-1.JPG

28-1.JPG 


#第一次修復好系統後默認selinux會對系統進行相關參數的檢測,所以修復後第一次啓動系統是相當慢的,默認檢測完後系統會重新啓動,直至到用戶登錄界面,輸入用戶名密碼登陸即可。

七、小結

Ok,RHEL6系統的troubleshooting 已經全部完成,總結下該排錯的遺漏點,就是沒有對相關文件進行修改,所有的狀態都是在已知狀況下修復的,主要是爲了能讓各位理解相關文件的作用,方便演示,僅此而已,此外,沒有對系統賬戶、bash、mount等進行刪除修復,其實原理都是一樣,只要找到其對應安裝包,即可搞定一切問題!所以如果想更好的學習好troubleshooting這個能力還得多研究各個文件內部參數和關聯包,這樣纔可以適應企業環境應用,練就更強的排錯能力!

下面總結下rhel6和rhel5 troubleshooting的不同點:
1.進入rescue的模式不同   rhel5中 是引導盤後在boot: 處輸入 linux rescue 進入急救模式
2.rescue 模式下 使用的急救光驅 rhel5下默認的是 /dev/hdc 
3.rhel5.3之前,不可以在真實 /下安裝kernel只能在僞/ 下安裝,但需要指定真實 / 路徑: rpm –ivh –root=/mnt/sysp_w_picpath /mnt/source/Server/kernel-2.6xx.rpm –force  rhel5.3以後,可以直接chroot /mnt/sysp_w_picpath 後在真實 / 下安裝內核。
4./etc/fstab 文件不同,rhel5可指定LABEL來制定掛載目錄,rhel6則需要制定硬盤的ID,不過,不管RHEL5或6都可以直接指定掛載硬盤分區的。
也就簡單總結了這麼幾點,僅供參考!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章