论文部分内容阅读
对象存储系统结合了附网存储和存储区域网的优点,已成为网络存储领域研究的热点。对象存储系统由客户端、元数据服务器、对象存储设备和互连网络组成,其中对象存储设备是对象存储系统的核心。在大规模的PB级对象存储系统中,一般存在成千上万自管理的对象存储设备,单个对象存储设备的性能将会对整个对象存储系统的性能产生极大的影响。因此,设计一种高性能的对象存储设备在对象存储研究领域具有重大意义。对象存储控制器是对象存储设备的控制和管理单元,它由硬件平台和存储管理软件组成。对象存储控制器的核心技术主要包括控制器硬件体系结构、对象数据组织、对象数据预取和对象数据智能处理等四方面的关键问题。现有对象存储控制器由于对I/O应用和对象访问的特征考虑不足使得对象控制器在性能方面仍存在缺陷。因此,针对对象控制器四个方面的关键问题设计和实现新的体系结构和方法对于构建高性能的对象存储控制器尤为重要。对象存储控制器的硬件平台是软件运行的基础,它直接决定着控制器的性能。传统对象存储控制器大多数是基于通用的PC平台或者服务器平台,由于它们一般面向计算并不是面向I/O,用它们设计对象存储控制器存在不足,特别是I/O总线可能成为系统性能提高的瓶颈。针对该问题,提出了一种基于交换架构的对象存储控制器体系结构。这种体系结构能够大大提高系统总体通信带宽并且性能具有很好的扩展性。在此基础上,实现了一种基于Intel IOP315的新型专用对象存储控制器。新型对象存储控制器的主要组成是Intel 80314芯片和2个Intel Xscale 80200的高性能低功耗CPU。Intel 80314最重要特征是被设计成为一个任意端口间均能互连的桥,它可以支持任意端口到端口之间的并行数据传输。性能分析表明,由于更多的磁盘可以并行地传输对象数据,新型对象存储控制器可以有效的解决单条I/O总线下的性能瓶颈问题。在硬件平台基础上对象存储控制器利用对象文件系统进行对象组织和管理。许多对象文件系统利用传统本地文件系统管理对象,而结合了对象访问特点的专用对象文件系统具有更好的性能。EBOFS是一种专用对象文件系统,它的高性能很大程度上是通过其对象分配算法在为单个对象分配磁盘空间时尽量使数据在磁盘上连续实现的。然而,EBOFS采用的是一种单粒度对象空间预分配方法,这使得它在交错为多个对象并行分配空间时并不能很好地保持对象内数据的连续性。为了克服EBOFS的不足,提出了一种多粒度对象空间预分配方法。该方法中对象预分配粒度的选择有两种方式:根据用户告知值调整和根据分配时当前对象大小调整。对于事先知道大小的用户对象,该方法为对象建立一个预期对象大小属性,并且用户在创建对象时设置该属性值。在对象空间分配时该方法读取预期对象大小属性并尽量按该值预分配整个对象大小空间。对于事先不知道大小的用户对象,该方法将对象大小分为多个区间,对于不同对象区间的对象选择不同的预分配值,小对象按较小粒度预分配空间,较大的对象按较大粒度预分配空间。仿真实验表明,该对象预分配方法可以减少磁盘已使用空间的extent数和单个对象平均包含的extent数,可以提高磁盘已分配空间的连续度,从而提高对象访问的性能。对象预取是一种有效减少对象存储控制器访问延迟的重要方法。随着I/O速度与CPU速度差距的扩大,在对象存储控制器上进行对象预取变得越来越重要。然而,现有的预取方法集中于对象内的预取,这限制了对象存储控制器在多个对象间进行预取的能力。针对该问题,提出了一种利用对象间关系进行预取的方法。该方法使用一种称为序列模式挖掘的数据库技术获得对象访问序列中的序列规则并构造序列规则表。当请求的对象不在cache中时,该方法结合当前对象访问上下文在序列规则表中查找与当前对象相关的对象,并将不在cache中的相关对象预取到cache中来。实验结果表明,与基于分组的预取方法相比,该对象预取方法可以提高对象预测精确度和对象cache命中率。主动存储技术具有很多优势,可以减少网络通信量和降低应用程序的执行时间。然而,目前主动存储的优势在对象存储系统中不能得到充分体现。为此,提出了一种灵活的基于对象的主动存储设计。在该设计中对象存储控制器可以利用自己的处理能力参加到用户自定义任务或系统任务对数据的处理中来。用户自定义任务由客户端下载到对象存储控制器中,系统任务由对象存储控制器本身固有。此外,任务对用户数据处理时具有灵活的处理方式。一方面任务可以处理单个对象或多个对象,可以处理对象的一部分数据或全部数据;另一方面任务支持多种数据输入输出模式,即被任务处理的数据可以来自客户端或磁盘并且处理后的数据可以发送到客户端或磁盘。与此同时,对现有对象存储设备标准进行了扩展,使其包含主动存储相关的命令。实验结果表明,增加了主动存储功能后对象存储控制器可以减少应用程序执行时间。