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


257

在此处输入图片说明

我的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.


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

在此处输入图片说明

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


3
您的问题是您已将磁盘符号链接到“ / media / data”位置,并且它不位于原始的“ / home / wim / VirtualBox VM”位置。我已经解决了这个问题。
stolsvik 2013年

1
我在这里详细介绍了我的经验:kmonsoor.wordpress.com/2012/05/26/virtualbox-increase-disk-size下面 的“接受的”答案远远不够正确。
kmonsoor 2014年

还有就是“复制现有的VDI”的另一种可能性“新的空VDI,其尺寸比现有的大”(refer- justintung.com/2011/01/06/...
parasrish

另外,请注意,仅调整大小可能无济于事,因为“ vdi”的大小会增加,但是基于“ vm-os-installation”,您的主分区保持不变,并且新分配的空间通常显示为“未分配” ”。因此,您需要进行“分区重新分配”(请参阅​​上面的链接)。
parasrish

Answers:


325

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

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

更换YOUR_HARD_DISKSIZE_IN_MB您的图像名称和所需的大小。sudo在某些机器上可能是必需的,或者您可能会遇到错误。这个答案和更完整的解释在webupd8上。感谢Andrew在这里发布了这个答案。

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


20
+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:分区的大小。
Jonik

3
+1,这当然是最干净的方法。
Starx

20
@asd更改磁盘大小是不够的,您还需要调整分区的大小。
布鲁诺

5
我认为.\VBoxManage.exe modifymedium disk 4d30d154-f8c2-4a3b-bd8b-ddcfbfe64aaf --resize 30720现在是VirtualBox的最新版本。modifyhd但是也可以使用-与较旧的命令向后兼容。
TranslucentCloud

2
我只是将vdi文件的大小从25G调整为120G,但是Windows7系统的磁盘管理器仍然看不到未分配的空间。是由快照文件引起的(我之前有快照),但是当我尝试删除快照时,virtualbox报表崩溃,因此无法删除快照。有任何想法吗?我的客户win7仍然看到25G。谢谢。
ollydbg17年

25

以下为我工作:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

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

电脑管理画面


12
sudo不是必要的。它可能会破坏您的主目录中的权限,从而要求您使用sudovirtualbox,这是一个主意。
Lekensteyn

1
@Lekensteyn:很高兴知道没有必要。我之所以使用它,是因为其他人曾说过,如果没有root,它是行不通的。就权限损坏而言,chmod可以很好地解决此类错误。
理查德·波维内利

@Lekensteyn:chown将解决所有权错误。我提到chmod和chown,因为我不得不解决您多次引用的问题:-)
Richard Povinelli 2012年

2
这是伟大的Windows,但如果你有一个Linux客户操作系统这个链接可以重新调整大小的分区帮助:forums.virtualbox.org/viewtopic.php?f=35&t=50661
乔恩

如果您正在linux内部运行Windows,则需要遵循此选项并扩展磁盘,否则Windows不会添加我们添加的额外空间
Ajith R Nair16年

18

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


2
在Linux中,VirtualBox中不需要。只需先完全关闭来宾OS。
颠倒

15

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

选择File->Virtual Media Manager ...

将打开一个窗口: 在此处输入图片说明

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

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

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


Release在那之前您需要做吗?目前,滑块为灰色。还是您选择了动态分区?
罗伊

Royi:制作虚拟磁盘时,请确保其具有动态大小。
lenooh

10

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

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

我在其他论坛上看到快照可能会干扰调整大小,并且无法针对遇到的不同错误删除所有快照,对我而言,唯一找到的解决方案是克隆快照以删除快照,然后调整快照大小,一切正常。对于调整外窗,可以找到的gparted启动光盘在这里可以帮助


6

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

有两个问题:

  1. 磁盘必须从使用它的VM中删除,然后再从“ HDDS的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

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

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)

再次尝试调整大小:

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!

该死的,“固定尺寸”不起作用!进行“ 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,以进行大小调整。这是作为根完成的。假设您只有一个分区,并且可能会交换。

# 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.

这对我有用
marijnz0r

4

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

这就是我要做的,对我来说完美。


很棒。至少对于最新版本的VirtualBox,这是否应该被接受?
AlwaysLearning

2

一种可靠的方法是,与移至未在VM中运行的较大硬盘驱动器相同。首先在XP中使用ccleaner或类似程序来清理所有可能的垃圾文件。然后创建所需大小的辅助虚拟硬盘。使用虚拟ODD驱动器中的clonezilla ISO进行引导,然后进行克隆,并选中“将大小调整为新分区大小”选项。然后将新的虚拟硬盘驱动器设置为主硬盘,直到您知道旧的虚拟硬盘驱动器工作为止,再将其删除。


2

在使用sudo运行命令之前,我收到了同样的错误,然后运行完美,仍然需要从guest虚拟机内部扩展分区以使用更多空间。


有人报告这会导致主目录权限错误
Jonathan

2

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

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB  

在第一次询问时为我工作


1
您是否需要重新安装/重新格式化/重新分区?还是只是直接启动备份?
乔纳森

2

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

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

在上面的命令中,用实际的Windows用户替换your_user_name,并且20000是MB大小的磁盘。


1

事实上,modifyhd在某些情况下,似乎没有一个人对您有任何好处。实际上,我是通过在扩展后克隆映像来扩展WinXP vdi的。

这是几周前对我有用的完整的分步指南:http : //libtronics.com/2011/07/resize-virtualbox-disk-for-winxp-guest/


您能在这里解释步骤吗?在这里,回答不多,仅链接到另一个站点的答案通常被皱眉,可以将其删除
汤姆·布鲁斯曼

1
好了,您需要了解modifyhd的功能,这仅是扩展基础虚拟磁盘而已。您仍然需要扩展其上的文件系统。
Marcin Kaminski

1

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

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

Backup️备份虚拟磁盘。您永远都不知道可能出什么问题。

在您的主机上:

  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. 将虚拟机更改为使用新磁盘。

接下来,在来宾OS上,您需要调整分区的大小以使用新的可用空间。


1

对于像我一样在VHD上具有Windows的用户,首先通过使用以下Linux命令进行克隆将其转换为VDI。(请注意,Windows VM已关闭。)

VBoxManage clonehd Windows10.vhd Windows10.vdi --format vdi

这将复制vhd。

然后可以使用以下方法调整VDI的大小。请注意,VDI在使用之前不会真正增长。

VBoxManage modifyhd Windows10.vdi --resize 80000

修复VM主机软件中的存储安装并打开VM的电源后,Windows会启动,但分区大小仍相同。Google for Windows工具,可以调整C驱动器分区的大小。我使用EaseUs Partition Master将C驱动器分区扩展到新的大小。

最后,可以删除VHD。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.