虚拟机硬盘空间压缩

总结说明

环境说明:

  • VMDK硬盘格式
  • VirtualBox虚拟机
  • Windows机器,centos虚拟机,机械硬盘

压缩前后空间说明

  • 原VMDK空间 776G
  • 转换VDI格式后 492G
  • 压缩VDI格式后 492G
  • 转换为VMDK格式后 484G
    减少了37.88% 压缩率为62.11%

存在疑问,实际df -h查看空间,实际只使用了 51+67远远 不到 484G,差距甚大 ???

[root@WOM ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_xcdw-lv_root
                      493G   51G  417G  11% /
tmpfs                 7.7G  1.2G  6.5G  16% /dev/shm
/dev/sda1             477M  116M  336M  26% /boot
/dev/mapper/vg_xcdw-lv_home
                      493G   67G  401G  15% /home
share                 1.9T  1.8T   56G  98% /media/sf_share
share_c               237G  199G   38G  85% /media/sf_share_c
share_d               239G  199G   40G  84% /media/sf_share_d
share_e               1.9T  1.8T   56G  98% /media/sf_share_e

在关闭虚拟机,导出备份时,出现如下错误
Virtual Box UUID does not match the value stored in the media registry
解决步骤:

  • 重命名原有VMDK/VDI文件
  • 管理-虚拟介质管理 释放/删除无效VMDK文件**(删除前必须确认名称已修改或文件已备份)**
  • 改回原有VMDK/VDI文件名称
  • 设置-存储-添加控制器(VMDK/VID硬盘)即可。

压缩步骤

网上的说法是:“虚拟机上的Linux等系统认为.vmdk是一个硬盘,将文件删除后其可用空间可以恢复,重新利用;而对windos系统来说.vmdk是一个文件其变大后是不可能自动变小的。 针对以上原理,已变大的.vmdk文件是无法减肥的,即使你将所有数据删除,此文件依占用windows的硬盘空间仍然不会改变。”

虚拟机操作

  • 清理虚拟机文件
  • 填0操作
sudo dd if=/dev/zero of=/EMPTY  bs=1M 
sudo rm -f /EMPTY

物理机操作

  • 物理主机 执行 VBoxManage modifyhd /the-path-of-VDI.vdi –compact”
    如果是VMDK格式,需要先转换格式
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi   # 空间减小
VBoxManage modifyhd cloned.vdi --compact   # 进行压缩,但是实际空间未减小
VBoxManage clonehd "cloned.vdi" "compressed.vmdk" --format vmdk

VMDK 的压缩,也可以使用 vmware-vdiskmanager,需要一条命令(参考)

vmware-vdiskmanager -k disk.vmdk

操作日志

虚拟机填0操作。 大量消耗IO. 耗时约10min

[root@WOM ~]# sudo dd if=/dev/zero of=/EMPTY  bs=1M 
dd: 正在写入"/EMPTY": 设备上没有空间
记录了450948+0 的读入
记录了450947+0 的写出
472852500480字节(473 GB)已复制,1329.29 秒,356 MB/秒
[root@WOM /]# du -ah --max-depth=0 /EMPTY
426G	EMPTY

VMDK转换为VDI格式。 大量消耗IO 耗时约10小时

C:Program FilesOracleVirtualBox>VBoxManage clonehd E:3.虚拟机scfanscfan02-disk001.vmdk E:1.vdi --format vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vdi'. UUID: f1883085-c5f2-49b2-a36d-12407240ff4d

VDI压缩。 大量消耗IO 耗时约3小时

 C:Program FilesOracleVirtualBox>VBoxManage modifyhd E:1.vdi  --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

VDI转换为VMDK。大量消耗IO 耗时约3小时

C:Program FilesOracleVirtualBox>VBoxManage clonehd E:1.vdi E:1.vmdk --format vmdk
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vmdk'. UUID: 44f44117-69d8-487d-8d1f-d9175d9558ab
原文地址:https://www.cnblogs.com/superscfan/p/12257021.html