缩小虚拟镜像实际占用空间

缩小虚拟镜像实际占用空间的大小

(原文链接:http://openwares.net/linux/reduce_qcow2_image_size_kvm.html )

一、原理:

qcow2的特点,客户机需要时才分配存储空间。但是当从客户机删除了很多文件,释放了很多空间时,KVM主机端完全看不到qcow2虚拟磁盘文件有变小的迹象。这是因为现在的文件系统都有一个特点,删除文件时并没有真正的清除文件的内容,只是简单的做了标记,这样删除文件会很迅速,只有当用到这些空间时才重新写入新的数据。这也是反删除甚至反格式化软件存在的基础。所以要想缩小qcow2虚拟磁盘文件的大小,就要真正释放这些未使用的空间才可以。

基本思路就是用0填充未使用的客户机磁盘空间,然后用qemu-img转换磁盘镜像文件,转换后的磁盘镜像文件将只包含所有已使用的磁盘空间。

二、步骤:

  1. 使用dd命令将客户机未使用的磁盘空间用0填满
    $dd if=/dev/zero of=~/junk
    dd: writing to `/home/***/junk’: No space left on device
    然后
    $rm junk
    关闭客户机

  2. 转换磁盘镜像文件
    $qemu-img convert -O qcow2 debian.qcow2 debian_new.qcow2

转换完成后可以看到debian_new.qcow2占用的KVM主机存储空间与客户机使用的磁盘空间基本是一致的。然后用新的磁盘镜像文件debian_new.qcow2启动客户机即可。


三、具体步骤:

1、从宿主主机端查看镜像

qemu-img info original.img

image: original.img

file format: qcow2

virtual size: 20G (21474836480 bytes)

disk size: 2.8G

cluster_size: 65536

2、启动进入虚拟机,使用dd命令将客户机未使用的磁盘空间用0填满

dd if=/dev/zero of=~/temp

rm temp

shutdown -h now

3、从KVM主机端查看镜像

1)转换磁盘镜像文件

qemu-img convert -O qcow2 original.img new.img

2)查看转换后的信息

qemu-img info new.img

image: new.img

file format: qcow2

virtual size: 20G (21474836480 bytes)

disk size: 1.2G

cluster_size: 65536




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值