WMware SDS实现:虚拟卷VVols和VASA框架组件介绍

VVols(Virtual Volume)是VMware公司的软件定义存储SDS框架的一部分。根据VMware官网的简介[1]:“Virtual Volumes 践行 VMware SDS 愿景的核心原则,以求在虚拟化环境中实现能从根本上提高效率的存储运维模式,从而集中关注虚拟机而不是物理基础架构。”VVols通过将存储资源,I/O资源抽象化和池化以及基于存储策略的管理 (SPBM)等技术,使得vSphere管理员在存储上创建VM及其相关操作更方便更,灵活,更易于管理和实现。

 

一、VVols之前

在VVols使用之前,也就是现在部署VMs的流程大致如下:

(1)VM管理员预先向Storage管理员讨论VMs的基础存储要求(比如容量,内存和性能,还有数据保护、冗余、快照之类的数据服务)。

(2)然后,Storage管理员在相应磁盘阵列上创建满足VMs需求的Storage Pool。

(3)Storage管理员将该Storage Pool按照LUNs(块存储,VMFS)或NFS方式划分,并将其提供给 ESXi 主机。

(4)VM管理员使用诸如vCenter或vSphere Web Client等VMware管理工具,在提供的存储上部署并管理VMs了。

显然,当前在Storage上部署VMs的流程复杂且耗时。部署一个VMs需要存储管理团队中不同角色紧密协同合作。

此外,以上过程还存在缺陷:

  • 无法预先知道需要配置多少。Storage管理员往往出于未来使用量增加的考虑,会预先多配置容量,从而导致配置过剩和性能浪费。
  • 需要在LUN级别进行操作。一个存储池中存放了很多虚拟机,vSphere管理员很难对某个特定虚拟机进行特定配置和操作。

如今在vSphere环境中上VM部署的架构如下图(图来源见[4]和[1])所示,VM的文件是与底层存储直接关联的。一个LUNs上可以部署多个VMs。

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第1张图片WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第2张图片

 

二、VVols框架详细

通过VVols技术,可以实现避免上面描述的传统部署VMs方式的缺陷,使得:

  • 对VM的资源消耗的控制可以更精确。
  • 部署VM更方便,耗时更少。
  • VM管理员可以为特定VM提供准确的存储数据服务级别。
  • 对存储资源的管理配置更加灵活、快捷。

VVols通过以下几个组件构成的新架构来实现上述的目标:

  • 虚拟卷Virtual  Volumes(VVols)
  • 存储容器Storage Containers (SC)
  • 协议端点Protocol Endpoints (PE)
  • vSphere存储感知Sphere API for Storage Awareness(VASA)
  • 存储策略的管理Storage Policy Based Management (SPBM)

2.1 Virtual  Volumes(VVols)

Virtual  Volumes(VVols)是创建并存储在磁盘阵列上的新型虚拟机对象。

传统的架构中,虚拟机在存储上的表现形式是VMFS文件系统(如vmdk)。VVols架构则去掉了原来的VMFS文件系统这一抽象层,取而代之是通过Storage Container技术向用户提供了一个一致统一的抽象层。这样,向上一层用户(VM)封装了底层存储的细节,用户(VM)不再需要知道数据到底存储在什么地方。

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第3张图片

(图来源见[4] )

 

新型的虚拟机对象Virtual  Volumes的类型和传统的虚拟对象的类型(swap, vmdk等)相对应,有如下五种:

  • Config – VM Home, Configuration files, logs
  • Data – Equivalent to a VMDK
  • Memory – Snapshots
  • SWAP – Virtual machine memory swap
  • Other – vSphere solution specific object

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第4张图片

对于每个虚拟机,都有一个Config VVol,一个SWAP VVol(如果需要)。虚拟机的每一个Virtual disk都有一个Data VVol。虚拟机执行快照时,每个Disk生成一个VVol。如果执行内存Memory快照,则会生成一个Memory VVol。因此,对于一个典型的虚拟机场景,一般有三个VVol(1 Config, 1 data, 1 swap)。如果这样的一个虚拟机有三个磁盘(1 Config,3 data, 1 swap),执行一次快照(包括Memory快照),那么虚拟机会增加 3 (Disk snap) + 1 (Memory snap) = 4个VVol。

 

2.2 Storage Containers (SC)

虚拟卷(Virtual Volumes)存储在Storage Container(SC)上。SC是由Storage管理员定义和创建的,是纯逻辑存储结构(Pure Logic Storage Constructs)。Storage Containers有点类似于储存池的概念,不过是底层存储容量的资源池,用来分配和约束存储容量。同时,由于SC是逻辑实体结构,因此理论上,SC支持实时、无中止的容量扩展和收缩。

Storage Containers与传统的LUN的概念差别很大:

  • LUN有固定的容量,有文件系统,对某一VM所属的LUN进行的数据服务操作(如快照)会影响LUN上所有的VMs。
  • Storage Containers则没有容量限制,便于扩展,存储容量的感知和控制有VASA组件管理,粒度允许控制到VM的级别。

(图来源见[4])

Storage Container在vCenter和vSphere Web Client中体现为Virtual Datastore(也叫做 VVol Datastore)。VVol Datastore给vSphere管理员或VM管理员提供一个可以用来管理虚拟卷VVols的逻辑抽象概念。 SC和VVol Datastore是一一对应的,如下图(来源见[8])所示,通过VASA(vSphere API for Storage Awareness)实现vSphere客户端与磁盘阵列上的SC之间的自动感知和管理。

SC可以提供更大程度的灵活性,除了可以按照传统的方式,即为某种类型或配置的Storage Pool创建特定Storage Container,我们还可以给包含不同配置和类型的整个磁盘阵列创建一个Storage Container。事实上,传统的方式并不是最优化的方案,因为我们可以在更上层使用基于策略的方式给虚拟机指定磁盘策略(VM Storage Policy),从而达到硬件存储资源的创建和使用分离的目的。

 

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第5张图片

最后关于SC的数量限制,目前VMware公司的官方说明中指出,每个Host主机的SC数量限制是256个,并且不支持跨磁盘阵列创建SC[1]。

 

2.3 Protocol Endpoints (PE)

Storage Containers虚拟化了存储阵列,让虚拟机的相关数据文件通过虚拟卷VVols的方式存储在Storage Container上,不过还需要解决vSphere(即ESXi Host主机)与存储阵列的I/O数据传输方式的问题。Protocol Endpoints (PE)组件定义了ESXi主机与存储阵列之间I/O数据传输交流新的机制。PE可以理解为I/O代理,是ESXi主机和虚拟卷之间的I/O连接通道,通过在存储阵列上添加并实现PE,ESXi主机不直接从存储上的虚拟卷VVols获取数据,而是通过PE组件与虚拟卷VVols进行通信。与传统方式进行类比,对于块设备阵列,那么上面的PE可以看成一个特殊的LUN;对应NFS阵列,那么PE就可以看成一个挂载点(Mount point)。

Protocol Endpoints 兼容目前的SAN/NAS标准协议:

  • iSCSI
  • NFSv3
  • Fiber Channel (FC)
  • Fiber Channel over Ethernet (FCoE)

存储设备上PE提供(或支持)的协议方式由存储厂商决定并实现,然后,通过vSphere API for Storage Awareness(VASA)组件实现vSphere自动感知相应的PE,并选择相应的PE实现I/O数据的传输通信,如下图所示(图来源见[1])

PE与存储阵列上的关系是一对多的,即一个PE只能关联一个存储阵列,但是一个存储阵列可以关联多个PEs。同时,对于ESXi主机来说,PEs其实就是LUN或挂载点,因此,PE与ESXi主机是多对多的关系。

 

2.4 vSphere API for Storage Awareness(VASA)

vSphere API for Storage Awareness(VASA)组件Sphere 5.0引入的一组API,是存储提供者和存储使用者之间新的一套标准交流方式。在没有VASA之前,想要确认物理LUN的特征属性,比如ID、容量、是否ThinProvisoned、是否启用了去重De-duplication、是否分层存储Tiering、RAID级别等等存储端的信息,是无法直观的从vCenter获得的。使用VASA后,就可以让vCenter直接获取存储阵列的相关信息,这样方便Storage管理员管理存储资源和准确做出决策。

VASA包括VASA APIs和VASA Provider(VP),其中vSphere API for Storage Awareness集合在vSphere中,而VASA Provider则在存储端,由存储厂商实现。ESXi主机和vCenter Server通过VASA Provider获取存储阵列的容量、拓扑和状态等信息。

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第6张图片

 

2.5 Storage Policy Based Management (SPBM)

Storage Policy Based Management (SPBM)即基于存储策略的管理。通过SPBM,可以对软件定义的存储实现策略驱动(Policy -driven)的自动化。

SPBM 支持采用称为“虚拟机存储策略”的逻辑模板的形式捕获应用的相关存储要求(容量、性能和可用性等)。通过定义或调整策略,SPBM 能够大规模地自动执行调配过程,并对各个虚拟机的存储服务级别进行实时动态控制。

下图(来源见[6])所示是Hitachi 公司的VVols实现架构,其中vSphere 管理工具定义了虚拟机的存储策略(VM Storage Polices)后,会通过VASA与存储端检查策略是否合规(Storage Container是否能够满足策略定义的要求)。同时,可以根据不同的配置要求定义不同的策略,以及根据不同级别的用户(金、银、铜)分配不同的策略。最后,在不同级别的用户在使用存储创建VMs时,会自动根据各自的策略在底层存储阵列上分配相应的空间和性能指标来创建VVols。

由此可见,通过策略驱动的自动化功能实现的动态控制使您能够灵活地控制虚拟机的存储使用量,从而最终加快新应用调配速度并简化变更管理,同时 VI 管理员不再需要依赖存储管理员来完成基础架构变更请求。VI 管理员可以随时更改策略,而所需的基础架构更改可自动进行配置。这样就可以更快地根据业务变化做出调整。

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第7张图片

 

三、在VVols上使用数据服务

通过VVols,我们可以在VM级的粒度上实现存储资源的控制。同时,通过SPBM,还可以在存储阵列上根据不同类型或级别(比如容量,存储使用级别,是否提供快照、去重、复制和Qos等数据服务)进行划分,然后供不同的存储使用者使用。如下图所示。

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第8张图片

3.1 VAAI介绍

VAAI(VMWare vSphere Storage API - Array Integration)是目前虚拟化领域的标准语言之一,也被称为硬件加速或硬件卸载(offload)APIs,是一组用于VMWare vSphere ESXi主机与存储设备通信的API。

VAAI给虚拟化管理程序和存储设备规范了不同的职责,使其各自关注工作效能最大化,即虚拟化管理程序致力于虚拟化相关的工作而存储相关的工作则留给存储阵列。

通过VAAI,允许ESXi主机将某些存储操作从ESXi主机转移给存储(例如克隆、zeroing等等),从而减少ESXi主机的资源开销,极大改进了storage-intensive operation的性能。

VAAI的目标是帮助存储厂商通过提供硬件协助来加速那些能在存储硬件上更高效完成的VMWare I/O操作。有了存储硬件的帮助,主机可以更快地执行这些操作并且占用更少的 CPU、内存和存储结构带宽,而主机端只负责过程监控。

目前,VAAI主要有以下几个方面的特性,见下图所示:

主要有VAAI Block Primitives、VAAI NAS Primitives和VAAI Thin Provisioning Primitives三块原语(primitves),其中在ESXi/ESX 4.1(vSphere4.1)版本中只支持VMFS的VAAI Block Primitives。

在 ESXi 5.0 (vSphere5.0)中添加了对 Thin Provisioning VAAI 原语和NAS VAAI原语的支持。

详细特性介绍见官方文档PDF http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-Storage-API-Array-Integration.pdf

 

3.2 VVols与VAAI的集成

VVols 允许在VM-level上直接操作,也就是VM管理员在vSpere客户端对虚拟机进行诸如克隆,快照之类操作时,使用VASA API原语,可以直接卸载(offload)到底层硬件存储上进行操作,从而可以减少ESXi主机的开销,如下图所示

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第9张图片

目前VAAI Block,VAAI NAS和VAAI Thin-Provisoning原语的特性在VVol s中都能够支持,甚至有些在VVols中还能提供比VAAI(如VAAI NAS原语)更好更丰富的体验,以及功能实现更加方便(详细VAAI原语功能与VVol支持的对应关系见[9]), VVols和VAAI组件兼容并能很好地协同工作。下图所示(图来源见[7]),当对虚拟机执行操作时,VVols默认使用VASA API 原语将虚拟机操作卸载(offload)到存储阵列上执行(尤其是当操作仅仅是在同一个存储磁盘阵列上执行如克隆和快照功能时),如果VASA API原语的硬件卸载(offload)失败(比如两个磁盘阵列虽然都是用VVols但不是同一个提供商时,或者两个磁盘阵列的VVols不兼容时),则通过VAAI 原语进行硬件卸载,

WMware SDS实现:虚拟卷VVols和VASA框架组件介绍_第10张图片

当然,目前VVols和VAAI之间的交互也有限制。比如当在同一个支持VVols和VAAI的磁盘阵列中时,如果存在一个VMFS的datastore和一个VVol container。此时,如果想要从VMFS的datastore上克隆VM到VVol container中去时,将会使用VAAI的XCOPY原语去进行硬件加速(注意这个流程是单向的,即当从VVol 到VMFS datastore进行克隆时,不会使用XCOPY原语),见下图所示(图来源见[7])。

 

【参考资料&延伸阅读】

[1]  VMware  vSphere Virtual  Volumes

     http://www.vmware.com/cn/products/vsphere/features/virtual-volumes.html

     VMware  vSphere  Virtual  Volumes FAQ

     http://www.vmware.com/files/cn/pdf/products/virtualvolumes/VMware_Virtual_Volumes_FAQ.pdf

     VMware vSphere Virtual Volumes_Management and Integration Framework for SAN/NAS

     http://www.vmware.com/files/cn/pdf/products/virtualvolumes/VMware_Virtual_Volumes_SolutionsOverview.pdf

     Virtual Volumes (VVols) Program Guide v2.4

    https://vdc-download.vmware.com/vmwb-repository/dcr-public/1f420d25-9e92-4b97-ae35-42163e3c5056/6d8fb7a6-874b-43fc-9a8e-df7ce263f7ce/VVols_Program_Guide_v2.4_VMW_04_08_15_final.pdf

[2] What's New:vSpere Virtual Volumes

    http://www.vmware.com/files/cn/pdf/products/virtualvolumes/VMware-Whats-New-vSphere-Virtual-Volumes.pdf

[3]  WMware vSphere Virtual Volumes:Getting Started Guide

    http://www.vmware.com/files/cn/pdf/products/virtualvolumes/vmw-vsphere-virtual-volumes-getting-started-guide.pdf

[4]  VMware VVol and HDS
     http://paulpmeehan.com/2015/08/27/vmware-vvol-and-hds-an-introduction/
     VVol and HDS Part 2: With and Without VVols
     http://paulpmeehan.com/2015/08/30/vvol-and-hds-part-2-with-and-without-vvols/
     VVol and HDS Part 3: New Storage

     http://paulpmeehan.com/2015/09/13/vvol-and-hds-part-3-new-storage-constructs/

     VVol and HDS Part 4: So how is a VVol instantiated ?
     https://community.hds.com/people/pmeehan/blog/2015/09/29/vvol-and-hds-part-4-so-how-is-a-vvol-instantiated

    Part 5: Storage Containers & Capability Profiles
   http://paulpmeehan.com/2016/02/10/vmware-vvol-part-5-containers-capability-profiles/
    VMware VVol Part 6: The mythical Protocol Endpoint
    http://paulpmeehan.com/2016/02/18/vvol-part-6-protocol-endpoint/

[5] 基于存储策略的管理

    http://www.vmware.com/cn/products/vsphere/features/storage-policy-based-management.html

[6] VMware vSphere 6.0 Virtual Volume Environment Deployment in Hitachi Virtual Storage Platforms:Implementation Guide,201602

    https://www.hds.com/assets/pdf/vmware-vsphere-6-0-virtual-volume-environment-deployment-in-vsp.pdf?WT.ac=us_cal4_vmware、

[7] vSphere Virtual Volumes Interoperability: VAAI APIs vs VVOLs

    http://blogs.vmware.com/virtualblocks/2015/02/19/vsphere-virtual-volumes-interoperability-vaai-apis-vs-vvols/

    Virtual Volumes (VVols) vSphere APIs & Cloning Operation Scenarios

    http://blogs.vmware.com/vsphere/2014/07/virtual-volumes-vvols-vsphere-apis-cloning-operation-scenarios.html

[8] Virtual Volumes – A closer look at Storage Containers

    http://cormachogan.com/2015/03/04/virtual-volumes-a-closer-look-at-storage-containers/

[9] vSphere Virtual Volumes Interoperability: VAAI APIs vs VVOLs

    http://www.punchingclouds.com/2015/02/19/vsphere-virtual-volumes-interoperability-vaai-apis-vs-vvols/

[9]各厂商Virtual Volumes技术相关文章列表总网址

    http://vsphere-land.com/vsphere-links/virtual-volumes-links.html

你可能感兴趣的:(WMware SDS实现:虚拟卷VVols和VASA框架组件介绍)