Windows Azure Storage (23) 计算Azure VHD实际使用容量
《Windows Azure Platform 系列文章目录》
对于A系列和D系列的虚拟机来说,使用的是普通存储。
普通存储的存储资源,是按照每GB每月计费的。Microsoft Azure普通存储资源是用多少算多少的,且按照平均使用计算。
举个例子:虚拟机操作系统的文件,对于Windows平台,C盘系统盘容量127GB,操作系统实际使用30GB。只收取实际使用的30GB存储。
但是我们通过Azure管理界面,只能知道VHD的容量大小。并不知道实际使用容量。
笔者在这里提供一个Sample Code,可以计算某个VHD的实际使用容量。
我们需要准备:
1.Azure China 存储账号
2.Azure China 存储账号密码
3.VHD所在的Container Name
4.VHD Name
创建Visual Studio Windows Form项目,Nuget增加Azure Storage引用。图略。
将配置信息保存在App.config文件里:
<appSettings>
<add key="AccountName" value="leivms"/>
<add key="AccountKey" value="storagekey"/>
<add key="ContainerName" value="vhds"/>
<add key="VHDName" value="Lei2012CHNVM-Lei2012CHNVM01-2016-01-25.vhd"/>
</appSettings>
Sample Code如下:
private string accountname;
private string accountkey;
private string containername;
private void Form1_Load(object sender, EventArgs e)
{
Calculate();
} private void Calculate()
{
var container = GetContainer();
var cloudpageblob = container.GetPageBlobReference(ConfigurationManager.AppSettings["VHDName"].ToString()); //OutPut VHD Actual Size
string actualSize = GetFormattedDiskSize(GetActualDiskSize(cloudpageblob));
} private CloudBlobContainer GetContainer()
{
//Get config from Web.Config
accountname = ConfigurationManager.AppSettings["AccountName"].ToString();
accountkey = ConfigurationManager.AppSettings["AccountKey"].ToString();
containername = ConfigurationManager.AppSettings["ContainerName"].ToString(); string connectionString = GenerateConnectionString(); //Get Azure Storage Connection String
var account = CloudStorageAccount.Parse(connectionString);
var client = account.CreateCloudBlobClient();
//Get BlobContainer Object
return client.GetContainerReference(containername);
} private string GenerateConnectionString()
{
StringBuilder sbuilder = new StringBuilder();
sbuilder.Append(@"BlobEndpoint=https://");
sbuilder.Append(accountname);
sbuilder.Append(".blob.core.chinacloudapi.cn/"); sbuilder.Append(@";QueueEndpoint=https://");
sbuilder.Append(accountname);
sbuilder.Append(".queue.core.chinacloudapi.cn/"); sbuilder.Append(@";TableEndpoint=https://");
sbuilder.Append(accountname);
sbuilder.Append(".table.core.chinacloudapi.cn/"); sbuilder.Append(";AccountName=");
sbuilder.Append(accountname); sbuilder.Append(";AccountKey=");
sbuilder.Append(accountkey); return sbuilder.ToString();
} private long GetActualDiskSize(CloudPageBlob pageBlob)
{
pageBlob.FetchAttributes();
return + pageBlob.Name.Length *
+ pageBlob.Metadata.Sum(m => m.Key.Length + m.Value.Length + )
+ pageBlob.GetPageRanges().Sum(r => + (r.EndOffset - r.StartOffset));
} [DllImport("Shlwapi.dll", CharSet = CharSet.Auto)]
public static extern long StrFormatByteSize(long fileSize, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder buffer, int bufferSize); public static string GetFormattedDiskSize(long size)
{
var sb = new StringBuilder();
StrFormatByteSize(size, sb, sb.Capacity);
return sb.ToString();
}
运行结果:
1.上图中,Lei2012CHNVM-Lei2012CHNVM01-2016-01-25.vhd这个Page Blob容量大小为127GB

2.运行代码后,这个vhd的实际使用容量为10GB

参考资料:
http://fabriccontroller.net/calculating-how-much-space-a-windows-azure-disk-is-really-using/
Windows Azure Storage (23) 计算Azure VHD实际使用容量的更多相关文章
- Windows Azure Storage (24) 启用Azure Blob日志
<Windows Azure Platform 系列文章目录> 之前有一个业务需求,客户想知道Azure Storage是否有日志功能,可以检查某个Azure Blob文件在某个时间点被删 ...
- Windows Azure Storage (20) 使用Azure File实现共享文件夹
<Windows Azure Platform 系列文章目录> Update 2016-4-14.在Azure VM配置FTP和IIS,请参考: http://blogs.iis.net/ ...
- [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传
<Windows Azure Platform 系列文章目录> 相关内容 Windows Azure Platform (二十二) Windows Azure Storage Servic ...
- 【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
问题描述 在微软云环境中,使用python SDK连接存储账号(Storage Account)需要计算Blob大小?虽然Azure提供了一个专用工具Azure Storage Explorer可以统 ...
- Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
<Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...
- Azure Queue Storage 基本用法 -- Azure Storage 之 Queue
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...
- Azure File Storage 基本用法 -- Azure Storage 之 File
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...
- Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...
- Azure Table storage 基本用法 -- Azure Storage 之 Table
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...
随机推荐
- SqlLite 基本操作
1.数据类型 ● SQLite将数据划分为以下⼏几种存储类型: ● integer : 整型值 ● real : 浮点值 ● text : ⽂文本字符串 ● blob : ⼆二进制数据(⽐比 ...
- python strip()函数 介绍
python strip()函数 介绍,需要的朋友可以参考一下 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除 ...
- Javascript-DOM总结
DOM总结 1.DOM的含义 DOM是Document Object Model文档对象模型的缩写.根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的 ...
- 提高ASP.net性能的十种方法
提高ASP.net性能的十种方法 2014-10-24 空城66 摘自 博客园 阅 67 转 1 转藏到我的图书馆 微信分享: 今天无意中看了一篇关于提高ASP.NET性能的文章,个人 ...
- python学习 1基础
对象的等于只是对于值而言 函数定义没有变量提升 常用对象 list []: 列表, 排序省空间 tuple (): 元组,一旦初始化不可修改 dict {}: 字典,方便查询 set {}:集合, 值 ...
- 安卓手持智能POS端上能扫描开单的软件-店面销售开单系统
安卓移动POS终端上能扫描开单的软件: 一.登录验证,以业务员.密码登录: 二.订单列表,显示相关信息,包括日期.单据号.客户名.金额.单据状态.有新增订单及按特定条件查询订单的功能(日期.客户等). ...
- jackrabbit学习笔记(1)
http://dove19900520.iteye.com/blog/1654346 看的这个文章照着来的,遇到了一些问题,记录一下 运行报这个错:NamespaceException: wiki: ...
- Java IO 操作(一)
(1)File 类的基础用法 // 1.创建 一个file 对象File file = new File("D:\\aaa");// 2.判断此 file 是否是一个文件夹file ...
- 第二天ci项目规划 数据库设计
第二天ci项目规划 数据库设计 商品 + 用户 + 订单 数据库设计思想和方法 关于商品品牌 ,分类 ,属性 如何表示 用一个字段 还是再设计一张表 品牌和商品 是一种信息 还是两种信息 一张表一般只 ...
- 【PostgreSQL】PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。
PostgreSQL添加新的服务器连接时,报错: