One day, for various reasons, I needed to boot one VM image so that I could use it to manipulate a second image. Here's how I would have done it with qemu:

qemu -hda /dev/zvol/tank/vm1 -hdb /dev/zvol/tank/vm2

Here's how to do the same thing with VirtualBox, which is what I was using instead:

VBoxManage createvm --name tempvm
VBoxManage registervm Machines/tempvm/tempvm.xml
VBoxManage internalcommands createrawvmdk -filename \
  /home/user/.VirtualBox/Machines/tempvm/1.vmdk -rawdisk \
  /dev/zvol/tank/vm1 -register
VBoxManage internalcommands createrawvmdk -filename \
  /home/user/.VirtualBox/Machines/tempvm/2.vmdk -rawdisk \
  /dev/zvol/tank/vm2 -register
VBoxManage storagectl tempvm --name controller1 --add ide
VBoxManage storageattach tempvm --storagectl controller1 \
  --port 0 --device 0 --type hdd --medium \
  /home/user/.VirtualBox/Machines/tempvm/1.vmdk
VBoxManage storageattach tempvm --storagectl controller1 \
  --port 0 --device 1 --type hdd --medium \
  /home/user/.VirtualBox/Machines/tempvm/2.vmdk
VBoxSDL --startvm tempvm

Guess which one of these commandline interfaces I prefer.

(I wrote this up in April 2010)