如何增加虚拟机的硬盘大小?

在此处输入图像描述

我的WinXP虚拟机上的空间不足,我在创建它时只给了10 GB的空间。 是否有一种简单的方法可以将其增加到20 GB? 我在VirtualBox设置中看不到任何明显的选项。


下面的建议给出了这个错误

wim@wim-ubuntu:/media/data/winxp_vm$ VBoxManage modifyhd wim.vdi --resize 20000 VBoxManage: error: Cannot register the hard disk '/media/data/winxp_vm/wim.vdi' {46284957-2c09-4e70-8a49-bfbe0f7f681d} because a hard disk '/home/wim/VirtualBox VMs/winxp_vm/wim.vdi' with UUID {46284957-2c09-4e70-8a49-bfbe0f7f681d} already exists VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp 

在调用VBoxManage命令之前从VirtualBox中删除.vdi,然后将其重新添加,是成功的。 但现在我无法启动虚拟机,我得到了这个令人担忧的屏幕:

在此处输入图像描述

顺便说一句,它说FATAL: Could not read from the boot medium! System halted. FATAL: Could not read from the boot medium! System halted.


在VBoxManage命令之后,必须将vdi重新连接到VM。 此外,需要从WITHIN窗口调整分区大小,因为您将拥有以下空白区域:

在此处输入图像描述

我可以使用一些名为EASEUS Partition Master 9.1.0 Home Edition的免费软件轻松调整分区大小。

打开终端并导航到包含VirtualBox磁盘映像的文件夹,然后使用以下命令:

 VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB 

用您的图像名称和所需大小替换YOUR_HARD_DISKSIZE_IN_MB 。 某些机器可能需要sudo ,否则您可能会遇到错误。 这个答案和更全面的解释都在webupd8上 。 感谢安德鲁在那里发布这个答案。

resize后,需要对额外的虚拟硬盘空间进行分区和格式化 ,以便guest 虚拟机使用它。 这可以通过从实时ISO引导来宾进行gparted来完成。 我们还可以使用gparted调整现有分区的大小。 为此,我们可能需要禁用/swap并创建一个新的交换分区。

以下对我有用:

 VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB 

但是,我了解里程可以如何变化:-)就调整分区大小而言,在Windows 7中,我可以通过右键单击底部面板中的C:驱动器并选择扩展音量来调整屏幕大小。

电脑管理屏幕

Wim,我想你需要先从Vbox注销它。 文件,媒体管理器,单击您的硬盘,然后取消注册。 然后再试一次。

resize后无法在我的Windows XP客户机上查看resize,我不得不这样做

  1. 克隆它
  2. 用“VBoxManage modifyhd winxppro \ Clone.vdi –resize 30720”resize,一切正常

我在其他论坛中看到快照可能会干扰resize并且无法删除我获得的不同错误的所有快照,我找到的唯一解决方案是克隆它以删除快照然后resize,一切正常。 为了调整外部窗口的大小,可以在这里找到的gparted启动CD可以提供帮助

我在移动磁盘时遇到了同样的问题,并用符号链接替换了原始文件。 之后这样可以正常工作,但是你会遇到’modifyhd’命令的问题,因为在使用它时,这显然会规范化vdi文件的路径。 这使得您看起来像是在尝试添加具有相同UUID但在不同路径上的新磁盘 – 或类似的东西。

有两个问题:

  1. 磁盘必须从使用它的VM中删除,但也“从VirtualBox的hdds列表”中删除。 这是通过’closemedium’命令修复的,该命令将其从该列表中删除。

  2. 要resize的磁盘是“固定磁盘”而不是“动态”,只能调整动态磁盘的大小。 这是通过’clone’命令修复的(克隆是动态的),然后调整生成的磁盘大小。

这是我的日志,了解它是如何完成的。 请注意,我不是以root身份运行 ,除非我之后执行分区和文件系统的大小调整。

从VM中删除与磁盘的关联。

问题仍然存在:

 virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192 VBoxManage: error: Cannot register the hard disk '/datadisk/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' {6cd99209-e4db-4178-a6c2-53f9581b1fad} because a hard disk '/home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' with UUID {6cd99209-e4db-4178-a6c2-53f9581b1fad} already exists VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp 

啊,磁盘仍在“系统中”:

 virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds UUID: ba58276a-bbe1-4354-8ae5-246bdac390c8 Parent UUID: base Format: VDI Location: /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi State: locked write Type: normal Usage: TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7) UUID: 6cd99209-e4db-4178-a6c2-53f9581b1fad Parent UUID: base Format: VDI Location: /home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi State: created Type: normal 

从VirtualBox磁盘列表中删除/删除磁盘(“closemedium”):

 virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage closemedium disk 6cd99209-e4db-4178-a6c2-53f9581b1fad virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds UUID: ba58276a-bbe1-4354-8ae5-246bdac390c8 Parent UUID: base Format: VDI Location: /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi State: locked write Type: normal Usage: TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7) 

再次尝试resize:

 virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192 0%... Progress state: VBOX_E_NOT_SUPPORTED VBoxManage: error: Resize hard disk operation for this format is not implemented yet! 

DAMN,“固定大小”不工作! ‘clonehd’救援,因为它留下了“动态分配”的克隆磁盘:

 virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage clonehd TestInception\ 64\ bit.vdi TestInception\ 64\ bit-cloned.vdi 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'VDI'. UUID: 8e237500-173b-401a-9e63-9e64da110da9 

现在做的调整(即时):

 virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd --resize 8192 TestInception\ 64\ bit-cloned.vdi 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 

然后连接到某些VM,以便重新调整。 这是以root身份完成的。 假设您只有一个分区并可能交换。

 # fdisk /dev/sdb # <- The extra disk, just attached to be resized // The procedure looks like this: // m - print help // p - print table // d ... - delete partition (delete both if you have root and swap) // n - new partition (create root/first partition starting on exact same sector as before, typically 2048, but ends on last, or last minus swap) // ... n.. (.. then add the swap partition. Calculate how many sectors using original table) // t - change type of partition (swap partition, if any, to 82 - not 83 which is "normal Linux"). // w - write partition table (write out, with the resized partition) # e2fsck -f /dev/sdb1 e2fsck 1.42.5 (29-Jul-2012) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sdb1: 99918/122160 files (0.3% non-contiguous), 471032/487936 blocks # resize2fs /dev/sdb1 resize2fs 1.42.5 (29-Jul-2012) Resizing the filesystem on /dev/sdb1 to 1965824 (4k) blocks. The filesystem on /dev/sdb1 is now 1965824 blocks long. 

这对我来说非常适用于安装在Ubuntu 16.04主机和Windows 10 Guest上的Virtualbox 5.2.6:打开Virtualbox Manager,单击Global Tools(右上角)并选择Virtual Media Manager。 单击“硬盘”选项卡,然后选择您的客户操作系统。 在框的底部,单击“属性”选项卡。 在底部,您可以看到虚拟磁盘的大小,使用滑块,您可以根据自己的喜好增加大小。 (您只能使用此方法增加,而不是减小大小)。 单击“应用”。 启动Windows Guest OS,打开“计算机管理”,右键单击“C:驱动器”,然后选择“扩展卷”以使用未分配的部件扩展文件系统。

这就是我必须做的,对我来说非常合适。

一种确定的方法是将其移至未在VM中运行的较大硬盘驱动器。 首先在XP中使用ccleaner或类似的程序来清理它可以的所有垃圾文件。 然后创建所需大小的辅助虚拟HDD。 在虚拟ODD驱动器中使用clonezilla ISO进行引导,并在选中“resize到新分区大小”选项的情况下进行克隆。 然后将新的虚拟HDD设置为主虚拟机,并且在您知道它工作之前不要删除旧虚拟机。

我收到相同的错误,直到我使用sudo运行命令,然后工作完美,仍然需要从客户端内部增加分区以使用额外的空间。

事实上,在某些情况下,似乎单独使用modifyhd对你没有任何好处。 我实际上通过在扩展后克隆图像来扩展我的WinXP vdi。

以下是几周前为我工作的完整分步指南: http : //libtronics.com/2011/07/resize-virtualbox-disk-for-winxp-guest/

确保以具有磁盘映像文件写入权限的用户身份登录。 然后跑

 VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB 

在第一次询问时为我工作

您也可以使用VirtualBox菜单执行此操作:

选择File – > Virtual Media Manager ...

将打开一个窗口: 在此处输入图像描述

选择您的磁盘,然后选择“ Properties 。 现在只需移动底部的滑块即可。

启动虚拟机后,Windows将无法识别新空间。

打开Computer Management (在开始菜单中搜索它),在左侧菜单中选择Storage – > Disk Management 。 选择你的分区(可能是C :),右键单击它并选择Extend Volume ... 现在只需单击向导即可完成。

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

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

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

在您的主机上:

  1. 打开终端窗口。

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

  2. 转到包含要resize的虚拟磁盘的目录。 例如:

     cd "My VMs" 
  3. 创建一个新的VirtualBox磁盘,其中包含所需的文件名,大小(以兆字节为单位)和格式( Standard (动态)或Fixed )。 例如,要创建名为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 
  4. 将原始磁盘复制到新磁盘。

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

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

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

如果主机是Windows,则可以运行以下命令来增加或减少虚拟框中的vdi磁盘大小:

 "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\your_user_name\VirtualBox VMs\Ubuntu18LTS\Ubuntu18LTS.vdi" --resize 20000 

在上面的命令中,将your_user_name替换为真实的Windows用户,20000是MB大小的磁盘。