本文首发于烂泥行天下

上一篇文章介绍了有关KVM虚拟机快照的创建与恢复,这篇文章我们来介绍有关KVM虚拟机克隆。

KVM虚拟机的克隆,我们可以分以下几步:

1、 使用virt-clone命令进行克隆

2、 通过virsh edit命令修改克隆后虚拟机的VNC连接端口

3、 配置克隆后虚拟机的网卡

KVM虚拟机的克隆,我们可以使用virt-clone命令进行。有关virt-clone命令的使用,我们可以通过帮助文档进行查看,如下图:

clip_image001

强烈建议,在克隆虚拟机之前,原来的虚拟机一定要处于关机状态。

现在我们可以使用如下命令,创建虚拟机centos的克隆服务器,如下:

virt-clone -o centos -n centos2 -f /vhostdisk/centos2.img

此命令是以虚拟机centos为依据,克隆后的虚拟机为centos2,并且该虚拟机的硬盘为/vhostdisk/centos2.img

clip_image002

clip_image003

克隆完毕后,我们现在来查看虚拟机centos2的相关信息。

list --all

clip_image004

可以看到目前系统中已经存在虚拟机centos2,现在查看虚拟机centos2的硬盘。

clip_image005

qemu-img info /vhostdisk/centos.img

通过上图我们可以很明显的看到虚拟机centos2的硬盘格式及大小和虚拟机centos是一样的。

现在克隆完毕,但是我们还不能直接使用虚拟机centos2,先来编辑centos2的配置文件。修改VNC的连接端口号。

edit centos2

clip_image006

clip_image007

VNC端口修改完毕后,我们现在来启动虚拟机centos2,如下:

clip_image008

clip_image009

虚拟机centos2启动后,我们使用ifconfig命令查看如下:

clip_image010

通过上图我们可以很明显的看到,没有网卡的相关信息。

为什么会出现这种情况呢?因为虚拟机centos2是通过虚拟机centos克隆过来的,现在虚拟机centos2的网卡信息是和虚拟机centos是一样的,所以我们要修改centos2的网卡信息。

先来查看70-persistent-net.rules文件,该文件是用来存放有关网卡信息。

vi /etc/udev/rules.d/70-persistent-net.rules

clip_image011

通过上图我们可以很明显的看到,有关eth0和eth1网卡的信息。

现在我们来查看网卡配置文件的信息,如下:

more /etc/sysconfig/network-scripts/ifcfg-eth0

clip_image012

注意上图中网卡的MAC地址是和70-persistent-net.rules文件中eth0网卡的MAC地址是一样的。这个就是需要我们修改的地方。

通过现在是在系统中,我们编辑两个文件不方便,不过我们可以通过以下命令,把70-persistent-net.rules文件中的内容追加到ifcfg-eth0文件中,然后再进行修改。如下:

more /etc/udev/rules.d/70-persistent-net.rules >>/etc/sysconfig/network-scripts/ifcfg-eth0

clip_image013

clip_image014

我们现在需要做的就是把70-persistent-net.rules文件中eth1网卡的MAC地址分配给eth0网卡,然后修改eth0网卡的IP地址。

clip_image015

eth0网卡配置最后的信息,如下:

clip_image016

eth0网卡的信息,修改完毕后。我们现在再来修改70-persistent-net.rules,我们需要做的就是把此文件中有关eth0网卡先注释掉,然后把eth1修改为eth0。如下:

vi /etc/udev/rules.d/70-persistent-net.rules

clip_image017

以上修改完毕后,我们还需要重启启动虚拟机centos2,可以使用如下命令:

shutdown –r now

clip_image018

系统重启后,再次登陆系统,使用ipconfig及ping命令查看。

clip_image019

clip_image020

通过上图,我们可以很明显的看到虚拟机centos2现在已经正常工作。

到此我们的KVM虚拟机克隆介绍完毕。