《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如下:

        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实际使用容量的更多相关文章

  1. Windows Azure Storage (24) 启用Azure Blob日志

    <Windows Azure Platform 系列文章目录> 之前有一个业务需求,客户想知道Azure Storage是否有日志功能,可以检查某个Azure Blob文件在某个时间点被删 ...

  2. Windows Azure Storage (20) 使用Azure File实现共享文件夹

    <Windows Azure Platform 系列文章目录> Update 2016-4-14.在Azure VM配置FTP和IIS,请参考: http://blogs.iis.net/ ...

  3. [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传

    <Windows Azure Platform 系列文章目录> 相关内容 Windows Azure Platform (二十二) Windows Azure Storage Servic ...

  4. 【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例

    问题描述 在微软云环境中,使用python SDK连接存储账号(Storage Account)需要计算Blob大小?虽然Azure提供了一个专用工具Azure Storage Explorer可以统 ...

  5. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

  6. Azure Queue Storage 基本用法 -- Azure Storage 之 Queue

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...

  7. Azure File Storage 基本用法 -- Azure Storage 之 File

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...

  8. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...

  9. Azure Table storage 基本用法 -- Azure Storage 之 Table

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...

随机推荐

  1. 搭建高可用mongodb集群(四)—— 分片(经典)

    转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...

  2. VS2013如何避开安装时IE10的限制

    [VS2013]如何避开VS2013必须要有IE10的限制 VS就会告诉我们目前环境不适合安装VS2013,必须升级IE版本到IE10. 在不安装IE10时的时候,安装办法: 将下面一段文字,储存为. ...

  3. 从vue1.0到vue2.0遇到的一些问题的记录

    1.取消v-el的使用方式,改为refs使用 获取指定的dom元素 html:<div ref="div"></div> js: $refs.div 问题: ...

  4. xml_TO_object

    一般对于开发人员拿到的xml文件都是配置文件,所以对于我们来说,最主要要做的事情是将xml的内容封装成对象. 下面展示代码 package javaDom4j; import java.util.Ar ...

  5. CharacterEncodingFilter-Spring字符编码过滤器

    通过源码可以看到在web.xml配置CharacterEncodingFilter 时,可以配置两个参数:encoding和forceEncoding : encoding:编码格式: forceEn ...

  6. EXT5 时间框控制(开始时间不能大于结束时间)

    1.网上看的大部分代码都是利用vtype : 'dateRange'  EXT的这个属性,但是可能由于环境问题还是怎么样,我就是实现不了想要的效果. 然后研究了一下,在时间框的listeners 监听 ...

  7. Linux查看系统运行情况

    http://elinux.org/Runtime_Memory_Measurement

  8. java中的反射简单实例

    package club.reflection.entity.User; /** * 实体类 * */ public class User { public String name; private ...

  9. python基础06 循环

      循环用于重复执行一些程序. for循环  for循环需要预先设定循环的次数n,然后执行隶属于for的语句. 基本构造是 for 元素 in 序列: statement 如: for a in [1 ...

  10. linux安装oracle11g

    准备oracle安装文件 Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过SS ...