各位熟知的VMware中有两种在线的迁移方式,分别是vMotion和Storage vMotion。本文仅讨论Storage vMotion部分。
使用 Storage vMotion,您可在虚拟机运行时将虚拟机及其磁盘文件从一个数据存储迁移到另一个数据存储。使用 Storage vMotion,您可将虚拟机从阵列上移开,以便进行维护或升级。您也可灵活地优化磁盘性能,或转换磁盘类型(可用于回收空间)。可以选择将虚拟机及其所有磁盘放置在同一位置,或者为虚拟机配置文件和每个虚拟磁盘选择单独的位置。在通过 Storage vMotion 迁移时,虚拟机不会更改执行主机。
Storage vMotion迁移示意图如下
通过StoragevMotion迁移虚拟机时并不进行内存克隆,只进行简单的数据克隆,因此在StoragevMotion开始时,并没有主机的参与,只是单纯的文件在不同存储设备间克隆。VMware StoragevMotion允许以完全透明的方式将虚拟机的磁盘重新定位到不同的数据存储位置,而保持虚拟机处于运行状态且不停机。在移动虚拟机的磁盘文件前,Storage
vMotion将虚拟机的“主目录”移到新的位置。“主目录”包含有关虚拟机的元数据信息,如配置文件、替换文件、日志文件。它然后会“自我vMotion”至新的VM主位置。完成主目录迁移后,会对磁盘进行移动。首先,StoragevMotion为每个要迁移的虚拟机磁盘创建一个“子磁盘”。启动迁移操作之后,所有磁盘写入都将转到此“子磁盘”。其次,将“父级”或原始虚拟磁盘从旧的存储设备复制到新的存储设备。然后,将正在捕获写入操作的子磁盘与新复制的父磁盘重新建立父子关系。最后,将子磁盘整合到新的父磁盘,并且ESX主机会重新转到父磁盘位置。切换主目录和磁盘迁移的过程,创建子磁盘和父磁盘、重建父子关系及整合子磁盘将在不到两秒的时间里完成,速度之快令应用程序用户根本察觉不到。
虚拟机及其主机必须满足资源和配置要求,才能通过Storage vMotion迁移虚拟机磁盘。要满足的存储要求。
存储要求:运行虚拟机的主机必须能够访问源数据存储和目标数据存储。FC SAN、iSCSI SAN、NFS NAS三种类型都支持共享存储,只要ESX主机能同时访问到源和目标存储即可。并且Storage vMotion支持在线把虚拟机从ESX本地存储迁移到共享存储上,反之亦然。
StoragevMotion的源和目的存储可以是VMFS,也可以是NFS,或者2种的混合。下面,我们就Storage vMotion中的流程做出详细的说明。
Storage vMotion的迁移方式
VAAI
VAAI全称vstorage APIs array Integrate,是vMware的一个API接口,部分厂家的存储支持该功能。

StoragevMotion在迁移时实际是调用的FSDM/FS3DM的服务,该服务的默认的优先级是Hardware FS3DM>Software FS3DM>FSDM。如果存储支持VAAI,使用的就是Hardware FS3DM,它是从源存储直接拷贝到目标存储,传输走的是存储网络,Kernel级别只进行信令的验证。VAAI由4个组件组成,此处重点说下Delete Status。该组件的作用是存储自动回收空间,比如你的虚拟机采用的是thin provision模式,当你将该虚拟机删除后,只有存储支持Delete Status时,存储才会自动回收这部分空间,不是所有支持VAAI的存储都支持该模式,可以通过命令进行查看。
VMFS
当Storage vMotion检测到存储不支持VAAI,并此时的文件系统是VMFS时,则会触发Software FS3DM的迁移,此时所有的数据会通过VMkernel完成迁移。
NFS
当Storage vMotion检测到存储不支持VAAI,并此时的文件系统是NFS时,则会触发FSDM迁移,由于NFS本身具备文件系统,所以此时的迁移是Application级别。
影响Storage vMotion效率的因素
1.调用的服务类型,从迁移的效率来说,Hardware FS3DM>Software FS3DM>FSDM。
2.block size,源和目的存储的block size大小一致时效率最高,其次是源存储的block size小于目的存储的block size,最后是源存储的block size大于目的存储的block size。
3.文件系统类型,由上面得知,数据迁移可以发生在硬件层面,kernel层面和application层面,所以这就是为什么我们不推荐使用NFS存储或者VMFS混合使用存储的原因。
Storage vMotion的详细流程
无论调用哪种迁移方式,迁移的流程都是一样,以hardware FS3DM为例,虚拟机在迁移时的流程为:
1.需要迁移的虚拟机发出Storage vMotion请求
2.检测判断调用哪种迁移方式
3.将源数据想目标存储迁移,同时为申请迁移的虚拟机开启一个新的进程
4.开启mirror driver,该进程的作用是确保数据的一致性。storage vmotion是通过快照实现的,迁移开始时,会为需要迁移的数据做一个快照,将这部分的数据拷贝到目标存储上,在迁移过程中新写入的数据部分是通过mirror driver向源和目标存储同时写入,迁移完成后,mirror driver的写入部分会与拷贝部分的数据合并,确保数据的完整性。
5.当迁移全部完成时,会将源存储上的数据和源虚拟机进程删除掉,至此,整个迁移结束




