企业部署虚拟化后,如果发现存储的性能出现问题,或者需要对存储进行维护时,就需要进行Storage vMotion。不同于虚拟机的vMotion,Storage vMotion迁移的是虚拟机存储的位置,而不是内存运行位置。虚拟机在Esxi中是以文件的形式存在,Storage vMotion就是将虚拟机的文件从a存储迁移到B存储,如图所示:

Storage vMotion的源和目的存储可以是VMFS,也可以是NFS,或者2种的混合,唯一的条件是:需要Esxi能同时看到源和目的的存储。下面,我们就Storage vMotion中的流程做出详细的说明。

Storage vMotion的迁移方式

1.VAAI

VAAI全称vstorage APIs array Integrate,是vMware的一个API接口,部分厂家的存储支持该功能。Storage vMotion在迁移时实际是调用的FSDM/FS3DM的服务,该服务的默认的优先级是Hardware FS3DM>Software FS3DM>FSDM。如果存储支持VAAI,使用的就是Hardware FS3DM,它是从源存储直接拷贝到目标存储,传输走的是存储网络,Kernel级别只进行信令的验证。VAAI由4个组件组成,此处重点说下Delete Status。该组件的作用是存储自动回收空间,比如你的虚拟机采用的是thin provision模式,当你将该虚拟机删除后,只有存储支持Delete Status时,存储才会自动回收这部分空间,不是所有支持VAAI的存储都支持该模式,可以通过命令进行查看。

2.VMFS

当Storage vMotion检测到存储不支持VAAI,并此时的文件系统是VMFS时,则会触发Software FS3DM的迁移,此时所有的数据会通过VMkernel完成迁移。

3.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和NFS混合存储的原因。

4.当然,还有网络带宽,建议至少是千兆网,有条件的话万兆网更好。

Storage vMotion的详细流程

无论调用哪种迁移方式,迁移的流程都是一样,以hardware FS3DM为例,虚拟机在迁移时的流程为:

1.需要迁移的虚拟机发出Storage vMotion请求

2.检测判断调用哪种迁移方式

3.将源数据想目标存储迁移,同时为申请迁移的虚拟机开启一个新的进程

4.开启mirror driver,该进程的作用是确保数据的一致性。storage vmotion是通过快照实现的,迁移开始时,会为需要迁移的数据做一个快照,将这部分的数据拷贝到目标存储上,在迁移过程中新写入的数据部分是通过mirror driver向源和目标存储同时写入,迁移完成后,mirror driver的写入部分会与拷贝部分的数据合并,确保数据的完整性。

5.当迁移全部完成时,会将源存储上的数据和源虚拟机进程删除掉,至此,整个迁移结束