zoukankan      html  css  js  c++  java
  • 虚拟机硬盘空间压缩

    总结说明

    环境说明:

    • 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
    
  • 相关阅读:
    mode
    Jmeter获取不到cookie(备注:前面和后面的几个步骤都可以获取到cookie)
    [BAT]批处理脚本双击可运行,但在定时计划任务中无法执行(当前工作路径不对导致的)
    匹配数字、字母和?%&=-_这几个符号的正则表达式
    在jmeter的beanshell中用java获取系统当前时间
    Jmeter中正则表达式不区分大小写进行匹配
    通过BeanShell获取UUID并将参数传递给Jmeter
    JAVA Get UUID
    Jmeter报文体包含过大附件导致请求报文发送失败的解决办法
    [BAT]操作系统定时任务调用批处理忽略error继续运行的方法
  • 原文地址:https://www.cnblogs.com/superscfan/p/12257021.html
Copyright © 2011-2022 走看看