有评论表示,对象存储是一个相对新的市场部分,目前继续稳步增长,并有更多值得采用的理由。
对于不了解的人来说,对象存储用于保存大量的非结构化数据,其中每个“对象”本质上是没有特定格式的文件(也称为二进制文件)。对象存储可以保存任何类型的数据,从人类可读的小对象文件到媒体(音频和视频)或其他行业特定的格式(石油和天然气,医学成像等)。
与传统存储相比,使用对象存储的好处是多方面的。基于块的系统(例如光纤通道和iSCSI)不能很好地向外扩展,并且对存储的数据没有真正的理解。它们是以低延迟和高粒度提供内容的“哑”块设备。文件系统将一些结构放在数据上,将文件对象放入层次结构(文件夹/目录)中并将元数据附加到这些对象上。然而,元数据通常仅基于存储文件所需要的信息(创建时间、时间更新、访问规则)。
对象存储进一步进行并删除文件夹层次结构。对象存储有通常可高度搜索的可扩展元数据。在规模方面,对象存储可以增长到多个(即使不是几百个)PB,通常对数据地理没有限制。对象存储的使用正在企业中被采用,因为平台提供了优于传统形式的存储优点。基于块的存储阵列不能很好地进行扩展,并且具有大量的HDD和SSD数据保护(例如RAID)问题。
基于文件的系统受到文件系统本身可扩展性的限制,无论是在对象计数、并发或并行访问以及恢复时间方面,以检查文件系统结构的一致性。对象存储代表一种更简单,更可扩展的解决方案,并且可以通过标准的基于网络的协议轻松访问。
对于寻求采用对象存储的IT组织来说,***的挑战是选择如何使用平台以及如何评估供应商的产品。对象存储使用基于Web的协议,因此需要一定程度的编码才能使用。这正在发生改变,我们将在后面进行讨论。
从特性的角度来看,对象存储有许多方面使得一个平台比另一个平台更合适。在本文的剩余部分,我们将从识别、分类和描述方面对适合IT组织的对象存储平台进行寻找。
可扩展性 - 大和小
如已经讨论的,对象存储被设计为比诸如横向扩展NAS的传统数据存储个更进一步的扩展。供应商产品具有多个PB级的功能,可以存储数十亿个对象。然而,实现高可扩展性不仅仅是简单地测量对象计数和数据量。 注意事项包括:
对象大小。对象存储如何处理小和大对象?如何处理小对象?
容量限制。容量是否有真正的限制? 容量增长是否需要添加更多的硬件或软件节点? 我可以简单地扩展存储吗?
分层和缓存。对象存储如何管理数据分层?随着容量的增长,自然地大量数据将是非活动的,并且提供了存档到更廉价的媒介的机会。在这一点上,分层成为一个关键的能力。闪存介质还可用于在用作缓存或分层时提高性能。
元数据管理。随着对象存储的增长,元数据管理得如何?对象存储的大小是否影响搜索的性能?
对象访问。随着对象存储的增长,任何单独对象的访问时间是否增加(希望不是所有)?
***一点对于构建可以并行地提供对许多对象存储/检索请求的访问的对象存储(例如用作CDN网络的后端系统)特别重要。增加对象存储中的对象数量,而不应显著增加检索时间,或更重要的是“到***个字节的时间”,这是从接收点开始将对象流回请求者所花费的时间请求。
当然,我们不应该忘记对象存储可能启动时需要的规模很小,不需要具有几百TB或PB级的初始占用。 具有小型入门级功能的能力,有助于减少对象存储采用的进入障碍,增加的需求是能够以最小的操作影响提供从小到大的线性扩展。
数据保护
数据保护的概念涵盖了对象存储中的许多方面。与传统的“主”存储相比,对象存储可能用于长期保留数据,因此数据持久性成为一个重要因素。我们可以将持久性视为需要确保由于一系列错误(包括硬件读取失败和数据损坏)而对正在存储的数据不发生逻辑损坏。
与四分之一个世纪前使用的设备相比,现代硬盘驱动器非常可靠。尽管如此,驱动器仍然遭受读取错误和其他的瞬态问题。对象存储应该执行一系列磁盘管理功能,包括数据清理、CRC检查和损坏或不一致数据的重建。这些后台任务表示,在需要长期保留至关重要的情况下保持数据健康的过程。
第二个要考虑的是硬件故障保护。大多数现代存储阵列实现RAID(廉价磁盘冗余阵列)作为从硬件故障导致的丢失中恢复数据的方法,随着数据量开始上升,RAID存在可扩展性问题。存储供应商已实现双重甚至三重奇偶校验,以防止大型硬盘容量的多个驱动器故障。但是,延长的驱动器重建时间使得RAID对于对象存储中的大量数据不切实际。
替代方案是使用擦除编码方案来保护数据。擦除编码描述了将数据划分和变换为多个冗余片段的过程,其中恢复原始信息所需为最小计数。例如,编码方案可以将数据翻译成12个,重建原始数据所需为任意8个。这12个可以分布在多个驱动器,服务器/节点或甚至地理上以提供高弹性。在12/8方案中,跨越三个位置的分布数据意味着可以容忍任何一个位置的丢失。
对象存储应根据客户需要提供具有可变保护值的擦除编码。由于擦除编码具有能够显著的处理开销,因此RAID还可以用于保护较小的对象并改善访问性能。如果数据在地理上分布的情况下,重建对网络的影响变得重要。因此,擦除编码系统的具体实现(以及在WAN上检索数据的需要)将直接影响恢复时间和客户SLA(服务水平协议)。当本地LAN延迟较高时,也会发生此问题 - 任何基于分布式网络的恢复将始终受到网络性能的影响。快速恢复非常重要,因为不受保护的数据需要快速重新保护,以避免潜在的数据丢失。
搜索、索引和元数据
在对象存储中搜索和检索数据的能力是最关键的要求之一。与结构化数据(如数据库和文件系统)相比,对象存储将数据保存在平面层次结构中,只有少量的逻辑或物理分隔(例如存储桶或池)。这意味着存储的每个对象都需要有大量的信息,以便于数据检索。
对象存储通常使用两种方法之一存储数据;最终用户设置对象的名称(可能看起来像标准文件名),或者使用系统生成的对象ID(OID)存储和访问对象。 OID通常是字符和数字的长字符串,由对象存储库本身随机生成。
在使用OID的情况下,元数据是关键的。 对象存储用户还可以维护对象ID及其使用的单独数据库。元数据提供关于对象本身(系统元数据)的信息,例如对象大小、访问权限、创建对象的用户等。用户元数据扩展每个对象存储的信息,并且是用于传递搜索和索引能力的应用程序特定信息。
元数据搜索的性能应该独立于存储在对象存储本身中的数据量。这是管理可扩展性的关键要求。
性能
在我们对需求的讨论中,性能是实现可扩展性、数据保护和搜索的主题。当对象存储***开发时,性能的想法不是一个关键考虑,因为许多对象存储只是用作长期存档或备份存储库。越来越多的对象平台被用于更活跃的数据,作为活动存档或用于媒体和其他流式内容的存储库。
结果是需要对象存储平台提供高吞吐量、线性扩展性能和处理高水平的并发请求。在将对象平台用作CDN(内容交付网络)或其他软件即服务(SaaS)解决方案的后备存储时,并发性的需要尤为重要。并发意味着能够同时传输许多对象,并能够每秒处理大量的单独请求。在度量方面,典型的测量基于IOPS(每秒I / O)和吞吐量(MB/sec or GB/sec)。
安全
与任何数据存储一样,安全是一个关键特性。在对象存储中,安全特性涵盖了许多方面。
由于数据量可能保留在对象存储中,多租户变得非常重要。业务用户(组织中的单独部门或单独的组织)希望知道他们的数据与其他人的访问隔离。这意味着具有单独的安全凭证,并为每个客户或对象提供加密密钥。
对象存储通常通过在对对象存储本身的HTTP调用上提供的认证密钥来提供对数据的访问。这些密钥是凭据,而不是典型的用户/密码组合,因为数据可以通过公共互联网传递。管理凭证的更广泛的任务是身份管理功能的一部分,也可以集成到标准平台,如LDAP和Microsoft Active Directory。
将通过访问控制列表分配对单个对象或存储的访问,这些列表确定对数据的单个或组级访问。许多对象存储将允许通过用于存储和检索数据的相同的基于Web的REST接口来设置和管理访问控制。
除了管理身份之外,必须通过数据加密提供安全性,无论是在飞行还是在休息。通常,使用TLS(例如HTTPS)在协议级实现飞行中保护。休息时,应对数据进行加密,以防止在物理服务器级别或驱动器/设备级别直接访问。加密的具体点或实现可以取决于最终用户想要如何管理加密密钥。数据可以在添加到对象存储之前或同时进行加密。
合规性和审计
合规性是数据安全的另一个方面,重点是满足特定受控行业(如医疗保健和金融)中保留数据的监管要求。 通常,兼容系统需要能够提供数据的不可变性,提供对象版本控制(因此可以跟踪改变),实现对象锁定或WORM(一次读取多次),再次用于不可变数据。与块和基于文件的系统相比,大多数对象库不更新数据。这提供了一定程度的控制,符合合规性的要求。
审计对合规性进行了补充,提供了一个显示数据如何存储在对象存储系统中的跟踪。审计跟踪还可以提供附加信息,例如层之间的数据迁移,内容的校验和验证(以确保没有篡改)以及对单个数据对象或桶的所有访问。
部署模型
对象存储已经走向软件定义存储或SDS的前沿。 大型横向扩展部署的性质意味着对象库与商品硬件和供应商提供的软件的成本模型能够进行很好地协作。 因此,我们看到许多基于软件的对象存储的实现。
使用商品硬件,当然不适合所有要求。许多潜在客户可能不愿或无法管理采购和构建定制对象存储解决方案的过程,而宁愿从供应商处获取组合的硬件和软件解决方案。在这种情况下,供应商需要提供设备以满足客户的需求,可能与已经在客户的数据中心中的服务器和存储供应商进行了合作。为什么? 因为支持模型,内部技能和部署蓝图需要基于***的硬件供应商。为了***的灵活性,供应商可能提供三种选择:
- 仅软件 - 作为VSA(虚拟存储设备)或本地部署到硬件上。
- 设备 - 专用硬件设备,构建为白盒或与主要硬件提供商之一所进行配合使用。
- 云 - 作为公共云中的实例部署。 对于每个选项,客户应该期望完全的互操作性和一致的管理接口。
协议支持和标准
初始对象存储基于HTTP(S)协议,使用基于REST的API调用来存储和检索数据。HTTP的使用是灵活的,因为可以从网络上的任何地方(局部或广域)访问数据,然而,与访问存储在横向扩展文件系统中的数据相比,应用程序必须被编码以使用对象存储。 因此,供应商已开始向其产品添加NFS和SMB支持,允许通过标准的基于文件的协议存储和检索数据。为了完全支持向外扩展功能,支持应包括并行文件系统。
扩展协议支持意味着可以轻松地移植或修改现有应用程序,以便为其数据使用对象存储。还值得考虑的是,与横向扩展文件存储相比,通过使用模拟文件存储的对象存储提供的体系结构之间的差异。 底层数据不是使用基于inode和目录的结构存储的,因此系统崩溃后FSCK(文件系统扫描)的概念不适用。与传统文件系统相比,这对支持文件系统的对象存储的可扩展性和性能有很大的影响。
协议支持还需要扩展到实际采用的情况或行业标准。对于对象存储,这意味着使用S3和Swift,这两个已经获得广泛流行的"标准"。亚马逊早在2006年就发布了S3(简单存储服务)平台进入对象市场,使得S3 API成为许多供应商选择遵循的标准,因为它已经成熟和全面。Swift从OpenStack项目的对象存储组件中进行开发。
总拥有成本
没有对价格和TCO的讨论,对象存储的摘要是完不完整的。 最明显的许可模式是基于容量的模式 - 向平台添加更多可用或原始容量,并以实际增量支付更多许可证。供应商还可以选择为每个节点收费,这意味着最终用户需要确保他们部署的硬件提供尽可能大的容量。
还有一个按功能收费的选项,虽然一些供应商将看到创建一个全面的收费结构,包括所有功能选项的机会。从终端用户的角度来看,这显然更具竞争力,但是隐藏的额外成本可能是一个问题。
计算TCO提出了一个关于对象存储平台效率的有趣问题。 横向扩展节点设计采用计算,系统内存和磁盘或闪存存储来提供一定量的用户容量。当构建白盒硬件时,软件的效率与构建解决方案的成本直接相关。到目前为止,没有实际的基准来比较对象存储的效率,这仍然是一个需要一些发展的领域。
结论
我们强调了对象存储的九个关键特性。供应商将以补充其产品架构的方式实现这些功能。在决定哪些平台是您的业务中使用的平台时,其中一些关键功能的评级将高于其他平台。 这里列出的列表没有特定的顺序。 然而,作为一个潜在客户,目标应该是通过这个列表,确定那些重要的功能,值得投入更多的调查。