注:如果服务器特别重要,此方案慎用。如果没有其他方案解决,可以使用该方案
事件:搭建在云计算管理平台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、卸载设备,将存储卷添加至原虚拟机并启动,启动成功