KVM虚拟机的模版导出,通常都是直接用qemu-img命令可以将默认的raw格式或者qcow2格式的磁盘文件压缩后导出,指令如下:

//将默认raw格式的磁盘,简单压缩转换成qcow2格式
#qemu-img convert -c -f raw -O qcow2 vm500G.raw /path/new-vm500G.qcow2//将默认qcow2格式的磁盘,导出为简单压缩后的qcow2格式
#qemu-img convert -c -O qcow2 vm500G.qcow2 new.img.qcow2

以上两种方法都能在一定程度上压缩减小导出后的镜像文件体积;但仅限于在虚拟机刚安装部署好,还没有进行过大量数据读写处理的情况下;

假如虚拟机磁盘大小分配40G,刚装好的操作系统加入占用了5G,那么通过以上的方式压缩导出的镜像文件可能也就只占4~5G左右;这是因为该磁盘镜像的大量的剩余空间都还没有被虚拟机的操作系统使用到(大量剩余block块都是空白的,未写入过数据)所以在导出的过程中,这些空白的block就会被压缩甚至忽略掉;所以这样压缩出来的缩效果还是很不错的;

但是,假如该虚拟机在装好后之后,有在磁盘上产生并存储过一个2G的大文件,尽管当前已经从虚拟机中彻底删除了这个大文件,虚拟机内的磁盘空间也显示剩余空间已经释放出来了,系统占用空间会变成跟系统刚装完时一样只有5GB;但此时再使用上面的指令对磁盘镜像文件进行压缩导出,你就会发现导出的文件体积比之前至少会多出2GB的体积;

这是因为虚拟机内删除文件,实际只是在分区表中把文件的索引给删除了,其2G文件的物理数据还是依然占用着磁盘上对应的block块的;此时在kvm下用qemu-img info指令就可以清楚看到该虚拟磁盘镜像的物理占用空间(disk size)比之前也变大了2GB;

精简导出

那么有没有办法只导出当前虚拟机内实际占用的有效数据呢?将所有已经删除了的文件和其对应的磁盘block块都忽略掉,不要导出到我们的镜像文件中,以最大程度缩减导出来的文件体积!

方法就是在导出镜像之前,先在虚拟机系统的内部,对所有未使用,以及所有剩余可使用的磁盘空间进行全面置零填充操作,可以简单理解为将当前所有未存储有效数据的block(含已删除的文件block)全都进行写0覆盖,然后再进行镜像压缩导出,就可以忽略所有这些无用的数据空间了;

虚拟机内部写零操作

#dd if=/dev/zero of=/null.dat   //创建一个全0的大文件,占满所有的剩余磁盘空间,需要很久时间
#rm -f /null.dat                //删除这个文件

KVM下的导出操作

执行镜像文件导出操作前,虚拟机必须要是处于关机状态

针对raw格式虚拟磁盘文件精简导出

#cp --sparse=always vm500G.raw vm500G-new.raw   //--sparse=always稀疏拷贝,忽略全0数据
#qemu-img convert -c -f raw -O qcow2 vm500G.raw vm500G.qcow2

针对原本就是qcow2格式的虚拟磁盘文件精简导出

#qemu-img convert -c -O qcow2 vm500G.qcow2 vm500G-mini.qcow2

实测导出数据大小对比

raw文件实际大小disk size: 5.8GB
直接导出qcow2镜像大小: 4.5GB
全置零后导出qcow2镜像大小: 2.2GB

KVM虚拟机文件优化导出最小化体积的qcow2镜像文件相关推荐

  1. KVM虚拟机磁盘精简导出

    KVM虚拟机的模版导出,通常都是直接用qemu-img命令可以将默认的raw格式或者qcow2格式的磁盘文件压缩后导出,指令如下: //将默认raw格式的磁盘,简单压缩转换成qcow2格式 #qemu ...

  2. RAMdisk保存文件方案,解决关机后无盘镜像文件没了的方案

    RAMdisk保存文件方案,解决关机后 无盘 镜像文件没了的方案 内存大了用不完 可以用ramdisk在内存中虚拟一个磁盘 把常用软件.系统缓存.浏览器缓存.bt下载都放到这个 虚拟磁盘 中 速度又快 ...

  3. 安装服务器操作系统的iso文件,iso文件怎么安装,详细教您iso系统镜像文件怎么安装...

    ISO扩展名的文件也称为虚拟镜像文件,通俗地讲这个ISO文件相当于一个光盘文件,而使用这种文件最大的好处是,可以不用光驱也能使用软件打开安装操作系统,这对没有光驱的笔记本电脑重装操作系统很有用.下面, ...

  4. linux找不到镜像文件,为什么启动u盘找不到镜像文件_u盘启动找不到映像文件的解决方法...

    现在很多人都喜欢用u盘装系统,可是却有人发现u盘启动找不到iso镜像文件,pe装系统找不到镜像文件是怎么回事呢?相信很多人都遇到过这种情况,那么为什么启动u盘找不到镜像文件呢?其实这是因为U盘只是制作 ...

  5. Red Hat6 Linux镜像文件,如何下载红帽企业版Linux的ISO镜像文件,如何开始安装红帽企业版Linux?...

    发行版本:红帽企业版 Linux,所有版本 问题: 如何下载红帽企业版 Linux 的 ISO 镜像文件,以便从光盘安装红帽企业版 Linux? 备注:如果您想下载红帽企业版Linux的评估版,需要首 ...

  6. 文件夹的最小化时,上面的名字。

    我们在把文件夹最小化时,常常会带上路径,所以看着很不方便~ [在标题栏显示完整路径]不要选中,那么,你看到的就是这个文件夹的名字,不会在前面加上一堆路径.

  7. xen服务器池虚拟机自启,给在XenCenter管理的XenServer服务器上创建的虚拟机共享(上传)宿主机的镜像文件...

    以win10为例,首先将要上传的镜像文件放在一个文件夹里,然后设置文件夹为共享文件夹.此处新建一个用户.步骤为"控制面板"-"用户账户"-"管理其他账 ...

  8. Linux 系统裁剪--制作一个最小化的Linux iso镜像

    1.前言 一直以来都想制作一个最小化的Linux系统,这个小系统需要有常用的Linux 命令,以及定制化的某些功能.可是由于种种原因一直没能实现,最近终于有时间把它做了出来. 本文所说的精简的Linu ...

  9. centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件

    基本原理 nbd(网络块设备: Network Block Device),利用qemu-nbd将qemu虚拟机镜像挂载到Linux上. 展开来讲,nbd可以将一个远程主机的磁盘空间,当作一个块设备来 ...

最新文章

  1. 算法练习day7——190325(比较器、不基于比较的排序、maxGap、数组实现栈和队列、minStack)
  2. 【Java12】tomcatservlet(nginx,web.xml,生命周期,适配器优化),requestresponse(请求转发,登陆案例(1),重定向,文件下载)
  3. 初始Angularjs2
  4. WordPress独立资源下载页面插件 基于美化Xydown插件
  5. python怎么启动服务器_如何在Python单元中从命令行启动服务器
  6. ADO.NET数据库应用开发_ExtendedProperties属性
  7. Python基础十四——内置函数和匿名函数
  8. 手动搭建vue+node单页面(一)
  9. 小程序使用腾讯API定位的全过程(详细)
  10. IBUS-WARNING **: 09:23:08.407: The owner of /home/cl/.config/ibus/bus is not root!
  11. Java 反射到底慢在哪?
  12. 程序员如何做SOHO一族接私单做呢?
  13. Python爬虫:给我一个链接,虎牙视频随便下载
  14. RT-Thread 模拟器 simulator 搭建 LVGL 的开发调试环境
  15. 【卷积神经网络】卷积神经网络(Convolutional Neural Networks, CNN)基础
  16. 手机如何测光照度_照度测定方法
  17. 评高级用计算机合格证吗,副教授评审什么情况下可以免计算机合格证
  18. 搭建自己的NAS 系统
  19. c语言编写五子棋报告,c语言报告五子棋.pdf
  20. 【LeetCode】463. 岛屿的周长

热门文章

  1. SpringBoot笔记:SpringBoot启动参数配置
  2. springboot结果集空值处理
  3. HTML---百度新闻轮播图--定位练习
  4. mysql创建表示对属性进行说明_mysql基础
  5. opencv 通过标定摄像头测量物体大小_视觉激光雷达信息融合与联合标定
  6. linux 无线 网桥,基于Linux无线网桥及无线网络设备驱动分析与研究
  7. 楼层标高怎么引上去_【强烈推荐】工程图纸怎么看?
  8. python动态显示进度条_实例详解python如何轻松实现动态进度条
  9. Linux accept tcp,Linux TCP accept without SYN|ACK
  10. 主成分分析法怎么提取图片中的字_在主成分分析里,如何提取主成分