NAS文件服务器或文件管理器在过去的25年里一直是存储非结构化数据或非标准数据库数据的传统方式。面向非结构化数据,并不意味着数据本身没有结构,因为文件本质上就是一个二进制对象。基于以上原理,许多供应商已经为相同的非结构化数据同时提供对象级存储和文件级存储接口,我们有望看到新兴的对象存储成为传统文件服务器的替代者。
我们将在这篇文章中讨论混合使用对象级存储和文件存储两种方式来存储非结构化数据时的优劣对比,并研究IT部门在考察相关产品时应该考虑哪些重点。
NAS历史回顾
NAS涵盖了源自IT世界两段不同历史的两种技术。其一是由Sun Microsystems开发的NFS,已经成为非Windows系统访问网络文件内容的标准协议。另一种就是SMB,也就是广为人知CIFS,是Microsoft平台的文件共享协议。两种技术自从推出以来都发展迅速,不断提升和增加扩展功能,超越简单文件共享实现更广泛的功能。
传统的NAS会使用RAID技术来防护磁盘故障,供应商的大多数NAS产品也都基于双控制器架构来防护硬件故障,其中一些NAS产品还能实现横向扩展。NAS的文件系统首先构建在物理存储介质上,这些文件系统再使用NFS或SMB向网络公开。
NAS和对象存储的相似点
基于文件的NAS和基于对象的存储都面向相同的数据类型——非结构化文件,在文件内部或者外部维护文件层级信息。两者都可以支持横向扩展架构,从而能存储海量文件或对象。
用文件系统来充当数据存储基础也带来一些可用性问题:
可扩展性问题。在单节点NAS或故障转移双节点NAS上,文件系统只位于单个操作系统实例上。这种方式可以相对容易地处理诸如文件创建、锁定和更新的“固定模式”操作。然而,文件系统的扩展是一个真正的挑战,并且问题在需要处理众多节点变得非常复杂。
数据完整性。文件系统将数据分解为元数据和数据内容,然后存储在逻辑或物理磁盘卷空间内。如果文件服务器意外掉电,那么系统必须执行文件系统检查(FSCK)来校验掉电时数据的完整性。根据文件系统的实现方式,校验操作可能会带来很大的延迟;某些NAS系统,如NetApp的Data ONTAP,会使用非易失性RAM来处理海量数据的校验和确认,从而降低FSCK的开销。
RAID保护。从Gatter Gibson和Randy Katz在1987年的一篇论文开始,RAID已成为存储设备的常规保护措施。RAID技术为我们服务了很多年,但现在已经开始达到可扩展性的极限,因为硬盘驱动器的容量不断增长,结果已经远远超出RAID论文发表时的预计。今天的RAID系统重建时间可能会持续数天,这已经是个大问题,随着新款12TB容量驱动器的发布和不断投入使用,RAID的前景将会更加困难。
RAID仅适用于保护存储在单个设备中的数据,这也是额外的限制条件。为了保护数据免受单纯设备故障之外的侵害,必须对数据进行复制,在地理上分散的不同位置创建数据的完整副本。
理解对象存储
基于对象的存储是存储二进制数据或对象的相对较新的方式。该技术可以追溯到20世纪90年代中期,一家名为FilePool的公司提出了可寻址内容存储的概念。EMC(现在的戴尔EMC)收购了FilePool,其产品成为Centera产品线。此后,许多供应商都已经进入这个可以存储海量非结构化内容的新概念市场。
NAS产品基于文件系统存储非结构化数据,这种机制的性能和数据完整性缺陷无法避免;而对象存储是一套物理存储架构,完全消除了以上问题。这是因为对象存储并不使用文件系统概念,而是将数据存储在单个平面命名空间或层次结构中。
对象级存储在以下几个关键领域与NAS不同:
通过基于Web的协议(HTTP或HTTPS)访问,而且通常是无状态连接。对象存储平台的每次读写操作都使用诸如store-create,update和delete这样的简单指令。
没有文件目录结构。对象级存储提供“存储单元”或逻辑存储容器,以平坦,非分层的方式存储数据。
不关注数据格式或结构。数据的内容属性描述信息会保存在元数据中,和数据本身同时存储。这些属性可以是系统元数据,例如数据保存的日期时间,或用户定义的元数据,从而让外部应用程序更容易对数据内容执行检索和搜索。
修改操作不改变旧数据。新数据对象的存储是一个无关联的操作,而数据对象的修改更新实际上包括删除和创建操作,并不会实际修改已有数据。
广受认同的对象存储的高度可扩展性。许多IT公司认为,如果没有存储海量二进制数据的需求,就没有必要选择对象存储。这种偏见正在消除,对象存储适合任何环境,而不只是超大规模的云。
通过可替代RAID的技术措施实现数据保护。这些技术包括保留对象的多个本地或远程副本,或者使用擦除编码。
使用特殊的内容锁定技术。内容锁定可以保障NAS的数据完整性。单独的文件可以打开以进行独占或写入访问,确保数据只能在任何一个时间被单个来源编写。对象存储并不提供原生的锁定功能,但会确保对象被视为不可变的,这意味着数据会被覆盖以保持一致性。
毫无疑问,对象和文件存储之间的界限有些模糊。
对比两种存储系统的属性,我们可以看到存储数据的两种方法之间也有很多相似之处。两者都适用于非结构化数据,并使用元数据来跟踪正在存储的特定对象的信息。可以看出,改造对象存储以提供NAS协议并不困难。
合并对象和NAS存储
为什么要合并NAS和对象存储?除了只需运行单个存储平台带来的物理存储的明显节省外,还有其他好处:
对象存储器使用擦除编码技术来支持位置分散的数据的保护和访问。这意味着不再需要使用传统复制技术来保留数据的整个副本。存储硬件节省效果显著,但还有其他好处,例如能够有效地将数据访问扩展到多个位置,而不是点对点性质的复制。提醒一句:地理分布文件的锁定——实现有效的、分布式对象的关键要素——并不简单。
对象存储器使用擦除编码技术来支持位置分散的数据的保护和访问。这意味着不再需要使用传统复制技术来保留数据的整个副本。存储硬件节省效果显著,但还有其他好处,例如能够有效地将数据访问扩展到多个位置,而不是点对点性质的复制。提醒一句:地理分布文件的锁定——实现有效的、分布式对象的关键要素——并不简单。
可以同时从使用多个协议的不同系统上访问数据。对象存储既可以通过传统协议(如NFS或SMB)提供内容服务,需要时也可以使用更有效的基于对象的访问方式来分析数据内容,以支持其他目的。与NAS相比,对象协议的无状态特性减少了访问内容的开销,例如文件锁定或跟踪,分配锁和跟踪打开的文件句柄(请参阅“减少开销”)。
对象存储介质易于扩展而且便宜。在提供传统文件访问功能的同时,对象存储也是归档存储的理想选择。您还可以将数据移动到云端对象存储,包括长期冷数据归档,同时还能保留一定限度的元数据实现内容检索。这种混合使用物理和云存储资源的方法大大简化了混合存储平台的开发。
基于对象的NAS:供应商评述
有哪些供应商提供基于对象的NAS产品?我们看到有两种不同类型的产品诞生:利用基于对象的NAS来提升NAS使用体验,而且无需暴露底层对象存储;或者,供应商提供混合的NAS和对象功能,数据通过两种协议都可以访问。
基于对象的NAS产品模式的例子包括Nasuni,这是一个提供基于云的全局NAS产品的初创公司,NAS的后端存储空间则基于Amazon Web Services Simple Storage Service(亚马逊Web服务简单存储服务)。另外一家采用类似技术的公司是Exablox(现在属于StorageCraft公司)。该公司的横向扩展OneBlox系统使用环行分布式对象存储来保存文件内容,同时提供一些有意思的功能,如智能文件版本控制和快照。OneBlox底层会对象分解成允许重复数据删除的块,但这些细节用户无法访问。
在商业对象存储软件领域也有一系列专有供应商产品。以下是一些例子:
Scality公司的RING产品,提供SMB 2.0和NFSv3支持,包括与Microsoft Active Directory的集成。多协议的支持通过在RING平台本机运行的不同协议“连接器”服务来实现。
Caringo公司的Filefly产品,使用后台文件服务来扩展公司的Swarm对象存储,从而支持NAS协议。该公司还提供轻量级接口SwarmNFS,可以利用NFSv4版本协议访问Swarm对象存储中存储的数据。
DataDirect Networks公司,在其WOS对象存储产品中提供名为NoFS的功能,让您可以使用文件服务。该公司宣称,使用NoFS可以比传统文件服务系统节省15%至20%的存储空间,并显著减少I/O流量冲击。
Hitachi Data Systems通过HCP Anywhere在该公司的Hitachi Content Platform对象存储平台上实现NAS访问。使用定制开发的HCP Anywhere应用程序让数据内容可以被移动设备访问。
Cloudian公司,使用HyperStore Connect for Files实现对其HyperStore对象平台的文件访问。该产品提供无状态接入点,从而提供包括全局命名空间和文件锁定的标准NAS功能。
除了提供原生NAS支持的对象存储供应商之外,还有一些公司提供可以连接到对象存储的文件网关,例如Avere公司的FXT产品。然而,这些非原生产品不能同时通过NAS和对象两种协议访问数据,因为数据可能会用专有格式存储到后端对象存储,不可能直接从对象级别访问。
最后我们也应该提到可供选择的开源产品。Ceph基于支持对象、文件和块格式的横向扩展平台来实现对象存储功能,尽管当前它还不支持直接通过多个协议暴露相同的数据。还有OpenIO,它支持一系列存储协议,并且可以部署在普通商品硬件上。支持的硬件还包括基于ARM的硬件,该公司使用名为“nano”的ARM节点可以将独立的硬盘驱动器转换为存储服务器。
数据分析的伙伴
对象和文件是数据分析的好伙伴。使用传统的NAS协议存储数据,使用对象或HTTP进行后端分析,这种组合可以将并行的两种业务的开销和相互影响降到最低。对象协议不需要文件锁定和其他数据完整性功能,因为数据的读写都是静态的。这就减少了文件系统的开销并提高了性能。
毫无疑问,对象和文件存储之间的界限是模糊的,对于很多用例来说,合并这两者合情合理。对象级存储提供了比传统NAS存储更实用的存储方法,具有更高的效率和地理灵活性。我们可以预计,未来所有非结构化存储设备都会原生地同时支持标准的对象和文件两种协议。
作者:Chris Evans
来源:51CTO