首页 文章

如何调整VirtualBox vmdk文件的大小

提问于
浏览
471

我的虚拟机磁盘空间不足,这是一个vmdk,需要调整虚拟映像的大小 . 使用命令调整大小

vboxmanage modifyhd Machine-disk1.vmdk --resize 30720

给出错误

Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

如何调整vmdk图像的大小?

16 回答

  • 707

    是的,Brian,你是对的:这些是步骤,但如果你想结束一个vmdk硬盘(也许你有兴趣在vwmare中使用磁盘),你又错过了一步 . 所以完整的方法是:

    VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
    VBoxManage modifyhd "cloned.vdi" --resize 51200
    VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
    

    以上将调整硬盘大小为50GB(50 * 1024MB) .

    To complete things 你也需要调整驱动器的大小!要实现此目的,您可能需要下载gparted iso并从该iso启动以调整驱动器大小(从虚拟机设置中选择iso) .

    附:如果您的新尺寸太小,即使使用新的vdi文件也会出现相同的错误 .

  • 19

    我能够通过克隆它然后修改和调整大小来调整vmdk的大小 .

    vboxmanage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
    vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
    
  • 39

    我在Mac主机上有一个Windows 7客户端,这篇文章非常有帮助 . 谢谢 .

    我想补充一点,我没有使用gparted . 我这样做了:

    • 启动新的放大的vmdk图像 .

    • 转到“开始”,右键单击“计算机”并选择“管理” .

    • 单击“磁盘管理”

    • 你应该在你的(我的情况下)C盘上看到一些灰色的空间

    • 右键单击C驱动器,然后选择“扩展卷” .

    • 选择尺码然后去

    甜!我更喜欢使用第三方工具,其中包含有关数据丢失的警告 .

    干杯!

  • 5

    VBoxManage可以解决问题,但不要忘记你必须使用 GParted 或其他工具来分配用 VBoxManage 创建的可用空间 .

    Have a look to my blog post 获取详细信息和分步截图 .

  • 3

    实际上,只需要这些命令:

    VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
    VBoxManage modifyhd "cloned.vdi" --resize 51200
    

    然后,您可以在Virtualbox GUI存储中选择cloned.dvi .

    之后,启动虚拟窗口并展开C盘作为Code Chops的方法 .

    没有必要将* .vdi文件转换回* .vmdk文件 .

  • 30

    由于这是一个vmdk文件,您可以使用VMWare的 vdiskmanager ,如果它可用于您的平台 . VMWare具有x86 Linux,Windows和OS X版本here .

    然后你就做了:

    1023856-vdiskmanager-windows-7.0.1.exe -x 30720M Machine-disk1.vmdk
    

    它避免了必须克隆,然后扩展磁盘 . 现在,缺点是您需要额外的工具,而vmdk是VMWare的磁盘格式,而您仍在使用Virtualbox,因此可能存在不兼容性 .

    qemu-img 也可能有效,但我不确定它是否支持调整vmdk文件的大小 . 它看起来像:

    qemu-img resize Machine-disk1.vmdk +8G
    

    只是提醒一下,两者都有,在调整底层磁盘大小后仍然需要增加分区 . 所有这些工具基本上都是 dd if=/dev/old_disk of=/dev/new_disk bs=16M .

  • 172

    您可以使用Vmware播放器调整vmdk的大小 . 如果要将其保留为vmdk格式,则会删除往返转换(在其他帖子中注明) . 只需确保将vmdk添加到vmware时,请不要在出现提示时单击升级格式,保留当前的格式以防VirtualBox不接受它 .

  • -4

    对于 shrinking 图像大小,我使用以下步骤:

    • 在客户端计算机上 cat /dev/zero > z;sync;sleep 3;sync;rm -f z

    • 关闭客户端计算机

    • 在主持人 VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi

    • 在主持人 VBoxManage modifyhd cloned.vdi --compact

    • 在主持人 VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk

  • 28

    正如Luca在answer中所提到的,所需的步骤是:

    • 将VMDK映像克隆为VDI格式

    VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi

    • 调整VDI图像的大小

    VBoxManage modifyhd "cloned.vdi" --resize 51200

    • 克隆回VMDK格式

    VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk

    如果您可以使用VDI图像,则步骤3是可选的 .

    所有这些步骤也可以在VirtualBox图形用户界面中,在 File -> Virtual Media Manager 下执行 . 选择要克隆的驱动器,然后选择 Copy . 将打开一个对话框,允许您选择磁盘格式和选项 . 要调整VDI图像的大小,只需使用底部的滑块(如果它不可见,请单击 Properties ) .

    最后,您可能还需要更改来宾操作系统中的磁盘大小:

    • 运行客户操作系统并调整磁盘分区的大小 . 如果您运行的是Linux,则可以使用 gpartedkparted .
  • -4

    尝试了所有解决方案,但似乎没有任何效果 . 经过几个小时的挖掘,我发现了这个blog帖子,就像魔法一切都有效 . 我不得不做一些调整,所以这里是修改后的版本 . 使用Docker版本17.06.0-ce测试,构建02c1d87 .

    一旦开发人员真正开始容纳他们的应用程序,他们通常会生成大量图像并快速填满默认分配给Docker虚拟机的20GB硬盘空间 . 为了确保Docker虚拟机有足够的磁盘空间,我们应该将/ dev / sda1调整为更合理的数字 .

    • 下载GParted Live CD/USB/HD/PXE Bootable Image .

    • 停止Docker虚拟机 docker-machine stop default .

    • Boot2Docker软件包安装程序附带一个VMDK卷,VirtualBox的本机工具无法调整大小 . 要调整Docker磁盘卷的大小,请首先从默认VMDK卷 vboxmanage clonehd /full/path/to/disk.vmdk /full/path/to/disk_resized.vdi --format VDI --variant Standard 克隆VDI卷 .

    • 将新克隆的VDI卷调整为所需容量 . 我们建议在至少64GB vboxmanage modifyhd /full/path/to/disk_resized.vdi --resize <size in MB> .

    • 启动VirtualBox应用程序,选择 default VM并单击顶部的“设置”设备 .
      VirtualBox Manager

    • 单击“存储”图标 . 删除默认的VMDK卷 .
      enter image description here

    • 添加新的IDE控制器 .
      IDE controller

    • 通过“添加CD / DVD设备”选项安装GParted ISO .
      Add CD/DVD Device

    • 通过“添加CD / DVD设备”选项安装克隆的VDI卷 .
      Mount volume

    • 如果在具有固态硬盘驱动器的计算机上运行Docker,请确保为克隆的VDI卷选择“固态驱动器”选项 .
      Solid-state Drive

    • 单击“开始”图标以启动Docker虚拟机,该虚拟机将启动GParted ISO . 选择“GParted Live(默认设置)” .
      GParted Live (Default settings)

    • 将处理键盘映射的策略设置为“不要触摸键盘映射” .
      keymaps

    • 将语言首选项设置为选项“33”,映射到“美国英语” .
      US English

    • 选择选项“1”以运行“Forcevideo”并手动配置X.
      Forcevideo

    • 通过选择选项“2”保持默认分辨率“1024×760” .
      1024×760

    • 保留默认的“vesa”作为VGA卡 .
      Leave blank if default is desired

    • 通过选择选项“0”保持默认颜色深度“24” .
      Colour depth

    • 启动GParted后,单击“调整大小/移动”图标 .
      GParted

    • 通过拖动滑块将新磁盘卷大小设置为所需大小 . 在此示例中,最大大小为127,035MB . 单击“调整大小/移动”按钮以启动该过程 .
      Disk volume size

    • 单击“应用”按钮确认调整大小操作 .
      Bake it

    • 调整大小操作完成后关闭机器电源 .
      Hard reset, np :)

    • 删除GParted ISO .
      Your almost done

    • 登录Docker虚拟机,通过启动机器 docker-machine start default 验证卷调整大小是否成功

    • 如果遇到网络问题,请重启docker-machine

  • 6

    VirtualBox for Windows

    preserving 您的虚拟机设置时调整磁盘文件大小!


    步骤1 - 调整磁盘文件大小

    启动cmd.exe

    cd 到Oracle VM VirtualBox的目录(在64位系统上: "C:\Program Files\Oracle\VirtualBox\"

    运行这些命令(如上所述):

    VBoxManage clonehd "C:\path\to\source.vmdk" "C:\path_to\cloned.vdi" --format vdi
    VBoxManage modifyhd "C:\path\to\cloned.vdi" --resize 51200
    

    Windows资源管理器和通过地址栏“将地址复制为文本”应该可以帮助您获得所需的路径 .

    在Windows系统上,用户下方的VirtaulBox VM目录可能包含您为VM配置的XML格式的数据库文件 . 使用 .bak 扩展名重命名此文件(扩展名为 .vbox ) . 使用 .bak 扩展名重命名原始 .vmdk 文件,以避免出现其他错误 . 您现在可以安全地执行第三步而不会出现错误消息,将机器转换回 .vmdk 格式或"duplicate disk"错误 .

    VBoxManage clonehd "C:\path_to\cloned.vdi" "C:\path_to\source.vmdk" --format vmdk
    

    您将看到 UID token . 通过从Windows Command Interpetor窗口拖动突出显示该标记并使用 Ctrl+C 键盘快捷键来复制此标记 .

    在记事本等文本编辑器中打开 .vbox.bak 文件 . 您将看到一个类似XML的数据库文件 . 寻找这些线:

    <VirtualBox xmlns="http://www.virtualbox.org/" version="1.16-windows">
      <Machine uuid="{some uid}" name="source disk name" OSType="the_vbox_OS" snapshotFolder="Snapshots" lastStateChange="2043-03-23T00:54:18Z">
        <MediaRegistry>
          <HardDisks>
            <HardDisk uuid="{some uid}" location="C:\path_to\source.vmdk" ...
    

    <HardDisk uuid="{some uid}" location="C:\path_to\source.vmdk" ...delete 行括号和 paste 之间的旧UID令牌是从命令窗口复制的那个 . 确保放置括号 in place

    保存此文件,然后退出文本编辑器 . 重命名 .vbox.bak 文件以将其预期的扩展名 .vbox .


    步骤2 - 删除垃圾

    现在可以安全地删除目录中剩余的 .bak 文件 . 剩余的是带有更新的 .vbox 数据库的已调整大小的 .vmdk ,同时具有先前保留的VirtualBox Manager设置 .


    步骤3 - 调整磁盘分区的大小以填充可用空间

    您现在可以使用适当的操作系统工具启动VirtualBox VM Manager并执行VM,以填充新的可用空间 .

    对于 Windows VMs ,使用从Windows恢复Consule(恢复分区)启动的命令提示符 diskpartSELECT DISK 1LIST PARTITION 并收集 C:\ 驱动器的分区号,然后收集 SELECT PARTITION # . 您可以使用 EXTEND SIZE=mb 将Windows C:\驱动器的大小调整为适当的值 . 确保为恢复和启动分区留出空间!由于卷影复制和Windows恢复文件,可以安全地从新的虚拟磁盘大小中减去4096 MB以获得此值 .

    对于 Linux VMs ,您可以使用VM的磁盘文件启动的实时 .ISO gparted可以在以下位置找到:http://gparted.org/它将直接进入基于图形用户界面的gparted-gtk,您可以从中填充可用空间 .

    对于 PPC / Mac VMs ,来自Finder的 Disk Utility 将会填补可用空间,但您可能需要考虑 the gparted Linux option ,因为目前在VirtualBox中启动MacOSX的唯一方法是hackintosh,并且在启动到MacOSX时无法扩展音量 . 您可能还想暂时调整VM的设置以适应 gparted ,以使其启动 . MacOSX分区被gparted识别为 HFS - "Heaping File System"分区 .


    第4步 - 猫照

    因为互联网 . ;)你结束了 . 使用VirtualBox for Windows享受新的重新调整大小的虚拟 .vmdk 磁盘映像!

  • 7

    这是一种调整VirtualBox磁盘大小的方法,无论它是固定格式磁盘还是动态格式磁盘 . 具体来说,它可以防止磁盘为固定格式时出现的错误 .


    ⚠️备份虚拟磁盘 . 你永远不知道会出现什么问题 .

    在您的主机上:

    • 打开终端窗口 .

    在Windows上:打开命令提示符cmd .

    • 转到包含要调整大小的虚拟磁盘的目录 . 例如:
    cd "My VMs"
    
    • 使用所需的文件名,大小(以兆字节为单位)和格式( Standard (动态)或 Fixed )创建一个新的VirtualBox磁盘 . 例如,要创建名为 MyNewDisk.vdi 的50 GB固定格式磁盘:
    VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    

    如果VBoxManage未被识别为命令,请指定它的完整路径 . 它可以在VirtualBox安装目录中找到 . 在Windows上,上面的命令将变为:“C:\ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe”createmedium
    --filename“MyNewDisk.vdi”--size 50000 --variant Fixed

    • 将原始磁盘复制到新磁盘 .
    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
    
    • 调整大小完成!如果需要,可以检查新磁盘的属性:
    VBoxManage showmediuminfo "MyNewDisk.vdi"
    
    • 更改虚拟机以改为使用新磁盘 .

    接下来,在您的客户操作系统上,您需要调整分区大小以使用新的可用空间 .

  • 10

    我来到这里是因为我需要为Docker(CoreOS)开发环境调整磁盘大小 .

    CoreOS文档称没有必要调整操作系统分区的大小 - 这是虚假的 . 在调整虚拟磁盘大小后,您应该按照这些说明操作并通过GParted调整操作系统分区的大小:

    https://docs.docker.com/articles/b2d_volume_resize/

  • 9

    一个快速简单的选择:

    • 关闭机器

    • 创建具有所需大小的新虚拟盒磁盘

    • 将内容从旧磁盘移动到新磁盘内:

    vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
    
    • 打开机器

    • 您可能必须在OS中调整分区大小以填充磁盘的其余部分


    Warning

    如果新磁盘短于源,则将从源磁盘上的新磁盘大小位置开始 loss the data .

    您可以在步骤1之前的OS内部源磁盘的末尾阻止此解除分配增量空间,其中delta = size(源 - 磁盘) - 大小(新磁盘) .

  • 14

    下载/安装/使用VMWare Workstation并根据您当前的vmdk文件创建新VM,然后您可以调整vmdk的大小 . 有关此事项的详细信息,请访问Google for VMWare .

  • 2

    只需按照以下步骤操作:

    • 关闭机器电源 .

    • 右键单击虚拟机名称>设置>存储

    • 单击控制器:SATA>添加硬盘 .

    • 选择新的硬盘驱动器类型大小,然后单击“创建” .

    • 丢弃机器状态 .

    • 插入Ubuntu Live CD .

    • 从ubuntu live cd启动 .

    • 打开"gparted"(已安装,无需安装) .

    • 检查系统是否看到新创建的硬盘 .

    • 开放式终端 .

    • 输入以下代码 .

    • sudo dd if = / dev / sda = = dev / sdb(第一个是旧的分区路径,第二个是新的分区路径) .

    • 等到复制数据完成后(根据您的主机规格,此步骤可能需要一些时间) .

    • 完成复制后,返回gparted并选择刷新设备 .

    • 在执行dd命令后,选择新分区/ dev / sdb,它必须是旧分区/ dev / sdb .

    • 它会将展开的空间显示为未定位的数据 .

    • 删除交换分区/扩展分区 .

    • 右键单击根分区/ dev / sdb>调整大小

    • 在没有交换分配的情况下分配整个空间 .

    • 创建新的扩展分区>选择扩展>创建

    • 创建新的linux-swap分区>选择linux-swap> Create

    • 现在关闭正在运行的机器 .

    • 右键单击机器>设置>存储 .

    • 弹出ubuntu live cd .

    • 右键单击旧硬盘>删除附件 .

    • 现在您可以从新创建的硬盘启动虚拟机 .

    • 输入df -kh命令检查存储 .

    • 必须显示新尺寸 .

    祝贺你,享受你的自由空间 .
    此视频将为您提供帮助:https://youtu.be/ikSIDI535L0

相关问题