彻底理解VMware vSphere 下的虚拟卷:vVols

时间:2021-07-31 00:49:31

本文简要介绍一下在VSphere 6.7/7.0中vVol的相关内容。随着虚拟化技术的发展,新的概念不断被引入。特别是VMWare的产品更是新概念不断,让人眼花缭乱。

vVol是的全称是Virtual Volume,也就是虚拟卷。但是vVol并非传统意义上卷的概念,它更多的是一个对SAN和NAS进行虚拟化集成与管理的框架。该框架式提供了一个更加有效的对虚拟化环境进行管理的模型,同时将数据中心以基础设施为中心转换为以应用为中心。从而使得虚拟化技术更好的为应用服务。

vVol通过一种基于策略驱动的自动化方法来简化操作。这使得更加灵活的满足虚拟机对存储的消费,同时可以实现按需实时动态调整。它通过对硬件资源及以虚拟卷为粒度的基于磁盘阵列的数据服务的更精细的控制来简化向应用交付存储服务级别操作。这里的存储服务级别是指不同性能的存储资源。

如下图所示,通过vVol将多台不同性能的SAN或者NAS设备虚拟化为一个称为Datastore的资源池。而虚拟机所需资源都是从该池分配。

彻底理解VMware vSphere 下的虚拟卷:vVols

基于vVol, WMware提供了一个虚拟机及其磁盘粒度的视图,而非LUN,使其变成了一个存储系统管理单元。vVol封装了虚拟磁盘和其他虚拟卷文件,并且将其存储在存储系统上。

vVol概述

vVol是从存储阵列导出的VMDK粒度的存储实体。vVol通过一个很小的协议终端(Protocal end-point,简称PE)集合导出到ESXi主机。PE是物理存储结构的一部分,其按需的建立起虚拟卷到期望vVol之间的数据通路。存储系统在vVol上提供数据服务。结果是这些数据服务就是新的vVol。相对于数据路径,数据服务、配置和虚拟卷的管理等则是带外的。为了管理方便,多个vVol可以被打包为一个称为存储容器(SC)的逻辑项。

vVol和存储容器形成了虚拟存储结构,PE是物理存储结构的一部分。这点大家需要区分清楚。

通过使用一系列的称为存储感知的vSphere API(VASA),存储系统可以感知vVol和其相关的虚拟机。通过VASA,vSphere和底层的存储系统建立了两路带外通信链路。通过该通信链路vSphere可以执行数据服务操作并将某些虚拟机的操作卸载到存储系统端完成。例如快照和克隆等,可以从虚拟卷端转移到存储端来执行。

对于带内通信,vSphere仍然通过标准的SCSI和NFS协议。于是,vVol可以支持任意类型的存储系统,包括iSCSI、FC、FCoE和NFS等。

vVols 代表一个虚拟卷的虚拟磁盘,它是一个128位的GUID标识的抽象对象,并被存储系统硬件管理。

模型从数据存储的空间管理转变为磁盘阵列的抽象对象的管理。

存储硬件可以完全控制虚拟磁盘的内容、布局和管理。

VMware的很多合作伙伴在其阵列中添加了多vVol的支持。为了端到端的支持,HBA卡驱动需要实现对基于vVol设备的支持。这需要为SCSI驱动提供一个新的API,该API用于获得二级LUNID(SLLID)。

彻底理解VMware vSphere 下的虚拟卷:vVols

vVol 核心组件简述

vVol包含5个主要的组件,分别是vVol设备,协议终端(PE),存储容器(SC),VASA提供者和阵列。所有这些组件被VSphere栈的不同组件所管理或者使用。比如Virtual Center(VSSA,SPBM),ESXi(Hostd,VVolD,VVol FDS 驱动)。关于vVol的整体特性,我们概述如下:

没有文件系统

ESX通过VASA来管理磁盘阵列

阵列被划分为逻辑的容器,称为存储容器

虚拟卷磁盘称为vVol,被存储在存储容器当中

从ESXi主机到存储阵列的IO通过称为PE的连接点进行定位

数据服务被下沉(offload)到阵列,比如快照和加密等由阵列完成,而非虚拟化平台

通过基于策略的存储管理框(SPBM)架完成管理

VASA (存储感知的vSphere APIs) APIs (VP)

vVol存储提供者,也被称为VASA提供者,本质上就是一个软件组件。其角色就是vSphere的一个存储感知的服务。它负责组件间的带外通信,其一端是ESXi主机,另外一端是存储系统。如下图所示是EMC Unity的整体架构图,这个图比较清楚的描述清楚了VASA与其它组件间的关系。

彻底理解VMware vSphere 下的虚拟卷:vVols

该组件由存储阵列供应商开发

ESX和vCenter Server连接到VASA提供者

提供存储感知的服务

一个VASA提供者可以管理多个阵列

支持VASA API通过ESXi主机导出

VASA提供者可以基于阵列的管理程序或者固件实现

负责创建vVol

存储容器 (SC)

不同于传统LUN和基于NFS的vSphere存储,vVol功能并不需要在存储端预配置卷。取而代之的是,vVol使用一个存储容器。这个存储容器可以是一个原始的存储池或者聚合的存储池。我们这里对存储容器做如下总结:

用于分组vVol的逻辑存储结构

根据虚拟卷对存储的不同需求进行隔离

一个SC可以被多个不同的PE访问

所需能力(容量,QoS等)由SC申请

VASA 提供者(Provider)发现存储容器,并报告给vCenter服务

新虚拟机创建时,随后SC会自动创建所需资源

协议终端 (PE)

虽然存储系统负责vVol的所有管理工作,ESXi主机并不直接访问存储端的vVol。但是,ESXi主机通过一个逻辑IO代理与vVol和由vVol封装的虚拟磁盘文件进行通信。这里所谓的IO代理就是PE。ESXi通过PE按需的建立虚拟机与vVol的数据通路。

由存储端隔离访问点

可以使用多路径策略或者NFS拓扑

实现ESXi主机与磁盘阵列间的通信

兼容所有SAN和NAS协议,如iSCSI, NFS v3, FC, FCoE.

PE可以使用上述任何协议

vVols对象

在vCenter和vSphere Web客户端中,虚拟数据存储(datastore)代表一个存储容器。vVol是对虚拟机文件、虚拟盘和其衍生品(比如快照)的封装。

虚拟卷对象存储在存储容器当中有5种不同类型的vVol,具体如下:

Config-vVol - 元数据

Data-vVol - VMDK

Mem-vVol - 快照

Swap-vVol - Swap 文件

Other-vVol - 供应商解决方案相关

实例简析

虽然上面对vSphere的关键概念都做了解释,估计还会有摸不着头脑的感觉。其实简单的理解就是提供了一套在虚拟机管理软件中对存储进行管理的接口。这样,在创建虚拟机,或者进行虚拟卷操作的时候,可以通过存储系统的支持提供虚拟机操作的性能等。当然,为了能够让虚拟机管理软件访问存储系统,需要建立两者之间的关联,也就是集成的过程。

以vSphere与Unity集成为例。首先需要在存储系统添加虚拟主机信息,然后创建datastore。之后在vSphere中将存储系统添加到其中。当然,具体操作比较多,本文不再赘述,下面是一个主要的流程。

彻底理解VMware vSphere 下的虚拟卷:vVols

另外,还需要建立ESXi主机与存储之间数据链路。可以是iSCSI或者FC,通过在宿主机实现到存储系统的挂载,而且每个宿主机都要挂载成功。

彻底理解VMware vSphere 下的虚拟卷:vVols