找回密码
 注册
查看: 1054|回复: 1

kvm虚机导出文件后,精简文件用于openstack镜像

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-3-28 09:33:11 | 显示全部楼层 |阅读模式
KVM下的导出操作' w$ O' a: H% m$ e1 j# d  i$ F
执行镜像文件导出操作前,虚拟机必须要是处于关机状态
: t8 X7 g* Q+ z. b3 q0 y3 a
5 ^' K3 R2 Y! @* w) {: l& ]针对raw格式虚拟磁盘文件精简导出/ U# U/ s$ @' I0 D

8 s9 F6 }" {/ ]7 C2 ^' U#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.qcow25 y  X0 i( R* N7 O# `6 k: I
实测导出数据大小对比
raw文件实际大小disk size: 5.8GB
3 Z; U% ?1 v/ X: {$ L" b直接导出qcow2镜像大小: 4.5GB- x( G$ m. L7 F  A& K
全置零后导出qcow2镜像大小: 2.2GB

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-3-28 09:34:59 | 显示全部楼层
那么有没有办法只导出当前虚拟机内实际占用的有效数据呢?将所有已经删除了的文件和其对应的磁盘block块都忽略掉,不要导出到我们的镜像文件中,以最大程度缩减导出来的文件体积!
2 R! n7 q* n: i( T6 i5 C2 i# ^$ ]# V7 u. O: N  r  }/ [
方法就是在导出镜像之前,先在虚拟机系统的内部,对所有未使用,以及所有剩余可使用的磁盘空间进行全面置零填充操作,可以简单理解为将当前所有未存储有效数据的block(含已删除的文件block)全都进行写0覆盖,然后再进行镜像压缩导出,就可以忽略所有这些无用的数据空间了;. u3 N# I& g6 i6 c& g8 x) H

# O' L! h+ ~7 v6 u虚拟机内部写零操作
- O$ A0 h' v+ p, W  m3 n7 q' f& C! I6 w% G- F
#dd if=/dev/zero of=/null.dat   //创建一个全0的大文件,占满所有的剩余磁盘空间,需要很久时间, u0 F; P7 b, ^6 j+ A* D: a
#rm -f /null.dat                //删除这个文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:44 , Processed in 0.016226 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表