内容预览:

1. Storage vMotion的迁移方式

2. 影响Storage vMotion效率的因素

3. Storage vMotion的详细流程

企业部署虚拟化后,如果发现存储的性能出现问题,或者需要对存储进行维护时,就需要进行Storage vMotion。

不同于虚拟机的vMotion,Storage vMotion迁移的是虚拟机存储的位置,而不是内存运行位置。

虚拟机在Esxi中是以文件的形式存在,Storage vMotion就是将虚拟机的文件从a存储迁移到B存储,如图所示:

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

1. Storage vMotion的迁移方式

1.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的存储都支持该模式,可以通过命令进行查看。

1.2. VMFS

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

1.3. NFS

当Storage vMotion检测到存储不支持VAAI,并此时的文件系统是NFS时,则会触发FSDM迁移,由于NFS本身具备文件系统,所以此时的迁移是Application级别。

2. 影响Storage vMotion效率的因素

2.1.调用的服务类型,从迁移的效率来说,Hardware FS3DM>Software FS3DM>FSDM。

2.2.block size,源和目的存储的block size大小一致时效率最高,其次是源存储的block size小于目的存储的block size,最后是源存储的block size大于目的存储的block size。

2.3.文件系统类型,由上面得知,数据迁移可以发生在硬件层面,kernel层面和application层面,所以这就是为什么我们不推荐使用NFS存储或者VMFS和NFS混合存储的原因。

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

3. Storage vMotion的详细流程

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

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

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

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

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

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

vSphere中Storage vMotion的流程详解的更多相关文章

  1. [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)

    :由于在大多数情况下GPIO的状态变化都会触发应用程序执行一些动作.为了方便nRF51官方把该流程封装成了GPIOTE,全称:The GPIO Tasks and Events (GPIOTE) . ...

  2. [ 转载 ] Java开发中的23种设计模式详解(转)

    Java开发中的23种设计模式详解(转)   设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...

  3. C++的性能C#的产能?! - .Net Native 系列《二》:.NET Native开发流程详解

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  4. 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

    本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...

  5. Linux启动流程详解【转载】

    在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...

  6. git概念及工作流程详解

    git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...

  7. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  8. JPEG图像压缩算法流程详解

    JPEG图像压缩算法流程详解 JPEG代表Joint Photographic Experts Group(联合图像专家小组).此团队创立于1986年,1992年发布了JPEG的标准而在1994年获得 ...

  9. php中的PDO函数库详解

    PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...

随机推荐

  1. pycharm 右键无法显示unittest框架&&解决右键只有unittest 运行如何取消右键显示进行普通run

    上面是普通文件和unittest 导入的文件右键快捷键显示情况,可以看出两者快捷键都是ctr+shift+F10,如果你是右键模式想运行unitest,但是又不知道哪里配置unittest直接运行快捷 ...

  2. slice 、 substr 、replace

    slice( 参数1  [,参数2] )        (注意不要让[参数1]下标越过[参数2]下标,否则会得到空字符串,且[参数2]是不包含在截取范围内的) 参数1:截取字符的[起始下标]. 值为正 ...

  3. django-实现登录短信验证

    功能演示 核心任务 前端功能: 点击按钮Ajax调用发送验证码功能 输完验证码后Ajax调用验证功能 后端功能: 功能1:发送验证码功能 功能2:验证码检查 后台核心逻辑(不需要手写) 功能3:发短信 ...

  4. JavaScript - map和parseInt的坑

    问题: var arrs = ['1', '2', '3']; var r = arrs.map(parseInt); alert(r);//1,NaN,NaN map arr.map(functio ...

  5. java动态代理中的invoke方法是如何被自动调用的

    转载声明:本文转载至 zcc_0015的专栏 一.动态代理与静态代理的区别. (1)Proxy类的代码被固定下来,不会因为业务的逐渐庞大而庞大:(2)可以实现AOP编程,这是静态代理无法实现的:(3) ...

  6. 从零构建以太坊(Ethereum)智能合约到项目实战——第22章 玩转truffle framework 、Web3.js 框架

    P84 .1-玩转truffle framework.Web3.js 框架 内容介绍 truffle官方网站:https://truffleframework.com/ P85 .2-truffle ...

  7. Python数据类型-5 元组

    元组 我们知道,用方括号括起来的是列表,那么用圆括号括起来的是什么,是元组. 元组也是序列结构,但是是一种不可变序列,你可以简单的理解为内容不可变的列表.除了在内部元素不可修改的区别外,元组和列表的用 ...

  8. C语言入门---第九章 C语言指针

    没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...

  9. 嵌入式编程中使用 do{...} while(0) 的解释

    最近在看esp32的idf,有一些宏定义使用了do while(0)这种看起来好像没啥用的代码.然后我查了一下资料,发现在linux内核代码中经常用到这个东西! 现在就将这个东西整理一下. 为什么在内 ...

  10. Windows Android SDK下载安装,配置,异常问题解决教程

    团队编程项目终于开始了,相信大家都在如火如荼的准备的当中,这里念半整理了一份还比较全面的关于 Android SDK的下载安装的教程,当然如果你说你们小组的实验环境选择的是Android studio ...