一种划分数据条带的方法和装置与流程

文档序号:11276400阅读:290来源:国知局
一种划分数据条带的方法和装置与流程

本发明涉及计算机技术领域,特别涉及一种划分数据条带的方法和装置。



背景技术:

随着互联网技术的发展,互联网的应用越来越广泛,功能越来越强大,用户可以通过互联网,向某服务器发送数据请求,以获取自己所需的数据。

在实际中,业务提供商通常会设置索引服务器和多台存储服务器来存储数据。索引服务器可以是名字节点(namenode),存储服务器可以是数据节点(datanode)。某业务的文件(如一个视频文件)数据可以被划分成多个数据块,然后,索引服务器可以确定每个数据块对应的存储服务器,并可以将该数据块发送给对应的存储服务器,存储服务可以将接收到的数据块进行存储,并可以记录该数据块的存储位置。当用户想要获取该视频的数据时,用户可以通过用户设备向索引服务器发送该视频的数据请求,以获取该视频的数据对应的存储服务器的地址信息,进而可以向对应的存储服务器发送数据请求,从而获取该视频的数据。

为了防止某台服务器的发生故障,而导致数据丢失,索引服务器可以根据预设的数据条带所包含的数据块数目,将得到的数据块划分成至少一个数据条带。例如,某文件划分成11个数据块,数据条带所包含的数据块数目为10,则可以将该文件的数据块划分成两个数据条带,即一个包含10个数据块的数据条带,和一个包含1个数据块的数据条带。然后,可以根据预设的校验算法,如raid算法,生成各数据条带对应的校验块,各数据条带对应的校验块的数目由校验算法决定。例如,校验算法为rs(10+3),说明校验块的数目为3个。然后,索引服务器可以将各数据条带,以及各数据条带对应的校验块进行存储。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

对于包含的数据块较少的数据条带,仍需要存储对应的校验块,例如,对于包含1个数据块的数据条带,仍需要存储该数据条带对应的3校验块,这样 会占用大量的存储资源。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种划分数据条带的方法和装置。所述技术方案如下:

第一方面,提供了一种划分数据条带的方法,索引服务器获取待存储的文件,将文件划分成多个数据块,然后根据预设的校验算法对应的校验块数目,以及预设的基准数目范围,确定第一基准数目,进而根据第一基准数目,对多个数据块进行划分,得到文件对应的多个数据条带,这样,索引服务器可以通过对数据条带的数据块的灵活调整,使得末尾数据条带的数据块数目大于校验块数目,避免服务器中存储包含的数据块较少的数据条带,以及该数据条带对应的校验块的情况,从而可以节约存储资源。

其中,末尾数据条带可以是在对多个数据块进行划分后,得到的最后一个数据条带,末尾数据条带所包含的数据块数目可以小于或等于第一基准数目,该文件对应的多个数据条带中除末尾数据条带之外的每个数据条带所包含的数据块的数目为第一基准数目。

索引服务器可以获取待存储的文件,该文件可以是用户上传的文件,也可以是索引服务器从其他服务器或存储系统中获取到的文件。索引服务器中可以预先存储进行数据块划分时,各数据块包含的预设数据量,索引服务器可以根据预设数据量,将文件划分成多个数据块。其中,对文件进行数据块划分时,划分出的最后一个数据块的数据量可以小于该预设数据量。索引服务器中可以预先存储一种或多种校验算法,然后可以根据预设的校验算法,确定对应的校验块数目,其中,校验块数目可以是每个数据条带对应的校验块的数目。

索引服务器可以预先存储基准数目范围,进而可以分别基于该基准数目范围包含的各基准数目,确定对上述数据块进行划分后,每个基准数目对应的末尾数据条带的数据块数目。索引服务器可以将确定出的多个末尾数据条带的数据块数目,与预设的校验算法对应的校验块数目进行比较,确定大于校验块数目的末尾数据条带的数据块数目,进而确定对应的基准数目。索引服务器可以在确定出的基准数目中,随机选取一个基准数目,作为对上述数据块进行划分时的第一基准数目。索引服务器可以对上述数据块进行划分,得到一个或多个 数据条带,然后根据该文件对应的校验算法,生成每个数据条带对应的校验块,校验块是指用于对数据条带中的数据块进行修复的数据块。索引服务器可以确定各数据条带中的数据块,以及对应的校验块的存储位置,存储服务器可以将各数据条带的数据块,以及校验块发送给对应的存储服务器进行存储。

结合第一方面,在该第一方面的第一种可能实现方式中,索引服务器根据预设的初始基准数目,确定初始基准数目对应的末尾数据条带的数据块数目,如果末尾数据条带的数据块数目小于或等于预设的校验算法对应的校验块数目,则在以初始基准数目为中心的基准数目范围中,确定第一基准数目,第一基准数目对应的末尾数据条带的数据块数目大于校验块数目。

索引服务器中可以预先存储数据条带所包含的数据块的基准数目(可称为初始基准数目),然后可以确定初始基准数目对应的末尾数据条带的数据块数目,初始基准数目对应的末尾数据条带的数据块数目指的是:基于初始基准数目对上述数据块进行划分时,得到的多个数据条带中的末尾数据条带的数据块数目。索引服务器可以将末尾数据条带的数据块数目与预设的校验算法对应的校验块数目进行比较,如果末尾数据条带的数据块数目大于校验块数目,则可以基于初始基准数目对上述数据块进行划分。如果索引服务器确定末尾数据条带的数据块数目小于或等于校验块数目,则索引服务器可以根据预先存储的调整值或调整百分比,确定以初始基准数目为中心的基准数目范围,进而可以确定该基准数目范围中除初始基准数目之外的基准数目,然后可以确定除初始基准数目之外的每个基准数目对应的末尾数据条带的数据块数目。索引服务器可以将得到的多个末尾数据条带的数据块数目,与预设的校验算法对应的校验块数目进行比较,然后可以确定大于或等于校验块数目的末尾数据条带的数据块数目,进而可以确定对应的基准数目。索引服务器可以在确定出的基准数目中,随机选取一个基准数目,作为对上述数据块进行划分时的第一基准数目,进而可以基于第一基准数目,对数据块进行划分。

结合第一方面的第一种可能实现方式,在该第一方面的第二种可能实现方式中,索引服务器确定以初始基准数目为中心的基准数目范围,根据该基准数目范围中除第一基准数目之外的每个基准数目,分别确定每个基准数目对应的末尾数据条带的数据块数目;根据每个基准数目对应的末尾数据条带的数据块数目,确定第一基准数目,第一基准数目对应的末尾数据条带的数据块数目为 每个基准数目对应的末尾数据条带的数据块数目中最大的。

索引服务器可以根据基准数目范围中除第一基准数目之外的每个基准数目,分别确定每个基准数目对应的末尾数据条带的数据块数目。索引服务器可以确定最大的末尾数据条带的数据块数目,进而确定该末尾数据条带对应的第一基准数目,然后基于第一基准数目,对数据块进行划分。

这样,将对应的末尾数据条带的数据块数目最大的第一基准数目,作为对文件进行划分时的基准数目,可以避免出现包含的数据块较少的数据条带,节约存储资源。

结合第一方面,在该第一方面的第三种可能实现方式中,索引服务器接收用户设备发送的对应多个数据块中的第一数据块的数据请求;如果第一数据块丢失,则索引服务器根据第一数据条带中的其他数据块、第一数据条带对应的校验块和预设的校验算法生成第一数据块;将第一数据块发送给用户设备。

用户可以通过用户设备来获取上述文件中任意数据块的数据,用户设备可以向索引服务器发送对应第一数据块的数据请求(可称为第一数据请求),索引服务器接收到第一数据请求后,可以将第一数据块对应的存储位置发送给用户设备,该存储位置可以包括第一数据块对应的存储服务器的标识,用户设备接收到第一数据块的存储位置后,可以向对应的存储服务器发送数据请求(可称为第二数据请求),以获取第一数据块的数据。

存储服务器接收到第二数据请求后,可以在本地查找第一数据块,如果该存储服务器查找到第一数据块,则可以将第一数据块发送给用户设备。如果存储服务器未查找到第一数据块,则可以向索引服务器发送第一数据块丢失的通知,以使索引服务器获知第一数据块丢失,或者,索引服务器向存储服务器发送数据请求后,在预设时长内未接收到该存储服务器发送的第一数据块,则可以确定第一数据块所属的第一数据条带,进而可以确定第一数据条带中的其他数据块、以及第一数据条带对应的校验块的存储位置,然后可以从对应的存储服务器获取第一数据条带中的其他数据块,以及校验块。索引服务器可以根据第一数据条带中的其他数据块、第一数据条带对应的校验块和预设的校验算法,生成第一数据块,然后可以将第一数据块发送给用户设备。上述生成第一数据块的处理可以由索引服务器完成,也可以由索引服务器以外的其他服务器完成。

这样,当用户请求数据块时,如果发现数据块丢失,可以实时修复数据块, 避免出现因数据块丢失导致业务中断的情况,从而可以提高用户体验。

结合第一方面,在该第一方面的第四种可能实现方式中,当索引服务器检测到第一数据块丢失时,根据第一数据条带、第一数据条带对应的校验块和预设的校验算法生成第一数据块。

存储服务器可以在达到预设的上报周期时,向索引服务器发送上报信息,该上报信息可以包括各存储服务器当前存储的数据块的标识,以及各数据块对应的存储位置,索引服务器中可以预先存储各数据块的存储位置,该存储位置可以包括各数据块对应的存储服务器的标识,以及各数据块在对应的存储服务器中的具体位置信息。索引服务器接收到各存储服务器的上报信息后,可以将该上报信息与预先存储的各数据块的存储位置进行对比,如果索引服务器在第一数据块对应的存储服务器的上报信息中,未检测到第一数据块的标识,以及第一数据块对应的存储位置,则判定第一数据块发送丢失,然后可以根据第一数据条带、第一数据条带对应的校验块和预设的校验算法,生成第一数据块,以便第一数据块对应的存储服务器对第一数据块进行存储。

结合第一方面,在该第一方面的第五种可能实现方式中,索引服务器可以先根据预先存储的文件标识与校验算法的对应关系,确定文件的文件标识对应的校验算法,然后再根据确定出的校验算法对应的校验块数目,以及预设的基准数目范围,确定第一基准数目。

其中,文件标识可以是文件的文件名称,也可以是文件的文件编号,该文件标识可以用于表示该文件的重要性。索引服务器获取待存储的文件后,可以获取该文件对应的文件标识,进而可以在上述对应关系中,确定该文件标识对应的校验算法,以便进行后续处理。

这样,对于重要性较低的文件,可以选择校验块数目较少的校验算法,从而可以节约存储资源。

第二方面,提供了一种划分数据条带的装置,该装置用于在文件存储系统中划分数据条带,该划分数据条带的装置包括了用于执行第一方面或其任一种实现方式中提供的划分数据条带的方法的至少一个模块。

第三方面,提供了一种计算设备,该计算设备用于在文件存储系统中划分 数据条带,该计算设备可以为文件存储系统中的索引服务器,该计算设备运行时执行第一方面或其任一种实现方式中提供的划分数据条带的方法。

第四方面,提供了一种划分数据条带的方法,该划分数据条带的方法运用于文件存储系统,该文件存储系统包括索引服务器和存储服务器,其中,索引服务器执行的部分参考第一方面提供的划分数据条带的方法,索引服务器还可以用于根据校验算法生成每个数据条带对应的校验块,存储服务器可以用于存储每个数据条带和每个数据条带对应的校验块。

第五方面,提供了一种存储服务器,该存储服务器可以接收用户设备发送的对应该多个数据块中的第一数据块的数据请求,如果该第一数据块丢失,则用户设备向索引服务器请求第一数据块所属的第一数据条带中的其他数据块、以及该第一数据条带对应的校验块的存储位置,进而可以向服务器发送对应该第一数据块所属的第一数据条带中的其他数据块、以及该第一数据条带对应的校验块的数据请求;该存储服务器将该第一数据条带中的其他数据块和该第一数据条带对应的校验块发送给该用户设备,以使该用户设备根据该第一数据条带中的其他数据块、该第一数据条带对应的校验块和该预设的校验算法生成该第一数据块。

本发明实施例提供的技术方案通过对数据条带的数据块的灵活调整,使得末尾数据条带的数据块数目大于校验块数目,避免服务器中存储包含的数据块较少的数据条带,以及该数据条带对应的校验块的情况,从而可以节约存储资源。

附图说明

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

图1是本发明实施例提供的一种系统框架图;

图2是本发明实施例提供的一种计算设备的结构示意图;

图3是本发明实施例提供的一种划分数据条带的方法流程图;

图4是本发明实施例提供的一种划分数据条带的示意图;

图5是本发明实施例提供的一种划分数据条带的示意图;

图6是本发明实施例提供的一种划分数据条带的装置结构示意图

图7是本发明实施例提供的一种划分数据条带的装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种划分数据条带的方法,该方法可以应用于分布式文件系统中。分布式文件系统可以包括索引服务器(也可称作名字节点)和多台存储服务器(也可称作数据节点)。其中,索引服务器可以用于存储分布式集群的元数据,如每个存储数据块的存储位置。索引服务器还用于将待存储的文件划分成多个数据块,并且可以进一步对多个数据块进行划分,得到文件对应的数据条带。存储服务器可以用于存储具体的数据信息。在对某业务的文件进行存储时,该文件可以被划分成多个数据块,然后索引服务器可以根据预设的数据条带所包含的数据块数目,对上述数据块进行划分,得到一个或多个数据条带。例如,某文件划分成22个数据块,数据条带所包含的数据块数目为10,则可以将该文件的数据块划分成3个数据条带,3个数据条带包含的数据块数目依次为10、10、2。另外,索引服务器还可以预先存储校验算法,根据该校验算法生产每个数据条带对应的校验块,得到每个数据条带对应的校验文件。对于每个数据条带所包含的数据块,索引服务器可以确定每个数据条带中的数据块对应的存储位置,以及每个数据条带对应的校验块的存储位置。存储位置可以包括数据块(或校验块)对应的存储服务器的标识,以及在该存储服务器中具体的存储字节范围,然后可以将该数据块(或校验块)分配给对应的存储服务器,存储服务器可以将接收到的数据块进行存储,并可以记录该数据块的存储位置。其中,在对文件进行划分后,划分得到的最后一个数据块可以称为末尾数据条带,末尾数据条带所包含的数据块数目通常小于或等于预设的数据条带所包含的数据块数目。如图1所示,为本发明实施例的系统框架图,其中包括索引服务器和存储服务器。

图1中的索引服务器可以通过图2中的计算设备实现,该计算设备的组织结构示意图如图2所示,该计算设备可以包括处理器210、收发器220、存储器 230,收发器220和存储器230可以分别与处理器210连接,如图2所示。收发器220可以用于接收消息或数据,收发器220可以包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、耦合器、lna(lownoiseamplifier,低噪声放大器)、双工器等。收发器220可以收发模拟信号,或数字信号,并可以将接收到的数字信号发送给处理器210,以使处理器210可以对接收到的数据进行处理。处理器210可以是该计算设备的控制中心,利用各种接口和线路连接整个该计算设备的各个部分,如收发器220和存储器230等。可选的,处理器210可以包括一个或多个处理单元;优选的,处理器210可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统,调制解调处理器主要处理无线通信。处理器210还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件等。该计算设备还可以包括存储器230,存储器230可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solidstatedrive,缩写:ssd);存储器230还可以包括上述种类的存储器的组合。在通过软件来实现本申请提供的技术方案时,用于实现本申请图3提供的划分数据条带的程序代码保存在存储器230中,并由处理器210和收发器220来执行。

收发器220可以接收待存储的文件,处理器210可以将该文件划分成多个数据块,然后可以根据预设的校验算法对应的校验块数目,以及预设的基准数目范围,确定第一基准数目,随后可以根据第一基准数目,对多个数据块进行划分,得到文件对应的多个数据条带,多个数据条带中除末尾数据条带之外的每个数据条带所包含的数据块的数目为第一基准数目,处理器210通过对数据条带的数据块的灵活调整,使得末尾数据条带的数据块数目大于校验块数目,避免服务器中存储包含的数据块较少的数据条带,以及该数据条带对应的校验块的情况,可以节约存储资源。

处理器210根据预设的初始基准数目,确定初始基准数目对应的末尾数据条带的数据块数目,如果末尾数据条带的数据块数目小于或等于预设的校验算法对应的校验块数目,则确定以初始基准数目为中心的基准数目范围,根据该 基准数目范围中除第一基准数目之外的每个基准数目,分别确定每个基准数目对应的末尾数据条带的数据块数目,处理器210可以根据每个基准数目对应的末尾数据条带的数据块数目,确定第一基准数目,第一基准数目对应的末尾数据条带的数据块数目为每个基准数目对应的末尾数据条带的数据块数目中最大的。

另外,存储器230中可以预先存储文件标识与校验算法的对应关系,处理器210可以根据预先存储的文件标识与校验算法的对应关系,确定该文件的文件标识对应的校验算法。

本申请还提供了一种划分数据条带的方法,图1、图2中的索引服务器运行时执行该方法,其流程示意图如图3所示。

步骤301,索引服务器获取待存储的文件,将文件划分成多个数据块。

在实施中,索引服务器可以获取待存储的文件,该文件可以是用户上传的文件,也可以是索引服务器从其他服务器或存储系统中获取到的文件。索引服务器中可以预先存储进行数据块划分时,各数据块包含的预设数据量,例如,索引服务器可以将文件划分成64m的数据块,也可以将文件划分成128m的数据块。索引服务器获取到待存储的文件后,可以根据预设数据量,将文件划分成多个数据块。其中,对文件进行数据块划分时,划分出的最后一个数据块的数据量可以小于该预设数据量。另外,索引服务器将文件划分成多个数据块后,可以采用多副本的策略对划分出的数据块进行存储,然后再进行后续处理。后续处理的文件可以是多副本中的任一副本,这样,可以防止在后续处理的过程中,由于服务器出现故障或发生错误,而导致文件存储失败的情况。

步骤302,索引服务器根据预设的校验算法对应的校验块数目,以及预设的基准数目范围,确定第一基准数目。

在实施中,索引服务器中可以预先存储一种或多种校验算法,例如,该校验算法可以是异或校验算法,或者是rs校验算法。索引服务器可以根据预设的校验算法,确定对应的校验块数目,其中,校验块数目可以是进行划分后,每个数据条带对应的校验块的数目。例如,采用rs(10+3)校验算法,每个数据条带对应的校验块数目为3。

另外,索引服务器中还可以预先存储数据条带所包含的数据块的基准数目 范围,索引服务器可以确定预设的数据条带所包含的数据块的基准数目范围所包含的基准数目,确定对上述数据块进行划分后,各基准数目对应的末尾数据条带的数据块数目。索引服务器可以将划分得到的多个末尾数据条带的数据块数目,与预设的校验算法对应的校验块数目进行比较,然后可以确定大于或等于校验块数目的末尾数据条带的数据块数目,进而可以确定对应的基准数目。索引服务器可以在确定出的基准数目中,随机选取一个基准数目,作为对上述数据块进行划分时的第一基准数目。

可选的,可以对预先设置的初始基准数目进行动态调整,来确定进行划分时的第一基准数目,相应的,步骤302的处理过程可以如下:索引服务器根据预设的初始基准数目,确定初始基准数目对应的末尾数据条带的数据块数目;如果末尾数据条带的数据块数目小于或等于预设的校验算法对应的校验块数目,则在以初始基准数目为中心的基准数目范围中,确定第一基准数目,第一基准数目对应的末尾数据条带的数据块数目大于校验块数目。

在实施中,索引服务器中可以预先存储数据条带所包含的数据块的初始基准数目,然后可以确定初始基准数目对应的末尾数据条带的数据块数目,初始基准数目对应的末尾数据条带的数据块数目指的是:基于初始基准数目对上述数据块进行划分时,得到的多个数据条带中的末尾数据条带的数据块数目。索引服务器可以将该末尾数据条带的数据块数目与预设的校验算法对应的校验块数目进行比较,如果末尾数据条带的数据块数目大于校验块数目,则可以不进行处理。如果索引服务器确定末尾数据条带的数据块数目小于或等于校验块数目,则说明初始基准数目不是进行划分的最优选的基准数目,索引服务器可以根据预先存储的调整值或调整百分比,确定以初始基准数目为中心的基准数目范围。例如,调整值为3,初始基准数目为10,则基准数目范围是7~13,调整百分比为-20%~20%,初始基准数目为10,则基准数目范围是8~12。索引服务器可以在该基准数目范围中,分别确定除初始基准数目之外的每个基准数目对应的末尾数据条带的数据块数目。

索引服务器可以将得到的多个末尾数据条带的数据块数目,与预设的校验算法对应的校验块数目进行比较,然后可以确定大于或等于校验块数目的末尾数据条带的数据块数目,进而可以确定对应的基准数目。索引服务器可以在确定出的基准数目中,随机选取一个基准数目,作为对上述数据块进行划分时的 第一基准数目,进而可以基于第一基准数目,对文件进行划分。例如,初始基准数目为10,对应的基准数目范围是8~12,校验块数目为3,上述文件对应的数据块数目为11,基于初始基准数目进行划分后,末尾数据条带的数据块数目为2<3,则可以在8、9、11、12中确定第一基准数目。

可选的,可以选取对应的末尾数据条带的数据块数目最大的基准数目,来划分上述数据块,相应的处理过程可以如下:索引服务器确定以初始基准数目为中心的基准数目范围,根据基准数目范围中除第一基准数目之外的每个基准数目,分别确定每个基准数目对应的末尾数据条带的数据块数目;根据每个基准数目对应的末尾数据条带的数据块数目,确定第一基准数目,第一基准数目对应的末尾数据条带的数据块数目为每个基准数目对应的末尾数据条带的数据块数目中最大的。

在实施中,索引服务器可以按照上述处理过程,确定第一基准数目对应的基准数目范围,以及基准数目范围中除第一基准数目之外的其它基准数目,然后分别确定其他基准数目中的每个基准数目对应的末尾数据条带的数据块数目,这样,索引服务器可以得到除第一基准数目之外的每个基准数目对应的末尾数据条带的数据块数目。索引服务器可以定对应的末尾数据条带的数据块数目最大的第一基准数目,然后可以根据第一基准数目,对文件进行划分。

例如,初始基准数目为10,对应的基准数目范围是8~12,上述文件对应的数据块数目为22,则可以确定8对应的末尾数据条带的数据块数目为6,9对应的末尾数据条带的数据块数目为4,11对应的末尾数据条带的数据块数目为11,12对应的末尾数据条带的数据块数目为10,则可以确定第一基准数目为11。

基于上述处理,可以有效减少存储的数据量,节约存储空间。例如,初始基准数目为10,对应的基准数目范围是8~12,校验块数目为3,上述文件对应的数据块数目为22,如果基于10进行划分,划分得到的数据条带包含的数据块数目为10、10、2,对应每个数据条带都生成3个校验块,则一共存储31个数据块,如图4所示,其中,1、2、3....为文件划分的数据块,p1、p2....为校验块;而确定第一基准数目后,基于11进行划分,划分得到的数据条带包含的数据块数目为11、11,则一共存储28个数据块,如图5所示,其中,1、2、3....为文件划分的数据块,p1、p2....为校验块。

可选的,对于不同的文件,可以采用不同的校验算法,相应的处理过程可 以如下:索引服务器根据预先存储的文件标识与校验算法的对应关系,确定文件的文件标识对应的校验算法。

在实施中,索引服务器中可以预先存储各文件标识与校验算法的对应关系,该对应关系可以由技术人员设置,也可以由用户设置,其中,文件标识可以是文件的文件名称,也可以是文件的文件编号,该文件标识可以用于表示该文件的重要性。例如,对于重要性较低的文件,可以采用异或校验算法,或rs(10+2)等校验算法,对于重要性中等的文件,可以采用rs(10+3)校验算法,对于重要性较高的文件,可以采用rs(10+4)校验算法。

索引服务器获取待存储的文件后,可以获取该文件对应的文件标识,进而可以在上述对应关系中,确定该文件标识对应的校验算法,然后可以根据确定出的校验算法的校验块,进行步骤302的处理。

步骤303,索引服务器根据第一基准数目,对多个数据块进行划分,得到文件对应的多个数据条带。

在实施中,索引服务器确定出的每个数据条带的数据块数目后,可以对上述文件进行划分,得到一个或多个数据条带,进而可以根据该文件对应的校验算法,生成每个数据条带对应的校验块,得到每个数据条带对应的校验文件。

步骤304,存储服务器对划分得到的数据条带以及每个数据条带对应的校验块进行存储。

在实施中,索引服务器可以确定各数据条带中的数据块,以及对应的校验块的存储位置,进而可以将各数据条带的数据块,以及校验块发送给对应的存储服务器进行存储。另外,索引服务器还可以在校验文件中标注该文件对应的校验算法,以及该校验文件对应的数据条带所包含的数据块数目,以便后续进行修复处理。该标注方式可以如下:

其中,1~10为一个数据条带,该数据条带的标识可以为/home/yarn/a.txt,p1、p2、p3为该数据条带对应的校验块,其标识可以为/raid/home/yarn/a.txt.rd_rs-10-3_stripe10。其中rs-10-3标注表明该校验文件采用的是rs(10+3)算法,stripe10则表示该文件的一个数据条带内的数据块数为11。

另外,对于上述进行多副本策略存储的情况,在进行步骤304后,删除其余的副本,只对划分得到的数据条带以及每个数据条带对应的校验块进行存储。

本实施例还提供了用户端对上述文件进行请求时,如果用户请求的数据丢失,文件存储系统可以通过实时修复策略进行处理的过程,该处理过程可以包括以下几个步骤:

步骤一、存储服务接收用户设备发送的对应多个数据块中的第一数据块的数据请求。

在实施中,用户可以通过用户设备来获取上述文件中任意数据块的数据,用户设备可以向索引服务器发送对应第一数据块的数据请求(可称作第一数据请求),索引服务器则可以接收到第一数据请求,然后在本地存储的各数据块对应的存储位置中,查找第一数据块对应的存储位置,该存储位置可以包括第一数据块对应的存储服务器,以及第一数据块在该存储服务器中具体的存储字节范围,索引服务器可以将第一数据块对应的存储位置发送给用户设备。用户设备接收到第一数据块对应的存储位置后,可以向对应的存储服务器发送对应第一数据块的数据请求(可称作第二数据请求)。

步骤二、如果第一数据块丢失,则用户设备向存储服务发送对应第一数据块所属的第一数据条带中的其他数据块、以及第一数据条带对应的校验块的数据请求。

在实施中,存储服务器接收到第二数据请求后,可以在本地查找第一数据块,如果该存储服务器查找到第一数据块,则可以从本地获取第一数据块所包含的数据,然后可以将第一数据块发送给用户设备。如果存储服务器未查找到第一数据块,则说明第一数据块丢失,存储服务器可以向用户设备发送错误通知,该错误通知中可以携带有第一数据块所属的第一数据条带的标识,以使用户设备获知第一数据块丢失,或者,如果用户设备在预设时长内未接收到存储服务器发送的第一数据块,则判定第一数据块丢失。用户设备判定第一数据块丢失后,可以向索引服务器发送对应第一数据块所属的第一数据条带中的其他数据块、以及第一数据条带对应的校验块的数据请求(可称作第三数据请求),索引服务器可以接收第三数据请求,然后可以查找第一数据条带中的其他数据块、以及第一数据条带对应的校验块的存储位置,进而可以向用户设备发送第一数据条带中的其他数据块、以及第一数据条带对应的校验块的存储位置,以使用户设备可以向对应的存储服务器发送对应第一数据块所属的第一数据条带中的其他数据块、以及第一数据条带对应的校验块的数据请求(可称为第四数 据请求)。

步骤三、存储服务器将第一数据条带中的其他数据块和第一数据条带对应的校验块发送给用户设备,以使用户设备根据第一数据条带中的其他数据块、第一数据条带对应的校验块和预设的校验算法生成第一数据块。

在实施中,存储服务器接收到第四数据请求后,可以获取第一数据条带中的其他数据块和第一数据条带对应的校验块,然后可以将第一数据条带和第一数据条带对应的校验块发送给用户设备,另外,存储服务器还可以将上述预设的校验算法的标识发送给用户设备。用户设备可以根据第一数据条带中的其他数据块、第一数据条带对应的校验块和预设的校验算法生成第一数据块,然后可以删除第一数据条带中的其他数据块和第一数据条带对应的校验块,以节约用户设备的存储资源。

另外,也可以由服务器生成第一数据块,相应的处理过程可以如下:索引服务器接收用户设备发送的对应多个数据块中的第一数据块的第一数据请求;如果第一数据块丢失,则索引服务器根据第一数据条带中的其他数据块、第一数据条带对应的校验块和预设的校验算法生成第一数据块;索引服务器将第一数据块发送给用户设备。

在实施中,用户可以通过用户设备来获取上述文件中任意数据块的数据,用户设备可以向索引服务器发送对应第一数据块的数据请求(可称为第一数据请求),索引服务器接收到第一数据请求后,可以将第一数据块对应的存储位置发送给用户设备,该存储位置可以包括第一数据块对应的存储服务器的标识,用户设备接收到第一数据块的存储位置后,可以向对应的存储服务器发送数据请求(可称为第二数据请求)。

存储服务器接收到第二数据请求后,可以在本地查找第一数据块,如果该存储服务器查找到第一数据块,则可以从本地获取第一数据块所包含的数据,然后可以将第一数据块发送用户设备。如果存储服务器未查找到第一数据块,则可以向索引服务器发送第一数据块丢失的通知,以使索引服务器可以获知第一数据块丢失,索引服务器可以确定第一数据块所属的第一数据条带,进而可以确定第一数据条带中的其他数据块、以及第一数据条带对应的校验块的存储位置,然后可以从对应的存储服务器获取第一数据条带中的其他数据块,以及校验块。索引服务器可以根据第一数据条带中的其他数据块、第一数据条带对 应的校验块和预设的校验算法,生成第一数据块,将第一数据块发送给用户设备。需要说明的是,上述生成第一数据块的处理可以由索引服务器完成,也可以由索引服务器以外的其他服务器完成。

另外,本实施例还提供了当文件存储系统检测到第一数据块丢失时,进行异步修复的处理过程,该处理过程可以如下:当索引服务器检测到第一数据块丢失时,根据第一数据条带、第一数据条带对应的校验块和预设的校验算法生成第一数据块,并对第一数据块进行存储。

在实施中,存储服务器可以在达到预设的上报周期时,向索引服务器发送上报信息,该上报信息可以包括各存储服务器当前存储的数据块的标识,以及各数据块对应的存储位置,索引服务器中可以预先存储各数据块的标识,以及每个数据块的存储位置,该存储位置可以包括各数据块对应的存储服务器的标识,以及各数据块在对应的存储服务器中的具体位置信息。如果索引服务器在第一数据块对应的存储服务器的上报信息中,未查找到第一数据块的标识,以及第一数据块对应的存储位置,则可以判断第一数据块发送丢失,然后可以从存储服务器中获取第一数据条带中的其他数据块,以及第一数据条带对应的校验块,然后可以根据第一数据条带、第一数据条带对应的校验块和预设的校验算法,生成第一数据块,然后第一数据块对应的存储服务器可以对第一数据块进行存储。

本发明实施例中,索引服务器可以获取待存储的文件,将文件划分成多个数据块,根据预设的校验算法对应的校验块数目,以及预设的基准数目范围,确定第一基准数目,进而可以根据第一基准数目,对多个数据块进行划分,得到文件对应的多个数据条带,多个数据条带中除末尾数据条带之外的每个数据条带所包含的数据块的数目为第一基准数目,这样,索引服务器可以对数据条带的数据块的灵活调整,使得末尾数据条带的数据块数目大于校验块数目,避免服务器中存储包含的数据块较少的数据条带,以及该数据条带对应的校验块的情况,从而可以节约存储资源。

本发明实施例还提供了一种划分数据条带的装置,该装置可以通过图2所示的计算设备现,还可以通过专用集成电路(英文:application-specificintegratedcircuit,缩写:asic)实现,或可编程逻辑器件(英文:programmablelogicdevice, 缩写:pld)实现。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),fpga,通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。该划分数据条带的装置用于实现图3所示的划分数据条带的方法。通过软件实现图3所示的划分数据条带的方法时,划分数据条带的装置也可以为软件模块。

划分数据条带的装置的组织结构示意图如图6所示,包括:获取模块610、确定模块620和划分模块630。获取模块610工作时,执行图3所示的划分数据条带的方法中的步骤301的部分,确定模块620工作时,执行图3所示的划分数据条带的方法中的步骤302及其可选方案,划分模块630工作时,执行图3所示的划分数据条带的方法中的步骤303及其可选方案。另外,如图7所示,划分数据条带的装置还可以包括接收模块640、生成模块650和发送模块660。接收模块640工作时,执行上述过实时修复策略处理过程中的接收数据请求的步骤,生成模块650工作时,执行上述过实时修复策略处理过程中的生成第一数据块的步骤,发送模块660工作时,执行上述过实时修复策略处理过程中的将第一数据块发送给用户设备的步骤。

本发明实施例中,索引服务器可以获取待存储的文件,将文件划分成多个数据块,根据预设的校验算法对应的校验块数目,以及预设的基准数目范围,确定第一基准数目,进而可以根据第一基准数目,对多个数据块进行划分,得到文件对应的多个数据条带,多个数据条带中除末尾数据条带之外的每个数据条带所包含的数据块的数目为第一基准数目,这样,索引服务器可以对数据条带的数据块的灵活调整,使得末尾数据条带的数据块数目大于校验块数目,避免服务器中存储包含的数据块较少的数据条带,以及该数据条带对应的校验块的情况,从而可以节约存储资源。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。

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