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