在这个部分我们将解释存储vMotion过程和一些增强功能,存储vMotion从ESX3.0就已经存在,我们称之为DMotion,将版本从2.5X更新到3.X时启用,在3.5的架构中,存储vMotion被作为每天使用的命令行发布,在vSphere 4.0中,它集成到UI界面,人们开启广泛的接受它来进行存储迁移,今天,通过存储DRS,它被大量使用。

存储vMotion的出现有许多方面不理解,可以围绕存储DRS的配置阈值作为一个好的理解过程,用它来帮助你做设计决定,它还将在排错期间帮助你,以及帮助你理解存储vMotion和存储DRS在你环境中能有的整体影响。

过程

存储vMotion的过程相当简单,不像人们想象的那么复杂。

1. VPXA 进程将虚拟机的工作目录复制到目标数据存储

2. 使用复制的文件在目标数据存储上启动“影子”虚拟机。 “影子”虚拟机保持空闲状态,等待虚拟机磁盘文件复制完成

3. 数据移动程序继续将源 VMDK 复制到目标存储中

4. 对于复制过程中发生的写入,镜像驱动程序会执行以下的其中一项操作:

  • 对于目标为已由数据移动程序复制的区域的写入,会将其内容镜像到目标存储
  • 对于目标为当前正在由数据移动程序复制的区域的写入,要求写入排队等候,直到数据移动程序完成该区域的复制之后,再将该写入镜像到源和目标
  • 对于目标为尚未由数据移动程序复制的区域的写入,仅写入源 VMDK,因为稍后数据移动程序到达该区域时会对其进行复制

5. Storage vMotion会调用虚拟机的快速挂起和恢复功能(与vMotion相似),以将正在运行的虚拟机的操作转移到闲置的影子虚拟机

6. 在快速挂起和恢复操作完成之后,旧的主目录和虚拟机磁盘文件会从源数据存储中删除

值得注意的是影子虚拟机只在虚拟机主目录被移除后才创建,如果当只是磁盘存储vMotion,虚拟机将会很简单的完成。

仅仅在第六步你需要从一个数据存储迁移你的虚拟机或者虚拟磁盘到另一个数据存储,改变块的跟踪是vSphere之前版本中存储vMotion的一部分,在vSphere 5中重新设计了Storage vMotion并移除了块修改跟踪,我们在Storage vMotion的过程中来进一步认识。

 

镜像模式(Mirror Mode

我们已经简单的接触过Mirror Mode,一些人可能想知道块修改跟踪(Change Block Tracking(CBT))发生了什么,CBT不再通过Storage vMotion来进行影响,尽管CBT对比遗留的存储迁移原理还是非常有效率的,存储vMotion工程师想出了更有讲究和效率的解决方法,它就是镜像模式。镜像模式能非常准确的做你期望做的事情,它镜像I/O。换句话说,当虚拟机的存储vMotion写入到磁盘,写入将专注源磁盘和目标磁盘写入。当源和目标确认都有写入,写入只会确认给虚拟机。因为这些,执行多次迭代副本,以确保所有块都完成切换动作前同步是不必要的。

一些问题需要解答:它是如何工作的?镜像模式所处的位置?发生的过程是客户内部还是客户外部?一个图片将带来更多的阐述。

图142:镜像模式驱动的数据流

esxi从数据存储删除文件 esxi 数据存储丢失_运维



通过利用某些API,镜像驱动为需要存储vMotion的虚拟机开启,在驱动开启之前,虚拟机将被stunned,当然在它开启后会unstunned。新的驱动影响一个数据搬迁者将单个块从源磁盘复制到目标磁盘。另外,镜像驱动将确保通过镜像写入的源和目标VMDK同步,不仅仅增加了效率还能预测迁移时间,安排计划迁移更容易。

当它开启存储vMotion时有一点要注意,存储vMotion影响从A到B的数据迁移,迁移的能力依赖于数据搬运者的能力。

 

更新VMFS卷?

虚拟层使用一个组件叫做数据搬运者,它在存储vMotion和发布虚拟机期间复制数据,首先在ESX 3.0里介绍数据搬运者,利用存储vMotion将块在数据存储之间复制,以下是三种类型的数据搬运者:

  • fsdm–3.0是数据搬运者的最初版本,移动数据也是最慢的
  • fs3dm—vSphere 4.0中介绍了数据搬运者,包括了一些子项的优化,所以数据不需要穿过堆栈
  • fs3dm—硬件卸载—vSphere 4.1中介绍了数据搬运者,受到VAAI完全复制HW offload原理的影响,最小的主机CPU和内存开销提供最大的性能。

我们认识到理解不同类型的数据搬运者有些困难,接下来的图片,通过使用fs3dm数据搬运者的hardware offload功能来获得明显的效率,当数据不经过主机或者存储结构,但仍在阵列中。

图143:每层数据搬运者的数据流

esxi从数据存储删除文件 esxi 数据存储丢失_ui_02

较高的堆栈意味着低效率,增加开销或者变慢,我们没有提到的虚拟机的应用,例如vmkfstools或者存储vMotion,当应用“存储vMotion”影响fsdm数据搬运者,它读缓冲区的块,将它再次写入到目的地址。在没有识别底层文件的情况下它通过多个层级,这是十分昂贵的任务,所以,什么时候使用哪个数据搬运者?

当选择了目标VMFS卷上有来自于源VMFS卷上不同的阵列或者不同大小的块,ESXi恢复剩余的数据搬运者(fsdm),如果使用同一个阵列上同样尺寸的块和VMFS卷,新的数据搬运者(fs3dm)将被利用,依靠阵列的能力,任务使用阵列的VAAI功能调用软件处理(如fs3dm的描述)或者offload,这是我们设计和运营需要考虑的。

 

基本设计原则

使用单个块尺寸来设计所有卷的性能和效率,新的VMFS-5的卷全部使用1MB的块大小,但是记录VMFS-3卷更新后仍保持它们原有的块尺寸。

为什么你关心这些?在你的环境中它们真的会有区别么?在之前的状态中,当升级VMFS-3到VMFS-5,它将保持原有的块尺寸,当混合建立VMFS-5的卷,可能有不同的块大小,这导致潜在的效率丢失,增加存储vMotion的完成时间

 

基本设计原则

当捕获到新的存储硬件,检测设备是VAAI能管理的或者不久的将来能管理。对VAAI的影响将降低效率和增加完成存储任务的时间。

 

存储I/O控制

当数据存储接近饱和规则发生改变。如果数据存储上开启SIOC,默认当存储DRS I/O负载平衡开启,存储vMotion操作能够通过SIOC节流。依靠份额值,给予虚拟机一定数量的并发I/O,如果存储DRS触发了虚拟机的存储vMotion,虚拟机记录通过这个过程产生的I/O,这意味着虚拟机的I/O配置被划分成正常I/O流量和存储vMotion流量。如果虚拟机执行一些I/O,配置将在虚拟机I/O流和存储vMotion的过程之间平均分配。如果虚拟机的活动I/O比较低,存储vMotion能使用虚拟机的空闲配额,SIOC在第22章也有提到。

 

VAAI(vStorage阵列集成应用接口)

存储VAAI的兼容性如何?如果存储vMotion过程初始化后,Vmkernel接到存储阵列需求到ESXi主机上启动复制。在这种情况下,I/O流量依然在存储阵列内部,并且一旦复制完成将告诉ESXi。

请注意存储vMotion是完整的传输本地调度(SFQ),而不受SIOC影响

如果存储vMotion在不同块大小的数据存储上迁移虚拟机,VAAI硬件协助将禁用,请求Vmkernel为剩下的数据搬迁者恢复原有状态。

磁盘并行迁移

vSphere 5.1允许每次存储vMotion最大4个磁盘同时复制,之前版本的vSphere只能连续复制磁盘。当你迁移的虚拟机有5个VMDK文件,存储vMotion并行复制其中的4个,接下里当4个中有一个完成后再复制剩下的1个VMDK文件。

图144:在存储vMotion过程中的磁盘并行复制

esxi从数据存储删除文件 esxi 数据存储丢失_ui_03

为了减少对共享存储上其它虚拟机的影响,并行磁盘复制只应用于不同的数据存储。这意味着如果虚拟机有多个VMDK文件在数据存储A和数据存储B上,磁盘只会并行复制文件到目标数据存储C和D上。

图145:不同区域数据存储上并行迁移VMDK文件

esxi从数据存储删除文件 esxi 数据存储丢失_运维_04

让我们举个例子来阐述这个过程。虚拟机VM1有4个VMDK文件,VMDK1和VMDK2在数据存储1上,VMDK3和VMDK4在数据存储2上,VMDK文件从数据存储1迁移到数据存储4,从数据存储2迁移到数据存储3,VMDK1和VMDK3是并行迁移,同时VMDK2和VMDK4在队列中。VMDK1完成的时候VMDK2开始迁移,同样VMDK3完成时VMDK4开始迁移。

图146:多个迁移来选择区域数据存储

esxi从数据存储删除文件 esxi 数据存储丢失_数据库_05

换句话说在数据存储A上两个VMDK文件复制到数据存储B和C上,不会有磁盘并行复制。普通使用磁盘并行复制迁移虚拟机会在数据存储群集内配置关联规则。

 

不同大小的VMFS

数据存储群集的数据存储上存在不同大小的块,如果VMFS-3数据存储更新为VMFS-5,块的大小还是保持不变,VMFS-5使用的标准块大小为1MB,更新VMFS-3数据存储后,它可以使用大的块,可能导致同数据存储群集的块大小不匹配。块大小不匹配强迫Vmkernel使用老的剩余的数据搬运者(FSDM),减少VAAI存储阵列的收益。

结果,混合迁移的VMFS-5数据存储和新的VMFS-5数据存储到同一个数据存储群集可能导致存储vMotion的性能降低,导致存储DRS需要提供最大的可用资源,需要更长的时间到达稳定状态。

如果数据存储群集的数据存储上有不同的大小的块,我们建议替换当前数据存储为原始VMFS-5数据存储来优化性能,在更新了VMFS-3数据存储之后,迁移虚拟机到新的VMFS-5数据存储上,重新格式化评估数据存储为新外衣的VMFS-5,我们都知道,这个过程会增加到VMFS-5和数据存储群集的迁移时间,但投资回报是值得的。存储DRS将更快到达平衡状态,VAAI迁移offload将开启,从而积极的影响虚拟机的I/O性能。

 

基本设计原则

阻止数据存储上混合不同大小的块

正如之前章节提到的,存储DRS的成本-收益风险分析需要考虑存储vMotion的持续时间,以确定合适的候选迁移,存储vMotion持续时间的减少对存储DRS有积极的影响,能够更迅速的达到一个稳定和平衡的状态。

 

精简磁盘

精简配置的VMDK被存储DRS同样作为厚置备磁盘。一如既往,有一些免责条款,一条是当空间不平衡的时候应用,当存储DRS建议一个迁移,它将考虑精简磁盘的增长率,当虚拟机的文件位置和预估增长率超过了阈值,存储DRS将避免按照建议迁移。

另一种是成本计算,当估算迁移的成本,计算采用本地的空间总量代替发布的空间。

 

VMFS-5

我们不继续深入解析Vmware的文件系统,它不是这本书的主题,但是,VMFS-5的一些改变的理解非常重要,当他们对你环境中做出正确决定有一定影响,除此以外,你将对端到端的解决方案和趋势有一个更好的理解,当做出了正确的决定,实现快速的投资回报,我们列出下面有显著变化的地方:

  • 统一标准的块大小
  • 提高子块原理
  • 支持64TB设备

当涉及到块的大小有一个比较有争议的问题,VMFS-3,使用不同的块大小对应的限制

  • 1MB 大小块—最大文件尺寸为256GB
  • 2MB大小块—最大文件尺寸为512GB
  • 4MB 大小块—最大文件尺寸为1024GB
  • 8MB大小块—最大文件尺寸为2048GB—512B

相信块越大,性能越好,VMFS块是主要用来分配虚拟机磁盘空间。当涉及到客户系统的I/O,不使用VMFS块。在新创建的VMFS-5中,有一个单个块大小:1MB,但是,VMFS —5最大的尺寸是2048GB—512B。在数据存储创建期间它简化了需求,另一个重要的不同时VMFS-5使用的GPT格式,而VMFS-3使用的是MBR,尽管VMFS-3卷更新到VMFS-5不会中断,也应该注意的是块的大小,一旦选择了VMFS-3卷块大小和MBR保持不变。还是要指出不同的VMFS块对你的环境有影响。同样的,当环境中使用了不同大小的块,一个“重新构建”申请需要考虑作为优化性能的最佳解决方案。

 

基本设计原则

理解VMFS-3更新到VMFS-5的可能影响,在多种块使用的场景中,迁移应该考虑新创建的VMFS-5数据存储

一个一直非常诟病的最大值是最大支持的LUN尺寸:2TB,在VMFS-5中,在不需要依靠扩展的情况下增加到64TB,意味着它还支持RDM透传,大的文件服务器和数据库服务器可以在虚拟机平台运行。试想想你将要创建一个单个,但是巨大的存储对象,VMFS-3限制的子块是什么?当小文件需要保存,VMFS-3使用64KB的子块,不管VMFS的块大小,以及3000的限制,尽管大的块将根据需求分配,但有一些限制。在VMFS-5中,加强了子块的尺寸,减少为8KB,确保小文件的浪费最小的空间。另外,最大的子块增加到30K,每数据存储的文件最大到130K(VMFS是30K),大大增加的数据存储的伸缩性。


转载于:https://blog.51cto.com/virtualbox/1219111