Please Note: This article is part of our historical archive. Because it was published a while ago, some of the information, links, or context may now be outdated.
Need help to clone KVM Virtual Machine in Linux? We can help you.
Here at Bobcares, we assist our customers with several Linux queries as part of our Server Management Services.
Today, let us see how to do it using the
virt-clone command.
What is virt-clone
virt-clone is a command-line tool to clone existing virtual machine images that use libvirt as a hypervisor management library. First, it will copy the disk images of any existing virtual machine. Then it will define a new guest with an identical virtual hardware configuration. Now let us proceed to learn how our Support Techs clone KVM Virtual Machine in Linux
Clone KVM Virtual Machine
Our Support Engineers suggest to follow the steps below to clone a VM on KVM:
Step 1: Make sure that the VM to clone is off.
We use the command below. Replace “asterisk-cloud” with the VM name.
$ sudo virsh shutdown asterisk-cloudThen we run the below command to get a list of Virtual Machines
manages:virsh$ sudo virsh list –all Id Name State —————————————————- – asterisk-cloud shut off – instance-00000004 shut offStep 2: Clone the Virtual Machine.
To clone
virtual Machine toasterisk-cloudvirtual machine, we run:kamailio-cloud$ sudo virt-clone –connect=qemu:///system –original asterisk-cloud –name kamailio-cloud –file /var/lib/libvirt/images/kamailio-cloud.qcow2Subsequently, the output will look like this:
Allocating ‘kamailio-cloud.qcow2’ | 8.0 GB 00:01:21 Clone ‘kamailio-cloud’ created successfully.If we are connecting to a remote KVM/QEMU Host machine, we put the URL before /system.
It will look something like this:
$ sudo virt-clone –connect=qemu://192.168.1.30/system –original asterisk-cloud –name kamailio-cloud –file /var/lib/libvirt/images/kamailio-cloud.qcow2
: Name of VM cloning fromasterisk-cloud
: Name given to resulting VM after cloningkamailio-cloud
: Image saved thatkamailio-cloud.qcow2
boots from.kamailio-cloud

Then we check to confirm that
kamailio-cloud.qcow2 file is successfully stored in /var/lib/libvirt/images folder. $ ls /var/lib/libvirt/images total 6946188 -rw-r–r– 1 root root 3238789120 Mar 20 17:42 asterisk-cloud.qcow2 -rwxr-xr-x 1 qemu qemu 666894336 Mar 16 04:14 CentOS-7-x86_64-Minimal-1503-01.iso -rw-r–r– 1 root root 3207331840 Mar 20 17:44 kamailio-cloud.qcow2If we now run the command
, we see cloned VM present in the list.virsh list –all$ sudo virsh list –all Id Name State —————————————————- – asterisk-cloud shut off – instance-00000004 shut off – kamailio-cloud shut offBefore starting the
, change the channel source mode path from the original.kamailio-cloudWe do this by editing the file
/etc/libvirt/qemu/kamailio-cloud.xml$ sudo vi /etc/libvirt/qemu/kamailio-cloud.xmlThen we look for the line below and change the original domain name to point to the new clone.
<channel type=’unix’> <source mode=’bind’ path=’/var/lib/libvirt/qemu/channel/target/domain-kamailio-cloud/org.qemu.guest_agent.0’/>Original was:
<channel type=’unix’> <source mode=’bind’ path=’/var/lib/libvirt/qemu/channel/target/domain-asterisk-cloud/org.qemu.guest_agent.0’/>Subsequently, to start the cloned virtual Machine, we type:
$ sudo virsh start kamailio-cloud –consoleAfter logging in, we change
for the network interface. The one on CentOS 7.x Guest machine is eth0.uuidSimilarly, to generate a new
for this interface, we type:uuid$ uuidgen eth0 29e28904-c8f6-4ac0-93f0-d5d2cedb8555Original eth0 configuration file from asterisk-cloud VM look like below:
TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eth0 UUID=230e87b1-f847-4cab-86b9-df4268a0a0a3 DEVICE=eth0 ONBOOT=yes PEERDNS=yes PEERROUTES=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yesThen we change
replacing old with generated one:uuid$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0On the other hand, we modify the below configurations to fit use cases.
TYPE=Ethernet TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eth0 UUID=29e28904-c8f6-4ac0-93f0-d5d2cedb8555 DEVICE=eth0 ONBOOT=yes PEERDNS=yes PEERROUTES=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yesThen we restart network service:
$ sudo service network restart $ sudo systemctl restart network.service[Find it hard to clone KVM? We’d be happy to assist you]
Conclusion
To conclude, we learned how to use the
command which provides a number of options to clone a KVM VM. Today, we saw an effective method employed by our Support Techs in this regard.virt-clone