概念  

     vmotion是vsphere高级功能的基础,DRS、HA、FT等功能都依赖于vmotion。简单来说,vmotion指虚拟机漂移。比如有一台VM原来在exsi1上运行,我们可以通过vmotion技术把VM移动到exsi2上。

     那为什么要用到vmotion呢?显而易见,就是要保证服务能够快速恢复。在非虚拟化环境中,一台物理服务器down了,需要重新部署的话必须要重装系统,部署软件等,很麻烦。而虚拟化环境中,通过vmotion能够快速的迁移服务,最大程度的减少服务宕机时间。

原理

 

如图所示,简答来说包括几个过程:

1)EXSI-1拷贝VM的当前内存数据到EXSI-2中;

2)由于此时VM仍在运行中,肯定会有新的数据写入,因此EXSI-1会记录内存改变(memory bitmap)。这里说的记录内存改变不是记录改变的具体内容,而已记录内存改变的内容存放的地址。

3)当内存数据完全拷贝到EXSI-2后,EXSI-1中的VM会停止对外服务,保证内存不会再改变了。

4)EXSI-1拷贝memory bitmap到EXSI-2;

5)EXSI-2根据memory bitmap中的地址,去克隆对应地址中的内存数据。完成后,EXSI-2就具备和EXSI-1一模一样的内存数据了。

6)由于两个EXSI是共享一个存储,因此此时VMDK可以直接移动给EXSI-2使用。相当于EXSI-2具有VM的硬盘内容了

7)此时,VM就能直接在EXSI-2运行并对外提供服务了,EXSI-1中内存数据会删除以释放空间。整个过程不存在操作系统的开关机操作,是一种在线式的迁移。

8)VM会通过反向ARP协议告诉网络,VM的IP地址对应的MAC是在EXSI-2上了

实现VMOTION的前提条件

1)各个EXSI必须共享同一个外置存储(否则无法共享VMDK硬盘文件)

2)服务器必须具有相同的硬件配置,尤其是CPU必须是一样的品牌型号(CPU不一样,很多高级功能可能无法落实或速度很慢)

3)CPU必须支持虚拟化命令,如INTEL-VT

4)如没有采用分布式交换机的,所有EXSI中的vswitch必须具有一样的名称,port group

5)VM必须是连入物理网络的,不能在纯虚拟网络中。

6)VM不能对应到RAW格式磁盘机

7)必须安装vmware tools

对于这些条件,可以人工检查,也可以在集群中启用EVC模式(其实重点是检查CPU兼容性)来自动检查。当新加入的EXSI不匹配EVC中配置时,将不会启用VMOTION

EVC模式:

1)disable。不启用,使得各种类型CPU都使用VMOTION,但功能和速度不保证。

2)enable EVC for AMD hosts:只有AMD系列才能加入集群。选择这项能具体到CPU的型号

3)enable EVC for INTEL hosts:只有intel系列才能加入集群。选择这项能具体到CPU的型号

VMOTION实践

一、非动态迁移

这种方法是VM能够瞬间迁移(因为没有内存克隆的过程,仅直接挂载VMDK到另一台EXSI,所以瞬间完成)到另一台EXSI中。操作过程是:

VM关机---->用鼠标拖动VM到另一台EXSI上---->开机,完成迁移。

二、动态迁移

操作方法也是用鼠标拖动VM到另一台EXSI上即可。另外一种方法是右键点击虚拟机,然后选择“迁移”,然后按提示操作即可完成vmotion

可以看出vmotion操作都是非常简单的。而在实际使用中,很少会去手动做vmotion,更多是通过vmotion来实现DRS、HA等高级功能。

SVMOTION

即存储的vmotion。svmotion由于没有内存的克隆等操作,而是直接的存储到存储的VMDK拷贝,因此较为简单。这里只提及几点需要注意的地方。

1)引导状态下的VM做svmotion,会涉及硬盘内容改变的情况,因此会有类似vmotion中内存克隆的操作,因此会较慢,但不会影响业务,不丢包。

2)svmotion一般是要更换新存储、更换到更快的硬盘(从SATA的LUN到SAS盘的LUN)时会使用到。

3)由于是VMDK拷贝,因此在新存储和旧存储中都会有一份VMDK,因此要考虑新旧版本的问题