Take the 2-minute tour ×

What is the best method for setting the virtual hard drive (VDI) of the primary controller for an existing virtual machine?

Does the syntax change if the VDI is really a child differencing disk of some other parent disk? Do you need to attach the parent VDI and then the child VDI in some way?


I have an existing VM --- I want to replace the hard drive it uses to boot - with either another normal virtual HD or possibly a differencing disk. Can this be done with VBoxManage?

share|improve this question
add comment

3 Answers

up vote -1 down vote accepted

I believe this should do it for a virtual hard HD.

VBoxManage modifyvm winxp-web-dev --hda "/home/vbox/.VirtualBox/HardDisks/my_new_disk.vdi"

(That is how I do it when I create vm's from the console)

share|improve this answer
I think this is not valid way to done. While I try your suggestion, I get VBoxManage: error: Unknown option: -hda error. –  RecNes Dec 6 '13 at 19:45
Should be double minuses there. (Worked on 4.1.6) –  Jontas Dec 10 '13 at 8:07
add comment

Pretty old question but here is how I do it:

VBoxManage storageattach my-vm-name \
                         --storagectl "SATA Controller" \
                         --device 0 \
                         --port 0 \
                         --type hdd \
                         --medium /path/to/my-new.vdi

This assumes you want to replace the old disk. If you want to want to just add another disk use another port, for example 1 if you have only 1 disk (on port 0). Please note you could also add disks (or cd/dvd images) to "IDE Controller".

share|improve this answer
add comment

I'm not sure if you can do it though VBoxManage, I've always changed it through the GUI after using CloneHD, you answer may be in the VBoxManage Manuel

share|improve this answer
add comment

Your Answer


