如何在Linux上克隆现有的KVM虚拟机镜像

时间:2020-01-09 14:16:57  来源:igfitidea点击:

如何在KVM下克隆现有的虚拟机镜像?

说明:您可以使用一个名为virt-clone的简单命令。
它是一个命令行实用程序,用于使用libvirt虚拟机管理程序管理库克隆现有的虚拟机镜像。
它将复制任何现有虚拟机的磁盘镜像,并使用相同的虚拟硬件配置定义新的guest虚拟机。
需要唯一性的元素将被更新,以避免新旧访客之间发生冲突。

如何在Linux上克隆现有的KVM虚拟机镜像

克隆虚拟机并在KVML中产生新实例

# virt-clone --original {Domain-Vm-Name-Here} --auto-clone

或者

# virt-clone --original {Domain-Vm-Name-Here} --name {New-Domain-Vm-Name-Here} --auto-clone

或者

# virt-clone --original {Domain-Vm-Name-Here} \
--name {New-Domain-Vm-Name-Here} --file {/var/lib/libvirt/images/File.Name.here}

示例:使用virt-clone克隆来宾

具有要克隆的设备的第一个VM /域必须暂停或关闭。
要正常关闭名为ubuntu-box1的域,请运行:

$ sudo virsh shutdown ubuntu-box1

或者您可以按以下方式暂停它:

$ sudo virsh suspend ubuntu-box1
$ virsh list

输出示例:

Domain ubuntu-box1 suspended

Id    Name                           State
---------------------------------------------------
1     freebsd                        running
5     ubuntu-box1                    paused

让我们生成一个新的来宾名称,并为名为ubuntu-box1的虚拟机自动生成新存储的路径

$ sudo virt-clone --original ubuntu-box1 --auto-clone

输出示例:

WARNING  Setting the graphics device port to autoport, in order to avoid conflicting.
Allocating 'ubuntu-box-1-clone.qcow2'                                                              |  40 GB  00:00:04     

Clone 'ubuntu-box1-clone' created successfully.

上面的命令在默认连接上克隆了名为demo的guest虚拟机,并自动生成了一个新名称ubuntu-box1-clone和磁盘克隆路径。
您可以启动或恢复原始域:

$ sudo virsh start ubuntu-box1

或者

$ sudo virsh resume ubuntu-box1

接下来,启动ubuntu-box1-clone,执行:

$ sudo virsh start ubuntu-box1-clone

验证一下:

$ virsh list

我的dhcpd服务器为ubuntu-box1-clone VM提供了192.168.2.147 IP地址,运行:

$ ping -c2 192.168.2.147

最后,将ssh输入框:

$ ssh [email protected]

请注意,virt-clone不会在来宾操作系统内进行任何更改,它仅复制磁盘并进行主机端更改。
因此,更改密码,更改静态IP地址,ssh密钥,主机名等操作不在此工具的范围内。
使用ssh登录到克隆的VM后,您可以更改以下内容:

$ ssh [email protected]
$ sudo -s
# echo 'ubuntu-box1-clone' > /etc/hostname
# sed -i 's/ubuntu-box1/ubuntu-box1-clone/g' /etc/hosts
# reboot
# /bin/rm -v /etc/ssh/ssh_host_*
# dpkg-reconfigure openssh-server
# passwd Hyman