QEMU增量镜像制作

在服务器上,经常需要启动数十个或者几十个虚拟机,按照我们现有的方式是安装一个虚拟机,然后复制相应的份数。例如,一个虚机的镜像大小是4G,十个虚机的大小就需要占用40G空间。
事实上在目前为止里面还没有执行任何程序,这些空间都是分配,实际并不一定都要使用。那么是否能够实现用多少分配多少呢?分析下可以发现,每个虚拟机里面的内核都是一样的,大部分时候我们都不需要去修改里面的内核,是否能够共用内核?
Copy-On-Write模式为我们提供了很好的解决方式,通过创建一个基础镜像(base image),里面把各个虚拟机都需要的环境都搭建好,然后基于这个镜像建立起一个个“增量镜像”(增量镜像的初始大小低于1M),每个“增量镜像”对应一个虚拟机,虚拟机对镜像中所有的改变都记录在“增量镜像”里面,基础镜像始终保持不变。这样我们建立十个虚拟机,需要的空间为:4G+10*1M=4G,一下节省了近36G的空间。

对于我们Flexbng的环境,cp/dp的虚机可以共用一个基础镜像,然后各自有自己的增量镜像。
好处有:
1)在部署环境时,需要拷贝的文件大小和磁盘占用空间就会降低很多,尤其是多cp/dp的环境。
2)基础镜像不会被修改,新拉虚机时可以快速创建个“增量镜像”使用

基本步骤:
1. 创建一个基础镜像flexbng-normal.qcow2, 该镜像包含OS和必需的软件包

qemu-img info flexbng-normal.qcow2

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

  1. 清除基础镜像里面的临时文件(例如软件tar包、编译的文件、日志等等),然后退出虚机,并压缩基础镜像,压缩后的镜像为flexbng-base.qcow2。
    qemu-img convert -c -O qcow2 flexbng-normal.qcow2 flexbng-base.qcow2

qemu-img info flexbng-base.qcow2

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.qcow2

qemu-img info flexbng-delta.qcow2

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: false

后面如果想将增量镜像中的修改合入到基础镜像中,需要执行commit命令:
qemu-img commit flexbng-delta.qcow2

实例展示:
在USB或者PXE部署时使用的增量镜像。

转载于:https://my.oschina.net/u/1777508/blog/1926823

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值