快照及克隆
什么是快照
快照是数据存储的某一时刻的状态记录,也就是把虚拟机当前的状态保存下来(快照不是备份,快照保存的是状态,备份保存的是副本)
快照优点
速度快,占用空间小
快照工作原理
在了解快照原理前,首先需要知道两个概念:索引/数据和差分盘
索引和数据(index node / data block)
首先要了解,每一个文件系统都是有两部分组成的:索引和数据(index node / data block),
索引有时候也称为元数据metadata,如图:
index node 有时候也称为metadate(元数据),也叫元素,它是描述数据的数据,比如文件的名字,文件的大小,文件的权限,文件的指针(指针指向文件在硬盘上的物理位置)
所以,快照也叫:基于索引的快照(快照中只包含虚拟机磁盘文件的元数据,不包含真实的文件内容),元数据中只保存文件的描述信息和文件的指针,一个元数据占用256字节的空间大小,查找文件时,先读取文件的元数据,通过元数据的指针找到文件在硬盘的物理位置,从而找到文件。
总结一下:
metadate(元数据):文件的描述信息(文件的名字、大小、时间等及文件的指针:真实的物理数据在硬盘上的位置)
data block:真实的文件
举个不是太恰当的例子:比如有一张图片,放在硬盘上第三行第五列这个小格子内,我们想要打开这个文件,首先操作系统要先找到这个文件的索引(元数据metadate),我们这时可以看到这个文件名字叫“123.jpg”,大小是1MB等信息,当我们打开这个文件时,通过matedate中的指针,该指针指向了硬盘上第三行第五列这个小格子,操作系统找到这个小格子里的文件,从而可以打开文件让我们看到这个图片
差分盘
差分盘是一种与基础盘关联的磁盘类型,它记录了基础盘和自身之间的差异。具体来说,差分盘只存储了对基础盘的修改或增量数据,而不保存基础盘上已存在的数据。
创建快照其实就是创建了一块差分盘,当创建快照时,基础磁盘会置于只读状态,差分盘(快照空间)中会保留基础磁盘的索引信息,所以ROW快照后,虚拟机所有对磁盘的增删改查操作都会重定向到差分盘,从而不影响基础磁盘中已有的数据
计算快照(旧)
功能介绍
虚拟化计算层是基于KVM来实现的,KVM采用的是qcow2的磁盘格式,qcow2支持的快照方式为cow(写时复制),KVM在虚拟化计算层给qcow2打快照的时候,会将生成的快照空间一起保存在原有的qcow2文件中,在删除或恢复快照的时候调用底层的文件系统指令来清理qcow2文件中的快照空间
cow快照在写入(修改)数据时,IO会被放大三倍,更加消耗存储的IO性能,即需要将要修改的数据读出来,写到快照空间内,然后再将新的数据覆盖写到原位置,这样会带来写惩罚:一次写带来了更多的读操作
注意事项
1. 性能影响是因为KVM支持的COW快照技术导致的,打完快照之后数据写入的时候会放大IO(消耗存储的IO性能,新增数据不会对性能产生影响,修改数据时才会影响性能)
2. KVM的快照方案中,快照数据保存在原有的qcow2文件中,如果要满足删除快照对qcow2文件内快照区域进行清理,需要调用底层文件系统指令(如果底层使用ext3,ext4的文件系统,那就可以通过调用KVM的指令,来清除qcow2文件中的快照空间)
3. 深信服超融合使用的是自己开发的aSAN虚拟存储,aSAN文件系统的底层指令不支持删除qcow2文件中的快照空间,所以只能删除快照的索引数据
存储快照
深信服aSAN文件系统无法删除qcow2文件中的快照空间,为了解决这个问题,aSAN开发出了存储快照
存储快照就是在打快照的时候生成的快照空间,写在一个单独的qcow2文件里,而不是放在原来的qcow2文件里
存储快照在清理快照空间的时候,只需要将生成的qcow2文件删除掉即可
采用基于存储的快照方式
1. 采用ROW快照技术,减小对虚拟机性能的影响
2. aSAN底层支持删除快照时释放空间
注意事项
1. 存储快照只能存在于虚拟存储上,外置存储的虚拟机会使用老版本的快照方式
2. 两主机场景不支持存储快照及相关功能,包括快速克隆