I like using fixed disks for VirtualBox VMs. It just gives me a warm fuzzy feelings when it comes to stability. However, that comes at a cost of not being able to resize it easily. If you try, you'll get VBOX_E_NOT_SUPPORTED
error.
Terminalvboxmanage modifyhd Test.vdi --resize 262144
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Failed to resize medium
VBoxManage: error: Resizing to new size 274877906944 is not yet supported
VBoxManage: error: Details: code VBOX_E_NOT_SUPPORTED (0x80bb0009)
VBoxManage: error: Context: "RTEXITCODE handleModifyMedium(HandlerArg*)" at line 816
But that doesn't meant it's impossible.
First we stop VM and clone its disk to a new image. This will automatically make it dynamic. And it will take a while.
Terminalsudo vboxmanage clonemedium "Test.vdi" "Test_new1.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VDI'. UUID: 96e20ba5-65f6-4248-b42e-ab48683a4cf9
With dynamic disk, we can now resize disk image.
Terminalsudo vboxmanage modifymedium disk "Test_new1.vdi" --resize 262144
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
But resizing leaves us with dynamic disk which is not what I wanted. So we convert it back to fixed. Will take long time but we again have fixed disk once done.
Terminalsudo vboxmanage clonemedium "Test_new1.vdi" "Test_new2.vdi" --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VDI'. UUID: 2bc060b6-0637-43f9-8a55-8ac6bc69ea0d
Since we want direct replacement, we need to copy old UID to the new image.
TerminalUUID=`sudo vboxmanage showmediuminfo "Test.vdi" | egrep '^UUID' | awk '{print $2}'`
sudo vboxmanage internalcommands sethduuid "Test_new2.vdi" $UUID
UUID changed to: 4f046c99-d76a-478f-95cf-f52b07927bd0
And now we can remove intermediate step.
Terminalrm "Test_new1.vdi"
Then we copy file system properties of old image to the new one (probably not needed but it doesn't hurt).
Terminalsudo chmod --reference="Test.vdi" "Test_new2.vdi"
sudo chown --reference="Test.vdi" "Test_new2.vdi"
And finally we replace the old image with the new one.
Terminalmv "Test_new2.vdi" "Test.vdi"
This whole process will take ages and it will require enough space to copy disk twice. Increasing disk from 128 to 256 GB required 128+128+256 - essentially 4x the disk space. But sometime roundabout way is the only way. :)
Worked perfectly. Thanks
I ran into this issue and thought it would be a breeze to resolv it, just go to the right menu option, resize the virtualdisk and voilá, it’s done. What a frustration when it didn’t go through. Not only was nearly impossible using the VB own menus to resize virtualdisk that was a nightmare to find a good resource to help me with it. So I found this tutorial, at first it looks scare to make a mess using terminal commands, but after all, let’s give it a try. Follow all the steps in my Macos host, faced some issues because not all commands get same result, but the in the end it was well succeeded. The only additional task I did was using a disk partitioning software in Windows to merge the new space available with the drive C.
Thank you for taking your time and passing your experiences ahead.
Cassio Braga