2021-05-12 14:32:11
虛擬機器RedHat Linux的緊急救援
由於虛擬機器無法啟動,vmware vcenter已經無法監控到虛機vmware tools的心跳。登陸VC通過虛擬機器控制台檢視發現虛機RedHat Linux卡在如下介面:
從截圖來看:
顯示chmod、chgrp、chown和awk沒有找到(有可能誤刪),由於系統啟動時候需要執行rc.sysinit指令碼,該指令碼會執行些許可權控制命令,因此必須要用到這些檔案,由於檔案無法找到,導致系統初始化失敗。
經過溝通,了解到客戶安裝了apache和mysql,並且修改了/etc/profile檔案設定了應用的環境變數,導致出現如上問題。
解決問題:
給這台虛機載入redhat linux的iso,設定虛擬機器bios,CD光碟機為第一啟動順序,重新啟動虛擬機器,選擇救援模式進行緊急救援。
由於是丟失檔案,因此這裡需要開啟網路功能,方便從其他主機拷貝相關檔案。
在這裡輸入原先該虛機的IP和閘道器
mount系統到sysimage下
點選OK後,進入修復模式的shell下
然後chroot /mnt/sysimage
進入/bin後,確實沒有發現chmod、chown和awk等這幾個命令,我們可以考慮從一台好的redhat linux系統中拷貝這幾個檔案過來,在命令列下執行
#scp -r root@11.11.165.177:/usr/bin/* /bin/
結果卻提示命令沒找到,應該是沒有用戶端軟體,導致SCP命令沒有被識別。那麼設定本地yum源,並安裝openssh用戶端,
#yum install openssh-clients
再次執行#scp -r root@11.11.165.177:/usr/bin/* /bin/後提示輸入密碼,輸入後開始執行拷貝命令。
拷貝完成後重新啟動系統,順利初始化並成功進入系統。
•總結
Rescue修復要注意系統初始檔案和系統命令檔案的關係,恢復系統完整性。
補充另一個測試範例:
修改linux系統的檔案grub.conf、fstab 我這裡就不刪除了,只是更改名稱讓系統找不到就可以了
載入程式(MBR的512位元組中前446位元組為載入程式,緊跟著後面64位元組為分割區表,最後面2個位元組為結束標記)
使用以下命令把bootloader( 啟 動載入程式MBR中的446字 )覆蓋掉
dd if=/dev/zero of=/dev/sda bs=446 count=1
然後進入救援模式
使用fsdisk -l 檢視一下分割區
在當前的目錄建立一個目錄,用來掛載根
mkdir a
mount /dev/sda2 /a 掛載根目錄到a下
mount /dev/sda1 /a/boot 掛載boot目錄,因為它為單獨分割區
掛載成功之後就可以看到所有的系統檔案,可以進行修復和修改檔案了
恢復被我們修改的檔案
接下來是安裝MBR中的446位元組的載入程式
裝grub就是裝/boot/grub/stage1,救援模式下輸入 #grub 就可以進入grub的命令模式下
1、root(hd0,0) 這裡是指的第一塊一盤的一個分割區,就是要指定/boot所在的分割區
2、setup(hd0) 這裡是安裝grub的意思,當出現successed就是安裝成功了
3、quit退到shell模式
4、exit重新啟動
重新啟動後就自動進入了 grub> 的模式,在這裡手動引導系統先看一下手動引導系統
root(hd0,0) 指定一下核心檔案的位置,還是/boot目錄所在的分割區
kernel/vmlinuz-2...ro root=/dev/sda2 具體的核心檔案並以唯讀的形式掛載上
initrd/initrd....... 具體的記憶體啟動映象
boot 載入系統
如下圖:
以上操作完成之後,進入系統,這時候系統的 grub.conf 尚未恢復,需要進入目錄恢復此系統檔案才算是系統修復完成了。
注意:根分割區和/boot最好是獨立分割區,而把之外的做成是LVM捲,那麼在救援模式下會比較方便。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-02/140403.htm
相關文章