none
块Blob、页Blob和磁盘的区别 RRS feed

  • 问题

  • 麻烦问下,价格调整之后,发现块Blob、页Blob和磁盘的价格不一样,它们之间有什么不一样??什么情况下使用什么存储体验最好??
    2014年10月28日 1:56

答案

  • Hi suxiaonao,

    我们来一个问题一个问题解决。

    >>1.是不是磁盘和页Blob是类似的??

    是的。 磁盘文件附加到VM上的时候是作为VHD的形式加上去的。 VHD的存储是以Page Blob的格式存储。

    >>2、我在portal里面创建存储是不是不可以选择block或者page??

    我们在portal创建的存储是存储的账号,以及blob下面的container。至于container里面存储PageBlob还是Block BLob,这需要你在代码中进行设置。我们不能再portal中进行创建。除非你直接创建新的Disk附件到Azure的VM上面。

    >>3、VS里面建好一个Blob,是不是不确定block还是page,我在属性里面看不到相关信息,但是,如果上传一个文件,就会自动变成BlockBlob了。

    同第二的问题,我们需要在创建的时候指定他是blockblob还是pageblob。如您的代码所示。

    >>4、URL访问Blob,但是,如果URL是https://XXXXX.blob.core.chinacloudapi.cn/sutestblockblob,就会出现图片里面的提示,如果URL是https://XXXXX.blob.core.chinacloudapi.cn/sutestblockblob/psping.exe,就会直接下载了,这是为什么??

    这是由于我们在上传Blob的过程中没有设置Content-Type,这个参数是和HTTP中的这个 content-type是一致的。Blob 的 MIME 内容类型。默认类型为 application/octet-stream。您可以参考这个post:http://stackoverflow.com/a/20509354

    Regards,

    Will


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 suxiaonao 2014年10月30日 1:40
    2014年10月29日 10:18
    版主

全部回复

  • Hi suxiaonao,

    首先,关于块Blob(block blob)和页(page blob),我建议您先参考下这个文档:

    http://msdn.microsoft.com/zh-cn/library/azure/ee691964.aspx

    在我看来, 页Blob和块Blob的最大区别是:页Blob主要是针对随机的读写操作,它是一系列512 字节的页的集合。而块Blob主要针对的是一种流工作存储。

    其次我们来分析下假设的场景:

    有个应用向客户提提供媒体文件的在线存储。媒体文件包括VHD文件和视频(video)文件。对于创建的VHD文件, 它的随机读取和写入操作需要更好的性能支持,而视频文件则必须需要按照文件的序列进行访问和播放。这两种存储类型,该如何选则呢? 很明显,因为我们存储大型文件,我们需要使用blob存储。如果我们看看VHD的具体要求,它要求支持的随机读取和写入操作。因此页Blob比较适合存放VHD文件。 而视频文件需要在一个序列中,因此块BLOB适合存储视频文件。同时作为测序我们可以很容易地通过使用块Blob的blockID去存储和获取文件的顺序。同时建议您参考这个详细介绍Blob的文档(http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/11/using-windows-azure-page-blobs-and-how-to-efficiently-upload-and-download-page-blobs.aspx)

    关于Disk(磁盘)存储,是作为虚拟机的存储空间来用的,通常情况下,这个磁盘存储是作为一个VHD文件附加到虚拟机上,在虚拟机上我们就像操作本地磁盘一样操作这个DISK。 但是我们只能通过storage API获取整个VHD文件或者整个磁盘文件,而不能获取其中的单个文件。

    Regards,

    Will


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2014年10月28日 8:11
    版主
  • 明白了,非常感谢你的场景举例,很有帮助!!
    2014年10月28日 15:53
  • 我想再问几个问题,先谢谢啦~~~

    1、是不是磁盘和页Blob是类似的??

    2、我在portal里面创建存储是不是不可以选择block或者page??

    3、VS里面建好一个Blob,是不是不确定block还是page,我在属性里面看不到相关信息,但是,如果上传一个文件,就会自动变成BlockBlob了。

    这样的话,page是不是需要按照你给链接里面说的那样实现??

    using Microsoft.WindowsAzure.StorageClient;
    StorageCredentialsAccountAndKey creds = new StorageCredentialsAccountAndKey(accountName, key);
    string baseUri = string.Format("http://{0}.blob.core.windows.net", accountName);
    CloudBlobClient blobStorage = new CloudBlobClient(baseUri, creds);
    CloudBlobContainer container = blobStorage.GetContainerReference(containerName);
    container.CreateIfNotExist();
    CloudPageBlob pageBlob = container.GetPageBlobReference(blobName);
    pageBlob.Create(blobSize); 

    4、URL访问Blob,但是,如果URL是https://XXXXX.blob.core.chinacloudapi.cn/sutestblockblob,就会出现图片里面的提示,如果URL是https://XXXXX.blob.core.chinacloudapi.cn/sutestblockblob/psping.exe,就会直接下载了,这是为什么??



    2014年10月29日 8:25
  • Hi suxiaonao,

    我们来一个问题一个问题解决。

    >>1.是不是磁盘和页Blob是类似的??

    是的。 磁盘文件附加到VM上的时候是作为VHD的形式加上去的。 VHD的存储是以Page Blob的格式存储。

    >>2、我在portal里面创建存储是不是不可以选择block或者page??

    我们在portal创建的存储是存储的账号,以及blob下面的container。至于container里面存储PageBlob还是Block BLob,这需要你在代码中进行设置。我们不能再portal中进行创建。除非你直接创建新的Disk附件到Azure的VM上面。

    >>3、VS里面建好一个Blob,是不是不确定block还是page,我在属性里面看不到相关信息,但是,如果上传一个文件,就会自动变成BlockBlob了。

    同第二的问题,我们需要在创建的时候指定他是blockblob还是pageblob。如您的代码所示。

    >>4、URL访问Blob,但是,如果URL是https://XXXXX.blob.core.chinacloudapi.cn/sutestblockblob,就会出现图片里面的提示,如果URL是https://XXXXX.blob.core.chinacloudapi.cn/sutestblockblob/psping.exe,就会直接下载了,这是为什么??

    这是由于我们在上传Blob的过程中没有设置Content-Type,这个参数是和HTTP中的这个 content-type是一致的。Blob 的 MIME 内容类型。默认类型为 application/octet-stream。您可以参考这个post:http://stackoverflow.com/a/20509354

    Regards,

    Will


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 suxiaonao 2014年10月30日 1:40
    2014年10月29日 10:18
    版主
  • ang,谢谢你的耐心解答!!

    2014年10月30日 1:41