- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章彻底理解VMware vSphere 下的虚拟卷:vVols由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文简要介绍一下在VSphere 6.7/7.0中vVol的相关内容。随着虚拟化技术的发展,新的概念不断被引入。特别是VMWare的产品更是新概念不断,让人眼花缭乱.
vVol是的全称是Virtual Volume,也就是虚拟卷。但是vVol并非传统意义上卷的概念,它更多的是一个对SAN和NAS进行虚拟化集成与管理的框架。该框架式提供了一个更加有效的对虚拟化环境进行管理的模型,同时将数据中心以基础设施为中心转换为以应用为中心。从而使得虚拟化技术更好的为应用服务.
vVol通过一种基于策略驱动的自动化方法来简化操作。这使得更加灵活的满足虚拟机对存储的消费,同时可以实现按需实时动态调整。它通过对硬件资源及以虚拟卷为粒度的基于磁盘阵列的数据服务的更精细的控制来简化向应用交付存储服务级别操作。这里的存储服务级别是指不同性能的存储资源.
如下图所示,通过vVol将多台不同性能的SAN或者NAS设备虚拟化为一个称为Datastore的资源池。而虚拟机所需资源都是从该池分配.
基于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).
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与其它组件间的关系.
该组件由存储阵列供应商开发 。
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中将存储系统添加到其中。当然,具体操作比较多,本文不再赘述,下面是一个主要的流程.
另外,还需要建立ESXi主机与存储之间数据链路。可以是iSCSI或者FC,通过在宿主机实现到存储系统的挂载,而且每个宿主机都要挂载成功.
最后此篇关于彻底理解VMware vSphere 下的虚拟卷:vVols的文章就讲到这里了,如果你想了解更多关于彻底理解VMware vSphere 下的虚拟卷:vVols的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有WHERE 1=1有什么作用如果您在脚本(伪代码)中编写此请求: sql = "SELECT f1,f2,f3 FROM t WHERE 1=1" ++ restOfTheClause
这个问题已经有答案了: R: Convert delimited string into variables (3 个回答) 已关闭 5 年前。 我有一个包含电影数据的表,在最后一列中,它包含电影所属
假设我有一个基类: struct A{ virtual void foo() = 0; }; 然后假设我有一个这样的派生类: struct B : public virtual A{ voi
我有一个小问题,我的 << 运算符没有被正确调用。 这是我的: class SomeInterface { friend std::ostream& operator<<(std::ostrea
首先,我来自 Java 社区,并且仍然是 C++ 的学习者。 请看下面的类 第二张图片显示了类“GameObject”的子类。它还有一个 Display() 方法。 GameObject类有5个子类,
我这里遇到了一些问题。我试图让我的代码像 java 中的接口(interface)一样工作。这个类被其他 2 个继承,因为它们导致了一些问题。而且我还想知道我是否做对了,以及改进我的代码的方法。我是新
在 C++ 中,我有一个基类 A,一个子类 B。两者都有虚方法 Visit。我想在 B 中重新定义“访问”,但 B 需要访问每个 A(以及所有子类)的“访问”功能。 我有类似的东西,但它告诉我 B 无
我有一个抽象类,它是类层次结构的根。该根类有一个带有一些简单实现的方法,似乎没有必要随时随地更改该实现。 使该方法成为非虚方法很好,但是某些子类可能会意外地重新实现它。在这种情况下,虚拟 final方
在 MSDN 上,我发现在抽象方法声明中使用“virtual”修饰符是错误的。我的一位同事应该是非常有经验的开发人员,但他在他的代码中使用了这个: public abstract class Busi
C++ 虚函数表是仅用于确定调用虚函数时应该执行哪一段代码,还是在运行时有其他用途? 在维基百科上,它列出了“动态调度”作为一个原因,但没有深入了解 C++ 的更多细节...... 最佳答案 一些实现
页面大小是否恒定?更具体地说,getconf PAGE_SIZE 给出 4096,这很公平。但这可以通过程序的运行时间改变吗?或者它在整个操作系统进程生成过程中是否保持不变。 IE。 , 进程是否可能
析构函数(当然还有构造函数)和其他成员函数之间的区别在于,如果常规成员函数在派生类中具有主体,则仅执行派生类中的版本。而在析构函数的情况下,派生版本和基类版本都会被执行? 很高兴知道在析构函数(可能是
如果一个函数被定义为虚函数并且与纯虚函数相同,这究竟意味着什么? 最佳答案 来自 Wikipedia's Virtual function... In object-oriented programm
我有一个在 Jetty 下运行的应用程序,我希望该应用程序返回自引用绝对 URL(生成 RSS 提要时,因此客户端必须能够在没有“当前 URL”上下文的情况下工作)。 问题是我事先不知道应用程序将部署
如何在两个virtualtreeview之间复制以复制所有列,而不仅仅是第一列? 复制前: 复制后: 最佳答案 树控件不保存任何数据。它不包含要显示的列数据,因此无法复制它。而是,当树控件想要显示任何
我已将 ShowHint 设置为 true 并将 HintMode 设置为 hmToolTip,但是当我将光标悬停在控件上时,我的 OnGetHint() 事件处理程序甚至没有断点。 知道我做错了什么
我的 friend 正在 Delphi 中使用 VirtualTreeView 工作,并且遇到了下一个问题:他有两列,第一列的每一行都有数据和子项。是否可以不更改第一列宽度来设置最大子列宽度? 图例:
我在我的 Virtual TreeView Component 中使用 TVirtualStringTree ( Delphi project 的一部分)我想创建一个 View ,其中 2 列可以有可
我想遍历 VirtualTreeView 的所有根并将其删除。 我不想清除它。 我收到此代码的访问冲突: var Node : PVirtualNode; begin if VirtualStri
我有一个可以输出表单的 PHP 文件。我想在服务器端调用这个 PHP 文件(当前使用“include”),填写并提交。 这样更好,因此我不必干预实际的 PHP 表单,只需处理表示层,以便数据可以被它自
我是一名优秀的程序员,十分优秀!