概念
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不一样,很多高级功能可能无法落实或速度很慢)(开启EVC)
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,因此要考虑新旧版本的问题