首頁 > 軟體

虛擬機器RedHat Linux的緊急救援

2020-06-16 17:21:48

由於虛擬機器無法啟動,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


IT145.com E-mail:sddin#qq.com