VirtualBox是一个轻量化的type2虚拟化软件,下面是一些常用的技巧。

1. sharedfolder

随着VMs的增多,迫切需要一个“共享文件夹”

在vbox host中

$ sudo mkdir -p /home/sharedfolder/linux
$ sudo mkdir -p /home/sharedfolder/windows
$ sudo chown -R nobody:nogroup /home/sharedfolder
$ sudo vboxmanage sharedfolder add <vm1> --name "sharedfolder" --hostpath "/home/sharedfolder"
$ sudo vboxmanage sharedfolder add <vm2> --name "sharedfolder" --hostpath "/home/sharedfolder"

然后将公共文件放到sharedfolder中。

  • Linux Guest

    $ sudo mkdir /mnt/sharedfolder
    $ sudo mount -t vboxsf sharedfolder /mnt/sharedfolder
    文件类型是vboxsf,不是vboxfs,而且需要root帐号才能mount。
  • Windows Guest

    C:\net use s: \\vboxsvr\sharedfolder

    该命令将HOST中的“共享文件夹”映射成本地的“驱动器s”。

TroubleShooting

  • 错误1:

    现象:The machine '<vm name>' is already locked for a session (or being unlocked)

    原因:vm处于运行状态,需先将该vm关机后再执行该操作。

2. 自启动VM

待续

3. memory balloon

待续

4. VM管理

4.1 正确的查看VBox进程

在root中,`vboxmanage list runningvms`并不能看到non root帐号所运行的VMs,所以不要贸然地对VMs进行操作,应该用

$ sudo ps aux | grep VBox
chenr    13605  0.6  3.8 193768 157236 pts/5   Sl   12:31   1:14 /usr/lib/virtualbox/VBoxHeadless --startvm netmgmt-deb6 -vrde=off
chenr    13618  0.0  0.0  12848  3864 ?        S    12:31   0:01 /usr/lib/virtualbox/VBoxXPCOMIPCD
chenr    13623  0.0  0.1  26416  8112 ?        Sl   12:31   0:03 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
chenr    15770  1.9  3.7 606472 152532 pts/5   Sl   15:24   0:35 /usr/lib/virtualbox/VBoxHeadless --startvm win2k3-template --vrde=off

进行确认

当一个VM关机后,vboxheadless进程也会自动终止。

5. snapshot

5.1 创建快照

在4.1版本中,online snapshot有bug,解决办法是先“暂停”VM,再创快照。

  1. 暂停虚拟机

    $ VBoxManage controlvm "centos_5.6_64" pause
  2. 快照

    $ VBoxManage snapshot "centos_5.6_64" take "after_install_office2011"
  3. 继续使用虚拟机

    $ VBoxManage controlvm "centos_5.6_64" resume

5.2 恢复快照

  1. 列出所有snapshot

    $ VBoxManage showvminfo "centos_5.6_64"
  2. 中止虚拟机

    $ VBoxManage controlvm "centos_5.6_64" poweroff
  3. 恢复到某个snapshot

    $ VBoxManage snapshot "centos_5.6_64" restore ee927385-5306-4efe-92bb-92b8279a6f37

6. vmdk to vdi

$ sudo qemu-img convert /path/to/original.vmdk converted.bin
$ VBoxManage convertdd converted.bin converted.vdi