当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

virtualbox,hard-drive,windows-xp,ubuntu

我的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,然后将其添加回来已成功。但现在我无法启动虚拟机,我得到这个令人担忧的屏幕:

virtualbox,hard-drive,windows-xp,ubuntu

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


VBoxManage命令后,vdi必须重新连接到虚拟机。此外,分区需要从WITHIN窗口调整大小,因为您将拥有这个空白空间:

virtualbox,hard-drive,windows-xp,ubuntu

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

最佳解决方法

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

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

用您的图像名称和所需大小替换YOUR_HARD_DISKSIZE_IN_MBsudo在某些机器中可能是必需的,或者您可能会遇到错误。这个答案和更全面的解释是here, on webupd8。感谢安德鲁发布这个答案。

调整大小后,额外的virtual hard drive space needs to be partitioned and formatted供客人使用。这可以通过从现场ISO启动客人来完成。我们也可以使用gparted来调整现有的分区大小。为此,我们可能需要禁用/swap并创建一个新的交换分区。

次佳解决方法

以下为我工作:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

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

virtualbox,hard-drive,windows-xp,ubuntu

第三种解决方法

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

第四种方法

在调整大小后,无法在Windows XP来宾机器上查看调整大小后,我不得不这样做

  1. 克隆它

  2. 使用“VBoxManage modifyhd winxppro \ Clone.vdi –resize 30720”调整大小并且一切正常

我在其他论坛看到,快照可能会干扰调整大小,并且无法删除所有快照以查找我得到的不同错误,唯一找到的解决方案是克隆它以删除快照并调整大小,并且一切正常。要调整外部窗口的大小,可以找到一个可以找到here的gparted boot cd

第五种方法

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

有两个问题:

  1. 该磁盘必须从使用它的虚拟机中删除,但也是“从VirtualBox VirtualBox列表中删除”。这已通过’closemedium’命令解决,该命令将其从列表中删除。

  2. 要调整大小的磁盘是”fixed disk”而不是”dynamic”,并且只能调整动态磁盘的大小。用’clone’命令(克隆是动态的)修复了这个问题,然后调整生成的磁盘的大小。

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

从虚拟机中删除关联到磁盘。

问题仍然存在:

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!

DAMN,”fixed-size”不起作用! ‘clonehd’救援,因为这留下了’dynamically allocated’克隆磁盘:

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

现在做调整(instantanious):

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问答整理, 博文地址: https://ubuntuqa.com/article/157.html,未经允许,请勿转载。