CN111090618A - 一种数据读取方法、系统及设备 - Google Patents

一种数据读取方法、系统及设备 Download PDF

Info

Publication number
CN111090618A
CN111090618A CN201911038484.8A CN201911038484A CN111090618A CN 111090618 A CN111090618 A CN 111090618A CN 201911038484 A CN201911038484 A CN 201911038484A CN 111090618 A CN111090618 A CN 111090618A
Authority
CN
China
Prior art keywords
file
target
storage
data
fragment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911038484.8A
Other languages
English (en)
Other versions
CN111090618B (zh
Inventor
刘太良
孙细妹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Wangsu Co Ltd
Original Assignee
Xiamen Wangsu Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Wangsu Co Ltd filed Critical Xiamen Wangsu Co Ltd
Priority to CN201911038484.8A priority Critical patent/CN111090618B/zh
Publication of CN111090618A publication Critical patent/CN111090618A/zh
Application granted granted Critical
Publication of CN111090618B publication Critical patent/CN111090618B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/144Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据读取方法、系统及设备,其中,所述方法包括:接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件;若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;其中,所述自定义的存储目录对于访问者不可感知;依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。本申请提供的技术方案,能够使得对象存储服务上传的对象能够被文件存储系统访问。

Description

一种数据读取方法、系统及设备
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据读取方法、系统及设备。
背景技术
随着云存储技术的不断发展,越来越多的传统企业希望文件系统中的数据能够通过S3(Simple Storage Service,简易存储服务)接口进行访问,或者希望通过S3接口上传的数据能够通过传统的文件系统进行访问。
因此,目前需要能够实现文件存储系统和对象存储系统之间数据共享的方法。实现该方法的一个前提,是要让对象存储服务上传的对象能够被文件存储系统进行访问。但是,对象存储服务上传的通常是分片数据,而文件存储系统访问的通常是完整的文件,这种矛盾使得数据共享困难重重。鉴于此,目前亟需一种不同的数据读取方式,使得对象存储服务上传的对象能够被文件存储系统访问。
发明内容
本申请的目的在于提供一种数据读取方法、系统及设备,能够使得对象存储服务上传的对象能够被文件存储系统访问。
为实现上述目的,本申请一方面提供数据读取方法,所述方法包括:接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件;若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;其中,所述自定义的存储目录对于访问者不可感知;依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。
为实现上述目的,本申请另一方面还提供一种数据读取系统,所述系统包括:文件查询单元,用于接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件;列表生成单元,用于若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;其中,所述自定义的存储目录对于访问者不可感知;文件响应单元,用于依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。
为实现上述目的,本申请另一方面还提供一种数据读取设备,所述设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的数据读取方法。
由上可见,本申请一个或者多个实施方式提供的技术方案,在接收到文件访问请求后,可以查询是否存在该请求指向的目标文件。如果存在,可以读取该目标文件的文件属性。在该文件属性中,可以包括目标文件中各个分片数据的分片规则,以及当前目录下的自定义的存储目录。根据分片规则和自定义的存储目录,可以生成目标文件的分片数据列表。该分片数据列表中可以包含各个分片数据的具体存储地址。这样,可以根据分片数据列表依次读取各个分片数据,并将可以读取的分片数据整合为完整文件,从而提供给请求的发起方。按照这种方式,可以通过文件存储系统正常读取对象存储系统写入的分片数据,从而使得对象存储服务上传的对象能够被文件存储系统访问。
附图说明
为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中数据共享的系统架构示意图;
图2是本发明实施方式中数据共享的步骤示意图;
图3是本发明实施方式中元数据写入的步骤示意图;
图4是本发明实施方式中分片数据上传的步骤示意图;
图5是本发明实施方式中文件访问的步骤示意图;
图6是本发明实施方式中文件访问的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施方式及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施方式仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。
本申请一个实施方式可以提供一种数据读取方法,该方法可以应用于如图1所示的系统架构中。具体地,为了实现文件存储系统和对象存储系统之间的数据共享,可以同时将对象存储客户端和文件存储客户端均接入图1所示的系统架构中,用户可以通过这两种客户端进行数据上传和数据下载。当然,随着技术的进步,对象存储客户端和文件存储客户端也可以合并为同一个客户端,只不过该客户端可以同时支持对象存储和文件存储的功能。
在实际应用中,对象存储系统可以通过存储桶(bucket)来管理上传的对象,通常而言,存储桶中的对象都是扁平化管理,只有对象的名称和数据,并不会存在目录的概念。而在文件存储系统中,文件通常是存储在各个目录下。为了实现这两个系统的数据共享,在本申请一个实施方式中,可以按照图2所示的以下步骤对上传的数据进行处理。
S11:创建存储桶,并建立所述存储桶与目标文件目录之间的映射关系。
在本实施方式中,在对象存储系统中创建了一个存储桶后,可以将该存储桶与文件存储系统中的目标文件目录建立映射关系。具体地,存储桶的桶名称在对象存储系统中可以是全局唯一的,目标文件目录在文件存储系统中也可以是全局唯一的,在建立了存储桶与目标文件目录之间的映射关系后,可以在图1所示的系统架构中维护该映射关系。这样,存储桶与映射目录下的元数据可以保持同步。如果存储桶中发生了元数据变更,目标文件目录下的元数据也会随之进行变更。同理,如果目标文件目录下的元数据发生了变更,那么存储桶中包含的元数据也会同步更新。举例来说,当前在对象存储系统中创建了存储桶BucketA,并可以将该存储桶映射至文件存储系统中的目录/NAS_DIR/BucketADir。后续,存储桶BucketA中的所有数据均可以通过目录/NAS_DIR/BucketADir进行访问。
需要说明的是,无论是通过对象存储系统还是文件存储系统上传的数据,最终都可以被存储于图1所示的后端数据存储集群中,并不会针对两个不同的系统而存储两份数据。只不过,对于元数据而言,可以分别在对象存储系统和文件存储系统中存放,以便于根据各自的元数据,从后端数据存储集群中读取相应的数据。
S13:在通过对象存储客户端向所述存储桶中上传目标对象时,根据所述目标文件目录和所述目标对象,构建所述目标对象的文件存储路径,并在所述文件存储路径下写入所述目标对象。
在本实施方式中,在建立了存储桶与目标文件目录的映射关系后,如果通过对象存储客户端向该存储桶中上传目标对象时,可以按照对象存储系统中常规的处理方式,将该目标对象划分至该存储桶中。同时,为了保持存储桶与目标文件目录的元数据同步,可以根据目标文件目录和该目标对象,构建该目标对象在文件存储系统中的文件存储路径。具体地,可以识别该目标对象的对象名称中是否包含前缀目录,若包含前缀目录,可以在目标文件目录下创建该前缀目录对应的子目录。例如,目标对象的对象名称为dir2/fileA,该对象名称中包含前缀目录dir2。此时,可以在目标文件目录/NAS_DIR/BucketADir下创建子目录dir2,得到包含该子目录的存储路径/NAS_DIR/BucketADir/dir2。该包含子目录的存储路径便可以作为目标对象的文件存储路径。而如果对象名称中不包含前缀目录,那么可以直接将目标文件目录作为目标对象的文件存储路径。
在本实施方式中,构建了目标对象的文件存储路径后,便可以将目标对象写入该文件存储路径下。例如,包含前缀目录的目标对象dir2/fileA在目标文件目录下的最终位置可以是/NAS_DIR/BucketADir/dir2/fileA。
S15:在通过文件存储客户端向所述目标文件目录下写入目标文件时,将所述目标文件划分至所述存储桶中,并根据所述存储桶和所述目标文件,构建用于在所述存储桶中查询所述目标文件的查询语句。
在本实施方式中,用户还可以通过文件存储客户端向目标文件目录下写入目标文件。此时,在将目标文件按照文件存储客户端限定的方式写入目标文件目录下之后,为了保持存储桶与目标文件目录的元数据同步,可以将该目标文件划分至目标文件目录映射的存储桶中。具体地,文件存储系统可以通过文件写入命令vim/NAS_DIR/BucketADir/dir2/fileB在目标文件目录下写入文件dir2/fileB。然后,可以将该文件dir2/fileB划分至映射的存储桶BucketA中,这样,根据存储桶BucketA和目标文件dir2/fileB,可以构建出用于在存储桶BucketA中查询目标文件dir2/fileB的查询语句:BucketA/dir2/fileB。通过该查询语句,可以在存储桶BucketA中正常地查询出目标文件dir2/fileB。
在一个实施方式中,相互映射的存储桶和目标文件目录,当发生数据删除时,也可以保持数据同步。具体地,若通过对象存储客户端删除之前上传的目标对象,那么可以同步地将目标对象从上述的文件存储路径下删除。若通过文件存储客户端删除之前上传的目标文件,那么也可以同步地将该目标文件从映射的存储桶中去除,同时,可以将在该存储桶中查询目标文件的查询语句置为无效。举例来说,原本在相互映射的存储桶和目标文件目录下都存在两个文件dir2/fileA和dir2/fileB,如果通过对象存储客户端删除了dir2/fileA,那么在目标文件目录下就只剩dir2/fileB,同时,在存储桶中也无法通过查询语句BucketA/dir2/fileA进行对象查询。
请参阅图1和图3,可以按照以下所示的多个步骤将数据写入相互映射的存储桶和目标文件目录中。
S21:接收写入请求,并通过数据写入服务将所述写入请求对应的目标数据按照所述目标文件目录写入后端数据存储集群中。
在本实施方式中,对象存储客户端或者文件存储客户端在接收到目标数据的写入请求后,首先可以将该目标数据交由数据写入服务,写入后端数据存储集群。后端数据存储集群在目标数据落盘后,可以向数据写入服务反馈数据已写入的确认信息。
具体地,目标数据可以是通过对象存储客户端上传的目标对象,也可以是通过文件存储客户端上传的目标文件,数据写入服务可以按照步骤S13和S15的方式,按照目标文件目录在后端数据存储集群中写入目标数据。
S23:所述数据写入服务生成所述目标数据的元数据,并将所述元数据分别写入文件元数据服务和对象元数据服务中。
在本实施方式中,为了保持相互映射的存储桶和目标文件目录中的元数据同步,数据写入服务在写入目标数据时,可以通知元数据写入服务,分别将目标数据的元数据写入文件元数据服务和对象元数据服务中。
具体地,元数据可以用于描述该目标数据,在元数据中,可以包括目标数据的文件存储路径和目标数据的名称、目标数据划分至的存储桶的桶名称、目标数据的数据标识、目标数据的大小、目标数据的修改时间等一系列描述参数。在现有的数据存储系统中,在进行数据写入时,通常只会写入一份元数据。如果在本申请中也只在文件元数据服务中写入一份元数据,那么当需要从存储桶中读取对象时,就需要统计存储桶中的数据大小,并需要去遍历该存储桶映射至的目标文件目录以及该目标文件目录下的各个子目录,重新计算得到存储桶的元数据,这样无疑为增加数据读取的时间。因此,在本实施方式中,可以将元数据同时写入文件元数据服务和对象元数据服务,后续在进行数据读取时,可以参考各自的元数据,从而提高数据读取的效率。
S25:所述文件元数据服务将所述元数据写入所述后端数据存储集群中,所述对象元数据服务将所述元数据对应的操作日志写入键值对数据库中,以使得所述键值对数据库根据所述操作日志处理得到所述存储桶的统计结果。
在本实施方式中,文件元数据服务接收到元数据后,可以将该元数据写入后端数据存储集群中。而对象元数据服务则可以将元数据对应的操作日志(op log)写入键值对数据库(kv database)中。后续,可以通过异步处理的方法,从键值对数据库中取出各条操作日志进行处理,从而得到用于表征存储桶中存放的对象个数、存储桶中各个对象的数据之和等信息的统计结果。
在一个实施方式中,在得到存储桶的统计结果后,对象元数据服务可以将该统计结果写入存储桶的头部信息(BucketA.header)中,此外,还可以生成目标数据的存储记录,并将该存储记录写入存储桶的对象收集集合(object collection)中。其中,该存储记录中可以包含目标数据的数据名称、目标数据的数据大小、目标数据的修改时间等信息。
在一个实施方式中,文件元数据服务可以向后端数据存储集群中写入目标数据的存储信息。具体地,该存储信息可以包括目标数据的数据标识、目标数据的数据大小、目标数据的修改时间等。其中,目标数据的数据标识(inode)可以是目标数据的唯一编号,在文件存储系统中,该数据标识不会重复。此外,由于目标数据可能是通过对象存储客户端上传的,因此目标数据中可能会包含多个分片数据。例如,目标数据是数据量为30M的数据,在该目标数据中可以包括4个分片数据,其中前三个分片数据的数据量都是8M,最后一个分片数据的数据量可以是6M。在这种情况下,当文件元数据服务向后端数据存储集群中写入存储信息时,还可以写入目标数据的分片规则。其中,该分片规则至少可以表征目标数据中各个分片数据的起始编号、起始偏移量、分片大小以及上传标识。举例来说,通过对象存储客户端,上传了30M的目标数据,该目标数据中的分片数据按照8M的数据量进行划分。在这种情况下,该目标数据仅对应一个分片规则,该分片规则可以如下所示:
起始编号=1,起始偏移量=0,分片大小=8M,上传标识=2~123457
按照这种分片规则,可以得到分片大小分别为8M、8M、8M、6M的四个分片数据,并且这四个分片数据的分片编号依次为1、2、3、4。
然而,在某些场景下,对于同一份目标数据,可能存在多个不同的分片规则。例如,某个50M的目标数据可以具备如下所示的两个分片规则:
规则1:起始编号=1,起始偏移量=0,分片大小=6M,上传标识=2~123456
规则2:起始编号=4,起始偏移量=18M,分片大小=8M,上传标识=2~123456可见,该目标数据的前三个分片数据的大小均为6M,而从第四个分片数据开始,分片大小均为8M。
需要说明的是,同一个目标数据中的分片数据可以由不同的客户端进行上传,为了区分不同的客户端,可以为不同的客户端分配不同的上传标识。这样,就算这些客户端在上传同一个目标数据中的分片数据,也可以通过不同的上传标识来区分各个客户端。
在一个实施方式中,为了使得通过对象存储客户端上传的分片数据能够被文件存储客户端正常访问,可以通过在目标文件目录下创建虚拟完整文件和自定义的存储目录来实现分片数据的存储和访问。其中,该自定义的存储目录可以是一个影子目录,并设定为对于访问者而言,该自定义的存储目录是不可感知的。具体地,请参阅图4,可以按照以下步骤进行包含多个分片数据的目标对象的存储。
S31:根据所述目标对象的上传标识和各个所述分片数据的分片编号,生成各个所述分片数据的后缀;其中,所述目标对象的对象名称和所述分片数据的后缀构成所述分片数据的分片名称。
在本实施方式中,所述目标对象中包含的各个分片数据可以按序编号,并且对于同一个目标对象而言,在本次的上传过程中各个分片数据可以对应同一个上传标识。为了区分不同的分片数据,可以按照上传标识和分片编号,生成各个分片数据的后缀。具体地,可以将上传标识和分片编号的组合作为分片数据的后缀。例如,目标对象的上传标识为2~123456,目标对象中包含4个分片数据,这4个分片数据的分片编号分别为1、2、3、4,那么这4个分片数据的后缀分别为2~123456.1、2~123456.2、2~123456.3、2~123456.4。当然,如果分片数据均由同一个客户端上传,那么也可以省略上传标识,直接将分片编号作为分片数据的后缀。
在本实施方式中,在确定了分片数据的后缀后,可以将目标对象的对象名称和分片数据的后缀的组合,作为分片数据的分片名称。需要说明的是,这里的对象名称,通常是不包含前缀目录的名称。例如,上传的目标对象的对象名称为fileA,那么第一个分片数据的分片名称可以是fileA.2~123456.1。而如果上传的目标对象的对象名称为dir2/fileA,那么可以无视该前缀目录dir2,第一个分片数据的分片名称依然可以是fileA.2~123456.1。
需要说明的是,是否携带前缀目录,是由上传的目标对象的对象名称决定的。在一些场景下,为了便于批量管理数据,可以在上传的目标对象中添加前缀目录,从而使得这些目标对象最终可以被存储于前缀目录下。而某些场景下,如果需要将目标对象存储于映射的目标文件目录下,则可以不用携带前缀目录。
S33:根据所述目标文件目录和所述目标对象,构建所述目标对象的文件存储路径,并在所述文件存储路径下创建自定义的存储目录,以及将各个所述分片数据按照各自的分片名称写入所述自定义的存储目录下。
在本实施方式中,对于文件存储系统而言,分片数据对用户通常是不可见的,因此,不能直接在文件存储路径下写入这些分片数据。为了解决这个问题,可以在文件存储路径下创建一个自定义的存储目录,该自定义的存储目录可以对用户不可见。这样,自定义的存储目录可以作为文件存储路径的子目录,各个分片数据可以按照各自的名称写入该自定义的存储目录下。
举例来说,当前上传的目标对象的对象名称为dir2/fileA,那么根据步骤S13构建出的文件存储路径可以为/NAS_DIR/BucketADir/dir2,在该文件存储路径下,可以创建自定义的存储目录.nas.shadoue_dir,从而得到包含自定义的存储目录的路径/NAS_DIR/BucketADir/dir2/.nas.shadoue_dir。在将分片名称为fileA.2~123456.1的分片数据写入该路径下之后,便可以得到分片数据的具体位置/NAS_DIR/BucketADir/dir2/.nas.shadoue_dir/fileA.2~123456.1。
S35:在各个所述分片数据完成上传后,在所述文件存储路径下创建虚拟完整文件,并为所述虚拟完整文件配置文件属性,所述文件属性至少用于表征所述目标对象的实际数据大小、所述目标对象的分片规则和所述自定义的存储目录。
在本实施方式中,当目标对象的各个分片数据按照上述方式写入自定义的存储目录下后,为了使得用户能够通过文件存储客户端正常访问该目标对象,可以在文件存储路径下创建一个虚拟完整文件。例如,在S33的例子中,可以在文件存储路径/NAS_DIR/BucketADir/dir2下创建一个虚拟完整文件。该虚拟完整文件并非是真实的文件,而是可以视为用于访问自定义的存储目录下分片数据的一个入口,只不过要封装为文件的格式。具体地,在创建了该虚拟完整文件后,可以为该虚拟完整文件配置文件属性,该文件属性可以用于表征目标对象的实际数据大小、目标对象的分片规则、自定义的存储目录等一系列信息。虚拟完整文件的文件属性,可以由文件元数据服务作为一部分元数据写入后端数据存储集群中。
举例来说,对于上传的50M的目标对象而言,对应的虚拟完整文件的文件属性可以包括以下内容:
分片规则集合:
规则1:起始编号=1,起始偏移量=0,分片大小=6M
规则2:起始编号=4,起始偏移量=18M,分片大小=8M
上传标识:2~123456
存储桶映射目录:/NAS_DIR/BucketADir
自定义的存储目录:.nas.shadoue_dir
实际数据大小:50M
对象名称:dir2/fileA
当然,文件属性中还可以根据需要包含更多的内容,这里便不再例举。
在一个实施方式中,在创建了虚拟完整文件,并配置了相应的文件属性后,自定义的存储目录下的分片数据便可以正常地被文件存储客户端访问。具体地,请参阅图5和图6,文件访问的过程可以按照以下步骤所示。
S41:文件存储客户端接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件。
S43:若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;其中,所述自定义的存储目录对于访问者不可感知。
在本实施方式中,文件存储客户端在接收到指向目标文件的文件访问请求后,首先可以在后端数据存储集群中查询是否存在该目标文件。如果不存在,可以反馈错误提示信息。如果存在,可以从后端数据存储集群中读取目标文件并提供给用户。
具体地,后端数据存储集群中的数据,一部分可以是通过文件存储客户端上传的文件,还有一部分可以是通过对象存储客户端上传的对象。从文件存储客户端的角度来看,这些文件或者对象都是文件的存储形式,只不过有些文件是真实的文件,而有些文件是按照上述步骤生成的虚拟完整文件。对于真实的文件,文件存储客户端可以按照现有的方式从后端数据存储集群中读取,并提供给用户。而对于虚拟完整文件而言,文件存储客户端可以读取该目标文件的目标文件属性,在该目标文件属性中可以包括以上列举出的各项信息,根据其中的分片规则和自定义的存储目录可以生成目标文件的分片数据列表。
具体地,可以从目标文件属性中识别目标文件对应的文件目录,该文件目录可以是存储桶映射至的文件目录。例如,该文件目录可以是步骤S35的例子中的/NAS_DIR/BucketADir。然后,可以根据识别的文件目录和目标文件的文件名称,生成目标文件的存储路径。该存储路径可以是步骤S13中生成的文件存储路径。具体地,可以判断目标文件的文件名称中是否包含前缀目录,若包含前缀目录,将前缀目录作为文件目录的子目录,并将包含该子目录的存储路径作为目标文件的存储路径。若不包含前缀目录,则可以将该文件目录作为目标文件的存储路径。依然以步骤S35的例子为例,生成的目标文件的存储路径可以是/NAS_DIR/BucketADir/dir2。接着,可以将目标文件属性中的自定义的存储目录作为存储路径的子目录,以生成目标文件中各个分片数据的存储路径。各个分片数据的存储路径例如可以是/NAS_DIR/BucketADir/dir2/.nas.shadoue_dir。在该自定义的存储目录下可以存放目标文件中的各个分片数据。这样,根据目标文件属性中的分片规则,可以确定各个分片数据的后缀,其中,目标文件的文件名称和确定的后缀可以构成分片数据的分片名称。这部分内容可以参见步骤S33中的描述,这里便不再赘述。
在得到各个分片数据的分片名称后,便可以将分片数据的存储路径和分片数据的分片名称组合为分片数据的存储地址,该存储地址例如可以是/NAS_DIR/BucketADir/dir2/.nas.shadoue_dir/fileA.2~123456.1。这样,各个分片数据的存储地址便可以构成目标文件的分片数据列表。
S45:依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。
在本实施方式中,根据虚拟完整文件的文件属性,可以得到目标文件的分片数据列表,该分片数据列表可以指向自定义的存储目录下的各个分片数据。这样,文件存储客户端可以按照分片数据列表中各个分片数据的存储地址,依次读取出各个分片数据,并将读取的分片数据整合为完整文件内容,最终,可以将该完整文件作为文件访问请求的响应,提供给用户。
由上可见,通过自定义的存储目录的存储方式,可以将对象存储客户端上传的对象按照文件的形式进行存储,并且通过创建虚拟完整文件的方式,使得该对象能够被文件存储客户端进行访问;而文件存储客户端上传的文件,也可以经过分片处理,后续能够被对象存储客户端正常访问,从而实现了对象存储服务与文件存储服务之间的数据共享。
这样处理的有益之处在于,对于传统的文件存储系统,如果需要上传一个数据量较大的文件,那么只能由单个客户端上传完整的文件。而经过上述的处理方式,可以将该文件划分为多个分片数据,然后通过多个对象存储客户端并发上传。这样,既加快了大文件的上传速度,又能保证通过分片上传的文件能够被文件存储客户端正常访问,从而极大地提高了文件的存储和访问效率。
在一个实施方式中,由于通过上述方式实现了对象存储服务和文件存储服务之间的访问互通,那么文件存储客户端能够实现文件的片段下载,而不需要下载完整的文件,从而节省带宽。具体地,接收到的文件下载请求中可以携带目标文件的区间参数,该区间参数可以是起始数据量和终止数据量,该起始数据量和终止数据量可以限定待下载的文件片段。此外,该区间参数还可以是起始分片编号和终止分片编号,该起始分片编号和终止分片编号限定的一个或者多个分片数据可以作为待下载的文件片段。这样,根据区间参数可以确定目标文件中待下载的文件片段,从而可以将该文件片段提供给文件下载请求的发起方。
本申请一个实施方式还提供一种数据读取系统,所述系统包括:
文件查询单元,用于接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件;
列表生成单元,用于若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;
文件响应单元,用于依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。
本申请一个实施方式还提供一种数据读取设备,所述设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现上述的数据读取方法。
在本实施方式中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如RAM或ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器或U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器或石墨烯存储器等等。
在本实施方式中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。
由上可见,本申请一个或者多个实施方式提供的技术方案,可以将对象存储系统中的存储桶与文件存储系统中的目标文件目录进行映射。相互映射的存储桶与目标文件目录中的元数据可以保持同步。具体地,可以通过对象存储客户端或者文件存储客户端上传目标对象或者目标文件。在通过对象存储客户端向存储桶中上传目标对象时,可以根据目标文件目录和目标对象,构建目标对象的文件存储路径,并在该文件存储路径下写入目标对象。在通过文件存储客户端向目标文件目录下写入目标文件时,可以将所述目标文件划分至相映射的存储桶中,并根据存储桶和目标文件,构建用于在存储桶中查询目标文件的查询语句。这样,无论是通过对象存储系统还是文件存储系统上传数据,该数据均可以写入目标文件目录下,并且无需重复写入上传的数据。由于存储桶与目标文件目录相互映射,上传的数据既可以划分至存储桶中,又可以写入相映射的目标文件目录下,通过存储桶中构建的查询语句,可以查询到对应的数据,从而高效地实现文件存储系统和对象存储系统的数据共享。
此外,本申请一个或者多个实施方式提供的技术方案,在接收到文件访问请求后,可以查询是否存在该请求指向的目标文件。如果存在,可以读取该目标文件的文件属性。在该文件属性中,可以包括目标文件中各个分片数据的分片规则,以及当前目录下的自定义的存储目录。根据分片规则和自定义的存储目录,可以生成目标文件的分片数据列表。该分片数据列表中可以包含各个分片数据的具体存储地址。这样,可以根据分片数据列表依次读取各个分片数据,并将可以读取的分片数据整合为完整文件,从而提供给请求的发起方。按照这种方式,可以通过文件存储系统正常读取对象存储系统写入的分片数据,从而使得对象存储服务上传的对象能够被文件存储系统访问。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对系统和设备的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本领域内的技术人员应明白,本发明的实施方式可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施方式而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (14)

1.一种数据读取方法,其特征在于,所述方法包括:
接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件;
若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;其中,所述自定义的存储目录对于访问者不可感知;
依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。
2.根据权利要求1所述的方法,其特征在于,根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表包括:
从所述目标文件属性中识别所述目标文件对应的文件目录,并根据识别的所述文件目录和所述目标文件的文件名称,生成所述目标文件的存储路径;
将所述目标文件属性中的自定义的存储目录作为所述存储路径的子目录,以生成所述目标文件中各个分片数据的存储路径;
根据所述目标文件属性中的分片规则,确定各个分片数据的后缀,其中,所述目标文件的文件名称和确定的所述后缀构成所述分片数据的分片名称;
将所述分片数据的存储路径和所述分片数据的分片名称组合为所述分片数据的存储地址,其中,各个所述分片数据的存储地址构成所述目标文件的分片数据列表。
3.根据权利要求2所述的方法,其特征在于,生成所述目标文件的存储路径包括:
判断所述目标文件的文件名称中是否包含前缀目录,若包含前缀目录,将所述前缀目录作为所述文件目录的子目录,并将包含所述子目录的存储路径作为所述目标文件的存储路径;
若不包含前缀目录,将所述文件目录作为所述目标文件的存储路径。
4.根据权利要求2所述的方法,其特征在于,确定各个分片数据的后缀包括:
根据所述目标文件属性的分片规则确定各个分片数据的分片编号,并将所述分片编号作为所述分片数据的后缀。
5.根据权利要求1所述的方法,其特征在于,所述目标文件按照以下方式生成:
接收对象存储客户端向存储桶中上传的目标对象,所述存储桶与目标文件目录相互映射;
根据所述目标对象的上传标识和所述目标对象中包含的各个分片数据的分片编号,生成各个所述分片数据的后缀;其中,所述目标对象的对象名称和所述分片数据的后缀构成所述分片数据的分片名称;
根据所述目标文件目录和所述目标对象,构建所述目标对象的文件存储路径,并在所述文件存储路径下创建自定义的存储目录,以及将各个所述分片数据按照各自的分片名称写入所述自定义的存储目录下;
在各个所述分片数据完成上传后,在所述文件存储路径下创建虚拟完整文件,并为所述虚拟完整文件配置文件属性,所述文件属性至少用于表征所述目标对象的实际数据大小、所述目标对象的分片规则和所述自定义的存储目录;其中,创建的所述虚拟完整文件作为所述目标文件。
6.根据权利要求5所述的方法,其特征在于,根据所述目标文件目录和所述目标对象,构建所述目标对象的文件存储路径包括:
识别所述目标对象的对象名称中是否包含前缀目录,若包含所述前缀目录,在所述目标文件目录下将所述前缀目录作为子目录,并将包含所述子目录的存储路径作为所述目标对象的文件存储路径。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在通过文件存储客户端向所述目标文件目录下写入目标文件时,将所述目标文件划分至所述存储桶中,并根据所述存储桶和所述目标文件,构建用于在所述存储桶中查询所述目标文件的查询语句。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若通过对象存储客户端删除所述目标对象,将所述目标对象从所述文件存储路径下删除;
若通过所述文件存储客户端删除所述目标文件,将所述目标文件从所述存储桶中去除,并将在所述存储桶中查询所述目标文件的查询语句置为无效。
9.根据权利要求7所述的方法,其特征在于,在上传目标对象或者写入目标文件时,所述方法还包括:
生成所述目标对象或者所述目标文件的元数据,并将所述元数据分别写入文件元数据服务和对象元数据服务中;其中,所述文件元数据服务将所述元数据写入用于存储所述目标对象和/或所述目标文件的后端数据存储集群中,所述对象元数据服务将所述元数据对应的操作日志写入键值对数据库中,以使得所述键值对数据库根据所述操作日志处理得到所述存储桶的统计结果。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述对象元数据服务将所述存储桶的统计结果写入所述存储桶的头部信息中,并生成所述目标对象和/或所述目标文件的存储记录,以及将所述存储记录写入所述存储桶的对象收集集合中。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述文件元数据服务向所述后端数据存储集群中写入所述目标对象和/或所述目标文件的存储信息,所述存储信息用于表征所述目标对象和/或所述目标文件的数据标识、分片大小、修改时间中的至少一种;
若所述目标对象中包括多个分片数据,所述文件元数据服务还向所述后端数据存储集群中写入所述目标对象的分片规则,所述分片规则至少用于表征所述目标对象中各个分片数据的起始编号、起始偏移量、分片大小以及上传标识。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收文件下载请求,所述文件下载请求中包括目标文件的区间参数;
根据所述区间参数确定所述目标文件中待下载的文件片段,并将所述文件片段提供给所述文件下载请求的发起方。
13.一种数据读取系统,其特征在于,所述系统包括:
文件查询单元,用于接收文件访问请求,并查询是否存在所述文件访问请求指向的目标文件;
列表生成单元,用于若存在,读取所述目标文件的目标文件属性,并根据所述目标文件属性中的分片规则和自定义的存储目录生成所述目标文件的分片数据列表;其中,所述自定义的存储目录对于访问者不可感知;
文件响应单元,用于依次读取所述分片数据列表中包含的各个分片数据,并将读取的所述分片数据整合为完整文件,以将所述完整文件作为所述文件访问请求的响应。
14.一种数据读取设备,其特征在于,所述设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1至12中任一所述的方法。
CN201911038484.8A 2019-10-29 2019-10-29 一种数据读取方法、系统及设备 Active CN111090618B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911038484.8A CN111090618B (zh) 2019-10-29 2019-10-29 一种数据读取方法、系统及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911038484.8A CN111090618B (zh) 2019-10-29 2019-10-29 一种数据读取方法、系统及设备

Publications (2)

Publication Number Publication Date
CN111090618A true CN111090618A (zh) 2020-05-01
CN111090618B CN111090618B (zh) 2023-08-18

Family

ID=70393074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911038484.8A Active CN111090618B (zh) 2019-10-29 2019-10-29 一种数据读取方法、系统及设备

Country Status (1)

Country Link
CN (1) CN111090618B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614440A (zh) * 2020-05-22 2020-09-01 陈杰 一种采用分段式数据结构的数据发送系统及方法
CN111913913A (zh) * 2020-08-07 2020-11-10 星辰天合(北京)数据科技有限公司 访问请求的处理方法和装置
CN112632008A (zh) * 2020-12-29 2021-04-09 华录光存储研究院(大连)有限公司 一种数据分片的传输方法、装置及计算机设备
CN112684985A (zh) * 2021-01-04 2021-04-20 北京金山云网络技术有限公司 一种数据的写入方法和装置
CN113271343A (zh) * 2021-04-28 2021-08-17 华录光存储研究院(大连)有限公司 一种数据下载、上传的方法及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010111875A1 (zh) * 2009-04-03 2010-10-07 成都市华为赛门铁克科技有限公司 一种数据处理方法、全数据节点、主控节点和系统
CN103902614A (zh) * 2012-12-28 2014-07-02 中国移动通信集团公司 一种数据处理方法、设备和系统
CN106354434A (zh) * 2016-08-31 2017-01-25 中国人民大学 日志数据的存储方法及系统
CN109002503A (zh) * 2018-06-29 2018-12-14 郑州云海信息技术有限公司 一种元数据读取方法、装置、设备及可读存储介质
CN110046133A (zh) * 2019-04-12 2019-07-23 苏州浪潮智能科技有限公司 一种存储文件系统的元数据管理方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010111875A1 (zh) * 2009-04-03 2010-10-07 成都市华为赛门铁克科技有限公司 一种数据处理方法、全数据节点、主控节点和系统
CN103902614A (zh) * 2012-12-28 2014-07-02 中国移动通信集团公司 一种数据处理方法、设备和系统
CN106354434A (zh) * 2016-08-31 2017-01-25 中国人民大学 日志数据的存储方法及系统
CN109002503A (zh) * 2018-06-29 2018-12-14 郑州云海信息技术有限公司 一种元数据读取方法、装置、设备及可读存储介质
CN110046133A (zh) * 2019-04-12 2019-07-23 苏州浪潮智能科技有限公司 一种存储文件系统的元数据管理方法、装置及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
边根庆等: "面向分散式存储的云存储安全架构", 《西安交通大学学报》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614440A (zh) * 2020-05-22 2020-09-01 陈杰 一种采用分段式数据结构的数据发送系统及方法
CN111614440B (zh) * 2020-05-22 2021-04-20 西安博达软件股份有限公司 一种采用分段式数据结构的数据发送系统及方法
CN111913913A (zh) * 2020-08-07 2020-11-10 星辰天合(北京)数据科技有限公司 访问请求的处理方法和装置
CN111913913B (zh) * 2020-08-07 2024-02-13 北京星辰天合科技股份有限公司 访问请求的处理方法和装置
CN112632008A (zh) * 2020-12-29 2021-04-09 华录光存储研究院(大连)有限公司 一种数据分片的传输方法、装置及计算机设备
CN112684985A (zh) * 2021-01-04 2021-04-20 北京金山云网络技术有限公司 一种数据的写入方法和装置
CN112684985B (zh) * 2021-01-04 2024-04-05 北京金山云网络技术有限公司 一种数据的写入方法和装置
CN113271343A (zh) * 2021-04-28 2021-08-17 华录光存储研究院(大连)有限公司 一种数据下载、上传的方法及电子设备

Also Published As

Publication number Publication date
CN111090618B (zh) 2023-08-18

Similar Documents

Publication Publication Date Title
CN111078653B (zh) 一种数据存储方法、系统及设备
CN111008185B (zh) 一种数据共享方法、系统及设备
CN111090618B (zh) 一种数据读取方法、系统及设备
US11799959B2 (en) Data processing method, apparatus, and system
EP3103025B1 (en) Content based organization of file systems
CN106649403B (zh) 文件存储中的索引实现方法和系统
US10210191B2 (en) Accelerated access to objects in an object store implemented utilizing a file storage system
CN110019004B (zh) 一种数据处理方法、装置及系统
JP2012089094A5 (zh)
CN105100146A (zh) 数据存储方法、装置及系统
CN108776682B (zh) 基于对象存储的随机读写对象的方法和系统
CN109033360B (zh) 一种数据查询方法、装置、服务器及存储介质
CN108614837B (zh) 文件存储和检索的方法及装置
CN101783740B (zh) 消息文件管理方法及装置
US20180107404A1 (en) Garbage collection system and process
JP4755244B2 (ja) 情報生成方法、情報生成プログラム及び情報生成装置
US9626378B2 (en) Method for handling requests in a storage system and a storage node for a storage system
CN115129789A (zh) 一种分布式对象存储系统的桶索引存储方法、装置及介质
CN109241011B (zh) 一种虚拟机文件处理方法及装置
CN113051301A (zh) 一种对象存储方法、系统及设备
EP2164005B1 (en) Content addressable storage systems and methods employing searchable blocks
CN113407518B (zh) Hbase数据库的Rowkey设计方法及装置
CN112445764B (zh) 文件操作的方法、装置、存储介质及电子设备
CN113190505A (zh) 一种元数据管理方法、文件存储系统及服务器
CN114116618A (zh) 元数据操作方法、存储系统、装置、节点以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant