在服务器上,常常须要启动数十个或者几十个虚拟机,按照咱们现有的方式是安装一个虚拟机,而后复制相应的份数。例如,一个虚机的镜像大小是4G,十个虚机的大小就须要占用40G空间。
事实上在目前为止里面尚未执行任何程序,这些空间都是分配,实际并不必定都要使用。那么是否可以实现用多少分配多少呢?分析下能够发现,每一个虚拟机里面的内核都是同样的,大部分时候咱们都不须要去修改里面的内核,是否可以共用内核?
Copy-On-Write模式为咱们提供了很好的解决方式,经过建立一个基础镜像(base image),里面把各个虚拟机都须要的环境都搭建好,而后基于这个镜像创建起一个个“增量镜像”(增量镜像的初始大小低于1M),每一个“增量镜像”对应一个虚拟机,虚拟机对镜像中全部的改变都记录在“增量镜像”里面,基础镜像始终保持不变。这样咱们创建十个虚拟机,须要的空间为:4G+10*1M=4G,一下节省了近36G的空间。服务器
对于咱们Flexbng的环境,cp/dp的虚机能够共用一个基础镜像,而后各自有本身的增量镜像。
好处有:
1)在部署环境时,须要拷贝的文件大小和磁盘占用空间就会下降不少,尤为是多cp/dp的环境。
2)基础镜像不会被修改,新拉虚机时能够快速建立个“增量镜像”使用flex
基本步骤:
1. 建立一个基础镜像flexbng-normal.qcow2, 该镜像包含OS和必需的软件包spa
image: flexbng-normal.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 2.4G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false日志
image: flexbng-base.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 1.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
3. 建立增量镜像flexbng-delta.qcow2
qemu-img create -f qcow2 -b flexbng-base.qcow2 flexbng-delta.qcow2orm
image: flexbng-delta.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 193K
cluster_size: 65536
backing file: flexbng-base.qcow2
Format specific information:
compat: 1.1
lazy refcounts: falseci
后面若是想将增量镜像中的修改合入到基础镜像中,须要执行commit命令:
qemu-img commit flexbng-delta.qcow2部署
实例展现:
在USB或者PXE部署时使用的增量镜像。虚拟机