Bobcares

Clone KVM Virtual Machine – How we use it in Linux

by | Jan 2, 2021

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-cloneCopy Code
command.

 

What is virt-clone

virt-cloneCopy Code
is a command-line tool to clone existing virtual machine images that use
libvirtCopy Code
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-cloudCopy Code

Then we run the below command to get a list of Virtual Machines

virshCopy Code
manages:

$ sudo virsh listall
Id Name State
—————————————————-
– asterisk-cloud shut off
– instance-00000004 shut offCopy Code

Step 2: Clone the Virtual Machine.

To clone

asterisk-cloudCopy Code
virtual Machine to
kamailio-cloudCopy Code
virtual machine, we run:

$ sudo virt-clone
–connect=qemu:///system
–original asterisk-cloud
–name kamailio-cloud
–file /var/lib/libvirt/images/kamailio-cloud.qcow2Copy Code

Subsequently, the output will look like this:

Allocating ‘kamailio-cloud.qcow2’ | 8.0 GB 00:01:21
Clone ‘kamailio-cloud’ created successfully.Copy Code

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.qcow2Copy Code
  • asterisk-cloudCopy Code
    : Name of VM cloning from
  • kamailio-cloudCopy Code
    : Name given to resulting VM after cloning
  • kamailio-cloud.qcow2Copy Code
    : Image saved that
    kamailio-cloudCopy Code
    boots from.

Clone KVM Virtual Machine in Linux

Then we check to confirm that

kamailio-cloud.qcow2Copy Code
file is successfully stored in
/var/lib/libvirt/imagesCopy Code
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.qcow2Copy Code

If we now run the command

virsh list –allCopy Code
, we see cloned VM present in the list.

$ sudo virsh listall
Id Name State
—————————————————-
– asterisk-cloud shut off
– instance-00000004 shut off
– kamailio-cloud shut offCopy Code

Before starting the

kamailio-cloudCopy Code
, change the channel source mode path from the original.

We do this by editing the file

/etc/libvirt/qemu/kamailio-cloud.xmlCopy Code
$ sudo vi /etc/libvirt/qemu/kamailio-cloud.xmlCopy Code

Then 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’/>Copy Code

Original was:

<channel type=’unix’>
<source mode=’bind’ path=’/var/lib/libvirt/qemu/channel/target/domain-asterisk-cloud/org.qemu.guest_agent.0’/>Copy Code

Subsequently, to start the cloned virtual Machine, we type:

$ sudo virsh start kamailio-cloud –consoleCopy Code

After logging in, we change

uuidCopy Code
for the network interface. The one on CentOS 7.x Guest machine is eth0.

Similarly, to generate a new

uuidCopy Code
for this interface, we type:

$ uuidgen eth0
29e28904-c8f6-4ac0-93f0-d5d2cedb8555Copy Code

Original 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=yesCopy Code

Then we change

uuidCopy Code
replacing old with generated one:

$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0Copy Code

On 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=yesCopy Code

Then we restart network service:

$ sudo service network restart
$ sudo systemctl restart network.serviceCopy Code

[Find it hard to clone KVM? We’d be happy to assist you]

 

Conclusion

To conclude, we learned how to use the

virt-cloneCopy Code
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.

var google_conversion_label = "owonCMyG5nEQ0aD71QM";

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Speed issues driving customers away?
We’ve got your back!