如何在Linux中克隆和使用KVM虚拟机

时间:2020-02-23 14:38:19  来源:igfitidea点击:

虚拟化世界中最重要且最多使用的功能是克隆VM的能力,拍摄VM的当前状态的快照,Live迁移VM,
本文将介绍如何使用Viet-Clone命令进行操作。

virt-clone是用于克隆使用libvirt作为管理程序管理库的现有虚拟机图像的命令行工具。
按照下面的步骤克隆kvm上的VM.Make确保我们希望克隆的VM已关闭。
使用以下命令,只需用VM名称替换"Asterisk-cloud"。

$sudo virsh shutdown asterisk-cloud

我们可以使用virsh列表获取由virsh管理的虚拟机列表 - 所有命令:

$sudo virsh list --all
 Id    Name                           State
---------------------------------------------------
 -     asterisk-cloud                 shut off
 -     instance-00000004              shut off

克隆虚拟机。
其中我想克隆Asterisk-Cloud虚拟机到Kamailio-Cloud Virtual Machine.Below是输入的代码

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

输出如下:

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


见下面的屏幕截图:

如果我们与远程KVM/QEMU主机连接,请将URL放在/系统之前。
它会看起来像:

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

Asterisk-cloud:来自kamailio-cloud的VM克隆的名称:克隆Kamailio-cloud.qcow2后给出的VM的名称:图像保存了kamailio-cloud靴子。
检查以确认kamailio-cloud.qcow2文件成功存储在/var/lib/libvirt /图像文件夹中。

$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.qcow2

如果我们现在运行命令virsh列表 - 所有,则应在列表中看到克隆的VM存在。

$sudo virsh list --all
Id Name State
---------------------------------------------------
- asterisk-cloud shut off
- instance-00000004 shut off
- kamailio-cloud shut off

在启动Kamailio-Cloud之前,我必须从原版更改频道源模式路径。
通过编辑文件/etc/libvirt/qemu/kamailio-cloud.xml来执行此操作

$sudo vi /etc/libvirt/qemu/kamailio-cloud.xml

查找下面的行,并更改原始域名以指向新克隆。

<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-kamailio-cloud/org.qemu.guest_agent.0'

原来是:

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

要启动克隆的虚拟机,只需输入:

$sudo virsh start kamailio-cloud --console

登录后,我必须更改UUID以进行网络接口。
我的CentOS 7.x Guest Machine上的那个人是eth0。
要为此接口生成新的UUID,只需执行:

$uuidgen eth0
29e28904-c8f6-4ac0-93f0-d5d2cedb8555

Asterisk-Cloud VM的原始ETH0配置文件如下所示:

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=yes

我会更改uuid替换生成的旧旧:

$sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改以下配置以适合用例。

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=yes

重新启动网络服务:

$sudo service network restart 
$sudo systemctl restart network.service

我们应该有一个运行/工作的克隆虚拟机。
我们还可以使用"virt Manager"来执行此表单图形界面。