2010/01/23

VirtualBox的实时迁移试验 [轉載文章]

文章來源:liangsuilong 的 Blog
網址:http://www.liangsuilong.info/?p=517

自VirtualBox发布3.1版本以来,Sun赋予了VirtualBox实时迁移的能力。当然Sun没有称自家的实时迁移技术为Live Migration,而是叫Teleportation。按照它自家的说法就是Teleportation比Live Migration更高级。

实现实时迁移的条件之一就是要先把虚拟机存储文件存放在公共的存储空间,因此需要设定一个共享存储(Shared Storage)的空间,让实现迁移的两台实体主机都能够连接到共享存储空间上的虚拟媒体文件,包括虚拟磁盘、虚拟光盘和虚拟软盘。否则,即使迁移完成以后,也会因为无法启动迁移后的虚拟机。实时迁移实际上把虚拟机的各个配置文件封装在一个文件,然后透过高速网络,把这个封装文件和内存运行状态从一台实体机迅速传送到另外一台实体机上,期间虚拟机一直保持运行状态。在现有技术条件下,大多虚拟机软件,如VMware、KVM、Hyper-V、Xen都需要共享存储。VirtualBox支持NFS和SMB/CIFS协议的网络文件系统,也可以支持iSCSI连接到SAN网络。选用哪一种网络文件系统,则需要根据具体情况而定。SMB/CIFS在Windows和Linux都设置简便。NFS在Windows则略显烦复。

Source机
CPU: Pentium E2160
RAM: 2GB
OS: Fedora 12 x86_64

Target机
CPU: Athlon 64 X2 4200+
RAM: 2GB
OS: Windows 7 Ultimate x64

Guest机
Name: XP
CPU: Virtual Single-Core Processor without VT
RAM: 1GB
OS: Windows XP Professional

首先架设一个共享存储环境,我就选用了SMB/CIFS协议,在Source机架设了Samba服务。如果把共享存储服务放置在第三台电脑上会更好,但是我由于条件所限只能把共享存储服务安装在Source机上。具体方法就不再详述了。然后移动Source机上的虚拟磁盘文件移动到共享存储服务器上。重新注册到Source机上的VirtualBox,并重新连接到Guest机,即可启动Guest机。

在Target机上新建一个虚拟机。虚拟机的配置和特性要求与Source机上的Guest机完全一致。随后把共享存储上的虚拟磁盘文件连接到这台虚拟机上。随后在Target机运行如下命令:

VBoxManage modifyvm –teleporter on –teleporterport –teleporterpassword
以我的试验为例:

VBoxManage modifyvm XP –teleporter on –teleporterport 1234 –teleporterpassword 123456
若是在Windows上使用VBoxManage命令行,则需要在命令提示符进入VirtualBox的安装目录,用VBoxManage.exe替代VBoxManage,使用效果是一样的。

以上命令瞬间执行完毕,然后启动Target机上的Guest机。此时VirtualBox弹出等待迁移的窗口。若取消迁移,可以按下窗口上的关闭键。


fig. 1

然后在Source机运行迁移命令:

VBoxManage controlvm teleport –host // –port –password
以我的试验为例:

VBoxManage controlvm XP teleport –host 192.168.1.3 –port 1234 –password 123456


fig. 2

Source机和Target机的VirtualBox控制台同样出现了正在Teleportiong的状态:


fig. 3

迁移过程实际上是很短暂的。VirtualBox把虚拟机的配置文件封装并与虚拟机内存运行状态一并从Source机传送到Target机即可。按照我家里的网络情况,TP-Link百兆家用路由器搭建的局域网,大约20秒的时间就可以完成迁移过程。VirtualBox显示的剩余时间实际上是没有意义的。迁移前段VirtualBox进行文件校验应该会花费不少时间。实际所需要的时间是根据网络情况与Source机和Target机的性能配置而定。

当迁移完成以后,Source机上的Guest机自动关闭,而Target机上的Guest自动启动并且恢复到Guest机关闭前的那一刻状态。此时VirtualBox控制台就会显示Teleported状态。


fig. 4

当Guest机下一次在Target机上启动前,需要把实时迁移的功能关闭,否则就会出现等待迁移的界面。

VBoxManage modifyvm XP –teleporter off
至此,整个实时迁移的试验宣告完成了。此外我更换了Target机的OS,改为与Source机一样的Fedora 12 x86_64,似乎迁移的稳定性会更加好。以上截图大多数取自第二次迁移试验。

注意事项:

1. 在VirtualBox上运用实时迁移功能,Source机和Target机的硬件配置越接近越相似出现错误的机会就会越少。如果Source机和Target机硬件配置一致,那么出现兼容性的问题就非常地小。特别是两台机器的处理器,尽量要相近的型号。型号差异过大,则非常容易导致出错,尤其是Guest机内运行着专门为特定处理器优化的软件。当在两台处理差异过大的机器上进行实时迁移,特别是在跨品牌处理器之间(主要是AMD与Intel)的迁移,那么建议用户关闭虚拟处理器的筛选器。命令如下(后面<>为命令选项):

VBoxManage modifyvm –cpuid
2. 实施迁移前,一定要确保Source机和Target机上的Guest机硬件配置和设置都是一样的,特别是System和Display的选项一定要保持一致,同样也需要采用相同的虚拟网卡。VirtualBox的实时迁移功能并不需要依赖VT技术,但是不能在一台没有VT的Guest机和一台开启VT的Guest机之间迁移,否则就会出现错误。

3. 最好配备有千兆局域网或者更好的网络条件,因为Guest机的磁盘操作需要较高的速率,如果仅仅靠百兆局域网,那么速率上的限制和操作上的延时则极大地影响文件操作的效率和适用体验。

总结

VirtualBox 3.1带来了实时迁移能力,实在让人惊喜。这应该是第一款跨处理器品牌跨平台的虚拟机软件,能够在Windows、Linux、Mac OS X和Solaris平台上进行实时迁移。良好的易用性,一直都是VirtualBox的优点。不过看起来,实时迁移对于VirtualBox而言还是刚刚起步,还有很远的路去走。没有为实时迁移这种重量级的特性配备图形化操作界面对VirtualBox这款以易用闻名的虚拟机来说,不得不说是一个遗憾。

最后,限于条件,我没有带有VT技术的Intel处理器。如果哪位热心朋友有这样的条件,可以进行一次带有VT的AMD与Intel的实时迁移试验,将会更有挑战性,因为这种情况下更容易出现处理器兼容性的问题。