我已经用完了虚拟机磁盘(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映像的大小?
我已经用完了虚拟机磁盘(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映像的大小?
当前回答
因为这是一个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。
其他回答
我在这里是因为我需要为Docker (CoreOS)开发环境调整磁盘大小。
CoreOS文档说不需要调整OS分区大小——这是假的。在你调整虚拟磁盘的大小后,你应该按照下面的说明,通过GParted调整OS分区的大小:
https://docs.docker.com/articles/b2d_volume_resize/
为了缩小图像大小,我使用以下步骤:
在客户端机器cat /dev/zero > z;sync;sleep 3;sync;rm -f z 关闭客户端机器 在主机VBoxManage clonehd”源代码上。vmdk”“克隆。Vdi”——格式化Vdi 在VBoxManage modifyhd克隆的主机上。vdi,紧凑 在主机VBoxManage clonehd“克隆。vdi”“调整大小。Vmdk "——格式化Vmdk
这是一种调整VirtualBox磁盘大小的方法,无论它是固定格式的磁盘还是动态格式的磁盘。具体来说,它可以防止磁盘是固定格式时出现的错误。
⚠️备份虚拟磁盘。你永远不知道会出什么问题。
在主机上:
Open a terminal window. On Windows: Open the command prompt cmd. Go to the directory with the virtual disk you want to resize. For example: cd "My VMs" Create a new VirtualBox disk with your desired filename, size (in megabytes) and format (either Standard (dynamic) or Fixed). For example, to create a 50 GB fixed-format disk called MyNewDisk.vdi: VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed If VBoxManage is not recognized as a command, specify the full path to it. It can be found in the VirtualBox installation directory. On Windows the above command would become: "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed Copy the original disk to the new disk. VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing The resize is done! You can check the properties of the new disk if you want: VBoxManage showmediuminfo "MyNewDisk.vdi" Change the virtual machine to use the new disk instead.
接下来,在您的客户操作系统上,您需要调整分区大小以使用新的可用空间。
一个快速而简单的选择:
关闭机器 创建所需大小的新虚拟盒磁盘 将内容从旧磁盘移动到新磁盘: Vboxmanage clonehd“源磁盘。vmdk”“新磁盘。vmdk”——现有的 打开机器 您可能必须在操作系统中调整分区大小,以填充磁盘的其余部分
警告
如果新磁盘比源磁盘短,则会丢失源磁盘上新磁盘大小位置上的数据。
在步骤1之前,您可以防止在操作系统内源磁盘的末端释放delta空间,其中delta = size(source-disk) - size(new-disk)。
vmdk:
相当固定的大小分配(步骤1、2)。 即使在扩展之后,也无法在vmdk的操作系统中使用(步骤3、4、5)
步骤:
1)转换为“。VBoxManage clonehd v1。vmdk v1。Vdi——格式化Vdi
2)使用命令行扩展大小(参考:tvial的博客一步一步的信息)
OR
从VirtualBox中的虚拟媒体管理器展开。
[现在-在vm内部]
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% /
您的系统现在必须准备好使用扩展分配!!