KVM故障调试经验


KVM故障调试经验
 
本次在UBuntu12.04.2系统安装KVM,随后创建虚拟机,又出现了新的问题。
现象:
ping不通虚拟机,ssh登录不上,console方式登录不上, 虚拟机无法shutdown,貌似电源管理也没有安装成功。
 
先来解决网络问题:
还好可以通过virt-cat来检查虚拟机内部的文件。
先关闭虚拟机
[plain] 
virsh destroy vm1  
 
然后检查网卡设置文件:
[plain] 
root@dbkvm:~# virt-cat -d vm1 /etc/network/interfaces  
# This file describes the network interfaces available on your system  
# and how to activate them. For more information, see interfaces(5).  
  
# The loopback network interface  
auto lo  
iface lo inet loopback  
  
# The primary network interface  
auto eth0  
iface eth0 inet static  
        address 192.168.1.51  
        netmask 255.255.255.0   
        network 192.168.1.0  
        broadcast 192.168.1.255  
        gateway 192.168.1.1   
        # dns-* options are implemented by the resolvconf package, if installed  
        dns-nameservers 8.8.8.8  
        dns-search localdomain  
 
这个dns-search localdomain看上去很奇怪。一般是defaultdomain. 
localdomain是因为host机器的/etc/hosts中配置成了
[plain] 
127.0.0.1       localhost.localdomain dbkvm  
 
将其换成这种配置:
[plain] 
127.0.0.1   localhost  
127.0.1.1   dbkvm  
再创建虚拟机,网络正常了。可以ping通,可以ssh登录。 console问题还有。
虚拟机里面的网络设置dns-search 被设置成了defaultdomain.
 
因此推测是hosts文件的配置错误,导致虚拟机中网卡设置的dns-search错误,导致无法连接网络,因此不能在创建过程中从网络下载安装openssh-server.
 
来看一下电源管理
如果不安装电源管理,就不能在host主机通过shutdown关闭虚拟机。
在创建vm的选项中需要补上:
[plain] 
--addpkg=acpid  
 
事后弥补就要登录到虚拟机中,然后运行命令:
[plain] 
apt-get install acpid  
 
 
再来处理console不能登录的问题。
先停止虚拟机。
[plain] 
virsh stop vm1  
 
准备一个文件ttyS0.conf, 内容如下:
[plain] 
# ttyS0.conf - getty  
# This service maintains a getty on ttyS0 from the point the system is  
# started until it is shut down again.  
  
start on stopped rc RUNLEVEL=[2345]  
stop on runlevel [!2345]  
respawn  
 
安装guestfish程序
[plain] 
apt-get install guestfish  
 
现在用virt-copy-in将文件复制到vm的/etc/init目录中:
[plain] 
virt-copy-in -d vm1 ttyS0.conf /etc/init  
 
然后调用virsh edit vm1 来编辑vm1的配置文件,添加下面的内容:
[html] 
<devices>  
  ...  
  <serial type='pty'>  
    <source path='/dev/pts/2'/>  
    <target port='0'/>  
  </serial>  
  <console type='pty' tty='/dev/pts/2'>  
    <source path='/dev/pts/2'/>  
    <target port='0'/>  
  </console>  
</devices>  
 
最后试用一下:
[plain] 
virsh start vm1  
Domain vm1 started  
  
root@dbkvm:~/kvm_scripts# virsh console vm1  
Connected to domain vm1  
Escape character is ^]  
  
Ubuntu 12.04.2 LTS vm1 ttyS0  
  
vm1 login: root  
Password:   
Last login: Thu May  2 09:21:03 UTC 2013 from 192.168.1.4 on pts/1  
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-41-virtual x86_64)  
 
可以了。
 
所有问题的根源都出在那个不正确的host机器上的/etc/hosts配置。
 

相关内容

    暂无相关文章