Azure Blob Storage与文件服务的区别

158

请帮我纠正错误。根据我目前对这个主题的阅读,似乎Azure Blob存储和文件服务都提供了将文件和文件夹(我知道Blob可以存储任何二进制对象,但在最后一天,任何序列化的二进制流都是一个文件)存储在模仿文件系统的分层结构中的能力。

唯一不同的是访问它们的API略有区别,文件服务允许您使用类似于Win32文件I/O的函数进行源查询,另外还可以使用REST API。

如果您想使应用程序存储属于应用程序用户的某些文件,则为什么要选择其中之一?


6
你看过Azure Storage团队的这篇博客文章吗:http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/12/introducing-microsoft-azure-file-service.aspx?请向下滚动到它解释何时使用哪项服务的部分。 - Gaurav Mantri
3
是的,我在发布之前阅读了那篇文章。我正在思考的早期阶段,我的理解还没有形成。我仍然很困惑。我理解我所阅读的所有文章中所写的内容,但我正在尝试找出如果我想为我设计的应用程序存储用户拥有的文件,最好使用什么。 - Water Cooler v2
1
事情是这样的:我想让用户上传和下载自己的文件,并与他联系人组中的其他人分享其中一些文件(仅供下载/阅读)。我可以使用 Blob 存储的共享访问签名 (SAS) 来实现,但这不能满足我的“分享”需求。我倾向于一种解决方案,即我的应用程序/服务完成所有身份验证工作,并不向用户公开实际存储资源。在这种情况下,对我来说,文件服务和 Blob 存储做的事情是相同的。没有一个比另一个更让我感到舒适。 - Water Cooler v2
1
https://learn.microsoft.com/en-us/azure/storage/common/storage-introduction - Manish Jain
1
这是一个很好的问题,答案不基于个人观点。 - Michael Freidgeim
显示剩余2条评论
3个回答

124

以下是您的问题的几个要点:

  1. 您无法在虚拟机上将Azure Blob Storage作为本地共享挂载。
  2. Azure Blob Storage不具有层次结构,除了容器之外,您可以添加具有/或\字符的文件,许多读取Blob存储的应用程序会将其解释为文件夹。
  3. Azure File Service提供了SMB协议接口,可解决(1)中的问题。

如果您正在开发新应用程序,则可直接将Azure API集成到Blob Storage中。

如果您正在移植需要共享文件的现有应用程序,请使用Azure File Service。

请注意,Azure File Service不支持某些SMB协议功能。


1
非常感谢,Simon。关于你的回复,我想说几件事情。最终,我想要的是结果。从这个角度出发,我才提出了这个问题。从结果角度来看,你列表中的1号和3号论点并不相关。我完全没有在和你争论:-) 你的回答非常有帮助。我只是想告诉你导致我提出这个问题的思考过程。2号论点是一个无关紧要的问题,因为它提出了一个问题,然后又说那不是问题。假设我想要存储用户拥有的文件,我在想,为什么我会喜欢其中一种而不是另一种呢? - Water Cooler v2
请看编号列表后面的两个点,那应该是你的指南。 - Simon W
1
@SimonW - 你的指南后面提到的两个点被称为“实现方式”。然而,它们并不是绝对的。在这种情况下,它们更像是建议。有些情况下,即使是在新应用程序中,您也不想直接使用Azure API。同样,有些情况下,您可能希望重新设计现有应用程序以使用Azure API。 - David Makogon
它们之间有任何IOPS性能差异吗? - iamnicoj
@SimonW - 你能详细说明上面第3点吗?这是一种将Blob挂载为SBM文件共享或以某种方式作为“磁盘”访问它的方法吗? - Neil Weicher
抱歉回复较慢。Azure Files使用存储帐户作为其底层存储机制,因此它不仅仅是一个Blob,它可能是多个Blobs。 - Simon W

49

还有几个需要考虑的事项:

  • 价格:Blob存储比文件存储便宜得多。
  • 可移植性:如果您将来决定迁移到另一个平台,使用Blob存储可能需要更改应用程序代码,但是对于文件存储,只要您的应用程序使用本地文件系统API,就可以将其迁移到支持SMB的任何其他平台。

4
价格是一个非常重要的因素(目前大约有5倍的差距),另外值得一提的是文件存储的5TB限制。 - TZHX
2
旧帖子,但我今天第一次阅读它。 标准价格层默认有5TB的限制,但可以通过切换到100TB的限制来更改。 注意*在Azure存储帐户上启用大文件共享是一个不可逆转的过程。 https://learn.microsoft.com/azure/storage/files/storage-files-how-to-create-large-file-share - DamnedNForsaken

14
Azure文件服务更适用于内部文件处理。所谓的内部是指将目录挂载到云中或本地虚拟机,以便在后端(基于SMB协议)中加载它。
对于与最终用户(Web或应用程序)共享文件,使用Blob存储可能更有意义,因为这简化了通过URL下载并通过共享访问签名保护下载的过程。
此帖子在比较方面分享了更多详细信息(底部链接):https://blogs.msdn.microsoft.com/windowsazurestorage/2014/05/12/introducing-microsoft-azure-file-service/

嗨,Clemens Schotte,您所说的Blob存储允许通过URL下载是什么意思?您是否意味着文件存储不提供URL? - Heemanshu Bhalla
2
一些事情自这些帖子以来发生了变化,但文件服务确实支持通过URL和其他REST API进行下载(https://learn.microsoft.com/en-us/azure/storage/common/storage-decide-blobs-files-disks)。此外,安全性似乎是在存储账户级别上进行管理的,因此Blobs和文件服务之间应该非常相似(https://learn.microsoft.com/en-us/azure/storage/common/storage-security-guide)。 - K J

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