我应该为文件使用Blob存储还是Azure VM存储?

时间:2015-05-24 07:26:47

标签: transactions asp.net-mvc-5 storage azure-storage azure-virtual-machine

我正在编写一个存储在Azure VM上的MVC 5 Internet应用程序。在这个互联网应用程序中,用户可以上传文件,例如公众可以通过网址访问的图像和视频。

我的问题是:

我是否应将此上载的数据存储在与Azure VM位于同一位置的Azure Block Blob容器中,或者让用户将此数据上传到VM存储的硬盘驱动器,然后可以通过URL访问?

使用Blob存储或在VM上存储文件是否更便宜?

例如,如果我在Blob存储上和Azure VM上存储了以下文件,并且每次访问和查看100次,那会更便宜吗?

  1. 10 * 1MB图片
  2. 10 * 5MB视频
  3. 此外,除了存储和交易成本之外,还应考虑其他因素吗?

    提前致谢。

4 个答案:

答案 0 :(得分:2)

在这种情况下,您似乎应该为上传的blob创建一个单独的容器并将其标记为public。您的应用应将用户上传的文件保存到此公共容器中。然后,用户可以直接通过blob的URL访问容器中的文件。

此建议有几个原因:

  1. 成本:正如您所提到的,块blob的成本比VHD上的空间便宜
  2. IOPS:您的VHD每秒限制为500次IO操作。您已经在此VHD上运行您的应用和操作系统,这意味着所有上传的文件合并后剩余的IOPS较少
  3. 吞吐量:通过直接通过存储提供这些blob,您不会使前端VM成为带宽瓶颈(如果下载流量很高,VM的网络可能会饱和)
  4. 可管理性:您可以从任何资源管理器管理blob,并使用任何存储资源管理器手动添加/删除,而无需登录到VM来执行此操作。
  5. 可扩展性:如果将其放在VM的磁盘上,那么只有一个VM可以访问这些文件。使用blob,您可以使用多个VM作为前端,以便在负载增加时进行扩展。

答案 1 :(得分:1)

只是为了说清楚。高级存储对于原始电子邮件中描述的工作负载并不理想。高级存储专为需要保证IOPS和低延迟(如数据库应用程序)的Azure虚拟机工作负载而设计。成本将高于将数据存储在块blob中。块Blob也更适合于媒体文件服务。

答案 2 :(得分:0)

首次配置VM时,所有Azure VMS至少有两个磁盘 - 操作系统磁盘和临时磁盘。

您不会将数据存储在临时磁盘上,因为它仅用于临时存储;将VM移动到另一台物理计算机时,该驱动器上的数据将丢失,这可能发生在升级,修补程序以及Windows Azure检测到您运行的节点出现问题时。我也不建议在OS磁盘上存储数据。操作系统和临时磁盘都具有最大大小,您将在数据大小增加时达到最大大小限制。

我不知道您的确切要求,但在我看来,您将需要使用Azure Blob存储或将更多数据驱动器附加到您的VM并在那里保留数据。

答案 3 :(得分:0)

最简单的方法是使用blob存储来存储您的文件。 Atul Sikaria指出了优点和缺点,但我们还需要记住,有一个选项可以使用带有SSD磁盘的高级存储。与标准blob存储相比,它是非常有效的选择。