问题现象
生产环境上,用户的虚机,在启动的时候,一直卡在进度条,按f2的时候,报文件缺失的现象,
init: Failed to spawn rcS post-stop process: unable to execute: No such file or directory
故障原因
通过网络相关的帖子,可能是/bin/sh文件缺失,导致系统启动卡条,通过在计算节点,执行yum install libguestfs-tools命令,来安装guestfish套件,执行virt-ls –a disk /bin/命令来确认/bin目录下,确实没有sh,bash两个文件,其中sh是bash的软连接
问题处理方法
1、通过nova show 虚机uuid查看虚机位于哪个计算节点
2、登录到该计算节点,通过virsh list命令查看虚机的状态,如果虚机处于运行状态,那么执行virsh destroy instance-xxx命令,对虚机进行关机
3、执行virsh domrename instance-xxx cw_test对虚机进行更名,更名操作是因为在对虚机执行修复过程中,执行virsh start命令对虚机开机,会被nova这一层强制的关机,更名以后,虚机不被nova控制,可以自由的操作
4、把虚机镜像对应的iso镜像拷贝到计算节点,用于救援模式使用
5、执行virsh edit cw_test命令,修改虚机的xml文件,主要修改如下两点:
启动方式改为cdrom方式
把虚机xml文件中,原有的cdrom内容去掉,换成iso镜像的内容
<disk type='file' device='cdrom'> <driver name='qemu' type='raw' cache='none'/> <source file='/root/CentOS-7-X86_64-DVD-1611.iso'/> <target dev='hdd' bus='ide'/> </disk>
6、执行virsh start命令启动虚机,选择进行rescue mode模式
在救援模式下,不用选择网络模式,选择一般模式即可,成功进入救援模式后,虚机原有的操作系统内容,会被挂载到/mnt/sysimage目录下,所以如果想要往虚机的原有系统目录下增加文件,一定要注意路径,增加/mnt/sysimage。
7、执行cp /bin/bash / /mnt/sysimage/bin/ 把/bin/bash拷贝到虚机的操作系统/bin目录下
8、进入到/mnt/sysimage/bin目录下,执行ln -s bash sh命令,为bash建立软连接
(ln [参数][源文件或目录][目标文件或目录], -s 软链接(符号链接))
9、virsh destroy cw_test对虚机进行关机,并还原虚机的xml文件内容及dom名字,重启虚机,虚机正常启动,问题修复