目录
一. 复制虚拟机
二. 虚拟机克隆
1. 使用 virt-clone
2. 使用 virt-manager(图形界面)
3. 使用 qemu-img (磁盘镜像克隆)
一. 复制虚拟机
配置文件路径:/etc/libvirt/qemu/*.xml
磁盘镜像文件路径: /var/lib/libvirt/images/*.img
复制镜像文件
[root@kvm-server ~]# cd /var/lib/libvirt/images/
[root@kvm-server images]# cp vm10.img vm20.img
复制配置文件
[root@kvm-server images]# cd /etc/libvirt/qemu/
[root@kvm-server qemu]# cp vm10.xml vm20.xml
生成一个UUID,复制这个ID
[root@kvm-server qemu]# uuidgen
55fc4773-8335-4e13-a394-9328b1a980ce
修改配置文件
[root@kvm-server qemu]# vim vm20.xml
保存编辑并退出
定义虚拟机
[root@kvm-server qemu]# virsh define ./vm20.xml
查看所有虚拟机列表
[root@kvm-server qemu]# virsh list --all
Id 名称 状态
-------------------
3 vm10 运行
- vm20 关闭
启动
[root@kvm-server qemu]# virsh start vm20
进入虚拟机
[root@kvm-server qemu]# virsh console vm20
连接到域 'vm20'
转义字符是 ^] (Ctrl + ])
[root@localhost ~]#
快捷键 ctrl + ] 退出
二. 虚拟机克隆
在 KVM (Kernel-based Virtual Machine) 中,克隆虚拟机可以通过几种不同的方式来完成
1. 使用 virt-clone
virt-clone
是一个用于克隆虚拟机的工具,它是 libvirt
的一部分。使用它可以很方便地克隆虚拟机。以下是一个基本的命令示例:
virt-clone --original <原始虚拟机名称> --name <新虚拟机名称> --auto-clone
--original
:指定要克隆的原始虚拟机名称。--name
:指定新虚拟机的名称。--auto-clone
:自动克隆虚拟机的磁盘。
示例:
virt-clone
要求源虚拟机必须是关闭状态才能进行克隆操作。
[root@kvm-server qemu]# virsh list
Id 名称 状态
-------------------
3 vm10 运行
7 vm20 运行
[root@kvm-server qemu]# virsh shutdown vm20
域 'vm20' 正在关闭
克隆
[root@kvm-server qemu]# virt-clone -o vm20 -n vm30 -f /var/lib/libvirt/images/vm30.img
正在分配 'vm30.img' 8% [======- ] 234 MB/s | 454 MB 00:00:19 正在分配 'vm30.img' 14% [==========- ] 241 MB/s | 723 MB 00:00:18 正在分配 'vm30.img' 18% [============== ] 237 MB/s | 944 MB 00:00:17 正在分配 'vm30.img' 22% [================= ] 234 MB/s | 1.1 GB 00:00:16 正在分配 'vm30.img' 26% [==================== ] 223 MB/s | 1.3 GB 00:00:16 正在分配 'vm30.img' 29% [====================== ] 210 MB/s | 1.5 GB 00:00:17 正在分配 'vm30.img' 32% [======================== ] 195 MB/s | 1.6 GB 00:00:17 正在分配 'vm30.img' 100% [===========================================================================] 873 MB/s | 5.0 GB 00:00:00 正在分配 'vm30.img' | 5.0 GB 00:00:07
成功克隆 'vm30'。
测试启动
[root@kvm-server qemu]# virsh list --all
Id 名称 状态
-------------------
3 vm10 运行
- vm20 关闭
- vm30 关闭
[root@kvm-server qemu]# virsh start vm30
域 'vm30' 已启动
常用参数和选项
--original <原始虚拟机名称> (-o)
指定要克隆的原始虚拟机名称。
--name <新虚拟机名称> (-n)
指定新虚拟机的名称。
--file <新磁盘镜像路径> (-f)
指定新虚拟机的磁盘镜像文件路径。
--auto-clone
自动克隆虚拟机的所有磁盘。这是默认行为,通常不需要单独指定。
--mac <MAC地址>
指定新虚拟机的 MAC 地址。如果不指定,virt-clone 会自动生成一个新的 MAC 地址。
--disk <路径>
允许指定其他磁盘镜像路径。格式类似于 --disk path=/path/to/disk.img。可以用于指定多个磁盘。
--network <网络配置>
指定网络配置。可以使用 --network network=<网络名> 或 --network bridge=<桥接名称> 来指定网络。
--no-virtio
禁用 virtio 设备类型,使用传统的设备类型(如 IDE)。
--no-checks
禁用所有检查,这在克隆复杂的虚拟机时可能有用,但一般不推荐使用。
--metadata <路径>
指定用于生成新虚拟机元数据的 XML 文件路径。
--no-uuid
禁用自动生成新的 UUID。适用于需要保留原始 UUID 的情况。
--bridge <桥接设备>
指定新虚拟机连接到的桥接网络设备。
2. 使用 virt-manager
(图形界面)
3. 使用 qemu-img
(磁盘镜像克隆)
如果只需要克隆虚拟机的磁盘镜像文件,可以使用 qemu-img
工具。
qemu-img
是 QEMU(一个开源虚拟化平台)中的一个工具,用于创建、转换和修改虚拟机磁盘镜像文件。它支持多种磁盘镜像格式,如 QCOW2、RAW、VMDK、VHD 等。
克隆镜像文件的作用 :
-
备份: 克隆镜像文件可以作为虚拟机的备份。当你需要在系统升级、迁移或其他操作前备份虚拟机时,可以克隆当前镜像,以便在需要时恢复到当前状态。
-
测试与开发: 在开发或测试环境中,克隆镜像文件可以帮助创建多个相同配置的虚拟机实例。这对于测试不同配置或软件版本的兼容性非常有用。
-
迁移: 克隆镜像文件可以用于迁移虚拟机到不同的物理服务器或存储位置。例如,你可以将虚拟机从一个存储系统迁移到另一个存储系统,同时保持虚拟机的状态不变。
-
创建模板: 克隆镜像文件可以作为虚拟机的模板,用于快速创建多个相同配置的虚拟机实例。这在需要大量相似虚拟机的场景中非常有用,如大规模部署或实验室环境。
qemu-img convert -f <源格式> -O <目标格式> <源镜像文件> <目标镜像文件>
<源格式>
:源镜像文件的格式,如qcow2
、raw
等。如果你不知道格式,可以用qemu-img info <源镜像文件>
来查看。<目标格式>
:目标镜像文件的格式。<源镜像文件>
:你要克隆的源镜像文件。<目标镜像文件>
:克隆后的目标镜像文件。
[root@kvm-server images]# virsh list
Id 名称 状态
-------------------
3 vm10 运行
[root@kvm-server images]# virsh shutdown vm10
域 'vm10' 正在关闭
# 进入镜像文件目录
[root@kvm-server qemu]# cd /var/lib/libvirt/images/
# 克隆镜像文件
[root@kvm-server images]# qemu-img convert -f qcow2 -O qcow2 vm10.img vm10-clone.img
[root@kvm-server images]# ll
总用量 3486824
-rw-r--r-- 1 root root 1780285440 8月 6 20:14 vm10-clone.img
-rw------- 1 root root 5369757696 8月 6 20:13 vm10.img