vSphere中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的流程详解的更多相关文章
- [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)
:由于在大多数情况下GPIO的状态变化都会触发应用程序执行一些动作.为了方便nRF51官方把该流程封装成了GPIOTE,全称:The GPIO Tasks and Events (GPIOTE) . ...
- [ 转载 ] Java开发中的23种设计模式详解(转)
Java开发中的23种设计模式详解(转) 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...
- C++的性能C#的产能?! - .Net Native 系列《二》:.NET Native开发流程详解
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...
- Linux启动流程详解【转载】
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- git概念及工作流程详解
git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...
- Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...
- JPEG图像压缩算法流程详解
JPEG图像压缩算法流程详解 JPEG代表Joint Photographic Experts Group(联合图像专家小组).此团队创立于1986年,1992年发布了JPEG的标准而在1994年获得 ...
- php中的PDO函数库详解
PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...
随机推荐
- SVN 锁定无法提交命令执行失败
有个项目使用svn 高版本客户端作业,转换到低版本的环境下,出现锁定,命令执行失败. 使用cleanup 没有效果, 网上建议的svn无法Cleanup解决方法: Step1:到 sqlite官网 ( ...
- 如何查看NXP产品的供货计划?
大的半导体厂商一般会提供每个产品的生命周期计划,NXP的工业级IC一般供货10年,汽车级是15年,具体的时间可以在官网查询得到. 首先,打开NXP官网链接 产品长期供货计划,可以看到以下页面 接着,筛 ...
- python脚本调用iftop 统计业务应用流量
因公司服务器上部署应用较多,在有大并发访问.业务逻辑有问题的情况下反复互相调用或者有异常流量访问的时候,需要对业务应用进行故障定位,所以利用python调用iftop命令来获取应用进程流量,结合zab ...
- 2019年mybatils面试高频题(java)
前前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季. 那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情. 当然,不论 ...
- 【转】Chrome开发者工具详解
https://www.jianshu.com/p/7c8552f08e7a Chrome开发者工具详解(1)-Elements.Console.Sources面 Chrome开发者工具详解(2)-N ...
- 科普:为什么 String hashCode 方法选择数字31作为乘子
作者:coolblog 此文章转载自:https://segmentfault.com/a/1190000010799123 1. 背景 某天,我在写代码的时候,无意中点开了 String hashC ...
- Java记录2---包的使用
javac -d . A.java -d 表示自动生成包层 . 表示这个包层在当前目录下建立 package link.roland;//package 语句必须是第一条语句 //该语句表示把该文件中 ...
- JavaWeb项目http请求报错:Error parsing HTTP request header
详细报错信息如下图: 原因:一一排查后,发现是http的请求中,包含了 “ | ” 竖线特殊符号:而并不是网上说的请求url太长了的原因. 解决方法:把 | 替换为 @
- NOIP2019 旅行
注意!注意!前方高能!本题卡常!!! 我们发现,所有的狗血剧情都在告诉我们,树的话直接dfs就出来了 那么基环树呢? 其实只要暴力删边,理论上的复杂度是可以过的qwq 但是删哪条边呢? 这里要引出一个 ...
- Flask - 中间件
其实就是封装旧酒,装进新瓶,自己再加点料.留坑,还没有用到. Flask的请求扩展就是Django的中间件.Django的中间件不是Flask的中间件 from flask import Flask ...