如何在Linux中克隆和使用KVM虚拟机
虚拟化世界中最重要且最多使用的功能是克隆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"来执行此表单图形界面。