克隆已经存在的虚拟机镜像
命令语法格式
virt-clone [OPTION]…
命令描述
virt-clone是一个命令行工具,用于克隆现有虚拟机映像,它使用“libvirt”库。它将复制任何现有虚拟机的磁盘映像,并定义具有相同虚拟硬件配置的新GuestVM。并将更新要求唯一性的元素,以避免新老GuestVM之间的冲突。
默认情况下,如果未提供克隆GuestVM的必要信息,virt-clone将显示错误。除了要复制的源GuestVM之外,选项–auto-clone将生成所有需要的输入。
请注意,virt-clone不会更改GuestVM的任何内容,它只复制磁盘,并进行主机端更改。因此,更改密码、更改静态IP地址等内容超出了此工具的范围。有关这些类型的更改,请参阅virt-sysprep。
命令支持的选项及含义
大多数选项都不是必需的。最低要求是–original或–original-xml(用于指定要克隆的GuestVM),–name,通过–file指定的相应存储选项。
必须选项
-o ORIGINAL_GUEST, –original ORIGINAL_GUEST
要克隆的原始GuestVM的名称。必须关闭或暂停此GuestVM,因为现在还无法安全克隆出于活动中的GuestVM。
-n NAME, –name NAME
新GuestVM实例的名称。这在Hypervisor连接中已知的所有GuestVM中必须是唯一的,包括那些当前不活动的GuestVM。
–original-xml ORIGINAL_XML
将Libvirt的GuestVM的xml文件用作原始GuestVM。不需要在libvirt连接上定义GuestVM。该选项取代了“–original”参数。
-f DISKFILE, –file DISKFILE
到文件、磁盘分区、逻辑卷的路径,用作新GuestVM虚拟磁盘的后备存储。如果原始GuestVM具有多个磁盘,则此参数必须重复多次,原始虚拟机中的每个磁盘一次。
非必须选项
–connect URI
连接到非默认Hypervisor。有关详细信息,请参阅virt-install(1)。
–auto-clone
生成新的GuestVM名称,以及新存储的路径。示例或可能生成的输出如下:
Generated clone name : MyVM-clone
Generated disk path : /home/user/foobar-clone.img
如果生成的名称与现有VM或存储冲突,则会附加一个数字,例如“foobar-clone-1.img”或“MyVM-clone-3”等类似的形式。
-u UUID –uuid UUID
UUID用于GuestVM;如果没有给出,则将生成随机UUID。如果指定UUID,则应使用32位十六进制数字。
UUID旨在在整个数据中心乃至整个世界中都是独一无二的。如果手动指定UUID,请记住这一点。
–nvram NVRAMFILE
新nvram VARS文件的可选路径。如果GuestVM具有nvram,且未指定路径,则将自动生成新的nvram路径。如果GuestVM没有nvram,则会忽略此选项。
–force-copy TARGET
强制克隆传递的磁盘目标(’hdc’,’sda’等)。默认情况下,“virt-clone”将跳过某些磁盘,例如标记为“readonly”(只读)或“shareable”(可共享)的磁盘。
–nonsparse
如果要克隆的路径是稀疏文件,则完全分配新存储。有关稀疏与非稀疏的更多详细信息,请参阅virt-install(1)。
–preserve-data
不克隆存储:–file特定的磁盘映像按原样保留,并在新克隆XML中引用。如果要克隆VM XML模板而不是存储内容,这将非常有用。
–reflink
指定–reflink时,执行轻量级复制。如果源镜像和目标镜像都在同一个btrfs文件系统上,则速度会快得多。如果无法进行COW复制,则virt-clone将失败。
-m MAC –mac MAC
固定GuestVM的MAC地址;如果省略该参数,或者指定值“RANDOM”,则将随机生成合适的地址。地址按顺序应用于网络,正如它们在原始GuestVM的XML中列出。
–print-xml
打印生成的克隆GuestVM的XML并退出,而不进行克隆。
–replace
在克隆原始GuestVM之前,使用传递的“–name”关闭并删除任何现有GuestVM。
–check
启用或禁用某些验证检查。有关更多详细信息,请参阅virt-install(1)。
-q –quiet
抑制非错误输出。
-d –debug
运行安装过程时,将调试信息打印到终端。调试信息也存储在“~/.cache/virt-manager/virt-clone.log”中,即使省略了该参数。
其他选项
-h –help
显示帮助信息并退出。
–version
显示版本信息并退出。
使用示例
在默认的Hypersisor连接上,克隆名为“demo”的GuestVM,自动生成新名称和磁盘克隆路径:
克隆名为“demo”的GuestVm,该GuestVM有一个要复制的磁盘:
克隆使用多个磁盘的QEMU的GuestVM:
–connect qemu:///system \
–original demo \
–name newdemo \
–file /var/lib/xen/images/newdemo.img \
–file /var/lib/xen/images/newdata.img
将GuestVM克隆到至少与原始GuestVM磁盘一样大的物理设备。如果目标设备较大,则新的虚拟机可以在引导时调整文件系统大小。
–connect qemu:///system \
–original demo \
–name newdemo \
–file /dev/HostVG/DemoVM \
–mac 52:54:00:34:11:54
如上示例所示。
相关手册
“virt-sysprep(1)”, virsh(1), “virt-install(1)”, “virt-manager(1)”
the project website: http://virt-manager.org
参考文献
- man 1 virt-clone, Version 11.5.1-1
更新日志
- 08/22/2018 创建文章