Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >虚拟机克隆技术介绍

虚拟机克隆技术介绍

作者头像
Kevin song
发布于 2023-12-04 02:45:49
发布于 2023-12-04 02:45:49
80510
代码可运行
举报
运行总次数:0
代码可运行

虚拟机克隆

虚拟机克隆是指基于已有的虚拟机创建一个相同配置和内容的副本,虚拟机克隆过程中会生成和原始虚拟机不同的MAC地址和UUID,允许克隆的虚拟机和原始虚拟机在同一网络中出现,并且不会产生任何冲突。

全量克隆(Full Clone)

全量克隆的虚拟机不依赖源虚拟机,是完全独立的虚拟机,它的性能与被克隆虚拟机相同。由于全量克隆不与父虚拟机共享虚拟磁盘,所以创建全量克隆所需的时间比链接克隆更长。如果涉及的文件较大,全量克隆可能需要数分钟才能创建完成。全量克隆只复制克隆操作时的虚拟机状态,因此无法访问父虚拟机的快照。

链接克隆(Linked Clone)

依赖于源虚拟机(称为父虚拟机)。由于链接克隆是通过父虚拟创建而成,因此节省了磁盘空间,而且克隆速度非常快,但在克隆后的虚拟机性能能会有所下降。对父虚拟机的虚拟磁盘进行的更改不会影响链接克隆,对链接克隆磁盘的更改也不会影响父虚拟机。如果父虚拟机损坏或快照点删除,链接克隆的虚拟机将无法使用;如果父虚拟机移动位置,需要重新指定父虚拟机的位置,再启动链接克隆虚拟机。

快速全量克隆(Fast Full Clone)

快速全量克隆采用写时复制(Copy-On-Write)的策略。首先虚拟机进行链接克隆技术,保证虚拟机快速克隆启动,当新创建的虚拟机对共享的虚拟磁盘进行写操作时,系统会将需要写入的数据写入新磁盘,而不是直接修改共享的磁盘。确保了新虚拟机与源虚拟机之间的数据隔离。虚拟机启动后在后台异步的将原镜像进行全量复制并进行全量数据合并,最后保持数据磁盘独立性。通过此方式克隆的虚拟机启动速度快,数据始终独立,克隆完成后性能完全无影响。

全量克隆、快速全量克隆、链接克隆 优劣势介绍

克隆速度

性能影响

使用限制

应用场景

全量克隆

受虚拟磁盘大小、网络带宽等因素影响,数据复制完成后,主机才能启动

主机启动速度较慢,数据始终独立,克隆完成后性能完全无影响

对主机存储位置无限制

用于需要完全复制源主机的场景,比如备份、恢复和迁移等操作

快速全量克隆

秒级克隆

主机启动速度快,数据最终独立,克隆完成后性能完全无影响

源主机/虚拟磁盘与克隆主机/虚拟磁盘存储位置保持一致

快速创建多个相同的主机环境,且最终主机数据需要保持独立的场景

链接克隆

秒级克隆

主机启动速度快,节省存储空间,但链接克隆的主机/虚拟磁盘和源主机/虚拟磁盘之间存在依赖关系,克隆完成后性能仍受影响

源主机/虚拟磁盘与克隆主机/虚拟磁盘存储位置保持一致

开发、测试等对性能要求不高的场景,节省存储空间

kvm虚拟化主机克隆

完整克隆

1,自动克隆(虚拟机关机克隆)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virt-clone --auto-clone -o openeuler22.03 -n openeuler22.03_clone

-o 原始虚拟机 -n 克隆后的新虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virt-clone -o openeuler22.03 -n openeuler22.03_clone --file /data/openeuler22.03_clone.qcow2

-f 克隆后新虚拟机的磁盘

2,手动克隆

  1. 复制虚拟磁盘
  2. 生成xml文件
  3. 修改xml文件
  4. 导入xml文件

a、使用cp命令复制一个磁盘

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cp /var/lib/libvirt/images/openeuler22.03.qcow2 /var/lib/libvirt/images/openeuler22.03_clone.qcow2

b、复制虚拟机的xml文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virsh dumpxml --domain  openeuler22.03 > /etc/libvirt/qemu/openeuler22.03_clone.xml

c、修改xml文件将原始机器的唯一性配置删除

  • 修改虚拟机名字
  • 删除UUID
  • 删除mac地址
  • 修改磁盘路径信息

d、导入虚拟机

根据xml文件导入虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virsh define --file /etc/libvirt/qemu/openeuler22.03_clone.xml

e、启动虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virsh  start  openeuler22.03_clone

f、查看虚拟机列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
virsh  list  --all
Id   Name                   State
---------------------------------------
 4    openeuler22.03_clone   running

3,链接克隆

a、 创建一个链接克隆磁盘,qcow2格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qemu-img create -b /var/lib/libvirt/images/openeuler22.03.qcow2 -f qcow2  -F qcow2 /var/lib/libvirt/images/openeuler22.03_clone2.qcow2
或
qemu-img create -f qcow2 -F qcow2 -o backing_file=/var/lib/libvirt/images/openeuler22.03_clone.qcow2 /var/lib/libvirt/images/openeuler22.03_clone3.qcow2

未指定size,使用基础镜像的size

b、附加特殊权限防止误删

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chattr +i  /var/lib/libvirt/images/openeuler22.03.qcow2

c、查看虚拟磁盘信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qemu-img info /var/lib/libvirt/images/openeuler22.03_clone2.qcow2  --force-share
 或
 qemu-img info /var/lib/libvirt/images/openeuler22.03_clone2.qcow2  --U

d、生成虚拟机xml文件并启动虚拟机

virt-install --virt-type kvm --os-type=linux --name openeuler22.03_clone2 --memory 2048 --vcpus 1 --disk /var/lib/libvirt/images/openeuler22.03_clone2.qcow2,format=qcow2,bus=virtio --boot hd --network bridge=br0,model=virtio --accelerate --noautoconsole --graphics vnc,listen=0.0.0.0 --video cirrus

e、查看虚拟机磁盘信息验证虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@openEuler-node1 qemu]# virsh domblklist  openeuler22.03_clone2 
 Target   Source
---------------------------------------------------------------
 vda      /var/lib/libvirt/images/openeuler22.03_clone2.qcow2
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
太详细了,十分感谢!
太详细了,十分感谢!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
kvm qcow2,raw 磁盘格式、磁盘存储策略介绍
raw格式是原始镜像,直接将数据写入磁盘,没有额外的元数据或压缩,由于没有复杂的元数据处理,raw 格式通常比较快,适用于一些对性能要求较高的场景。相对于 qcow2,raw 格式通常不支持虚拟机的快照功能。每个虚拟机实例都需要完整的磁盘空间,不同虚拟机之间不能共享相同的基础数据。
Kevin song
2023/12/04
3.5K0
kvm qcow2,raw 磁盘格式、磁盘存储策略介绍
KVM-虚拟机克隆
我们学习了使用模板创建虚拟机,除此之外还有另外的一种方法可以批量创建虚拟机,那就是克隆
星哥玩云
2022/09/15
7940
统信服务器操作系统V20 1060e【KVM 虚拟化】
KVM(Kernel-based Virtual Machine)是一个基于Linux内核的开源虚拟化解决方案,它允许在单个物理服务器上运行多个虚拟机。每个虚拟机都可以运行自己的操作系统和应用程序。KVM利用了Linux内核的虚拟化功能,通过将物理主机的资源(如CPU、内存和网络接口)动态分配给虚拟机,实现了对虚拟机的隔离和资源管理。
Kevin song
2024/04/28
1K0
统信服务器操作系统V20 1060e【KVM 虚拟化】
virsh查看虚拟网络信息_kvm创建虚拟机
1.virsh查看/管理虚拟机 问题 本案例要求熟悉KVM虚拟化的virsh管理工具的的基本使用,从命令行来操作虚拟机,完成以下基本任务: 1)查看KVM服务器信息 2)列出有哪些虚拟机、指定虚拟机的状态 3)基本的开关机操作 4)将虚拟机设置为自动运行 方案 virsh命令行管理的常见用法: 1)virsh:直接进交互模式 2)virsh nodeinfo:查看KVM节点(服务器)信息 3)virsh list:列出正在运行的虚拟机 4)virsh list –all:列出所有虚拟机(包括未启动的) 5)virsh dominfo 虚拟机名称:查看指定虚拟机的信息 6)virsh start 虚拟机名称:将指定的虚拟机开机 7)virsh reboot 虚拟机名称:将指定的虚拟机重启 8)virsh shutdown 虚拟机名称:将指定的虚拟机正常关机 9)virsh destroy 虚拟机名称:将指定的虚拟机强制关机(相当于拔电源) 10)virsh autostart 虚拟机名称:将指定的虚拟机设置随KVM自动开机 11)virsh autostart –disable 虚拟机名称:禁止自动开机 步骤 实现此案例需要按照如下步骤进行。 步骤一:直接使用virsh交互模式 执行不带任何参数的virsh命令,即可进入交互模式。在virsh交互模式下,可以快速、连续地执行多条虚拟机管理指令,不用每次都指定virsh,最后再exit退出;这种方式与在Shell命令行执行virsh时后面跟上虚拟机管理指令的作用是等效的。 [root@kvmsvr ~]# virsh //进入virsh交互模式 欢迎使用 virsh,虚拟化的交互式终端。
全栈程序员站长
2022/09/21
1.8K0
virsh查看虚拟网络信息_kvm创建虚拟机
KVM虚拟机迁移
一、KVM宿主机高可用架构设计 宿主机故障,内部虚拟机可以不受影响,可以迁移走 负载均衡,当某个宿主机压力过大,可以将部分虚拟机迁移到其他机器,降低其负载。 1.1、架构设计 1.2、实验机器 机器 IP 角色 node1 192.168.122.100 KVM宿主机 node2 192.168.122.200 KVM宿主机 zutuanxue 192.168.122.1 NFS存储 1.3、架构部署 部署前准备 IP地址设置,保障机器间的通信 主机名设置与解析 关闭防火墙与selinux 时间同步
星哥玩云
2022/09/15
9000
KVM虚拟机迁移
麒麟系统V10 SP2 KVM virt-install 创建虚拟机
从ftp,http,nfs启动,如ftp://192.168.10.7/dvd;nfs:192.168.10.7:/dvd
Kevin song
2022/11/19
5K0
麒麟系统V10 SP2 KVM virt-install 创建虚拟机
统信服务器操作系统V20 1060e [kvm虚拟机磁盘在线扩容]
kvm虚拟机通过使用`attach-disk`命令在线新增虚拟磁盘,使用`blockresize`命令在线调整现有虚拟磁盘大小,增加存储空间并提升性能。虚拟机内部系统采用lvm逻辑卷管理技术,创建和管理逻辑卷,实现磁盘存储空间的动态管理。
Kevin song
2024/07/04
4990
统信服务器操作系统V20 1060e [kvm虚拟机磁盘在线扩容]
KVM 虚拟机冷、热迁移实践
虚拟机静态迁移是指虚拟机关机状态下,将虚拟机磁盘镜像文件和配置文件复制到另一台宿主机上,整个迁移过程系统处于关闭状态。
Kevin song
2023/12/11
6000
KVM 虚拟机冷、热迁移实践
OpenEuler 部署 KVM 虚拟化制作openstack镜像
内核模块导出了一个名为/dev/kvm的设备,该设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间
Kevin song
2023/12/04
1.8K0
OpenEuler 部署 KVM 虚拟化制作openstack镜像
KVM虚拟机管理
模板类似于生活中的模具,可以根据模具制作出很多一模一样的产品。模板在计算机中应用是比较多的,用户可以根据模板去批量生成应用。
星哥玩云
2022/09/15
1.1K0
KVM虚拟机安装、管理
KVM全称Kernel-based Virtual Machine,翻译过来是基于内核的虚拟机,实际它是Linux内核的一个模块。该模块将Linux变为一个Hypervisor,由Quramnet开发,支持x86、s390、Powerpc等CPU。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
用户8704835
2021/06/08
1.1K0
KVM--虚拟机备份还原(二十)
随着云计算,虚拟化在生产业务中的大规模推广,虚拟机的备份恢复显的尤为重要。面对勒索病毒,数据误删等事件,最重要的就是有“备份数据”可供恢复,从而解决数据丢失业务中断的问题。
Kevin song
2022/11/19
2.1K0
KVM管理虚拟机
在上一篇中,我们介绍了如何在 CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统。本篇则是介绍在KVM里安装完虚拟机后,如何使用KVM来管理虚拟机。
端碗吹水
2020/09/23
2K0
virsh命令行_怎么进入命令行窗口
使用libguestfs Linux工具可以在虚拟机无法启动的情况下对虚拟机内部进行检查。
全栈程序员站长
2022/09/21
2.6K0
KVM虚拟机总结
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
zhengzongwei
2019/07/30
1.2K0
KVM虚拟机总结
KVM 虚拟化技术
1.1 前言 1.1.1 什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器
惨绿少年
2018/03/30
6.1K0
KVM虚拟机热扩容
注意,此时添加的磁盘默认的是raw磁盘,我们创建的是qcow2磁盘,所以容量不对。
星哥玩云
2022/09/15
9320
KVM虚拟机热扩容
centos中KVM虚拟化
1.确认 CPU 已经支持虚拟化,intel 的 CPU 虚拟化技术叫 vmx,AMD 的 CPU 叫 svm
@凌晨
2020/05/28
7730
KVM专题(3)存储
Disk:物理硬盘存储 Iscsi:iSCSITarget后端存储 logical:逻辑卷的存储
py3study
2020/01/10
1.1K0
KVM专题(3)存储
KVM+Qemu+Libvirt实战
上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+Libvirt来进行kvm全虚拟化,创建虚拟机并管理。 kvm是用来虚拟化或者说模拟CPU、内存等硬件的。 QEMU只是用来虚拟化硬盘的 libvirt提供了整个虚拟机的管理,比如说虚拟机的启动,停止,创建,删除等等。 其实KVM+Qemu+Libvirt就是模拟了一个VMWare软件 环境:     宿主机:ubuntu16.04的server版  
用户1195962
2018/01/18
3.6K0
KVM+Qemu+Libvirt实战
相关推荐
kvm qcow2,raw 磁盘格式、磁盘存储策略介绍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验