前几天博主迁移了一台测试服务器上的virtualbox虚拟机。本来直接拷贝文件就可以解决的问题,结果折腾了我一天。一开始,我没注意这台服务器的虚拟机中有多个snapshot快照,最后复制完启动虚拟机后发现系统是很老之前的版本。我的操作步骤是这样的。。。
先把virtualbox的虚拟硬盘文件从一块硬盘复制到另外一块,启动virtualbox。再修改VirtualBox虚拟机VDI文件的UUID,修改uuid的网址http://blog.nbqykj.cn/?p=1525.html。如果不修改就会出现硬盘添加失败的提示:“Cannot register the hard disk ‘F:\VirtualBox VMs\xp4.vdi’ {e4fa9f4f-9450-4609-b0d1-e56b93b7579c} because a hard disk ‘F:\VirtualBox VMs\xp3.vdi’ with UUID {e4fa9f4f-9450-4609-b0d1-e56b93b7579c} already exists.”。最后修改设置中虚拟硬盘文件的路径,启动:“ VBoxManage startvm 192.168.0.242 –type headless ”。
如果虚拟机没有快照,这样操作后就好了。不过如果有多个snapshot快照,那么启动的系统是最老版本。 所以这时需要进行恢复快照操作。
先打开virtualbox虚拟机的配置文件,比如192.168.0.242.vbox。
从图中可以看到,配置文件中有两块主的虚拟硬盘文件,分别是a33caaef-6f67-4444-8b59-3540d214ef50和2b37d351-3d0f-4d27-b39d-286ff99e209d,对应的路径分别为/242/ubuntu64_db/ubuntu64_db.vdi和/data2/ubuntu64_db/ubuntu64_db.vdi。前者是老的虚拟硬盘文件的uuid号和路径。virtualbox在启动时没有找到老文件,所以选择2b37d351-3d0f-4d27-b39d-286ff99e209d这块新盘了。从这个配置文件中可以比较清楚的看到新盘下面是没有任何snapshot快照文件的。
那么接下来我在老的配置行把uuid号和路径修改成新硬盘文件对应的信息,删除新行:“<HardDisk uuid=”{2b37d351-3d0f-4d27-b39d-286ff99e209d}” location=”/data2/ubuntu64_db/ubuntu64_db.vdi” format=”VDI” type=”Normal”/>”。又把文件中有a33caaef-6f67-4444-8b59-3540d214ef50的部分都替换成2b37d351-3d0f-4d27-b39d-286ff99e209d。
然后回过来再看第一张图。从currentSnapshot可以知道当前最新快照对应的虚拟硬盘文件是dfec63bc-248e-42dd-892d-67d72ad462e2,找到文件中他的配置信息。如下图所示。
这里包含了这个快照使用的虚拟硬盘文件,记录虚拟硬盘文件storageController配置信息。
最后我们查看virtualbox配置文件的最后页,把上一步我们记录的虚拟硬盘文件的uuid号对应的输入到最后这里。博主这里有多个虚拟硬盘,所以有两个attacheddevice。
复制完成后保存退出,配置文件修改结束。
现在说下最后的问题,虚拟硬盘文件parent属性修改。之前我修改了主虚拟硬盘文件的uuid,但是第一图中91b05fe6-2d07-4dc8-97b9-5384496e215d这个文件的parent还是老的文件,可以使用这个命令修改parent属性。
root@ubuntu:# vboxmanage internalcommands sethdparentuuid <虚拟硬盘文件地址> <新uuid>
修改完成后,重新启动virtualbox,系统成功恢复到最新快照状态。
总结:下次朋友们迁移包含快照虚拟机的时候记得不要改uuid了,直接修改配置文件就会少很多麻烦,不然就会和博主一样折腾。
评论列表(0条)
楼主,你这个迁移是同一个主机迁移到不同目录;还是不同主机之间的迁移呢? 同一主机可以用虚拟机管理器里面右键复制就可以了,不用那么麻烦的。。。 不同主机迁移好像virtualbox还没有实现,除非是两台配置完全一样的主机。。。我迁移就没有成功,报CPUID不匹配。
恩,是在同一台主机上,原来一块盘坏了。因为服务器环境没有装界面,而且也没注意到有多个snapshot,所以改了主盘的uuid后就出现只恢复到最老版本的问题了。