zoukankan      html  css  js  c++  java
  • 虚拟机硬盘vmdk压缩瘦身并挂载到VirtualBox

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

    压缩vmdk

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

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

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

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

    vmdk挂载到VirtualBox

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

    没啥意外会报出如下错误

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

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

    so good,我们到VirtualBox安装目录C:Program FilesOracleVirtualBox

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

    输入

    VBoxManage internalcommands sethduuid C:UsersNeil.dockermachinemachinesdefaultdisk.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:yourDirdisk.vmdk
    

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

    参考:

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

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

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

  • 相关阅读:
    10.23继承
    10.22语法 class 类 面向对象概念 类与对象 对象的使用 绑定方法
    10.18
    10.16
    读书笔记-软技能:代码之外的生存指南
    git reset
    阿里云安装samba
    关于svn由于目标计算机积极拒绝,无法连接的解决办法
    yii2简单安装
    指定路径创建中文文件名并存入内容
  • 原文地址:https://www.cnblogs.com/edda/p/13375271.html
Copyright © 2011-2022 走看看