如何克隆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