前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >kvm-虚拟机快照(外部快照)

kvm-虚拟机快照(外部快照)

作者头像
运维小路
发布2024-11-05 20:47:01
发布2024-11-05 20:47:01
9800
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。

我们在上一小节的快照中对于一个空系统做快照,大概会增加200m的空间,如果是一个使用频繁的文件呢,而且把快照文件和原始文件存储在一起,持续增加快照虽然不会把这个qcow2文件打满,但是它会持续增加大这个文件(比如定义一个虚拟机qcow2文件是20g,但是通过持续做快照,可以达到上百G,甚至更大)。

讲外置快照之前,我们先学习一个概念,写实复制

写时复制(Copy-on-Write,COW)技术是一种在计算机领域广泛应用的优化技术,尤其在虚拟化、文件系统和数据库等领域发挥着重要作用。以下是关于写时复制技术的详细介绍:

基本概念

  1. 定义:
    • 写时复制是一种在进行写入操作时才复制数据的技术。在初始状态下,多个对象共享相同的数据副本。当其中一个对象需要进行写入操作时,系统会先复制一份原始数据,然后在新的副本上进行写入操作,从而避免了不必要的复制开销。
  2. 原理: 简单来说,比如有一个目录下有abc3个文件 这时候有ABC这3个人都可以看到这个3个文件,当A需要写入a文件的时候,系统会把a文件复制一份,然后在新的副本进行写操作;如果b这个时候要要写另外一个文件,它也会把要写的这个文件复制一个副本出来,如下图。
  • 当创建一个新的对象或者进行数据复制时,系统并不是立即复制所有的数据,而是仅仅创建一个指向原始数据的引用。这样,多个对象可以共享同一份数据,从而节省了存储空间和复制时间。
  • 当某个对象需要进行写入操作时,系统会检测到这个操作,并在写入之前先复制一份原始数据。然后,对新的副本进行写入操作,而其他共享原始数据的对象不受影响。

创建外部快照

代码语言:javascript
代码运行次数:0
复制
# 名字,路径自定义
virsh snapshot-create-as \
centos31.207 \
snap1  \
--diskspec vda,file=/data/image/centos31.207_1.img \
--disk-only \
--atomic

第一次创建快照的时候,原始镜像文件就不再写入,所有写入操作就写到创建的快照文件里面;当执行第二次创建快照的时候,第一个镜像文件也不再写入,而是写到第二个快照文件里面。

并且我们在这个主机对应的xml里面也可以看到关于快照文件的说明。

代码语言:javascript
代码运行次数:0
复制
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/image/centos31.207_2.img'/>
      <backingStore type='file'>
        <format type='qcow2'/>
        <source file='/data/image/centos31.207_1.img'/>
        <backingStore type='file'>
          <format type='qcow2'/>
          <source file='/data/image/centos31.207.img'/>
        </backingStore>
      </backingStore>

其中最前面的文件就是正在读写的文件,其他2个文件就是我们的历史文件。

和前面的写时复制对比 早些的31.207.img和31.201_1.img可以理解成底层的文件,是只读的,最新的文件31.207_2.img 则是可读可写的。

我们在稍微延申一下,是不是可以使用一个基础镜像,然后创建的虚拟机都是一个快照,这样我们就可以复用基础镜像,创建虚拟机实际就只做一个快照的时间,创建的虚拟机的速度就会很快,而且还可以节约磁盘。因为一个普通的linux至少在2G左右,创建10个就需要20G,如果用刚才的技术,2G的基础镜像和10个快照(每个200M)上一小节的数据,就可以节约16G的空间。

再从镜像方面来延申下,如果一个基础镜像,只包含部分内容,以后这个基础镜像+不同的快照就可以生成各种配置的镜像,也可以节约空间。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档