这个问题其实困扰了挺久的,一直没闲情去解决,网上搜索过很多压缩方法感觉都太麻烦太复杂,因最近在windows上搞docker就一并解决了。

压缩vmdk

首先下载DiskGenius,这工具很牛X,相信很多人都用过其硬盘分区、合并、数据恢复等功能,可谓相当强大,甚至虚拟硬盘文件也不放过。。。

首先把要压缩的虚拟硬盘vmdk打开(菜单:“硬盘 –> 打开虚拟硬盘文件”)。打开后就可以在左边的窗口中看到加载上的虚拟磁盘了。

新建一个容量不小于源虚拟硬盘的虚拟硬盘vmdk文件

选择(菜单:“工具 –> 克隆硬盘”),弹出对话框后,在“选择源硬盘”时选择要压缩的源vmdk虚拟硬盘,在“选择目标硬盘”时选择刚刚我们新建的vmdk虚拟硬盘,然后点“开始”等待压缩完成即可。

vmdk挂载到VirtualBox

先把源vmdk备份,再把压缩好的vmdk复盖源vmdk,之后启动虚拟机。。。

没啥意外会报出如下错误

UUID {00000000-0000-0000-0000-000000000000} of the medium
'C:\Users\Neil\.docker\machine\machines\default\disk.vmdk' does not match the value
{131b2a66-a477-41dd-b920-1a0a460d3ec8} stored in the media registry
('C:\Users\Neil\.VirtualBox\VirtualBox.xml'). 返回 代码:
E_FAIL (0x80004005)
组件:
MediumWrap
界面:
IMedium {4afe423b-43e0-e9d0-82e8-ceb307940dda}

大概意思是压缩后的vmdk文件的UUID和原来注册表里的UUID不匹配

so good,我们到VirtualBox安装目录C:\Program Files\Oracle\VirtualBox

在目录空白处 shift+右建 –> 选择“在此处打开命令窗口”

输入

VBoxManage internalcommands sethduuid C:\Users\Neil\.docker\machine\machines\default\disk.vmdk 131b2a66-a477-41dd-b920-1a0a460d3ec8

返回要修改的UUID值就成功了

UUID changed to: 131b2a66-a477-41dd-b920-1a0a460d3ec8

vmdk移动到其它盘

disk.vmdk从C盘移到其它盘,然后在VirtualBox中将虚拟硬盘指向新的disk.vmdk,这时会报错

错误:打开虚拟硬盘失败,UUID already exists

因为这个UUID在注册表里已经存在,我们用命令修改一下vmdk的路径

VBoxManage internalcommands sethduuid X:\yourDir\disk.vmdk

然后VirtualBox中重新指向这个disk.vmdk就好了

参考:

http://www.diskgenius.cn/exp/compressvirtualdisk.php

https://www.cnblogs.com/yjf512/p/4338985.html

来源:虚拟机硬盘vmdk压缩瘦身并挂载到VirtualBox

虚拟机硬盘vmdk压缩瘦身并挂载到VirtualBox的更多相关文章

  1. SpringBoot-Maven打包压缩瘦身

    SpringBoot-Maven打包压缩瘦身 一.Spring Boot 可执行 jar 分析 1.1 打包 1.2 两种 jar 的比较 1.3 一次打包两个 jar 二.SpringBoot迭代发 ...

  2. VirtualBox VM 空间瘦身记(vmdk)

    本文地址:https://www.ebpf.top/post/shrink_vbox_vmdk_size 在使用 VirtualBox( VMDK 模式)管理虚拟机的时候,我们经常会遇到一些编译安装场 ...

  3. 三种方法给Vmware虚拟机占用空间清理瘦身

    随着VMware虚拟机使用时间的增长,其所占用的空间也越来越大,本文来说说怎么给VMware虚拟机占用的空间进行瘦身. 方法一:VMware自带的清理磁盘这个方法是VMware自带,具有普适性,对快照 ...

  4. 四种方法给Vmware虚拟机清理瘦身

    随着VMware虚拟机使用时间的增长,其所占用的空间也越来越大,本文来说说怎么给VMware虚拟机占用的空间进行瘦身. **方法一:VMware自带的清理磁盘 **这个方法是VMware自带,具有普适 ...

  5. VirtualBox虚拟机磁盘瘦身

    操作系统 : windows7_x64 VirtualBox 版本 : 4.3.28 原理: 使用0填充虚拟系统磁盘,然后删除填充文件,再使用VBoxManage进行压缩. Linux系统磁盘瘦身 一 ...

  6. APK瘦身记,如何实现高达53%的压缩效果

    作者:非戈@阿里移动安全 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式,关于这个话题其实是一个老生常谈的题目,不论是公司内部,还是外部网络,前人前辈已经总结出很多方法和规律. ...

  7. app瘦身和包压缩技术有什么区别?

    APP瘦身 针对app文件中的文件进行优化,利用素材的拉伸,祛除不必要的文件,优化png, jpg素材,压缩音视频素材等方式实现app文件的减小. 包压缩技术 所谓包压缩,顾名思义就是将手游的安装包体 ...

  8. APK瘦身记,怎样实现高达53%的压缩效果

    作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...

  9. 1分钟为Win10瘦身!把吃掉的硬盘找回来

    很多小伙伴升级完Win10后都发现C盘变小了,不少人以为这大概就是Win10太占磁盘空间了.但事实上,Win10和以前的操作系统一样,对于C盘空间并没有什么太高要求.出现这个问题的主要原因,是Win1 ...

随机推荐

  1. nginx 关于client_max_body_size client_body_buffer_size配置

    最近生产环境在这两个参数之间遇到过几次坑.这里记录下.client_max_body_sizeclient_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Conten ...

  2. 5.Django cookie

    概述 1.获取cookie request.COOKIES['key'] request.COOKIES.get('key') request.get_signed_cookie(key, defau ...

  3. linux-centerOs6.8安装nginx与配置

    一:安装nginx 1.安装gcc(命令:yum install gcc)备注:可以输入gcc -v查询版本信息,查看是否自带安装 2.安装pcre(命令:yum install pcre-devel ...

  4. Kafka分区与消费者的关系

    1.  前言 我们知道,生产者发送消息到主题,消费者订阅主题(以消费者组的名义订阅),而主题下是分区,消息是存储在分区中的,所以事实上生产者发送消息到分区,消费者则从分区读取消息,那么,这里问题来了, ...

  5. redis 系列19 客户端

    一. 概述 Redis服务器是可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复.通过使用I/O多路复用技术实现的文件事 ...

  6. Java基础14:离开IDE,使用java和javac构建项目

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  7. 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件

    代码: using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DemoWebControl ...

  8. MongoDB Export & Import

    在使用MongoDB数据库的过程中,避免不了需要将数据进行导入和导出的工作,下面为具体的用法.注意 不同的数据库版本可能存在略微的差异,所以在使用时,先查看 --help 来进行确认.下面的为3.6版 ...

  9. Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

    一.环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴.具体只讲述Jenkins配置以及整个流程的实现. 1.JDK(或JRE)及Java环境变量配置,我用的是JDK1.8.0_1 ...

  10. MVC_分页方法调用

    /// <summary> /// 分页页脚 /// </summary> /// <param name="currentPageIndex"> ...