易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 1051|回复: 1
收起左侧

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

[复制链接]
发表于 2022-3-28 09:33:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
KVM下的导出操作
& {  ]8 W* a9 R7 M2 [, v
执行镜像文件导出操作前,虚拟机必须要是处于关机状态0 }  m+ P, m( x1 s0 ?( Z# Z

6 X' u: N5 K5 D. {9 X$ E1 v针对raw格式虚拟磁盘文件精简导出+ T. d9 o% x6 {. P: W# c- a
" Z& X, E2 h- m7 o; R
#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
* ^3 V6 H) l3 D& [- b' S0 b实测导出数据大小对比
raw文件实际大小disk size: 5.8GB
( p! _: u5 n2 s( K3 W) e" X直接导出qcow2镜像大小: 4.5GB
6 s( b$ ~9 R; h% l全置零后导出qcow2镜像大小: 2.2GB
 楼主| 发表于 2022-3-28 09:34:59 | 显示全部楼层
那么有没有办法只导出当前虚拟机内实际占用的有效数据呢?将所有已经删除了的文件和其对应的磁盘block块都忽略掉,不要导出到我们的镜像文件中,以最大程度缩减导出来的文件体积!
) G, q9 w; y9 @# l" X" B9 h% w( P$ k8 _8 T- j
方法就是在导出镜像之前,先在虚拟机系统的内部,对所有未使用,以及所有剩余可使用的磁盘空间进行全面置零填充操作,可以简单理解为将当前所有未存储有效数据的block(含已删除的文件block)全都进行写0覆盖,然后再进行镜像压缩导出,就可以忽略所有这些无用的数据空间了;1 ?5 K$ h2 s- A
' {! a8 }. e! J  N. }
虚拟机内部写零操作6 _3 l  C, \% C6 ^1 ]# a- s

# e. T7 d1 y# b: M! H& Z#dd if=/dev/zero of=/null.dat   //创建一个全0的大文件,占满所有的剩余磁盘空间,需要很久时间
: z  a3 p6 b2 n3 t$ k& d# V0 j, [- R#rm -f /null.dat                //删除这个文件
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 07:16 , Processed in 0.048432 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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