This procedure is for Windows but Linux commands are the same except for paths.
Quote from Virtualbox manual:
"This currently works only for expanding the capacity of VDI and VHD formats, and only for the dynamically allocated variants. For example, if you originally created a 10G disk which is now full, you can use the --resize 15360 command to add 5 GByte more space to the virtual disk without having to create a new image and copy all data from within a virtual machine."
!!!Remember to back up the data in your vdi before doing this!!!!!
To resize a *.vdi file in Virtualbox 4.x, run this command in Windows cmd.exe:
VBoxManage modifyhd /path/to/YOUR_HARD_DISK.vdi --resize SIZE_IN_MB
example: VBoxManage modifyhd "C:/Users/Rick/VirtualBox VMs/LXDE/LXDE.vdi" --resize 20000
Note the quotes due to spaces in path name.
You may need the full path for VBoxManage.
e.g. "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
Change path to whatever your file name is.
In this example the resize size is 20GB. (I resized a 10GB LXDE.vdi)
The process takes just a couple of seconds.
Once the resize is complete, you need to resize and/or move the partitions in the vdi. I found that Parted Magic worked great. Just download it then make the .iso the boot drive for your vm.
Hope this helps