通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间
目录
Provisioned Space & Used Space
Provisioned Space & Used Space 是 Datastore 中的概念,通过 vSphere Client 即可查看。其中 Provisioned Space 被翻译成 “置备空间”,实在令人费解,下面先简单介绍一下 Provisioned Space 的基本概念。
官方文档是这么描述的:Total allocated space that the virtual machine can commit up to. Includes vmdk, swap, snapshot, and other virtual machine files such as NVRAM, configuration files, and logs. This metric includes uncommitted space.
可见,置备空间并非单纯的指代 “预期分配容量”,还包含了 vmdk, swap, snapshot, NVRAM, configuration files, and logs 等可能会消耗存储空间的 “空间”。这就是虚拟磁盘的置备空间会比 “预期分配容量” 稍大的原因,所以我更愿意将置备空间称之为 “实际已分配空间”。
当 Datastore 存在 Thin Provision 类型虚拟磁盘时,就会出现 Provisioned Space 与 Used Space 不一致的情况。而 Lazy Zeroed Thick Provision 和 Eager Zeroed Thick Provision 类型虚拟磁盘的 Provisioned Space 和 Used Space 通常是保持一致的,因为 Thick Provision 类型虚拟磁盘会马上将需求的所有磁盘空间都占用掉。
e.g.
- aju-tst-thin-p 虚拟机使用了 100GB Thin Provision 类型磁盘,其 Provisioned Space = 102.18GB,Used Space = 2.18 GB;
- aju-tst-thick-p 虚拟机使用了 100GB Lazy Zeroed Thick Provision 类型磁盘,其 Provisioned Space = Used Space = 104.18GB,Eager Zeroed Thick Provision 类型磁盘同理。
Provisioned Space 的计算方式
通过 vSphere WS API 我们可以轻易的得到 $dstoreSummary.Capacity 和 $dstoreSummary.freeSpace 的数据,但 API 文档并没有直接给出 $dstoreSummary.provisionedSpace 属性参数,好在我们需要通过 $dstoreSummary.uncommitted 来得到它。
Uncommitted Space
Uncommitted Space is either from Thin-Provisioned VM disks, Snapshots or Linked Clones. Uncommitted space is the difference of how big the disk size is vs. the currently consumed size. Here is a breakdown of a particular example.
简单来说 Uncommitted space 就是虚拟磁盘 Provisioned Space 与当前 Used Space(实际已使用空间)的差值。
在理解了 Uncommitted Space 的概念之后,那么我们就可以得到计算 Provisioned Space 的公式:
$longProvisionedBytes = ($dstoreSummary.Capacity - $dstoreSummary.freeSpace) + $dstoreSummary.uncommitted
NOTE:需要注意的是 uncommitted 是 dstoreSummary data object 的可选属性,当 Datastore 不存在精简置备的 VMDK 时候,uncommitted 属性是不存在的,这是一个需要注意的边界问题。
扩展:置备率的计算公式
除此之外,还可以得到 Datastore ProvisionedSpare%(置备率)的计算公式:
floatProvisionedSpareRatio = ($longProvisionedBytes / $dstoreSummary.Capacity) * 100
通常的,我们建议 floatProvisionedSpareRatio <= 1.5。
通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间的更多相关文章
- 劳动节脑洞大开!利用Debug API 获取 加壳客户端的MD5值
系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 远程注入 & 获取MD5值 使用工具 : vc++6.0 & OD 案例说明: 该游戏客户端对 ...
- html5获取经纬度,百度api获取街区名,并使用JS保存进cookie
引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...
- 利用腾讯企业邮箱开放API获取账户未读邮件数初探
公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...
- 通过Alexa API获取Alexa排名
我们通会用Alexa的网站(或其它站长工具网站)来栓查我们的网站流量排名,这样就必须去那些网站.实际上,可以通过Alexa XML API 获取网站的Alexa相关的数据(XML格式的),再使用XM ...
- 在C#中调用API获取网络信息和流量
原文 在C#中调用API获取网络信息和流量 最近一项目中要求显示网络流量,而且必须使用C#. 事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量. ...
- 利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)
利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)作者:Tuuzed(土仔) 发表于:2008年3月3日23:12:38 版权声明:可以任意转载,转载时请 ...
- C# 通过豆瓣网络编程API获取图书信息
这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...
- 【转】百度API获取城市名地名(附源码)
在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...
- 调用ZoomEye API获取信息
最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块urllib,json,os模块. 功能:调用ZoomEye API获取信息 import urllib.requ ...
随机推荐
- openlayers 添加标记点击弹窗 定位图标闪烁
环境vue3.0 ,地图为公用组件,将添加图标标记的方法放在公共地图的初始化方法里 同一时间弹窗和定位标识都只有一个,因而我把弹窗和定位标记的dom预先写好放到了页面 //矢量标注样式设置函数,设置i ...
- Celery多队列配置
Celery多队列配置 Celery官方文档 项目结构 /proj -__init__ -app.py #实例化celery对象 -celeryconfig.py #celery的配置文件 -task ...
- mac StarUML3.0.2破解
mac StarUML3.0.2破解 StarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,可以直接到StarUML网站下载.可以用来创建UML类图. 破解办法是通过asar工 ...
- Delphi 基于组件的编程思想
- nginx的rewrite
nginx服务的rewrite nginx后端服务的指令 1)upstream指令 :设置后端服务器组的主要指令 Upstream name {} 2)server指令:用于设定组内的服务器 3)Ip ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(8)|Operators操作符]
[易学易懂系列|rustlang语言|零基础|快速入门|(8)] 有意思的基础知识 Operators 我们今天再来看看操作符. 算术运算 操作符: + - * / % 代码如下 : let a = ...
- json格式字符串转字典
//json格式字符串转字典+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString { if (jsonStr ...
- SpringMVC 使用Servlet原生API作为参数
具体看代码: @RequestMapping("/testServletAPI") public void testServletAPI(HttpServletRequest re ...
- Nginx之概念和简介
Nginx是什么? 代理服务器,处于客户端和服务器端之间的一台服务器,不负责处理请求. 主要作用是什么? 1.负载均衡: 高并发场景下,Nginx代理服务器按一定规则将请求分发,从而使服务器能有条不紊 ...
- Redis实战(十四)Redis实现Session共享
序言 登录的处理流程: 1.登录页面提交用户名密码. 2.登录成功后生成token.Token相当于原来的jsessionid,字符串,可以使用uuid. 3.把用户信息保存到redis.Key就是t ...