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

wim*_*wim 307 virtualbox windows-xp hard-drive

在此处输入图片说明

我的 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
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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


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

在此处输入图片说明

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

Tom*_*man 363

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

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB
Run Code Online (Sandbox Code Playgroud)

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

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

如果在您的系统中找不到 VBoxManage,只需将路径设置为:

set PATH=%PATH%;"C:\Program Files\Oracle\VirtualBox" 
Run Code Online (Sandbox Code Playgroud)

它应该解决路径问题。在设置之前,请确保此路径中存在“VBoxManage”。

  • +1。只是用它来将我的 Windows 7 磁盘的大小从 20 GB 增加到 30 GB,并且运行非常顺利(不需要取消注册等)。`$ VBoxManage modifyhd Windows7.vdi --resize 30720 0%...10%...20%...30%...40%...50%...60%...70%.. .80%...90%...100%` 起初Windows没有检测到增加的空间,但断电后检测到了,然后我就可以使用内置的磁盘管理工具来增加大小我的 C: 分区。 (24认同)
  • @asd 更改磁盘大小是不够的,您还需要调整分区大小。 (23认同)
  • 我认为在 VirtualBox 的最新版本中,它现在是 `.\VBoxManage.exe modifymedium disk 4d30d154-f8c2-4a3b-bd8b-ddcfbfe64aaf --resize 30720`。`modifyhd` 也可以工作——它与旧命令有向后兼容性。 (6认同)
  • +1,这当然是最干净的方法。 (3认同)
  • 我只是将 vdi 文件大小从 25G 调整到 120G,但是 Windows7 系统的磁盘管理器仍然看不到未分配的空间。是由快照文件引起的(我之前有快照),但是当我尝试删除快照时,virtualbox报告崩溃,因此无法删除快照。有任何想法吗?我的guest win7还是看到25G。谢谢。 (3认同)
  • 好的,我终于删除了快照,现在启动win7,我看到它有一些97G的额外未分配空间,谢谢。 (2认同)

len*_*ooh 76

从 VirtualBox 6 开始,我们可以使用 GUI 来调整 VM 的虚拟磁盘的大小。

要访问它,请单击File->Virtual Media Manager ...

将打开以下窗口 VirtualBox 虚拟媒体管理器

选择您的磁盘,然后单击Properties。现在只需移动底部的滑块或写下所需的大小值,完成后单击“应用”。

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

在 Windows 中,打开Computer Management(在开始菜单中搜索),在左侧菜单中选择Storage-> Disk Management(在 Windows 10 中,您可以create and format hard disk partitions直接从开始菜单中找到它)。选择您的分区(可能是 C:),右键单击它,然后选择Extend Volume ...。现在只需单击向导即可完成。

请注意,如果您的 VM 中有快照,则在您的 VM 上,Windows 可能不会检测到额外空间。要解决此问题,建议您删除快照或(最简单的方法)克隆它并在新快照中执行调整大小。

  • 这应该是公认的答案。所有其他人都丢失了安装并且必须格式化驱动器!!! (5认同)
  • 当虚拟机是ubuntu时如何更新大小? (3认同)

Ric*_*lli 29

以下对我有用:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB
Run Code Online (Sandbox Code Playgroud)

但是,我理解里程会如何变化:-) 至于调整分区大小,在 Windows 7 中,我可以通过右键单击底部面板中的 C: 驱动器并选择扩展卷来调整您显示的屏幕大小。

电脑管理画面

  • `sudo` 是**不需要**的。它可能会破坏您主目录中的权限,要求您对 virtualbox 使用 `sudo`,这是一个*坏*主意。 (12认同)
  • 这对 Windows 非常有用,但如果您有 Linux 来宾操作系统,此链接可以帮助重新调整分区大小:https://forums.virtualbox.org/viewtopic.php?f=35&t=50661 (3认同)

小智 18

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

  • 在 VirtualBox 中的 Linux 上不需要。只需要先完全关闭来宾操作系统。 (2认同)

Phi*_*oud 12

在调整大小并且无法在我的 Windows XP 客户机上查看调整大小后,我不得不

  1. 克隆它
  2. 使用“VBoxManage modifyhd winxppro \ Clone.vdi --resize 30720”调整大小,一切正常

我在其他论坛上看到快照会干扰调整大小,并且无法删除所有快照,因为我遇到了不同的错误,我找到的唯一解决方案是克隆它以删除快照,然后调整它的大小,一切正常。对于调整窗口外的大小,可以在此处找到的 gparted 引导 cd可以提供帮助


sto*_*vik 10

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

有两个问题:

  1. 必须从使用它的 VM 中删除该磁盘,然后还要“从 VirtualBox 硬盘列表中”删除该磁盘。这已通过 'closemedium' 命令修复,该命令将其从该列表中删除。

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

这是我关于它是如何完成的日志。请注意,我在任何时候都不会以 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

从 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)
Run Code Online (Sandbox Code Playgroud)

再次尝试调整大小:

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!
Run Code Online (Sandbox Code Playgroud)

该死,“固定尺寸”不起作用!'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
Run Code Online (Sandbox Code Playgroud)

现在做调整(瞬间):

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%
Run Code Online (Sandbox Code Playgroud)

然后附加到一些 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.
Run Code Online (Sandbox Code Playgroud)


Rag*_*hav 9

如果您在 Windows 主机上并尝试增加 Ubuntu 的 VDI 大小,那么以下信息可以帮助您:

获取 vdi 的完整路径,对我来说,它是“D:\VirtualBoxImages\Ubuntu\Ubuntu.vdi”。

在此处输入图片说明

运行“标记为已回答”帖子中提到的命令:

"C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd D:\VirtualBoxImages\Ubuntu\Ubuntu.vdi --resize 40000" 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

上面,“C:\Program Files\Oracle\VirtualBox”是我的Windows Virtual Box安装文件夹的位置,上面命令中的40000是40GB。

完成上述步骤后,重启Ubuntu VM。

转到“磁盘”

在此处输入图片说明

调整现有分区的大小以使其为 40 GB:

在此处输入图片说明

然后您可以从“存储”中确认上述操作是否有效:

在此处输入图片说明

  • 只是似乎在 ubuntu 21.04 中不起作用 - 单击调整大小后要求进行身份验证,然后什么也没有发生 (6认同)
  • 非常有帮助,Ubuntu 没有检测到文件大小的增加。 (2认同)

小智 5

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

这就是我所要做的,非常适合我。