Windows Azure Storage (23) 计算Azure VHD实际使用容量
《Windows Azure Platform 系列文章目录》
对于A系列和D系列的虚拟机来说,使用的是普通存储。
普通存储的存储资源,是按照每GB每月计费的。Microsoft Azure普通存储资源是用多少算多少的,且按照平均使用计算。
http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx?PageIndex=2#comments
举个例子:虚拟机操作系统的文件,对于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如下:
![](/assets/blank.gif)
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 Sizestring actualSize = GetFormattedDiskSize(GetActualDiskSize(cloudpageblob));}private CloudBlobContainer GetContainer(){//Get config from Web.Configaccountname = 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 Objectreturn 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 124 + pageBlob.Name.Length * 2+ pageBlob.Metadata.Sum(m => m.Key.Length + m.Value.Length + 3)+ pageBlob.GetPageRanges().Sum(r => 12 + (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(11);StrFormatByteSize(size, sb, sb.Capacity);return sb.ToString();}
![](/assets/blank.gif)
运行结果:
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/
本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/5179832.html,如需转载请自行联系原作者
Windows Azure Storage (23) 计算Azure VHD实际使用容量相关推荐
- Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
<Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...
- 将数据从 SQL Server 导入 Azure Storage Table
点击上方蓝字关注"汪宇杰博客" 导语 最近有个需求要将数据存储从 SQL Server 数据库切换到 Azure Storage 中的 Table.然而不管是 SSMS 还是 Az ...
- Azure Table storage 基本用法 -- Azure Storage 之 Table
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...
- Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...
- Azure File Storage 基本用法 -- Azure Storage 之 File
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...
- Windows Azure Storage – 4万亿对象和计数
Window Azure Storage有着惊人增长的一年.我们拥有超过4万亿的存储对象,每秒处理着270,000个请求,顶峰时达到每秒880000个请求. 大约一年前,我们达到了一万亿的目标.然后在 ...
- Windows Azure Storage论文解读
Windows Azure Storage论文解读 整体架构 文件流层 stream layer 存储引擎 存储优化 分区层 Partition Layer 存储引擎 WAS总结 WAS是微软开发的云 ...
- Windows Azure Storage (1) Windows Azure Storage Service存储服务
<Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...
- Windows Azure Platform (九) Windows Azure Storage Service存储服务
Windows Azure本质上来说就是将你本地的应用程序打包,然后上传到Windows Azure VM进行托管运行. 注意:任何保存在Windows Azure VM盘符的内容都是临时的.非持久化 ...
最新文章
- 菜鸟教程python3-Python3 简介
- [EasyTao(道)系列文章之一]太极之道
- professor‘s great paper in multi agent system
- android list 比较,LinkedList 和 ArrayList 的区别
- 关于分区索引与全局索引性能比较的示例
- java构建内存池队列_内存池完整实现代码及一些思考
- linux系统软件包依赖关系,Ubuntu解决包依赖关系
- (JSP)关于手机端(尤其是苹果手机)pdf文件无法打开的解决方案
- 你真的会用Context么?
- 计算机屏幕显示不能全屏,电脑屏幕小软件显示不全
- VisionPro工具说明
- 错误集--创建消息队列用户,用于controler和node节点连接rabbitmq的认证
- Python 列表,for循环,元组的使用【修改、添加、删除、排序、切片】w
- 注册机偷懒写法1、之直接扣代码
- 蓝凌OA系统任意文件读取
- 浅谈一下我对Android实现人脸认证登录的认识
- 网络受限_受限人工神经网络对幸福的追求
- Cpolar实现虚拟机内网穿透,搭建私人云服务器
- statusBar控件
- 精通 CSS+DIV 网页样式与布局 62