一种读写对象存储系统中的数据的方法以及装置与流程

文档序号:11830421阅读:262来源:国知局
一种读写对象存储系统中的数据的方法以及装置与流程

本发明涉及数据读写领域,具体地,涉及一种读写对象存储系统中的数据的方法以及装置。



背景技术:

随着高通量测序技术的不断发展,生物信息数据正以爆炸式速度增长。生物大数据包罗信息多、价值大,具有数据量大(Volume)、多样性(Variety)、价值高(Value)、处理速度快(Velocity)等“4V”特点,如能有效挖掘,对科研、农业、医药、健康、卫生等各方面都将产生深刻的影响。在数据爆炸式增长的同时,如何对这些数据进行存储和有效利用也是个极具挑战的问题。传统的基础架构已经对这些大规模的数据束手无策,对基础架构的扩充和维护也需要较大的成本。幸运的是,以大规模分布式数据中心集群为支撑的对象存储云服务的不断发展,使得企业在大数据存储方面有了一个很好的解决方案。

然而,在处理大量生物信息数据时,如何简便信息计算程序对大量中间文件进行频繁的读写操作是一个极具有挑战性的问题。



技术实现要素:

本发明的目的是提供一种读写对象存储系统中的数据的方法以及装置。其中,所述方法不仅极大地方便了信息计算程序对大量中间文件进行频繁的读写操作,而且还优化了计算程序的处理流程。

为了实现上述目的,本发明提供一种读写对象存储系统中的数据的方法。所述方法包括:

将所述对象存储系统挂载到内核fuse模块在用户空间创建的用户空间文件系统中,并配置每个客户端到所述对象存储系统中存储空间的路径信息;

在客户端读取存储对象的情况下,先从所述用户空间文件系统的缓存中读取数据,若缓存中没有要读取的数据,则根据所述用户空间文件系统数据库中存储对象的元数据信息封装rest服务接口,通过rest服务操作所述对象存储系统中的存储对象,实现所述对象存储系统中的数据的读取;

在客户端写入文件的情况下,所述用户空间文件系统根据文件大小和分块大小,将文件分割成一个或多个分块文件,写入本地缓存,并存储文件属性信息和分块信息,最后调用rest服务将缓存中的分块写入所述对象存储系统,并记录存储对象的元数据信息。

可选地,所述方法还包括:

在所述客户端读取存储对象的情况下,根据所述数据库中存储的元数据信息判断本地缓存空间中是否存在所请求的数据资源,若存在,则读取所述本地缓存空间中的数据。

可选地,所述方法还包括:

在根据所述文件大小及分块大小对所述文件进行处理后,将处理后的文件存储至本地缓存空间,并通过rest服务将存储至本地缓存空间的文件上传至所述对象存储系统的存储空间中。

可选地,所述将文件分割成一个或多个分块文件,包括:

根据所述文件的属性信息判断所述文件的大小是否大于预设的阈值;

在根据所述文件的属性信息判断所述文件的大小大于预设的阈值的情况下,将所述文件进行分块处理,并将所述文件的分块存储至本地缓存空间中。

可选地,所述方法还包括:

采用LRU算法管理所述本地缓存空间,换出缓存中最近最久未被使用的数据,存入最近写入的数据。

可选地,所述元数据信息包括以下中的至少一者:

分块信息、存储对象元数据、文件与对象的映射关系以及本地文件属性信息。

可选地,所述对象存储系统包括S3对象存储系统和OSS对象存储系统。

可选地,所述方法还包括:

在所述内核fuse模块在用户空间创建用户空间文件系统时,通过参数配置选择对象存储系统类别和数据中心。

相应地,本发明还提供一种读写对象存储系统中的数据的装置。所述装置包括:

挂载单元,用于将所述对象存储系统挂载到内核fuse模块在用户空间创建的用户空间文件系统中,并配置每个客户端到所述对象存储系统中存储空间的路径信息;

读取单元,用于在客户端读取存储对象的情况下,先从所述用户空间文件系统的缓存中读取数据,若缓存中没有要读取的数据,则根据所述用户空间文件系统数据库中存储对象的元数据信息封装rest服务接口,通过rest服务操作所述对象存储系统中的存储对象,实现所述对象存储系统中的数据的读取;

写入单元,用于在客户端写入文件的情况下,所述用户空间文件系统根据文件大小和分块大小,将文件分割成一个或多个分块文件,写入本地缓存,并存储文件属性信息和分块信息,最后调用rest服务将缓存中的的分块写入所述对象存储系统,并记录存储对象的元数据信息。

可选地,所述读取单元,还用于:

在所述客户端读取存储对象的情况下,根据所述数据库中存储的元数据信息判断本地缓存空间中是否存在所请求的数据资源,若存在,则读取所述本地缓存空间中的数据。

通过上述技术方案,将对象存储系统挂载到内核fuse模块在用户空间创建的用户空间文件系统中,并配置每个客户端到对象存储系统中存储空间的路径信息;在客户端读取存储对象的情况下,先从用户空间文件系统的缓存中读取数据,若缓存中没有要读取的数据,则根据用户空间文件系统数据库中存储对象的元数据信息封装rest服务接口,通过rest服务操作对象存储系统中的存储对象,实现对象存储系统中的数据的读取;在客户端写入文件的情况下,用户空间文件系统根据文件大小和分块大小,将文件分割成一个或多个分块文件,写入本地缓存,并存储文件属性信息和分块信息,最后调用rest服务将缓存中的分块写入对象存储系统,并记录存储对象的元数据信息,不仅极大地方便了信息计算程序对大量中间文件进行频繁的读写操作,而且还优化了计算程序的处理流程。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1是本发明一实施例提供的读写对象存储系统中的数据的方法的流程图;

图2是本发明一实施例提供的读写对象存储系统中的数据的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明一实施例提供的读写对象存储系统中的数据的方法的流程图。如图1所示,本发明一实施例提供的读写对象存储系统中的数据的方法包括:

在步骤S101中,将所述对象存储系统挂载到内核fuse模块在用户空间创建的用户空间文件系统中,并配置每个客户端到所述对象存储系统中存储空间的路径信息。

其中,所述对象存储系统包括亚马逊的S3对象存储系统和阿里云的OSS对象存储系统。对象存储系统负责对象数据的存储,由对象存储系统提供标准的API接口,供rest服务进行对象操作。内核fuse模块提供文件操作接口,并和虚拟文件系统进行交互。通过rest服务和内核fuse模块将对象存储系统以文件系统的形式挂载到用户空间中。此外,通过rest接口操作及管理对象存储系统中的远程存储对象。根据不同的文件操作封装一组不同的rest接口和缓存操作接口成为一个单独事务,以完成一个文件操作,如读操作或写操作等。

具体地,每个客户端到对象存储系统的存储空间均有一条自定义的路径,并将自定义的路径挂载于用户空间文件系统中,从而实现了数据的隔离和保护。在客户端所写入的文件被分块处理成多个文件分块的情况下,一个文件会对应多个存储对象,也就是说,一个文件映射成多个对象存储至对象存储系统的存储空间的同一个路径下,并支持多个客户端同时挂载同一存储空间下的不同路径。不同的客户端在同时挂载于同一存储空间的情况下,需要配置不同的存储空间路径。如果路径相同,将挂载失败。

优选地,所述方法还包括:在所述内核fuse模块在用户空间创建用户空间文件系统时,通过参数配置选择对象存储系统类别和数据中心。具体地,在创建文件空间时客户端可以通过参数配置选择不同的对象存储系统(S3或OSS)和数据中心(endpoint)。

接着,在步骤S102中,在客户端读取存储对象的情况下,先从所述用户空间文件系统的缓存中读取数据,若缓存中没有要读取的数据,则根据所述用户空间文件系统数据库中存储对象的元数据信息封装rest服务接口,通过rest服务操作所述对象存储系统中的存储对象,实现所述对象存储系统中的数据的读取。

其中,所述元数据信息包括:分块信息、存储对象元数据、文件与对象的映射关系以及本地文件属性信息。具体地,分块信息用于在客户端写入的文件被分块时记录分割点和分块大小等信息,存储对象元数据用于记录文件分块在对象存储系统的存储空间中的存储对象的属性信息,文件与对象的映射关系用于记录文件名与对象存储系统的存储空间中的一个或多个对象名(存储对象的名称)之间的映射关系,本地文件属性信息用于管理和处理本地文件。

不同的客户端的数据存放到对象存储系统的同一存储空间的不同路径下,在分布式环境下处理多个读取任务时,不同客户端的生物信息计算程序通过读取不同路径下的数据同时运行。

优选地,在所述客户端读取存储对象的情况下,根据所述数据库中存储的元数据信息判断本地缓存空间中是否存在所述数据资源,若存在,则读取所述本地缓存空间中的数据,并将所述存储对象发送至相应的客户端。藉此,在文件系统可直接得到客户端所需的存储对象,不仅节省了资源,还节省了读取数据的时间。

最后,在步骤S103中,在客户端写入文件的情况下,所述用户空间文件系统根据文件大小和分块大小,将文件分割成一个或多个分块文件,写入本地缓存,并存储文件属性信息和分块信息,最后调用rest服务将缓存中的分块写入所述对象存储系统,并记录存储对象的元数据信息。

其中,用户空间文件系统通过写入文件的属性信息,在写入过程中同时初始化元数据信息,以供读取数据时使用。

具体地,所述根据所述写入文件的属性信息对所述文件进行处理,包括:根据所述文件的属性信息判断所述文件的大小是否大于预设的阈值;在根据所述文件的属性信息判断所述文件的大小大于预设的阈值的情况下,将所述文件进行分块处理,并将所述文件的分块存储至本地缓存空间中。此外,还将分块信息添加到数据库中存储的元数据信息中。其中,预设的阈值为100MB,在文件的大小大于100MB的情况下,将文件进行分块处理,并将文件分块存放到同一存储空间的一个路径下或将文件分块存储至本地缓存空间中。藉此,减少分块数量,减轻因缓存管理和频繁的rest服务所带来的性能影响。

其中,本地缓存空间的大小可配置,默认为128GB,以适应绝大多数生物信息计算程序对大文件大写性能的要求。

优选地,所述方法还包括:在根据所述文件大小及分块大小对所述文件进行处理后,将处理后的文件存储至本地缓存空间,并通过rest服务将存储至本地缓存空间的文件上传至所述对象存储系统的存储空间中。具体地,rest接口在将存储至本地缓存空间的文件上传至所述对象存储系统的存储空间后,返回存储对象元数据信息以及文件与对象的映射关系,并将存储对象元数据信息以及文件与对象的映射关系添加到数据库中存储的元数据信息中。藉此,在写数据时采用缓存和并发处理,方便了程序对大量中间文件进行频繁的写操作。

优选地,所述方法还包括:采用LRU算法管理所述本地缓存空间,换出最近最久未使用的存储对象,并存入最新写入的数据。其中,LRU算法为最近最久未使用算法,将长时间未使用的数据换出,存入最近生成的数据。藉此,能够增加客户端从本地缓存空间中读取存储对象的概率。

该方法是用phthon编写的linux后台服务程序,内部实现对用户不可见,用户可以在shell终端进行操作。

本实施例通过将对象存储系统挂载到内核fuse模块在用户空间创建的文件系统中,并配置每个客户端到对象存储系统中存储空间的路径信息;在客户端读取存储对象的情况下,先从所述文件系统的缓存中读取数据,若缓存没有要读取的数据,则根据用户空间文件系统中存储对象的元数据信息封装rest服务接口,通过rest服务操作对象存储系统中的存储对象,实现对象存储系统中的数据的读取;在客户端写入文件的情况下,所述文件系统根据文件大小和分块大小,将文件分割成一个或多个分块文件,写入本地缓存,并存储文件属性信息和及分块信息,最后调用rest服务将缓存中的的分块写入对象存储系统,并记录存储对象的元数据信息。本发明不仅极大地方便了信息计算程序对大量中间文件进行频繁的读写操作,而且还优化了计算程序的处理流程。

以下以具体的技术方案为例进行相关说明:

客户端需要将生物信息文件的格式转化成分析软件能识别的格式,调用了fastq_quality_convert这个程序进行文件格式的转化,并使用本申请中的用户空间文件系统将转化后的文件输出到对象存储系统中,具体使用包含如下步骤:

第一步,在配置文件中配置认证信息,配置信息如下:

1、storage-url:存储系统名称://bucket名称

2、backend-login:对象存储系统提供的访问id(Access_Key_id)

3、backend-password:对象存储系统提供的访问密码(Access_Key_Secret)

4、fs-passphrase:创建用户空间文件系统时用户指定的验证

第二步,指定命令行参数,参数包括如下:

1、存储系统名称,oss或s3,在本实施例中使用oss

2、bucket名称,一个命名空间,用于存储对象,在本实施例中使用了名为bmksxoutputfiles的bucket。

3、数据中心名称,若使用的存储系统是s3,则不用指定数据中心名称,若使用oss,则需要指定内网使用的数据中心名称,本实施例中使用的是oss-cn-beijing-internal。

4、用户空间名称,用户自定义的存储对象的地方,为存储空间下的一个自定义路径,在本实施例中使用了fastq_convert的存储空间。

第三步,配置完成后,通过命令行创建文件系统。

第四步,创建好文件系统,即可通过命令挂载,挂载时需要指定挂载点,在本实施例中将文件系统挂载到/mnt/bmkfsql目录下。

第五步,挂载完成后,用户就可以像使用本地文件系统一样使用对象存储系统中的数据。计算程序将输出文件生成到用户空间文件系统的挂载目录下,并记录了计算程序运行的开始和结束时间。

测试证明,系统较好地满足了生物信息计算程序在运行过程中对读写文件性能的要求,具有较高实用性。

在本发明另一实施例中,某用户使用比对程序Tophat对RNA-Seq数据进行快速剪切映射,并使用用户空间文件系统将中间文件和结果保存到对象存储系统中。在程序运行的过程中,生成了大量的中间文件,Tophat程序会对这些中间文件进行频繁的读写操作。具体过程如下:

第一步,创建并挂载文件系统,挂载点为/mnt/bmkfsql/Tophat

第二步,运行tophat程序,将程序输出目录指定为/mnt/bmkfsql/Tophat,

在本实施例中,将Tophat程序的启动命令和记录程序开始、结束时间的命令都配置到了命令行中,然后通过命令行后台启动,并将输出日志记录到tophat.log文件中,以防止Topaht程序因shell终端连接断开而中断。

第三步,等待程序运行完,先查看日志信息,总共运行了6小时39分钟25秒,和私有云的运行时间6小时23分钟34秒相接近,达到了预期期望。然后查看文件系统中的输出信息。其中,align_summary.txt是最终的结果文件,其他是一些辅助文件。在本实施例中,并没有看到很多中间文件,这是因为Tophat程序在运行最后会将一个tmp文件夹删除,这个文件夹中存放了大量的中间文件。这里可以再运行一次,在程序没运行完查看文件系统中的文件,在/mnt/bmkfsql/Tophat/tmp目录下生成了很多中间文件。

本实例很好地说明了本发明中的文件系统具有很高的稳定性和健壮性,较好地支撑了计算程序对大量中间文件和结果文件进行的频繁操作,适合生产使用。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

图2是本发明一实施例提供的读写对象存储系统中的数据的装置的结构示意图。如图2所示,本发明一实施例提供的读写对象存储系统中的数据的装置包括:

挂载单元201,用于将所述对象存储系统挂载到内核fuse模块在用户空间创建的用户空间文件系统中,并配置每个客户端到所述对象存储系统中存储空间的路径信息;

读取单元202,用于在客户端读取存储对象的情况下,先从所述用户空间文件系统的缓存中读取数据,若缓存中没有要读取的数据,则根据所述用户空间文件系统数据库中存储对象的元数据信息封装rest服务接口,通过rest服务操作所述对象存储系统中的存储对象,实现所述对象存储系统中的数据的读取;

写入单元203,用于在客户端写入文件的情况下,所述用户空间文件系统根据文件大小和分块大小,将文件分割成一个或多个分块文件,写入本地缓存,并存储文件属性信息和分块信息,最后调用rest服务将缓存中的的分块写入所述对象存储系统,并记录存储对象的元数据信息。

在本发明公开的一可选实施例中,所述读取单元202,还用于:

在所述客户端读取存储对象的情况下,根据所述数据库中存储的元数据信息判断本地缓存空间中是否存在所请求的数据资源,若存在,则读取所述本地缓存空间中的数据。

对于本发明一实施例提供的读写对象存储系统中的数据的装置还涉及的具体细节已在本发明一实施例提供的读写对象存储系统中的数据的方法中作了详细的描述,在此不再赘述。

应当注意的是,在本发明的系统的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上实施方式仅适于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1