如何克隆KVM虚拟机

您是否有一些要复制并重用的KVM虚拟机?在这个简单的教程中,我们将向您展示如何克隆KVM虚拟机。

如何克隆KVM虚拟机

克隆KVM虚拟机的方式有很多种。

  1. 使用Virt-Manager克隆KVM虚拟机
  2. 使用virt-clone命令克隆KVM虚拟机

让我们快速了解如何使用以上两种方法克隆KVM虚拟机。

使用Virt-Manager克隆KVM虚拟机

这涉及使用KVM虚拟机管理器应用程序克隆KVM虚拟机。

启动KVM Virt-Manager

为了使用这种方法,您需要通过以下命令从系统应用程序菜单或直接从终端启动Virt-manager。

virt-manager

关闭或暂停虚拟机以克隆

在虚拟机管理器中,只需选择有问题的虚拟机,然后右键单击它,或者简单地单击电源以访问电源菜单即可关闭或暂停虚拟机。

如何克隆KVM虚拟机
克隆虚拟机

机器暂停或关闭后,右键单击它,然后单击 克隆 打开克隆窗口。

如何克隆KVM虚拟机
配置KVM克隆

设置新克隆的虚拟机的名称

通过单击来更改每个NIC的MAC地址。 细节 按钮并输入新的MAC地址。通常默认情况下生成。请点击 完成时。

对于连接到要克隆的虚拟机的每个磁盘,您可以选择:

  • 克隆磁盘,以便为新虚拟机克隆磁盘
  • 共享磁盘,以便在新虚拟机和原始虚拟机之间共享现有磁盘。
  • 请点击 细节 每个选项都可以为新克隆的磁盘设置新路径。

如何克隆KVM虚拟机

配置完KVM克隆后,请点击 克隆 开始克隆过程。

使用virt-clone命令克隆KVM虚拟机

您也可以使用以下方法克隆KVM虚拟机 virt-clone 命令。根据手册页;

“ virt-clone是用于使用“ libvirt”虚拟机管理程序管理库克隆现有虚拟机映像的命令行工具。 它将复制任何现有虚拟机的磁盘映像,并使用相同的虚拟硬件配置定义新的客户机。 需要唯一性的元素将被更新,以避免新旧访客之间发生冲突。

默认情况下,如果未提供克隆来宾的必要信息,virt-clone将显示错误。 –auto-clone选项将生成所有需要的输入,除了要克隆的源来宾。请注意,virt-clone不会在来宾OS上更改任何内容,它仅复制磁盘并进行主机端更改。因此,更改密码,更改静态IP地址等操作不在此工具的范围内。对于这些类型的更改,请参见virt-sysprep“

要克隆虚拟机,请获取名称并关闭它。

例如,要列出所有KVM虚拟机,请运行以下命令;

virsh list --all
 Id   Name            State
--------------------------------
 -    kolla-ansible   shut off
 -    ubuntu20.04     shut off

如果虚拟机正在运行,则将其关闭;否则,请关闭虚拟机。

virsh shutdown <name here>

关闭虚拟机后,使用 virt-clone 命令克隆它。例如,要克隆一个名为ubuntu20.04的虚拟机。

virt-clone --original ubuntu20.04 --auto-clone
  • --original:要克隆的原始来宾的名称。此访客必须关闭或暂停,因为此时无法安全克隆活动的访客。
  • --auto-clone:生成新的来宾名称和新存储的路径。如果生成的名称与现有的VM或存储冲突,则会附加一个数字,例如foobar-clone-1.img

克隆具有多个磁盘的虚拟机,并为新来宾的虚拟磁盘指定自定义名称和新文件/分区/逻辑分区的路径;

virt-clone --connect qemu:///system --original demo --name newdemo --file /var/lib/xen/images/newdemo.img --file /var/lib/xen/images/newdata.img

阅读有关使用的更多信息 virt-clone 上;

virt-clone --help
usage: virt-clone --original [NAME] ...

Duplicate a virtual machine, changing all the unique host side configuration like MAC address, name, etc. 

The VM contents are NOT altered: virt-clone does not change anything _inside_ the guest OS, it only duplicates disks and does host side changes. So things like changing passwords, changing static IP address, etc are outside the scope of this tool. For these types of changes, please see virt-sysprep(1).

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --connect URI         Connect to hypervisor with libvirt URI

General Options:
  -o ORIGINAL_GUEST, --original ORIGINAL_GUEST
                        Name of the original guest; The status must be shut off or paused.
  --original-xml ORIGINAL_XML
                        XML file to use as the original guest.
  --auto-clone          Auto generate clone name and storage paths from the original guest configuration.
  -n NEW_NAME, --name NEW_NAME
                        Name for the new guest
  --reflink             use btrfs COW lightweight copy

Storage Configuration:
  -f NEW_DISKFILE, --file NEW_DISKFILE
                        New file to use as the disk image for the new guest
  --force-copy TARGET   Force to copy devices (eg, if 'hdc' is a readonly cdrom device, --force-copy=hdc)
  --skip-copy SKIP_COPY
                        Skip copy of the device target. (eg, if 'vda' is a disk you don't want to copy and use the same path in the new VM, use --skip-copy=vda)
  --nonsparse           Do not use a sparse file for the clone's disk image
  --preserve-data       Do not clone storage, new disk images specified via --file are preserved unchanged
  --nvram NEW_NVRAM     New file to use as storage for nvram VARS

Networking Configuration:
  -m NEW_MAC, --mac NEW_MAC
                        New fixed MAC address for the clone guest. Default is a randomly generated MAC

Miscellaneous Options:
  --replace             Don't check name collision, overwrite any guest with the same name.
  --print-xml           Print the generated domain XML rather than create the guest.
  --check CHECK         Enable or disable validation checks. Example:
                        --check path_in_use=off
                        --check all=off
  -q, --quiet           Suppress non-error output
  -d, --debug           Print debugging information

See man page for examples and full option syntax.

克隆完成后,您将列出可用的虚拟机进行检查。

virsh list --all
 Id   Name                State
------------------------------------
 -    kolla-ansible       shut off
 -    ubuntu20.04         shut off
 -    ubuntu20.04-clone   shut off

然后,您可以启动克隆的虚拟机并开始进行设置,包括更改密码,设置IP等。

virsh start ubuntu20.04-clone

这就是如何克隆KVM虚拟机的全部内容。

其他教程

如何在Ubuntu 20.04上修复QEMU / KVM未连接错误

在KVM上使用VirtualBox VM

如何使用virsh命令重命名KVM虚拟机

Sidebar