注:如果服務器特別重要,此方案慎用。如果沒有其他方案解決,可以使用該方案
事件:搭建在雲計算管理平台CAS上的 Centos7.4 虛擬機在一次斷電后,啟動虛擬機出現file '/grub/i386-pc/normal.mod' not found , 使用網上各路大神的辦法都沒有解決后, 將整個存儲卷添加到相同系統的虛擬機上並掛載/boot所在分區,最后將本機/boot下的文件拷貝至所掛載目錄,再將存儲卷重新掛回原來虛擬機,啟動虛擬機成功
如圖:
定位問題:
開機報錯如下
通過ls查看目錄,並一個一個試過以后,發現我的/boot分區是在(hd0,msdos1)下,可以嘗試使用 ls (hd0,msdos1)/ 查看有無目錄,也可以通過ls (hd0,msdos1) 查看是否會顯示文件系統
如圖:
下面的msdos1是我們要找的分區,但是在此分區下只有一個文件,說明/boot下其他文件全部丟失
解決問題:
找到問題的根因后,嘗試解決它,首先我們將該虛擬機的存儲卷刪除,然后添加到其他相同系統的虛擬機后,查看並掛載,因為我們知道自己分區的時候都划分了哪些分區,所以問題變的比較比較容易了,我是將/boot目錄划分為/vda1分區了,但是掛載以后是以vdb掛載的,所以/boot應該是/dev/vdb1,將該設備掛載至創建好的目錄后,拷貝本機/boot下的文件,卸載設備,將存儲卷重新添加至原虛擬機啟動,啟動成功。
如圖:
1、先將存儲卷刪除,然后添加至相同系統,相同分區的其他系統(不是CAS平台的原理也是類似的)
2、進入linux系統,確認分區后,開始掛載並拷貝文件
因為是克隆的環境,所以在掛載vdb1時,有報錯顯示uuid已經存在,所以我們用參數過濾掉UUID的校驗或者重新生成UUID,二選一即可
或者
掛載成功后,拷貝文件
3、卸載設備,將存儲卷添加至原虛擬機並啟動,啟動成功