目标问题:VMDK与存储脱节




传统的VMware存储环境可以看成三个层次,由上到下依次为VMDK(VMwareVirtual Machine Disk Format)格式的虚拟磁盘,VMFS(VMware Virtual MachineFile System)及硬件存储设备。




虚拟化环境对存储的需求与传统业务有很大的不同,例如在StoragevMotion实现之前,vMotion,HA,FT这类涉及迁移的功能对共享存储的依赖是不可避免的。如果虚拟机运行的业务具有很大的差异性,意味着很难为共享的LUN进行优化和策略配置,同时共享又增加了对设备性能的要求。再如,虚拟机的快速部署及备份的需求,需要虚拟磁盘文件能够快速的整体拷贝或快照,而目前环境下只能在文件级实现。针对这些虚拟化独有的需求点,如何能够让存储更好的支持,是VVOL要解决的核心问题。




虚拟机在存储上体现为一个个独立的VMDK文件,从虚拟化软件角度,可操作的存储对象就是VMDK,执行的克隆,快照,备份和恢复都以VMDK为目标,这些文件级的操作在效率上比存储级要低很多。而从存储角度,操作的对象是划分的LUN,快照等操作也是与LUN绑在一起的,对于LUN这个粒度进行的策略配置很难适应所有存储于该LUN的VMDK,VMDK与LUN的不匹配造成的空间浪费也不容小视。




VMDK管理不知道存储,存储管理不知道VMDK。VVOL就是要打破这种脱节,让二者结合满足用户对每个虚拟机进行存储配置的需求,在存储级实现以虚拟机为粒度的灵活高效的管理。




解决方案:虚拟卷(VVOL)




解决的方法就是让存储知道虚拟机的存在,并在存储级实现虚拟机对VMDK的所有操作(快照,克隆,策略等)。这里引入的虚拟卷(virtualvolume),是架设在虚拟机和存储之间的一座桥,让虚拟机成为存储管理和存储策略的基本单元。




存储角度,虚拟卷类似于LUN,操作和策略配置都绑在虚拟卷上。虚拟化软件角度里看到的虚拟卷就是一个VMDK,一个快照或者一个配置文件,现有虚拟架构和操作流程无需任何改变。虚拟卷能够感知虚拟机的数据操作,并将其转发给存储执行。




具体实现的方式又引入几个概念:


  • StorageContainer(SC):ESXi中看到的虚拟存储池。背后可跨多个不同类型,不同厂商的存储设备,提供虚拟资源管理,访问控制等功能。
  • ProtocolEndpoint(PE):处理虚拟机IO的组件。每个存储设备对应一个PE,虚拟机的IO发到PE,由PE定向到对应的VVOL。
  • StorageProvider(SP):实现vCenter和存储设备间的通信。VMware提供标准接口,由存储厂商在存储端实现,使用VASA(VMwarevStorage APIs for Storage Awareness)接口与vCenter间建立存储配置通道。VVOL之前,VASA信息流是单向的,存储只是将信息(磁盘类型,数据功能)提供给vCenter,而VVOL实现了双向通信,vCenter可以将虚拟机对存储的需求推送到存储设备。


一个虚拟机由若干个VVOL组成,每个配置文件及VMDK都是一个VVOL,存储在某个存储设备上,虚拟机与存储设备之间由上述三个核心组件组成,由上至下,共同支撑实现了VVOL操作流程。




应用效果:VM-Aware 存储




用户想创建一个虚拟机,选择在某个StorageContainer上创建,vCenter根据用户的选择生成一份profile,profile中包含用户对于该虚拟机的存储需求(可用性,性能指标等),这份profile会通过StorageProvider下发给存储设备执行。如果其中配置了高可用,那么存储设备会为该虚拟机创建多个互为克隆的VVOL,从而保证了虚拟机的可用性。甚至为虚拟机创建的多个VVOL可以放置在不同的存储设备上,且互为镜像,保证无论是存储设备还是服务器挂掉都无法阻止虚拟机的运行。




VVOL环境中,虚拟机快照将十分简单,虚拟机级别的快照命令直接传递到存储设备,设备对VVOL创建快照,同样快照的创建频率和保留时间策略也可以由虚拟化软件直接配置下发给存储执行。存储级别的快照能力被充分利用,也带来很大效率提升。




在虚拟桌面(VDI)应用里,启用LinkedClone后,只读的母版镜像VVOL可以由存储设备根据策略放置在SSD区域,不仅提升性能,而且可以避免VDI启动风暴造成IO过高。




参考资料




原创文章,允许转载,转载请附本文链接或作者信息。


- SimpleCloud