> 文章列表 > Virtualbox Vagrant 迁移与恢复

Virtualbox Vagrant 迁移与恢复

Virtualbox  Vagrant 迁移与恢复

前 言

window10电脑重新安装C盘。重装前正常使用的VirtualBox虚拟机,启动失败,先是启动报各种找不到{uuid.vmdk}文件的错误,使用原来的虚拟机配置文件虽然能正常启动,但是关闭虚拟机后,xxx.vbox配置文件的快照顺序又被自动清掉,导致又不能正常使用。 折腾了好久,特此记录一下。

恢复过程

1、备份文件:

  1. 备份C盘VirtualBox.xml全局配置文件,比如我的目录:C:\\Users\\HZL\\.VirtualBox\\VirtualBox.xml
  2. 备份虚拟机文件,比如我的: E:\\Program Files (x86)\\Oracle\\VirtualBox VMs\\HZL_default_1591694534017_91720\\
  3. 如果使用vagrant up的方式启动的VirtualBox,则还需要备份C:\\Users\\HZL\\.vagrant
    C:\\Users\\HZL\\.vagrant.d
    C:\\Users\\HZL\\.Vagrantfile vagrant 配置文件
    Virtualbox  Vagrant 迁移与恢复

Virtualbox  Vagrant 迁移与恢复

2、重新安装Virtualbox后,将 VirtualBox.xml文件拷贝覆盖原文件

C:\\Users\\HZL\\.VirtualBox
C:\\Users\\HZL\\.vagrant
C:\\Users\\HZL\\.vagrant.d

3、Virtualbox界面,选择"管理——虚拟介质管理器",手动添加注册虚拟介质

注意: 有快照的话,需要按照层级先后顺序,依次注册。如果不记得顺序的话,顺序可以参考 “HZL_default_1591694534017_91720.vbox”配置文件或者

C盘的VirtualBox.xml全局配置文件,里面有写原来的介质顺序。

类似这样:

Virtualbox  Vagrant 迁移与恢复

按照顺序注册添加后,直接点击关闭(不要点“刷新”,否则白填),效果如下:

Virtualbox  Vagrant 迁移与恢复
注册时完成,示意图如下,状态显示“已关闭”,右侧注册的快照信息正常显示,代表成功。Virtualbox  Vagrant 迁移与恢复
(我之前缺少了注册的这一步,导致我的虚拟机只能正常启动一次,等关闭了虚拟机后,我的“HZL_default_1591694534017_91720.vbox”配置文件快照顺序,就会被覆盖掉,丢失了快照绑定顺序就报错各种找不到{uuid.vmdk},导致启动不了。"xxx.vbox"配置文件注释也说明了,不要手动修改该文件,还是要以图形化界面管理来自动修改xxx.vbox配置文件比较好靠谱,所以这一步不能缺少。)

4、Virtualbox界面,选择"控制-注册”,注册虚拟机

如果你有提前打开VirtualBox.xml文件,注册完成之后,你就会发现此时C:\\Users\\HZL\\.VirtualBox\\VirtualBox.xml VirtualBox.xml全局配置文件也会随之修改更新。

5、Virtualbox界面,选择"设置——存储 & 系统启动顺序 "【缺少这步,启动虚拟机会报错FATAL:NO bootable medium found!System halted.】

左侧选中某个虚拟机,点击“设置”,进入虚拟机设置图形化界面,存储——控制器——添加。

Virtualbox  Vagrant 迁移与恢复

选中,刚才注册添加的虚拟介质硬盘

Virtualbox  Vagrant 迁移与恢复
我这里添加绑定了2块虚拟硬盘
Virtualbox  Vagrant 迁移与恢复

设置 ——系统 ,设置系统启动加载顺序。VirtualBox默认光盘、软盘启动优先,建议:设置为硬盘启动优先。

Virtualbox  Vagrant 迁移与恢复

6、启动虚拟机成功

配置完成以上步骤以后,就算完成了,就算反复重启虚拟机,也能正常启动,关键还是图形化界面把快照和介质相关的信息固定到了
HZL_default_1591694534017_91720.vbox”和C:\\Users\\HZL\\.VirtualBox\\VirtualBox.xml 文件中。

7、恢复 vagrant up 方式启动虚拟机

  1. 安装 vagrant
  2. 拷贝并覆盖
    C:\\Users\\HZL\\.vagrant
    C:\\Users\\HZL\\.vagrant.d
    C:\\Users\\HZL\\.Vagrantfile vagrant 配置文件

如果没有覆盖这些文件,你发现vagrant up 启动的是新的虚拟机示例,跟你原来的虚拟机无法绑定。

# 启动默认的虚拟机
$ vagrant up # 启动指定虚拟机
$ vagrant up web1# 关闭指定虚拟机
$ vagrant halt web1

设置 vagrant 多实例启动的配置模板。

备份C:\\Users\\HZL\\.Vagrantfile 文件,并修改它,
如下模板,定义了3个实例,

Vagrant.configure("2") do |config|config.vm.define "default" do |default|default.vm.box = "centos7"default.vm.network "private_network", ip: "192.168.56.10"default.vm.host_name = "default"default.vm.synced_folder "E:/Program Files (x86)/Vagrant/share_data", "/vagrant_data",type: "rsync",rsync__args: ["--verbose", "--rsync-path='sudo rsync'", "--archive", "--delete", "-z"]default.vm.provider "virtualbox" do |v|v.memory = "4096"v.cpus = 1end
endconfig.vm.define "web1" do |web1|web1.vm.box = "centos7"web1.vm.network "private_network", ip: "192.168.56.11"web1.vm.host_name = "web1"web1.vm.synced_folder "E:/Program Files (x86)/Vagrant/share_data", "/vagrant_data",type: "rsync",rsync__args: ["--verbose", "--rsync-path='sudo rsync'", "--archive", "--delete", "-z"]web1.vm.provider "virtualbox" do |v|v.memory = "4096"v.cpus = 1end
endconfig.vm.define "web2" do |web2|web2.vm.box = "centos7"web2.vm.network "private_network", ip: "192.168.56.12"web2.vm.host_name = "web2"web2.vm.synced_folder "E:/Program Files (x86)/Vagrant/share_data", "/vagrant_data",type: "rsync",rsync__args: ["--verbose", "--rsync-path='sudo rsync'", "--archive", "--delete", "-z"]web2.vm.provider "virtualbox" do |v|v.memory = "4096"v.cpus = 1endend  end 

多实例启动时,指定别名启动,命令分别为:
vagrant up default
vagrant up web1
vagrant up web2

启动后,使用 VirtualBox管理器查看,已经有多个实例存在:
Virtualbox  Vagrant 迁移与恢复

驱动下载