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

虚拟化领域中最重要和最常用的功能是克隆虚拟机,对虚拟机的当前状态进行快照并实时迁移虚拟机。
最近,我一直在使用KVM和Openstack Cloud计算平台,但是有时我需要克隆一个VM以便在另一个项目中使用,并且这个小指南使用virt-clone命令来这是操作方法。 virt-clone是一个命令行工具,用于克隆使用libvirt作为虚拟机管理程序管理库的现有虚拟机映像。
请按照以下步骤使用KVM克隆虚拟机。

  1. 确保要克隆的虚拟机已关闭电源。使用以下命令将“星号云”替换为虚拟机名称。
# virsh shutdown asterisk-cloud

使用virsh list –all命令可获取由virsh管理的虚拟机的列表。

# root at controller in ~ [22:06:29]
→ virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     asterisk-cloud                 shut off
 -     instance-00000004              shut off 
  1. 克隆虚拟机。在这里,我们将星号云虚拟机克隆到kamailio-cloud虚拟机。下面是输入的代码
# root at controller in ~ [17:42:47]
→ virt-clone 
--connect=qemu:///system 
--original asterisk-cloud 
--name kamailio-cloud 
--file /var/lib/libvirt/images/kamailio-cloud.qcow2

输出看起来像这样:

“ Kamailio-cloud.qcow2”分配| 8.0 GB 00:01:21
成功克隆了“ Kamailio-cloud”。

如果要连接到远程KVM / QEMU主机,请在url前面加上/ system。看起来像这样:

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

星号云:来自kamailio-cloud的VM的名称克隆:命名为克隆kamailio-cloud.qcow2之后生成的VM的名称:保存为kamailio-cloud的源的映像。
确保将kamailio-cloud.qcow2文件正确保存在/ var / lib / libvirt / images文件夹中。

# root at controller in ~ [17:45:59]
→ 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 list –all命令,您应该在列表中看到克隆的虚拟机。

# root at controller in ~ [17:49:48]
→ 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来执行此操作

┌── root at controller (~)
└─>vi /etc/libvirt/qemu/kamailio-cloud.xml

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


原来是:


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

 # virsh start kamailio-cloud --console

登录后,您需要更改网络接口的UUID。 My CentOS 7.x Guest计算机上的一个是eth0。要为此接口生成新的uuid,请输入:

[[email protected] ~]# uuidgen eth0
29e28904-c8f6-4ac0-93f0-d5d2cedb8555

来自星号云虚拟机的原始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以将旧的替换为生成的。

[[email protected] ~]# 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 

重新启动网络服务。

[[email protected] ~]# service network restart 
Restarting network (via systemctl):  [  OK  ]
[[email protected] ~]# systemctl restart network.service 
[[email protected] ~]#

仅此而已。需要正在运行的/正在运行的克隆虚拟机。您也可以使用Virt Manager运行此表单的图形界面。

Sidebar