《虚拟数据中心构建指南》——3.11 VMware 存储API

简介: 本节书摘来自华章出版社《虚拟数据中心构建指南》一 书中的第3章,第3.11节,作者:(法)麦里(Maillé, V.),(法)门内尔(Menecier, R. F.)著;姚军等译.更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.11 VMware 存储API

VMware提供的API允许管理员和发布者扩展vSphere 5功能。

3.11.1 vStorage API for Array Intergration

vStorage API for Array Intergration(VAAI)是一组应用编程接口,提供VMware和存储阵列制造商之间的互操作性,以更智能的方式与VMware通信。有些任务负载可以转移到存储阵列,减轻ESXi主机的负载。

注意:处理器制造商已经在芯片中集成了Intel VT和AMDV指令,减少高消耗的CPU侦听。处理器制造商对服务器所做的正是VAAI对存储阵列所做的。这些API现在对于获得高级别的整合似乎是必不可少的。

表3-4列出了vSphere 4.1中的VAAI和vSphere 5中的VAAI2。

image

下面是表3-4中列出的各种特性的简单说明。

硬件加速锁:没有这个API,SCSI保留就会在全局LUN级别上完成。有了这个API,SCSI保留工作在块级别而不是LUN级别上完成,这样与SCSI保留相关的问题较少,而且减少了VM启动的时间,在虚拟桌面基础架构(VDI)项目中更是如此。

硬件加速置零:没有这个API,创建数据存储时,“置零”由服务器完成,服务器向存储阵列发送SCSI命令。有了这个API,ESX服务器初始化一个命令,存储阵列负责重复这个操作并在结束时通知ESX服务器。这减少了ESXi服务器和存储阵列之间的流量。

硬件加速复制:没有这个API,复制操作从ESX服务器向存储阵列进行。有了这个API,数据由存储阵列的阵列中移动,没有通过服务器。这减少了ESXi服务器的负载和数据迁移所需的时间。

在vSphere 5中,为VAAI 2定义了一些新的概念:
死空间回收(Dead Space Reclaim):当虚拟磁盘被删除,或者精简配置LUN上使用Storage vMotion将一个虚拟磁盘从数据存储中迁移到另一个数据存储之后,可以恢复不再使用的空间。ESXi 5.0通过VAAI命令将释放数据块的有关信息发送给存储系统,然后存储系统恢复这些数据块。

精简配置空间用尽(Thin Provisoning Out of Space)API:预防精简配置LUN上的存储空间问题。

精简配置LUN报告:在vCenter中可以识别使用的存储阵列。

超过限额:当数据存储中超过容量阈值时,在vCenter中显示警告。

空间用尽行为:VM在写入之前确定空间是否足够。如果存储空间已满,在vCenter中显示警告信息,然后VM暂停(其他VM继续运行)。

NAS VAAI存储定义了如下概念。

全文件复制:NAS可以冷方式进行vmdk文件的复制和快照操作,类似于VMFS块复制(全复制)。
扩展统计:可以看到NFS数据存储上已经消耗的空间。
空间保留:允许为NAS存储创建厚配置模式vmdk文件。

3.11.2 vSphere 存储API:存储感知

vStorage API for Storage Awareness(VASA)是一个存储检测API,可直接从vCenter进行存储阵列相关信息的虚拟化,这些信息包括复制、RAID类型、压缩、重复数据消除、精简或者厚格式、磁盘类型、快照状态和性能(IOPS/MBps)。此外,vStorage API可用于配置驱动存储。

3.12 多路径

多路径(multipathing)可以定义为使用冗余组件(如适配器和交换机)以创建服务器和存储设备之间逻辑路径的一种解决方案。

3.12.1 可插入存储架构

可插入存储架构(Pluggable Storage Architecture,PSA)是一组API,允许存储制造商在VMkernel层中直接插入代码,从而开发第三方软件(如EMC PowerPath VE),提供与存储阵列技术直接相关的更高级负载均衡功能。但是VMware也提供标准的基本多路径机制,即原生多路径(Native MultiPathing,NMP),这些功能分布在以下API中:存储阵列类型插件(Storage Array Type Plug-in,SATP)负责与存储阵列通信;路径选择插件(Path Selection Plug-in,PSP)提供路径之间的负载均衡。

如图3-22所示,VMware提供三种PSP。

最近使用(Most Recently Used,MRU):选择ESXi启动时发现的第一个路径。如果这一路径不可访问,ESXi选择替代路径。

固定:使用设计为首选路径的专用路径。如果没有配置,则使用启动时发现的路径。这一路径无法再使用时,随机选择可用路径。当该路径再次可用时,ESXi又会使用固定首选路径。

循环(Round Robin,RR):自动选择所有可用路径,以循环的方式将I/O发送到每条路径,这能实现基本的负载均衡。PSA协调NMP操作,第三方软件协调多路径插件(MPP)软件。


image

NMP循环路径选择策略有一个I/O操作限制参数,控制每条路径切换到下条路径之前发送的I/O操作数量。默认值为1000,因此,NIP默认在向给定路径发送1000次I/O之后转向另一条路径。调整循环路径选择I/O操作限制,能够显著地改进某种工作负载下的性能(例如联机事务处理[online transaction processing,OLTP])。在随机和OLTP工作负载环境中,将循环路径选择参数设置为较低的数字可以得到最好的吞吐率,但是对于顺序工作负载,降低该值不会得到同样显著的改进。因此,有些硬件存储公司建议将NMP循环路径选择I/O操作限制参数设置为较低的值(可以设置为1)。

第三方软件解决方案使用更高级的算法,因为循环选择算法有一个局限性,在进行自动分配的时候没有考虑路径级别上的实际活动。有些软件建立动态负载均衡,设计为在任何时候都使用所有路径,而不是像循环路径算法那样,在同一时间仅用一条路径来负担所有I/O负载。

3.12.2 模式
访问共享存储空间的数据是虚拟环境的基础。VMware强烈建议实施多种LUN访问路径。最小值是两条路径,但是VMware建立使用四条路径。多路径提供冗余的LUN访问路径,从而减少了服务中断。路径不可用时,会使用另一条路径,这不会造成服务中断。这些切换机制被称作多路径I/O(MultiPath I/O,MPIO)。

在VMware中,如图3-23所示,存储可以采用不同的模式。

主动/主动:在给定时刻,一个LUN同时连接到多个存储控制器。I/O可以同时来自多个控制器。
主动/被动:在给定时刻,一个控制器拥有一个LUN(从属LUN)。只要LUN链接到该控制器,其他控制器就不能向它发送I/O。
ALUA:对LUN的访问不是直接的(无优化的),而是通过辅助控制器以不对称方式发生。


image

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
存储 人工智能 运维
超大规模云数据中心对存储的诉求有哪些?
要实现超大规模部署的特性,就对存储有别于普通数据中心或者消费市场的诉求。具体有哪些呢?主要有以下几点,我们针对部分信息展开讨论
|
3月前
|
安全 Linux 应用服务中间件
Linux系统管理与服务器安全:构建稳健云数据中心
Linux系统管理与服务器安全:构建稳健云数据中心
140 0
|
3月前
|
存储 Java API
你了解SpringBoot启动时API相关信息是用什么数据结构存储的吗?(上篇)
你了解SpringBoot启动时API相关信息是用什么数据结构存储的吗?(上篇)
32 0
|
3月前
|
消息中间件 存储 Java
RocketMQ-初体验RocketMQ(06)-使用API操作RocketMQ ,理解RocketMQ的存储结构
RocketMQ-初体验RocketMQ(06)-使用API操作RocketMQ ,理解RocketMQ的存储结构
175 0
|
4月前
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase Java API(四)
分布式NoSQL列存储数据库Hbase Java API(四)
20 0
|
4月前
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase Java API(三)
分布式NoSQL列存储数据库Hbase Java API(三)
39 0
|
4月前
|
安全 Linux 应用服务中间件
Linux系统管理与服务器安全:构建稳健云数据中心
Linux系统管理与服务器安全:构建稳健云数据中心
109 0
|
10月前
|
存储 移动开发 前端开发
web前端面试高频考点——JavaScript-Web-API 篇(二)AJAX、存储
web前端面试高频考点——JavaScript-Web-API 篇(二)AJAX、存储
107 0
|
10月前
|
存储 API C++
蓝桥杯考前突击(C++允许使用的api与存储结构)
蓝桥杯考前突击(C++允许使用的api与存储结构)
|
存储 前端开发 JavaScript
使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储
之前一篇文章是通过普通js+tornado来上传七牛云:[使用Tornado配合七牛云存储api来异步切分上传文件](https://v3u.cn/a_id_123),本次使用vue+django来进行异步上传,因为毕竟vue.js才是目前的前端的主流。
使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储