如何克隆kvm虚拟机

关于如何使用kvm虚拟化技术创建虚拟机,这里有一系列博客讲的已经非常清楚了,这里不再赘述,不过其中有些小坑可能需要大家注意:

0. 写在创建虚拟机之前(即教程的系列三之前)
1. 确认防火墙是否关闭,没有关闭的话关闭服务:
[root@localhost ~]# service iptables status
[root@localhost ~]# service iptables stop(这个一定要关掉,否则后面用vncviewer链接安装centos时会连接不上。另外,如果vncviewer连接上了但出现闪退,可以参考这个链接:http://www.centoscn.com/CentosBug/softbug/2013/0819/1373.html
只需修改vnc option里面Advanced-->expert-->ColourLevel的值为“rgb222” or “full”即可。 
说明:rgb111--8 colours,rgb222--64 colours,pal8 -- 256 colours,full -- full colours
[root@localhost ~]# chkconfig iptables off
 
2. 确认selinux是否关闭,没有关闭的话修改配置。
[root@CY-S01 ~]#vi /etc/sysconfig/selinux
SELINUX=disabled
[root@CY-S01 ~]#reboot 
 
3. 确认下NetworkManager服务是否开启:
service NetworkManager status
如果开启的话关闭掉(这个很重要,不关闭的话回导致后面配置的br0桥接网卡无法启动)
service NetworkManager stop
chkconfig NetworkManager off

遵循上面的步骤之后,你很可能已经得到了自己在kvm上面的第一个虚拟机了,恭喜!!

那如果我要想创建第二个虚拟机呢?上面的流程再走一遍??要疯啊!!

还好,我们还可以克隆clone一个kvm虚拟机出来,如下图所示:

这里我们克隆出了一个新虚拟机,名字为node5.克隆命令为:

virt-clone -o node1 -n node5 -f /home/kvm/images/node5.img

其中-o node1参数制定了待克隆的老(old)虚拟机,-n node5制定了新(new)虚拟机的名字,-f参数指定了新虚拟机镜像所在的位置。

是不是很简单?

呃,it's not simple as that.

这里我们先查看一下新、老两个虚拟机的配置文件,他们的默认位置在/etc/libvirt/qemu目录下(注意,下面我以创建node4虚拟机时的截图为例了)

可以很明显的看出,新老两个虚拟机配置文件的主要区别有以下几点:

  • 名字由node1变成了node4
  • uuid变了
  • 镜像的路径变了
  • mac地址变了(这个很重要)
  • vnc监听参数变了,原来是有密码的:passwd='123456',新创建的虚拟机默认没有密码(这个在后面通过vncviewer远程连接虚拟机桌面的时候很重要)

我们待会要修改新虚拟机的配置信息时候也是从上面几点出发的。

好了,启动你的虚拟机吧:

virsh start node4

通过vncviewer连接到虚拟机桌面,此时一个很严重的问题来了,虚拟机连不上网!

嗯,敲个命令压压惊:

可以看到,/proc/net/dev文件显示我们这时使用的是eth1端口,而/etc/sysconfig/network-scripts/下面只有ifcfg-eth0文件,没有ifcfg-eth1文件!

 

查看下/etc/udev/rules.d/70-persistent-net.rules文件:

看上面的mac地址,eth0的mac地址就是我们diff命令中显示的原虚拟机mac地址,而eth1的mac地址才是我们新虚拟机中的mac地址:

而ifcfg-eth0中的mac地址也是原虚拟机的mac地址(围观群众:从原虚拟机拷贝过来的,废话么,当然是原虚拟机地址)

那么问题来了,eth1网卡从哪来的?

原来系统检测到的实际mac地址(也是就是新虚拟机的正确mac地址)与配置文件(ifcfg-eth0)中的MAC地址不一样, 于是便有创建了一个新的网卡eth1,可eth1并没有对应的配置文件指定其如何连接到网络,于是eth1也是无法上网的,下面我们就对系统的这个“错误认知”做一下修正!

如果这时候使用service network restart或ifup eth0启动eth0网卡,会告诉你eth0 device not found,原因就在于你的eth0网卡mac地址是错的。

下面修改ifcfg-eth0文件内容,把mac地址和ip地址改过来:

再把/etc/udev/rules.d/70-persistent-net.rules文件中的eth0那一行删掉,把eth1改成eth0,结果如下:

重启网络服务或者ifup eth0就好啦:


 

mac地址的问题解决之后,我们在修改下各个主机的主机名,和其对应的vnc监听端口,一个个崭新的新虚拟机就站在你的面前了,吼吼!!

修改主机名:

修改监听端口(在宿主机的/etc/libvirt/qemu目录下,如对于node4虚拟机,修改node4.xml即可,修改完后记得重启宿主机):

 

posted @ 2015-07-24 14:59  beanmoon  阅读(...)  评论(... 编辑 收藏