Azure Blob、文件和磁盘存储的区别

12
快速问题。我已经阅读了大量关于Azure Blob/File/Disk 存储选项的信息,但我的存储需求非常简单,因此我不知道什么是最佳选择。我阅读的大部分信息都超出了我的理解范围。
我希望有人可以将优缺点的范围缩小到一组更合理的范围内。我的情况如下:
我正在构建一个API来进行图像处理。简而言之,用户发出针对特定图像和特定文本的get请求,我的API对其进行处理并输出图像。目前,我正在使用Azure模拟器运行,因此图像文件(约3GB的PNG文件)正在从本地路径提取。我很快就会部署到一个实际的Azure服务器上,所以我需要在某个位置存储这些图像文件(而不放入实际应用程序文件中)。
我目前的理解是,磁盘和文件选项将允许我保持代码相对不变,仍然使用通用文件I/O来加载图像路径。磁盘只会允许在运行此API的机器上访问数据,这也是可以接受的,但我不知道是否有任何好处,即使用具有此限制的磁盘。Blob存储将要求我进行更改,但是代码不太多,我不认为这会很困难。
每种不同的选择都有许多细节,我很难做出决定:对于我的情况,这三个选择中是否有明确的选择?是否仅取决于哪种更容易?性能和成本是首要考虑因素,因此在这方面有哪些优缺点?这确实需要能够扩展到更多图像,但只能扩展到一定程度。我可以看到它将从3GB的图像增加到未来几年的10GB,但不会从3GB增加到1000GB。

你正在寻找 Blob 存储。文件和磁盘是一些不必要的功能结构,会牺牲简单性和限制。将来,如果您需要超过 Blob 存储的限制,则可以在多个帐户之间分散图像(例如,将图像 a* - k* 放入一个帐户中,其余放入另一个帐户中)。 - Sten Petrov
1个回答

25
你选择使用哪种存储完全由你自己决定,但客观来说:
- Azure文件存储可以作为SMB卷挂载(这样你的应用程序的所有实例都可以使用它)。注意:目前Web应用程序不支持此功能 - 你只能通过API写入文件共享,而不能通过附加磁盘写入。Azure文件存储容量支持每个卷高达5TB,并且在整个共享上的吞吐量最大为60MB/秒。它由Azure块存储支持(因此与块相同可靠)。 - Azure磁盘再次由块支持(页面块),每个磁盘高达1TB。每个磁盘只能挂载到一个虚拟机。吞吐量比文件存储更高(每个块为60 /秒)。如果没有您自己的解决方案来同步数据,则无法在多个VM之间共享磁盘。一旦挂载和格式化,就像任何其他本地文件一样访问(例如不需要修改您的应用程序)。 - Azure块存储:每个存储帐户最多可达500TB,每个块Blob最大可达4.77TB。通过REST API / SDK访问,不可作为磁盘/驱动器挂载。未修改应用程序的情况下,您需要确保将块Blob内容复制到本地磁盘以执行对其进行操作(您不能只是像打开文件一样打开块Blob并对其进行修改)。
(编辑以反映更大的块Blob大小,自2016年12月起引入)

2
只是补充一下,有10GB的数据,你将采取哪种路线都无关紧要,只需使用最方便的即可。顺便问一句,那是复制粘贴吗?你怎么能这么快地打出来的? - 4c74356b41
1
如果操作者要扩展到多个实例并希望从任何实例访问任何对象(使附加磁盘不那么理想),则这是相关的,因为它们与特定实例关联。 - David Makogon
2
只有大量的咖啡,没有复制粘贴。 - David Makogon
那真是更令人印象深刻啊 ;) 干得好 - 4c74356b41
谢谢提供这些信息,这确实让事情更加清晰。我可以说blob是最具可扩展性的选择,并且需要最少的限制/解决方法(因为文件存储/磁盘存储是基于它构建的),但缺点是我需要改变我的应用程序吗? - JakeD
2022年更新:现在您可以在虚拟机之间共享某些托管磁盘。 - Switch386

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接