作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。
我们在上一小节的快照中对于一个空系统做快照,大概会增加200m的空间,如果是一个使用频繁的文件呢,而且把快照文件和原始文件存储在一起,持续增加快照虽然不会把这个qcow2文件打满,但是它会持续增加大这个文件(比如定义一个虚拟机qcow2文件是20g,但是通过持续做快照,可以达到上百G,甚至更大)。
讲外置快照之前,我们先学习一个概念,写实复制
写时复制(Copy-on-Write,COW)技术是一种在计算机领域广泛应用的优化技术,尤其在虚拟化、文件系统和数据库等领域发挥着重要作用。以下是关于写时复制技术的详细介绍:
基本概念
创建外部快照
# 名字,路径自定义
virsh snapshot-create-as \
centos31.207 \
snap1 \
--diskspec vda,file=/data/image/centos31.207_1.img \
--disk-only \
--atomic
第一次创建快照的时候,原始镜像文件就不再写入,所有写入操作就写到创建的快照文件里面;当执行第二次创建快照的时候,第一个镜像文件也不再写入,而是写到第二个快照文件里面。
并且我们在这个主机对应的xml里面也可以看到关于快照文件的说明。
<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的空间。
再从镜像方面来延申下,如果一个基础镜像,只包含部分内容,以后这个基础镜像+不同的快照就可以生成各种配置的镜像,也可以节约空间。