VM如何做数据漂移

      目前的虚拟机软件,都是在一台物理机上面虚拟出几个VM来进行管理的,暂时还无法做到将物理机整合为一台超级计算机之后再在上面虚拟出VM。为了有效的管理虚拟机,就需要要对虚拟机进行漂移。
如果对虚拟机的实时性要求不高,完全可以做到先将虚拟机关闭之后,再SCP数据到指定的物理机上,重新开启虚拟机即可。对于有时间要求的,我们也可以通过控制VM,让VM先休眠,再漂移数据,然后再重启VM也行。
但是有些系统,如数据库服务器,要求系统能够做到实时漂移,该使用什么样的方案呢?VMware可以做到这一点了,从他们的技术展示会上,也没有明白具体 思路,只知道是快照+恢复。但是我们使用vmware的快照功能,也是需要几秒钟的,他说的实时是一个偷梁换柱的概念?当然了,对于这种系统,数据肯定是 存储在虚拟机之外的存储设备上的,漂移的只是内存中的数据。
如果使用虚拟机的双机热备,也是一种方法,但是需要用户在虚拟机里面安装热备软件,操作起来麻烦,如果能够在VM这个层面解决是最好的,便于管理,还减少用户烦恼。
VM实时漂移的先决条件(该资料由李战提供,非常感谢):
1.VM的磁盘要能瞬间“漂移”
  如果VM的磁盘实际映射的是宿主物理机的磁盘或磁盘文件,就很难漂移。一般的做法就是给VM提供虚拟磁盘,实际对应的是分布式储存系统。VM要漂移到新的宿主机,只需用原来的虚拟磁盘ID去挂载虚拟磁盘即可实现磁盘的瞬间“漂移”。因此,云计算的分布式存储系统非常重要。


2.VM的访问路径要能瞬间切换
  VM的漂移会引发VM物理网络访问路径的变化。如果漂移前后的地方处没有跨三层交换机或处于二层交换 机,可以做到漂移后的IP地址不变。如果跨三层交换机,需要更新IP的路由,这比较麻烦。如果只是WEB应用,可以通过VIP,让对外的IP不变,而内部 IP变化后,更新VIP映射关系。
VM漂移的基本过程:
1.新建一个同样配置的VM
2.从旧VM同步内存数据到新VM,这是一个逐步逼近的过程
3.当双方内存快接近一致时,暂停旧VM,同步最后的差异数据(很快)
4.切换虚拟磁盘,切换网络访问路径
5.继续新VM运行
这个过程快的话可以在零点几秒完成,慢的话也就1-2秒。
如果程序的socket连着,你从一台瞬间飘另外一台, 这个socket会不会断?如果漂移后的IP不变,是不会断的,只要迁移后的路由仍然可达,双方的连接状态还是持续的。但是socket属于外部连接,停机切换那会肯定要断开一下的最多有几个包要丢失而重发,但对TCP连接来说是透明的。

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据