存储方法及装置与流程

文档序号:16736252发布日期:2019-01-28 12:39阅读:135来源:国知局
存储方法及装置与流程

本发明涉及数据存储技术领域,具体而言,涉及一种存储方法及装置。



背景技术:

随着大数据时代的来临,人工智能的兴起,互联网产生的海量数据给行业带来了大量机遇,在大数据时代,数据就是最有价值的资产已成为共识,然而大规模数据爆发也同时形成了一些挑战,其中海量数据存储的问题尤为突出。

目前,数据存储方案中最热门的方案莫过于分布式文件系统(ceph),然而,在默认情况下当ceph存储数据量在亿级时,其对对象存储的持续写入性能会急速下降,这是因为ceph本身的设计,在单个对象桶中存放了超大规模的数据,导致这些庞大的数据的元数据在每次写入时的维护非常耗时,直接阻塞了后续数据写入,导致写入性能低下。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种存储方法及装置,以改善上述问题。

第一方面,本发明实施例提供了一种存储方法,应用于分布式文件系统的存储节点,所述方法包括:

获得用户终端发送的预存文件;

判断是否需要创建新的存储桶;

若是,则根据历史存储记录创建新的存储桶;

将所述预存文件写入所述新的存储桶。

可选地,所述新的存储桶包括临时数据区、元数据区和实际数据区,所述将所述预存文件写入所述新的存储桶,包括:

将所述预存文件的文件信息写入所述临时数据区;

将所述预存文件的元数据信息写入所述元数据区;

将所述预存文件的数据信息写入所述实际数据区。

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

向所述用户终端返回写入结果。

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

获取上一个存储桶写入的数据量;

所述根据历史存储记录创建新的存储桶,包括:

以上一个存储桶写入的数据量为基准创建新的存储桶。

可选地,所述判断是否需要创建新的存储桶,包括:

依据当前时间判断是否需要创建新的存储桶。

第二方面,本发明实施例提供了一种存储装置,应用于分布式文件系统的存储节点,所述存储装置包括:

获取模块,用于获得用户终端发送的预存文件;

判断模块,用于判断是否需要创建新的存储桶;

创建模块,用于当判断结果为是时,根据历史存储记录创建新的存储桶;

写入模块,用于将所述预存文件写入所述新的存储桶。

可选地,所述新的存储桶包括临时数据区、元数据区和实际数据区,所述写入模块包括:

临时数据区写入子模块,用于将所述预存文件的文件信息写入所述临时数据区;

元数据区写入子模块,用于将所述预存文件的元数据信息写入所述元数据区;

实际数据区写入子模块,用于将所述预存文件的数据信息写入所述实际数据区。

可选地,存储装置还包括:

结果返回模块,用于向所述用户终端返回写入结果。

可选地,所述获取模块还用于获取上一个存储桶写入的数据量;

所述创建模块用于以上一个存储桶写入的数据量为基准创建新的存储桶。

可选地,所述判断模块用于依据当前时间判断是否需要创建新的存储桶。

对于现有技术,本发明提供的存储方法及装置具有如下的有益效果:

本发明提供的存储方法及装置可在写入数据时不会引发存储桶溢出产生的性能问题,与传统的应用相比,在存储亿级数据量的情况下,仍然保持与分布式文件系统初始集群接近的高性能表现。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明较佳实施例提供的分布式文件系统的存储节点与用户终端进行交互的示意图。

图2为本发明较佳实施例提供的存储节点的方框示意图。

图3为本发明较佳实施例提供的存储方法的流程图。

图4为本发明较佳实施例提供的存储装置的功能模块示意图。

图5为图4中写入模块的功能模块示意图。

图标:100-存储节点;110-存储装置;111-获取模块;112-判断模块;113-创建模块;114-写入模块;1141-临时数据区写入子模块;1142-元数据区写入子模块;1143-实际数据区写入子模块;115-结果返回模块;200-用户终端;300-网络。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

如图1所示,是本发明较佳实施例提供的分布式文件系统中的存储节点100与用户终端200进行交互的示意图。所述分布式文件系统的存储节点100通过网络300与一个或多个用户终端200通信连接,以进行数据通信或交互。所述存储节点100为用于数据存储的服务器,所述存储节点100可以是网络服务器、数据库服务器等。所述用户终端200可以是个人电脑(personalcomputer,pc)、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)等。

如图2所示,是所述存储节点100的方框示意图。所述存储节点100包括存储装置110、存储器130、处理器150和通信单元170。

所述存储器130、处理器150以及通信单元170各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述存储装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器130中或固化在所述存储节点100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器150用于执行所述存储器130中存储的可执行模块,例如所述存储装置110所包括的软件功能模块及计算机程序等。

其中,所述存储器130可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器130用于存储程序,所述处理器150在接收到执行指令后,执行所述程序。所述通信单元170用于通过网络300建立所述存储节点100与所述用户终端200之间的通信连接,并用于通过所述网络300收发数据。

请参阅图3,是本发明较佳实施例提供的应用于图2所示的存储节点100的存储方法的流程图。下面将对图3所示的具体流程进行详细阐述。

步骤s101,获得用户终端发送的预存文件。

本发明实施例提供的方法应用于分布式文件系统的存储节点100,当用户终端200需要通过分布式文件系统进行文件存储时,可向分布式文件系统发送需要存储的预存文件,分布式文件系统中的存储节点100获得用户终端200发送的预存文件。

步骤s102,判断是否需要创建新的存储桶,若是,执行步骤s103。

存储节点100获得用户终端200发送的预存文件后,判断是否需要创建新的存储桶,如果是,执行步骤s103。

具体的,本发明实施例中,判断标准是以时间间隔为基准进行判断,例如预定义的时间间隔为1小时,当上一次创建存储桶的时间在1小时之前,则需要创建新的存储桶。如果上一次创建存储桶的时间在1小时以内,则无需创建新的存储桶。

步骤s103,根据历史存储记录创建新的存储桶。

当需要创建新的存储桶时,存储节点100根据历史存储记录创建新的存储桶。

具体的,存储节点100先获取上一个存储桶写入的数据量,然后以上一个存储桶写入的数据量为基准乘以一定的比例系数做为新存储桶的存储容量来创建新的存储桶。所述比例系数大于1,确保新的存储桶有足够的容量写入数据,防止存储桶溢出导致写入性能降低。例如,上一个存储桶写入的数据量为n,则新存储桶的存储容量可以设定为n×1.2。

本发明实施例中,新存储桶的存储容量以上一个存储桶写入的数据量为基准进行计算。可以理解的,在其他的一些实施例中,也可以采用其他方式来计算新存储桶的存储容量,例如根据历史记录统计每个时间段的数据存储量,然后根据当前所处的时间段来确定新存储桶的存储容量。

本发明实施例中,新的存储桶包括临时数据区、元数据区和实际数据区,临时数据区用于写入预存文件的文件信息,所述文件信息可以是,但不限于预存文件的文件大小、格式、创建时间以及创造者信息等数据。元数据区用于写入预存文件的元数据信息。实际数据区用于写入预存文件的数据信息。

临时数据区和元数据区根据实际数据区的大小可按照一定比例配置。本发明实施例中,临时数据区使用不低于20000iops的企业级ssd固态磁盘,并且按照2500iops/ssd磁盘来进行分配,即多个ssd磁盘共享一个临时数区,其按照磁盘分区的方式进行区分。元数据区使用不低于20000iops企业级的ssd固态硬盘,并按照5000iops/ssd磁盘来进行分配,即多个ssd磁盘共享一个元数据区,其按照磁盘分区的方式进行区分,每个分区的空间大小按照下面算法计算:待存数据数量:元数据区空间(gb)=1亿(个):9.6gb。实际数据区使用传统大容量hdd机械磁盘,使用整块hdd磁盘作为实际数据区。

步骤s104,将所述预存文件写入新的存储桶。

存储节点100创建新的存储桶后,将获得的预存文件写入该新的存储桶。具体的,存储节点100将预存文件的文件信息写入临时数据区,将预存文件的元数据信息写入元数据区,将预存文件的数据信息写入实际数据区。此时,即完成预存文件的写入过程。

步骤s105,向用户终端返回写入结果。

分布式文件系统的存储节点100将预存文件写入新的存储桶后,向用户终端200返回以写入完成的结果,以告知用户终端200的用户已完成文件的写入。

综上所述,本发明实施例提供的存储方法可在获得用户终端200发送的预存文件后以时间间隔为基准判断是否需要创建新的存储桶,当需要创建新的存储桶时,以上一个存储桶写入的数据量为基准创建新的存储桶,并在创建新的存储桶的过程中将新的存储桶划分为临时数据区、元数据区和实际数据区,然后分别向临时数据区写入预存文件的文件信息,向元数据区写入预存文件的元数据信息,向实际数据区写入预存文件的数据信息,并在写入完成后向用户终端200返回写入结果以告知用户终端200的用户。本发明实施例提供的存储方法充分利用了现有的磁盘技术,通过合理分配各个功能分区的位置及技术手段计算性能分配,并在ceph本身的写入行为上进行了控制,使得写入的数据不会引发存储桶溢出产生的性能问题,与传统应用相比,在存储亿级数据量的情况下,仍然能保持与分布式文件系统初始集群接近的高性能表现。

请参阅图4,是本发明较佳实施例提供的图2所示的存储装置110的功能模块示意图。所述存储装置110包括获取模块111、判断模块112、创建模块113、写入模块114和结果返回模块115。

所述获取模块111用于获得用户终端发送的预存文件。

可以理解的,所述获取模块111可以用于执行上述的步骤s101。

所述判断模块112用于判断是否需要创建新的存储桶。

可以理解的,所述判断模块112可以用于执行上述的步骤s102。

所述获取模块111还用于获取上一个存储桶写入的数据量。

所述创建模块113用于以上一个存储桶写入的数据量为基准创建新的存储桶。

所述写入模块114用于将所述预存文件写入所述新的存储桶。

请参阅图5,所述写入模块114包括临时数据区写入子模块1141、元数据区写入子模块1142和实际数据区写入子模块1143。所述临时数据区写入子模块114用于将所述预存文件的文件信息写入所述临时数据区,所述元数据区写入子模块1142用于将所述预存文件的元数据信息写入所述元数据区,所述实际数据区写入子模块1143用于将所述预存文件的数据信息写入所述实际数据区。

可以理解的,所述写入模块114可以用于执行上述的步骤s104。

所述结果返回模块115用于向用户终端返回写入结果。

可以理解的,所述结果返回模块115可以用于执行上述的步骤s105。

综上所述,本发明实施例提供的存储装置110可在获得用户终端200发送的预存文件后以时间间隔为基准判断是否需要创建新的存储桶,当需要创建新的存储桶时,以上一个存储桶写入的数据量为基准创建新的存储桶,并在创建新的存储桶的过程中将新的存储桶划分为临时数据区、元数据区和实际数据区,然后分别向临时数据区写入预存文件的文件信息,向元数据区写入预存文件的元数据信息,向实际数据区写入预存文件的数据信息,并在写入完成后向用户终端200返回写入结果以告知用户终端200的用户。本发明实施例提供的存储装置110充分利用了现有的磁盘技术,通过合理分配各个功能分区的位置及技术手段计算性能分配,并在ceph本身的写入行为上进行了控制,使得写入的数据不会引发存储桶溢出产生的性能问题,与传统应用相比,在存储亿级数据量的情况下,仍然能保持与分布式文件系统初始集群接近的高性能表现。

本发明实施例还提供了一种非易失性计算机存储介质,所述非易失性计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的存储方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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