云存储服务在过去十年中呈爆炸式增长,这在很大程度上是由于低成本的基于对象的存储库的激增,这些存储库已被证明是当今许多超大规模工作负载的理想选择。另一方面,块存储主要保留在本地,支持关键任务和数据密集型工作负载。但这似乎正在改变。根据 Taneja Group 最近的两项研究,组织越来越多地转向块存储云,因为他们正在寻找更高效、更灵活的方式来支持他们的工作负载。
对于许多决策者来说,云对象存储与块存储之间的区别以及何时使用其中一个或另一个并不总是很清楚。只有了解这两种方法,您才能规划出在您的组织中采用云存储的有效策略。
块存储基础
块存储是最古老和最常用的存储类型之一,它继续支持当今的许多应用程序。尽管传统上它与本地 SAN 相关联,但块存储现在已成为云环境的重要组成部分,提供基于块的服务的供应商比以往任何时候都多。
在块存储模型中,数据以原始存储卷的固定大小块或块的形式保存到存储介质中。每个块都与唯一标识该块的地址相关联。该地址构成了分配给区块的唯一元数据,一些行业专家甚至不认为这些地址是元数据。
由于缺少元数据,块是精简和高效的,没有太多的开销来压低它们。为了管理块存储,独立于存储介质的软件程序控制块在存储驱动器中的放置和组织方式。该软件还处理数据检索,使用地址定位块,然后将数据组织成完整的文件。
块存储长期以来一直是企业存储的首选解决方案,因为它快速、高效、灵活,具有低延迟 I/O 和高可靠性。块存储设备可以轻松拆卸和移动,其背后的技术广为人知并得到高度实施,使得将块存储集成到各种应用程序工作流中变得更加容易。
也就是说,在考虑对象存储与块存储的选择时,重要的是要考虑块存储带来的挑战。这些包括有限的可扩展性和增加的延迟,当控制应用程序不在存储设备附近时,可能会发生这种情况。缺少元数据可能是一个缺点,因为它使控制应用程序有责任在需要时将附加信息附加到每个块。块存储也可能变得昂贵并且维护和优化起来可能很复杂。
尽管存在这些挑战,块存储还是非常适合多种企业用例。它是需要一致的 I/O 性能和低延迟的高性能、关键任务应用程序的理想选择,例如关系数据库系统、虚拟桌面基础架构和电子邮件服务器。它也非常适合 RAID 阵列,并且可以支持从网络存储启动系统。
由于块存储在众多企业应用程序中扮演着如此重要的角色,因此云供应商现在提供块存储服务也就不足为奇了,例如 AWS Elastic Block Storage、Google Cloud Persistent Disks 和 Rackspace Cloud Block Storage。
对象存储基础
与块存储相比,对象存储相对较新。它的开发是为了解决不断增长的非结构化数据存储问题,例如网页、照片、视频、日志文件和物联网数据。
使用对象存储,数据及其元数据被打包成离散的单元或对象,这些单元或对象存储在结构平坦的数据环境中,该数据环境可以跨越多个网络系统和地理边界。要访问数据,应用程序只需使用基于 HTTP 的常见 RESTful API 调用,例如 PUT、GET 或 POST,从而简化访问和管理数据的过程。
与每个对象相关联的元数据包括一个唯一的标识符,它可以包括可定制的信息,为底层数据提供更多的上下文。例如,元数据可能包括有关相应应用程序的详细信息、分配给对象的数据保护级别或支持保留、路由和删除数据策略的其他信息。有效的元数据也有助于执行高级分析。
对象模型的平面结构和可定制的元数据使扩展数据存储库的过程更加简单。当您需要更多存储时,您只需部署额外的节点,甚至可以跨越地理边界。此外,可定制的元数据使跨位置组织、搜索和检索数据变得更加容易。对象存储服务往往比其他存储服务更便宜,因为存储可以在商用硬件上运行,更易于管理,并且在许多情况下访问频率不高。
但对象存储有其自身的挑战,最显着的是性能问题。元数据会增加开销,并且数据修改会很麻烦。由于固有的延迟,即使是读取操作也可能很慢。此外,转向对象存储的组织可能需要更新其应用程序以适应 HTTP 调用。
然而,即使面临这些挑战,对象存储在许多用例中仍具有优势。例如,它非常适合存储大量不经常更新的非结构化数据。对象存储也非常适合备份或归档数据,以及可以利用丰富元数据的大规模分析。此外,许多组织将对象存储用于 Web 应用程序和服务,这自然适合使用 HTTP 调用来访问存储的对象。
许多云供应商现在提供对象存储服务,包括那些也提供块服务的供应商。亚马逊、Rackspace 和谷歌都提供对象存储和块存储云服务。
做出对象存储与块存储的选择
块存储和对象存储都有其优点和缺点,大多数用例属于一个阵营或另一个阵营。您可能不会使用对象存储来支持您的关系数据库,但您可能会将其用于您的全球 Web 应用程序或大数据分析项目。幸运的是,随着云提供商现在提供多种数据存储选项,对象存储与块存储的决策变得越来越容易。这些选项可以更轻松地将企业工作负载迁移到云端,而不会影响关键任务应用程序的性能。