561

我的虚拟机磁盘空间不足,这是一个 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 映像的大小?

4

15 回答 15

832

如果你想结束拥有一个 vmdk 硬盘(也许你也有兴趣在 vwmare 中使用该磁盘),完整的步骤是:

VBoxManage clonemedium "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifymedium "cloned.vdi" --resize 51200
VBoxManage clonemedium "cloned.vdi" "resized.vmdk" --format vmdk

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

要完成您还需要调整驱动器大小的事情!为此,您可能需要下载gparted iso 并从该 iso 引导以调整驱动器大小(从 virtualbox 设置中选择 iso)。

PS 如果您的新尺寸太小,即使使用新的 vdi 文件,您也会收到相同的错误。

于 2012-09-17T09:12:17.457 回答
203

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

vboxmanage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
于 2012-07-25T21:39:44.843 回答
48

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

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

  1. 启动新的放大 vmdk 映像。
  2. 转到开始并右键单击计算机并选择管理。
  3. 点击磁盘管理
  4. 您应该在(在我的情况下)C 驱动器上看到一些灰色空间
  5. 右键单击 C 驱动器并选择扩展卷。
  6. 选择尺寸然后走

甜的!我更喜欢使用带有数据丢失警告的 3rd 方工具。

干杯!

于 2013-10-09T17:05:43.717 回答
35

vmdk 的

  • 而是固定大小分配(步骤 1,2)。
  • 即使在扩展之后,在 vmdk 的操作系统中也不容易使用(步骤 3、4、5)

脚步:

1)首先转换为“.vdi” -VBoxManage clonehd v1.vmdk v1.vdi --format vdi

2)使用命令行扩展大小(参考:tvial 的博客以获取分步信息)

或者

从VirtualBox 中的虚拟媒体管理器展开。

[现在-在虚拟机内]

3)扩展驱动器的大小,使用新的分配(例如,对于在虚拟机上运行的 Ubuntu:使用GParted在此处输入图像描述 在此处输入图像描述

4)扩展文件系统-lvextend -L +50G <file-system-identifier>

插图:

$ lsblk
NAME                       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sda                          8:0    0   200G  0 disk 
└─sda1                       8:1    0   200G  0 part 
  ├─myfs-vg-cloud          253:0    0    99G  0 lvm  /
  └─myfs-vg-swap-1         253:1    0   980M  0 lvm  [SWAP]


$ lvextend -L +100G /dev/mapper/myfs-vg-cloud

$ lsblk
NAME                       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sda                          8:0    0   200G  0 disk 
└─sda1                       8:1    0   200G  0 part 
  ├─myfs-vg-cloud          253:0    0   199G  0 lvm  /
  └─myfs-vg-swap-1         253:1    0   980M  0 lvm  [SWAP]

5)扩展“/home” -resize2fs <file-system-identifier>

插图:

$ df -h /home/
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/myfs-vg-cloud         97G   87G  6.0G  94%   /

$ resize2fs /dev/mapper/myfs-vg-cloud

$ df -h /home/
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/myfs-vg-cloud         196G   87G  101G  47%  /

您的系统现在必须准备好使用,并扩展分配!

于 2013-02-07T13:19:09.037 回答
31

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

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

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

之后,启动虚拟窗口并将C盘扩展为Code Chops的方法。

无需将 *.vdi 文件转换回 *.vmdk 文件。

于 2013-10-16T15:53:06.787 回答
23

由于这是一个 vmdk 文件,因此您可以使用 VMWare 的vdiskmanager,如果它适用于您的平台。VMWare 在这里有 x86 Linux、Windows 和 OS X 版本(参见右侧栏的“附件”)。

然后你就这样做:

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.

于 2015-09-26T19:58:55.773 回答
18

在这里尝试了所有解决方案,但似乎没有任何效果。经过数小时的挖掘,我发现了这篇文,并且一切正常。我不得不做一些小调整,所以这里是修改后的版本。使用 Docker 版本 17.06.0-ce 测试,构建 02c1d87。

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

  1. 下载GParted Live CD/USB/HD/PXE 可启动映像
  2. 停止 Docker 虚拟机docker-machine stop default

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

  4. 将新克隆的 VDI 卷调整为所需的容量。我们建议至少 64GB vboxmanage modifyhd /full/path/to/disk_resized.vdi --resize <size in MB>
  5. 启动 VirtualBox 应用程序,选择defaultVM 并单击顶部的“设置”齿轮。VirtualBox 管理器
  6. 单击“存储”图标。删除默认 VMDK 卷。在此处输入图像描述
  7. 添加一个新的 IDE 控制器。IDE控制器
  8. 通过“添加 CD/DVD 设备”选项安装 GParted ISO。添加 CD/DVD 设备
  9. 通过“添加 CD/DVD 设备”选项挂载克隆的 VDI 卷。挂载卷
  10. 如果您在具有固态硬盘驱动器的计算机上运行 Docker,请确保为克隆的 VDI 卷选择“固态驱动器”选项。固态硬盘
  11. 单击“开始”图标启动 Docker 虚拟机,这将启动 GParted ISO。选择“GParted Live(默认设置)”。GParted Live(默认设置)
  12. 将处理键盘映射的策略设置为“不要触摸键盘映射”。键盘映射
  13. 将语言偏好设置为选项“33”,该选项映射到“美国英语”。美国英语
  14. 选择选项“1”以运行“Forcevideo”并手动配置 X。强制视频
  15. 选择选项“2”保持默认分辨率“1024×760”。1024×760
  16. 保留默认的“vesa”作为 VGA 卡。如果需要默认值,请留空
  17. 通过选择选项“0”保持默认颜色深度“24”。颜色深度
  18. GParted 启动后,单击“调整大小/移动”图标。GParted
  19. 通过拖动滑块将新磁盘卷大小设置为所需大小。在此示例中,最大大小为 127,035MB。单击“调整大小/移动”按钮开始该过程。磁盘卷大小
  20. 单击“应用”按钮确认调整大小操作。烤吧
  21. 调整大小操作完成后关闭机器电源。硬重置,np :)
  22. 删除 GParted ISO。你几乎完成了
  23. 登录 Docker 虚拟机,通过启动机器验证卷大小调整是否成功docker-machine start default
  24. 如果您遇到网络问题,请重新启动 docker-machine
于 2018-06-28T22:44:27.970 回答
15

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

于 2014-01-08T10:47:34.560 回答
11

为了缩小图像大小,我使用以下步骤:

  1. 在客户端机器上cat /dev/zero > z;sync;sleep 3;sync;rm -f z
  2. 关闭客户端机器
  3. 在主机上VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
  4. 在主机上VBoxManage modifyhd cloned.vdi --compact
  5. 在主机上VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
于 2016-02-25T07:05:45.613 回答
11

正如卢卡的回答中提到的,所需的步骤是:

  1. 将 VMDK 映像克隆为 VDI 格式

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

  2. 调整 VDI 映像的大小

    VBoxManage modifyhd "cloned.vdi" --resize 51200

  3. 克隆回 VMDK 格式

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

如果您可以改用 VDI 映像,则步骤 3 是可选的。

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

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

  1. 运行来宾操作系统并调整磁盘分区的大小。如果您正在运行 Linux,则可以使用gpartedkparted.
于 2017-12-20T17:27:01.630 回答
9

适用于 Windows 的 VirtualBox

在保留虚拟机设置的同时调整磁盘文件的大小!


第 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扩展名)。使用扩展名重命名原始.vmdk文件.bak以避免另一个错误。您现在可以安全地执行第三步,而不会出现将机器转换回.vmdk格式或“重复磁盘”错误的错误消息。

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

您将看到一个UID 令牌。通过从 Windows Command Interpetor 窗口拖动突出显示并使用Ctrl+C键盘快捷键来复制此令牌。

在 Notepad++ 等文本编辑器中打开.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" ...删除括号之间的旧 UID 标记,然后粘贴您从命令窗口复制的那个。确保将支架留在原位

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


第 2 步 - 删除垃圾

现在可以安全地删除.bak目录中剩余的文件。剩下的是.vmdk使用更新的.vbox数据库调整大小,同时使用您之前保留的 VirtualBox Manager 设置。


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

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

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

对于Linux VM.ISO ,可以在以下位置找到可以使用 VM 磁盘文件启动的 gparted 直播:http: //gparted.org/ 它将让您直接进入基于图形用户界面的 gparted-gtk,您可以在其中填写你的自由空间。

对于PPC / Mac VMDisk UtilityFinder 将帮助您填充可用空间,但您可能需要考虑gparted Linux 选项,因为目前在 VirtualBox 中启动 MacOSX 的唯一方法是 hackintosh,并且您无法扩展您的卷在启动到 MacOSX 时。您可能还想暂时调整 VM 的设置gparted以使其启动。MacOSX 分区被 gparted 识别为HFS“堆文件系统”分区。


第 4 步 - 猫照片

因为互联网。;) 你完成了。.vmdk使用适用于 Windows 的 VirtualBox享受新调整大小的虚拟磁盘映像!

于 2017-05-23T02:07:31.167 回答
7

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


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

在您的主机上:

  1. 打开一个终端窗口。

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

  2. 转到包含要调整大小的虚拟磁盘的目录。例如:

    cd "My VMs"
    
  3. 使用所需的文件名、大小(以兆字节为单位)和格式(Standard(动态)或Fixed)创建一个新的 VirtualBox 磁盘。例如,要创建一个名为 50 GB 的固定格式磁盘MyNewDisk.vdi

    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
    
  4. 将原始磁盘复制到新磁盘。

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
    
  5. 调整大小完成!如果需要,您可以检查新磁盘的属性:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
    
  6. 更改虚拟机以改用新磁盘。

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

于 2017-08-18T13:54:11.147 回答
3

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

CoreOS 文档说没有必要调整 OS 分区的大小——那是假的。调整虚拟磁盘的大小后,您应该按照以下说明通过 GParted 调整 OS 分区的大小:

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

于 2014-12-19T15:28:00.927 回答
3

一个快速简单的选择:

  1. 关闭机器
  2. 创建具有所需大小的新虚拟盒磁盘
  3. 将内容从旧磁盘移动到新磁盘内部:

    vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
    
  4. 开机

  5. 您可能需要调整 OS 中的分区大小以填充磁盘的其余部分

警告

如果新磁盘比源磁盘短,您将丢失源磁盘上新磁盘大小位置的数据。

您可以在步骤 1 之前在 OS 内源磁盘的末尾阻止此释放增量空间,其中 delta = size(source-disk) - size(new-disk)。

于 2017-01-04T15:54:23.353 回答
1

使用这些简单的步骤来调整 vmdk 的大小。

  1. 点击File -> Virtual Media Player

在此处输入图像描述

  1. 选择vdi文件并点击properties

在此处输入图像描述

您可以在此处增加或减少 vdi 大小。

于 2021-06-10T12:36:27.257 回答