作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:
1.虚拟化介绍
2.kvm基本使用
3.kvm进阶使用(本小节属于)
4.kvm技术原理
5.vmware介绍&使用
6.小结
我们在上一小节的快照中对于一个空系统做快照,大概会增加200m的空间,如果是一个使用频繁的文件呢,而且把快照文件和原始文件存储在一起,持续增加快照虽然不会把这个qcow2文件打满,但是它会持续增加大这个文件(比如定义一个虚拟机qcow2文件是20g,但是通过持续做快照,可以达到上百G,甚至更大)。
讲外置快照之前,我们先学习一个概念,写实复制
写时复制(Copy-on-Write,COW)技术是一种在计算机领域广泛应用的优化技术,尤其在虚拟化、文件系统和数据库等领域发挥着重要作用。以下是关于写时复制技术的详细介绍:
基本概念
- 定义:
- 写时复制是一种在进行写入操作时才复制数据的技术。在初始状态下,多个对象共享相同的数据副本。当其中一个对象需要进行写入操作时,系统会先复制一份原始数据,然后在新的副本上进行写入操作,从而避免了不必要的复制开销。
-
原理:
简单来说,比如有一个目录下有abc3个文件 这时候有ABC这3个人都可以看到这个3个文件,当A需要写入a文件的时候,系统会把a文件复制一份,然后在新的副本进行写操作;如果b这个时候要要写另外一个文件,它也会把要写的这个文件复制一个副本出来,如下图。
-
当创建一个新的对象或者进行数据复制时,系统并不是立即复制所有的数据,而是仅仅创建一个指向原始数据的引用。这样,多个对象可以共享同一份数据,从而节省了存储空间和复制时间。
-
当某个对象需要进行写入操作时,系统会检测到这个操作,并在写入之前先复制一份原始数据。然后,对新的副本进行写入操作,而其他共享原始数据的对象不受影响。
创建外部快照
# 名字,路径自定义
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的空间。
再从镜像方面来延申下,如果一个基础镜像,只包含部分内容,以后这个基础镜像+不同的快照就可以生成各种配置的镜像,也可以节约空间。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。