When you create a virtual hard disk in VirtualBox or VMware, you specify a maximum disk size. If you want more space on your virtual machine’s hard disk later, you’ll have to enlarge the virtual hard disk and partition.
Note that you may want to back up your virtual hard disk file before performing these operations — there’s always a chance something can go wrong, so it’s always good to have backups. However, the process worked fine for us.
Update: Use the Virtual Media Manager in VirtualBox
VirtualBox 6 added a graphical option for enlarging and resizing virtual disks. To access it, click File > Virtual Media Manager in the main VirtualBox window.
Select a virtual hard disk in the list and use the “Size” slider at the bottom of the window to change its size. Click “Apply” when you’re done.
You will still have to enlarge the partition on the disk to take advantage of the additional space. The partition remains the same size even while the disk size increases. See the instructions below for more information on enlarging the partition.
Enlarge a Virtual Disk in VirtualBox with the Command Line
To enlarge a virtual disk in VirtualBox, you’ll need to use the VBoxManage command from a Command Prompt window. First, shut down the virtual machine — ensure its state is set to Powered Off, not Saved.
Note: Before continuing, you should also delete any snapshots associated with the virtual machine if you use the snapshots feature in VirtualBox. This will ensure you’re modifying the correct virtual disk file and that everything will work properly afterward.
Second, open a Command Prompt window from your Start Menu and change the directory to VirtualBox’s program files folder. Run the command:
cd "C:\Program Files\Oracle\VirtualBox"
The following command will operate on the VirtualBox virtual disk located at “C:\Users\Equinox\VirtualBox VMs\Windows 10\Windows 10.vdi”. It will resize the virtual disk to 81920 MB (80 GB).
VBoxManage modifyhd "C:\Users\Chris\VirtualBox VMs\Windows 10\Windows 7.vdi" --resize 81920
Note: Use two dashes before resize in the command above.
Replace the file path in the command above with the location of the VirtualBox disk you want to resize and the number with the size you want to enlarge the image to (in MB).
Note: In VirtualBox 6.0+, released in 2019, you may need to use the following command instead:
VBoxManage modifymedium disk "C:\Users\Equinox\VirtualBox VMs\Windows 10\Windows 10.vdi" --resize 81920
Note that this process doesn’t enlarge the partition on the virtual hard disk, so you won’t have access to the new space yet — see the Enlarge the Virtual Machine’s Partition section below for more information.
Enlarge a Virtual Disk in VMware
To enlarge a virtual machine’s hard disk in VMware, power off the virtual machine, right-click it, and select Virtual Machine Settings.
Select the virtual hard disk device in the list, click the Utilities button, and click Expand to expand the hard disk.
Enter a larger maximum disk size and click the Expand button. VMware will increase the size of your virtual disk, although its partitions will remain the same size — see below for information on enlarging the partition.
Enlarge the Virtual Machine’s Partition
You now have a larger virtual hard disk. However, the operating system’s partition on your virtual hard disk is the same size, so you won’t be able to access any of this space yet.
You’ll now need to extend the guest operating system’s partition as if you were enlarging a partition on a real hard disk in a physical computer. You can’t enlarge the partition while the guest operating system is running, just as you can’t enlarge your C:\ partition while Windows is running on your computer.
You can use a GParted live CD to resize your virtual machine’s partition — simply boot the GParted ISO image in your virtual machine and you’ll be taken to the GParted partition editor in a live Linux environment. GParted will be able to enlarge the partition on the virtual hard disk.
Load the ISO file into your virtual machine by going into the virtual machine’s settings window, selecting your virtual CD drive, and browsing to the ISO file on your computer.
Boot (or restart) your virtual machine after inserting the ISO image and the virtual machine will boot from the ISO image. GParted’s live CD will ask you several questions while booting — you can press Enter to skip them for the default options.
Once GParted is booted, take a look at how the virtual drive is partitioned.
Warning: Not all operating systems will result in drives that are partitioned this way, however there is a good chance you’ll see something similar. Make sure you pay attention to the existing partitions when you’re doing this — carelessly resizing, reformatting, or deleting a partition can result in an inoperable virtual machine.
The arrangement of the partitions is extremely important. There are three partitions on the drive, plus 30 gigabytes of unallocated space.
The first partition, sda1, is the boot sector or the EFI System Partition. The second partition, sda2, is the “primary partition.” It is the space allocated to the Windows operating system — that is the partition we want to expand. It is noted with the red arrow and red box in the picture above.
Tip: Generally speaking, you can identify your primary partition by the size — it’ll be close to the total size of the original virtual drive you created.
Make sure to note that there is a third partition, sda3, directly between the partition you want to resize and the unallocated space we created previously. The position of sda3 means that we cannot just expand sda2 into the unallocated space. The third partition is literally in the way, and we’re going to have to move it first.
Right-click on sda3, then click “Resize/Move.”
Note: It might not be sda3 for you. You’re just looking for whatever partition is between the primary partition and unallocated space.
A new window will appear that lets you move the partition.
Take note of what the screen says. There are 30,722 megabytes of space following the msftres partition. If you want sda3 to be out of the way, we need to move sda3 all the way to the other side of the available space. Click on the “Free Space Preceding” box, enter “30722” into the field, then click “Resize/Move.” It should look like this:
Now sda3 is queued to be moved to the end of the unallocated space, and we can also set sda2 to be resized. Right-click sda2, then click “Resize/Move.”
Enter the number after “Maximum Size” into the “New Size” field, or drag the right-hand side of the slider all the way to the right.
If you’ve done it correctly, you should the value for “Maximum Size” in the “New Size” box now. Click “Resize/Move” to finalize the change.
Click the green check mark button near the top to apply all of the changes you’ve made. Applying the changes can take a few minutes, depending on how many move or resize operations you have queued, and how fast your computer is. Don’t be alarmed if you have to wait a while.
After the resize operation completes, restart your virtual machine and remove the GParted ISO file. Windows will check the file system in your virtual machine to ensure it’s working properly — don’t interrupt this check.
The virtual machine’s partition will now take up the entire virtual hard disk, so you’ll have access to the additional space.
Note that there are easier ways to get more storage — you can add a second virtual hard disk to your virtual machine from its settings window. You can access the other hard disk’s contents on a separate partition — for example, if you’re using a Windows virtual machine, the other virtual hard disk will be accessible at a different drive letter inside your virtual machine.