前言
本文主要记述了如何使用virtualbox提供的命令行工具,将一个虚机转移到另一台服务器的命令。
主要使用VBoxManage这个命令
存档
首先,需要将需要转移的虚机停机,可以用
VBoxManage controlvm acpipowerbutton <vm_name>
实现正常关机。
然后,使用
VBoxManage export <vm_name> <filename.ova>
导出当前虚机镜像。
加载
然后将该镜像传到目标服务器上。
然后使用以下命令导入该虚机
VBoxManage import --options keepallmacs <filename.ova>
其中 --options keepallmacs
是保持所有的mac地址,这样可以再导入后,启动时硬件号不变化,那么可以减少IP变化等问题的困扰
如果是一个镜像想用多次,可以使用 --vsys 0 --vmname <new_name>
来指定虚拟机名字
修改网络
当使用桥接网络时,需要指定桥接哪张网卡。
由于迁移到新机器后,网卡名称多半会更改,尤其是当在Windows,Linux这样不同平台上迁移时。
这时,可以使用以下命令查看支持的网卡名称
VBoxManage list bridgedifs
里面的Name就是可以用的网卡名称。
然后使用以下命令进行修改
VBoxManage modifyvm <vm_name> --bridgeadapter1 <nic_name>
如果因为虚拟机版本不同,尤其是从高版本移到低版本时,会因为扩展包不兼容,造成无法启动,这时可以通过
VBoxManage modifyvm <vm_name> --usbehci off
关闭usb 2.0控制器来进行启动。
启动
修改成功后,可以使用
VBoxManage startvm --type headless <vm_name>
快捷脚本
为了方便起见,这里使用脚本,可以直接导入并修改桥接网络为eno1(这个可以根据实际需要修改)
#!/bin/sh if [ $# -ne 1 ] then echo "you should spec vm name" exit fi echo "Begin import vm" VBoxManage import --options keepallmacs $1.ova if [ $? -ne 0 ] then echo "Import vm error, exit" exit fi VBoxManage modifyvm $1 --bridgeadapter1 eno1 if [ $? -ne 0 ] then echo "Modify vm error, exit" exit fi VBoxManage startvm --type headless $1 if [ $? -ne 0 ] then echo "Start vm error, exit" else echo "Start vm $1 successfully" fi