• 如何克隆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即可,修改完后记得重启宿主机):

  • 相关阅读:
    浅析区间问题
    关于参加信息竞赛
    路爷爷语录
    CentOS-7安装python虚拟环境
    开发笔记(不定时更新)
    Redis有序集合的权重值选择
    数据缓存(Redis)流程设计--思路
    Flask框架之配置日志信息
    Flask框架之一对多关系模型定义
    Flask框架之多对多关系模型类的定义
  • 原文地址:https://www.cnblogs.com/beanmoon/p/4673525.html
Copyright © 2020-2023  润新知