目标问题:VMDK与存储脱节
虚拟化环境对存储的需求与传统业务有很大的不同,绝大多数情况,虚拟机是建立在共享存储基础上的。虚拟化提供的主要特性vMotion,HA,Storage vMotion、FT这类涉及迁移的功能对共享存储的依赖是不可避免的。
传统的VMware存储环境可以看成三个层次,由上到下依次为VMDK(VMware Virtual Machine Disk Format)格式的虚拟磁盘,VMFS(VMware Virtual Machine File System)及硬件存储设备。在实践中,我们会在存储设备创建大小为2T的LUN,在这个LUN上部署一个VMFS文件系统。一个LUN只能对应一个VMFS。在一个LUN上可以创建多个虚拟机。虚拟机上挂载是磁盘或存储,其实上对应的是一个文件,形成VMDK。

这样看来,底层的存储是无法感知到上层的虚拟机的情况,虚拟机也不会感知到底层的存储的情况。于是VMware定义了私有存储协议VAAI(vStorage APIs for Array Integration),也叫硬件加速功能,是一组用于VMWare vSphere ESXi主机与存储设备通信的API,允许ESXi主机将某些存储操作从主机下嫁给存储,从而减少ESXi主机的资源开销,以便于存储厂商与VMware智能地整合,这一点,有点类似于处理器厂商在CPU中加入了用于改善虚拟化性能和安全属性的Inter-VT和AMD-V技术一样。提供了Full Copy(全拷贝)、Block Zeroing(块清零)、Scalable Lock Management(硬件辅助锁定)
在vSphere 5.0以后还新定义了VASA协议(VMWare vSphere Storage API - Storage Awareness)实现存储阵列与vCenter的集成管理功能。可以让vCenter感知物理存储设备的功能,提供容量和存储健康状态监控,它还能与VM Storage Profiles、Storage DRS协作。
尽管有了VAAI和VASA,但是虚拟机对虚拟磁盘的控制能力远弱于物理机对磁盘的控制,总有隔靴抓痒的感觉。,
比如传统存储的功能往往是作用于LUN,我们部署的基于SRV-SAN的SDS(软件定义存储)存储,本质是一个用廉价的磁盘通过软件有序有效构建的一个基于iscsi协议的块存储。提供了很多特有的功能,但很多功能也只能作用在LUN上。比如快照功能,在华为SRV-SAN上,快照的创建本质上是一个指针,可以在一瞬间完成。但也是基于LUN。但一个LUN上有多个虚拟机,当快照恢复的时候,会将部署在这个LUN的所有虚拟机一起恢复,显然这不是我们需要的结果。
虚拟机在存储上体现为一个个独立的VMDK文件,从虚拟化软件角度,可操作的存储对象就是VMDK,执行的克隆,快照,备份和恢复都以VMDK为目标,这些文件级的操作在效率上比存储级要低很多。而从存储角度,操作的对象是划分的LUN,快照等操作也是与LUN绑在一起的,对于LUN这个粒度进行的策略配置很难适应所有存储于该LUN的VMDK,VMDK与LUN的不匹配造成的空间浪费也不容小视。再如,虚拟机的快速部署及备份的需求,需要虚拟磁盘文件能够快速的整体拷贝或快照,而目前环境下只能在文件级实现。现在很火爆的SDS,本质上就是一个IPSAN,很多功能被虚拟化层屏蔽了,就是一个功能被阉割的SDS。
针对这些虚拟化独有的需求点,如何能够让存储更好的支持,是VVOL要解决的核心问题。
VMDK管理不知道存储,存储管理不知道VMDK。VVOL就是要打破这种脱节,让二者结合满足用户对每个虚拟机进行存储配置的需求,在存储级实现以虚拟机为粒度的灵活高效的管理。VVOL的本质上就是能让存储感知到虚拟LUN(对应VMDK)的存在。
解决方案:虚拟卷(VVOL)
解决的方法就是让存储知道虚拟机的存在,并在存储级实现虚拟机对VMDK的所有操作(快照,克隆,策略等)。这里引入的虚拟卷(virtual volume),是架设在虚拟机和存储之间的一座桥,让虚拟机成为存储管理和存储策略的基本单元。
存储角度,虚拟卷类似于LUN,操作和策略配置都绑在虚拟卷上。虚拟化软件角度里看到的虚拟卷就是一个VMDK,一个快照或者一个配置文件,现有虚拟架构和操作流程无需任何改变。虚拟卷能够感知虚拟机的数据操作,并将其转发给存储执行。
具体实现的方式又引入几个概念:
· Storage Container(SC):ESXi中看到的虚拟存储池。背后可跨多个不同类型,不同厂商的存储设备,提供虚拟资源管理,访问控制等功能。
· Protocol Endpoint(PE):处理虚拟机IO的组件。每个存储设备对应一个PE,虚拟机的IO发到PE,由PE定向到对应的VVOL。
· Storage Provider(SP):实现vCenter和存储设备间的通信。VMware提供标准接口,由存储厂商在存储端实现,使用VASA(VMware vStorage APIs for Storage Awareness )接口与vCenter间建立存储配置通道。VVOL之前,VASA信息流是单向的,存储只是将信息(磁盘类型,数据功能)提供给vCenter,而VVOL实现了双向通信,vCenter可以将虚拟机对存储的需求推送到存储设备。
一个虚拟机由一个或若干个VVOL组成,每个配置文件及VMDK都是一个VVOL,存储在某个存储设备上,虚拟机与存储设备之间由上述三个核心组件组成,由上至下,共同支撑实现了VVOL操作流程。
应用效果:VM-Aware 存储
用户想创建一个虚拟机,选择在某个Storage Container上创建,vCenter根据用户的选择生成一份profile,profile中包含用户对于该虚拟机的存储需求(可用性,性能指标等),这份profile会通过Storage Provider下发给存储设备执行。如果其中配置了高可用,那么存储设备会为该虚拟机创建多个互为克隆的VVOL,从而保证了虚拟机的可用性。甚至为虚拟机创建的多个VVOL可以放置在不同的存储设备上,且互为镜像,保证无论是存储设备还是服务器挂掉都无法阻止虚拟机的运行。
VVOL环境中,虚拟机快照将十分简单,虚拟机级别的快照命令直接传递到存储设备,由物理的存储设备对VVOL创建快照,同样快照的创建频率和保留时间策略也可以由虚拟化软件直接配置下发给存储执行。存储级别的快照能力被充分利用,也带来很大效率提升。
存储支持VVOL是云计算虚拟化的基本条件,目前华为的SRV-SAN还不支持VVOL。中国电信浙江公司和华为成立的SDS联合创新实验室,已经过VVOL进行深入的研究,预计在2016年下半年能实现商用该功能。




