最近一直在折腾虚拟机,主要是用 VirtualBox。一开始嘛都是用那个图形界面点点点,挺直观的。但后来机器多,或者有时候人不在电脑旁边,想通过命令行搞定,就发现那个图形界面不太够用。
摸索 vboxmanage
然后我就去找资料,发现 VirtualBox 自带一个叫 vboxmanage
的命令行工具。这家伙据说能干图形界面所有能干的事,甚至更多。于是我就开始捣鼓起来。
第一步,总得知道我有哪些虚拟机。我就打开命令行终端(我用的是 Windows,所以是 cmd 或者 PowerShell,Linux 应该也差不多),试着敲 vboxmanage list vms
。还真管用,一下子把我装的所有虚拟机名字和它们的 UUID 都列出来。感觉有点小兴奋,这不就开始入门嘛
启动和关闭虚拟机
光列表没用,得能启动。我看看网上别人咋用的,试下 vboxmanage startvm "我的虚拟机名字"
。注意,如果你的虚拟机名字里有空格,最好用引号给它包起来。敲完回车,熟悉的虚拟机窗口就弹出来,跟我在图形界面里点启动一个效果。
后来发现,有时候我只是想让虚拟机在后台跑,并不需要那个显示窗口,特别是在服务器上。这时候就要加个参数,vboxmanage startvm "我的虚拟机名字" --type headless
。这样一搞,虚拟机就在后台默默运行,任务管理器里能看到进程,但桌面上啥也没有,清爽多。这个 headless 模式对我来说特别实用。
启动就得有关闭。最开始我图省事,直接用 vboxmanage controlvm "我的虚拟机名字" poweroff
,这相当于直接拔电源,简单粗暴。后来觉得这样对虚拟机系统不太就改用 vboxmanage controlvm "我的虚拟机名字" acpipowerbutton
,这个命令就像是按一下电源按钮,虚拟机会自己走正常的关机流程,感觉安全点。
查看和修改配置
有时候装完虚拟机,时间一长就忘给它分配多少内存、几个 CPU。用 vboxmanage showvminfo "我的虚拟机名字"
这个命令就能看得很清楚,它会列出一大堆详细信息,包括内存、CPU、网络设置、硬盘挂载等等,非常全。
看完就可能想改。比如我觉得某个虚拟机内存不够用,想加点。就可以用 vboxmanage modifyvm "我的虚拟机名字" --memory 2048
这样的命令,把内存改成 2048MB。类似的,改 CPU 个数(--cpus
)、改网络模式(比如 --nic1 bridged --bridgeadapter1 "你的物理网卡名"
)都可以用 modifyvm
这个命令来搞定。改完之后重启虚拟机就生效。
其他常用操作
除上面这些,vboxmanage
还能干很多事。比如:
- 克隆虚拟机:想复制一个现成的虚拟机环境,用
vboxmanage clonevm "源虚拟机名" --name "新虚拟机名" --register
就行。 - 快照管理:做实验前打个快照是个好习惯。
vboxmanage snapshot "虚拟机名" take "快照名"
创建快照,vboxmanage snapshot "虚拟机名" restore "快照名"
恢复快照,vboxmanage snapshot "虚拟机名" list
查看快照,vboxmanage snapshot "虚拟机名" delete "快照名"
删除快照。 - 导入导出:要把虚拟机挪到别的电脑上,可以先用
vboxmanage export "虚拟机名" -o "导出的文件路径.ova"
导出成一个 ova 文件,然后到新电脑上用vboxmanage import "导出的文件路径.ova"
导入回来。
一点小体会
刚开始用的时候,确实觉得命令参数有点多,记不住。特别是虚拟机名字长或者有特殊字符的时候,容易出错。后来发现,直接用 list vms
命令列出来的那个长长的 UUID 来代替虚拟机名字,基本上就没错,虽然丑点,但可靠。
还有就是,这个 vboxmanage
命令一般在你安装 VirtualBox 的目录里,有时候系统环境变量没配好的话,直接敲命令会找不到。这时候要么去安装目录下面执行,要么手动把那个目录加到系统的 PATH 环境变量里去,这样就能随时随地敲命令。
vboxmanage
这个工具,虽然看着是命令行,有点“复古”,但用熟之后,管理虚拟机效率真的高很多,特别是需要批量操作或者远程管理的时候,简直是神器。对我这种喜欢瞎折腾的人来说,掌握它是非常有必要的。