CN113741787B - 一种数据存储方法、装置、设备、介质 - Google Patents
一种数据存储方法、装置、设备、介质 Download PDFInfo
- Publication number
- CN113741787B CN113741787B CN202010461877.6A CN202010461877A CN113741787B CN 113741787 B CN113741787 B CN 113741787B CN 202010461877 A CN202010461877 A CN 202010461877A CN 113741787 B CN113741787 B CN 113741787B
- Authority
- CN
- China
- Prior art keywords
- allocation
- request
- hard disk
- storage
- target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 95
- 238000013500 data storage Methods 0.000 title claims abstract description 41
- 230000001960 triggered effect Effects 0.000 claims abstract description 14
- 238000007726 management method Methods 0.000 claims description 59
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 abstract description 9
- 238000010168 coupling process Methods 0.000 abstract description 9
- 238000005859 coupling reaction Methods 0.000 abstract description 9
- 239000002699 waste material Substances 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 240000002044 Rhizophora apiculata Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000012458 free base Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置、设备、介质,该方法包括:获取目标用户触发的对象分配请求;根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值;将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。这样能够根据最小分配单元进行存储对象分配,且在满足用户需求的同时尽量减少资源浪费,避免不同对象之间的耦合。
Description
技术领域
本申请涉及数据存储技术领域,特别涉及一种数据存储方法、装置、设备、介质。
背景技术
随着安防监控行业的高速发展,海量的音视频数据对存储系统提出了新的挑战。传统的块存储系统和文件系统由于具有难以扩展、层次结构复杂、数据读写流程繁琐等缺点,已经无法满足视频数据等非结构化数据的海量存储和读取需求。对象存储系统的出现解决了上述传统存储系统的技术缺陷,它具有易于扩展、层次结构扁平化、数据读写接口简洁的优势,更重要的是它通过REST接口将存储系统的服务对外暴露,方便用户随时随地访问存储服务。然而当前业界的对象存储系统都是针对传统硬盘设计的管理系统,对于像SMR盘(Shingled Magneting Recording,叠瓦式磁记录盘)、SSD盘(Solid State Disk,固态硬盘)这类基于基本存储单元存储模式的硬盘不适用。而传统硬盘没有基本存储单元的限制,因此现有的对象存储管理系统都是自行任意划分存储单元,再将存储单元组成对象提供给用户。当前的对象存储系统缺少获取基本存储单元信息的机制,因此无法感知到不同大小的基本存储单元信息,所以当前的对象存储系统无法根据基本存储单元信息划分最小存储单元,而是由业务软件进行划分,可能会将一个基本存储单元分割到不同对象中,导致原本应该相互独立的对象产生耦合和相互干扰。
发明内容
有鉴于此,本申请的目的在于提供一种数据存储方法、装置、设备、介质,能够根据最小分配单元进行存储对象分配,且在满足用户需求的同时尽量减少资源浪费,避免不同对象之间的耦合。其具体方案如下:
第一方面,本申请公开了一种数据存储方法,应用于对象存储系统中的存储节点,包括:
获取目标用户触发的对象分配请求;
根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值;
将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
可选地,所述获取目标用户触发的对象分配请求之前,还包括:
接收存储节点管理服务器发送的硬盘类型查询指令;
根据所述硬盘类型查询指令,将本地的硬盘类型信息返回给所述存储节点管理服务器;
接收所述存储节点管理服务器根据所述硬盘类型信息发送的逻辑资源创建请求;
根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分成不同的基本存储单元,以便在进行存储对象分配时将所述基本存储单元作为最小分配单元。
可选地,所述根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分成不同的基本存储单元之后,还包括:
向所述存储节点管理服务器反馈逻辑资源创建成功信息;
接收所述存储节点管理服务器根据所述逻辑资源创建成功信息发送的本地对应的基本存储单元信息;
将所述基本存储单元信息存储到本地,以便根据所述基本存储单元信息进行存储分配。
可选地,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象之后,还包括:
将确定出所述目标对象时的系统时间作为所述目标对象的分配时间;
将所述目标对象的对象标识和所述分配时间发送给所述存储节点对应的存储节点管理服务器,以便所述存储节点管理服务器根据所述分配时间将所述对象标识和所述分配时间作为一个节点插入到红黑树中,其中,所述红黑树用于维护所述存储节点管理服务器对应的存储节点中的对象分配时间顺序信息。
可选地,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,包括:
确定所述对象分配请求对应的请求对象容量;
根据所述请求对象容量和所述预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象。
可选地,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,包括:
确定所述对象分配请求对应的请求对象容量、以及待存储数据的数据类型;
根据所述数据类型、本地硬盘的硬盘类型信息以及预设硬盘性能级别,确定出用于存储所述待存储数据的目标硬盘;
根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象。
可选地,所述根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象的过程中,还包括:
如果所述目标硬盘的空闲最小分配单元集合中各个最小分配单元的总容量小于所述请求对象容量,则将所述目标硬盘的空闲最小分配单元集合中的全部最小分配单元以及比所述目标硬盘的性能级别高的硬盘中的空闲最小分配单元作为所述目标对象。
第二方面,本申请公开了一种数据存储装置,应用于对象存储系统中的存储节点,包括:
请求获模块,用于获取目标用户触发的对象分配请求;
对象确定模块,用于根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值;
数据存储模块,用于将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
第三方面,本申请公开了一种数据存储设备,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现前述公开的数据存储方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据存储方法。
可见,本申请先获取目标用户触发的对象分配请求,然后根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值,接着将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。在获取到对象分配请求之后,便可以根据本地空闲的最小分配单元中确定出整数个最小分配单元作为对象分配给所述对象分配请求对应的用户,且分配给用户的对象的总容量为不小于用户请求容量的最小值,这样能够根据最小分配单元进行存储对象分配,且在满足用户需求的同时尽量减少资源浪费,避免不同对象之间的耦合。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据存储方法流程图;
图2为本申请公开的一种具体的数据存储方法流程图;
图3为本申请公开的一种逻辑资源创建方法流程图;
图4为本申请公开的一种红黑树图;
图5为本申请公开的一种数据存储装置结构示意图;
图6为本申请公开的一种数据存储设备结构图;
图7为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
当前的对象存储系统缺少获取基本存储单元信息的机制,因此无法感知到不同大小的基本存储单元信息,所以当前的对象存储系统无法根据基本存储单元信息划分最小存储单元,而是由业务软件进行划分,可能会将一个基本存储单元分割到不同对象中,导致原本应该相互独立的对象产生耦合和相互干扰。有鉴于此,本申请提出了一种数据存储方法,能够根据最小分配单元进行存储对象分配,且在满足用户需求的同时尽量减少资源浪费,避免不同对象之间的耦合。
参见图1所示,本申请实施例公开了一种数据存储方法,应用于对象存储系统中的存储节点,该方法包括:
步骤S11:获取目标用户触发的对象分配请求。
在具体的实施过程中,需要先获取目标用户触发的对象分配请求,以便根据所述对象分配请求进行存储对象的分配,并将待存储数据存储到分配的存储对象。
步骤S12:根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值。
在获取到所述对象分配请求之后,还需要根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值。也即,需要根据所述对象分配请求和预设对象分配算法从本地的空闲最小分配单元中确定出目标对象,且所述目标对象的总容量为不小于所述对象分配请求对应的请求对象容量的最小值。空闲最小分配单元集合中可能存在多个满足所述对象分配请求的对象,这时需要将总容量最小的对象作为目标对象,这样确定出的目标对象包括整数个最小分配单元,避免了同一个最小分配单元被分配到不同的对象中,避免不同对象之间的耦合,且在满足用户需求的同时减少资源浪费。
步骤S13:将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
在确定出所述目标对象之后,便可以将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。具体的,就是在确定出所述目标对象之后便可以将所述对象分配请求对象的待存储数据存储到所述目标对象中即可。
可见,本申请先获取目标用户触发的对象分配请求,然后根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值,接着将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。在获取到对象分配请求之后,便可以根据本地空闲的最小分配单元中确定出整数个最小分配单元作为对象分配给所述对象分配请求对应的用户,且分配给用户的对象的总容量为不小于用户请求容量的最小值,这样能够根据最小分配单元进行存储对象分配,且在满足用户需求的同时尽量减少资源浪费,避免不同对象之间的耦合。
参见图2所示,本申请实施例公开了一种具体的数据存储方法,应用于对象存储系统中的存储节点,该方法包括:
步骤S21:接收存储节点管理服务器发送的硬盘类型查询指令。
在具体的实施过程中,需要先在本地建立逻辑资源,所以先要接收所述对象存储系统中的存储节点管理服务器发送的硬盘类型查询指令。通过所述硬盘类型查询指令,所述存储节点管理服务器可以获取到本地的硬盘类型。
步骤S22:根据所述硬盘类型查询指令,将本地的硬盘类型信息返回给所述存储节点管理服务器。
在接收到所述硬盘类型获取指令之后,便可以根据所述硬盘类型指令将本地的硬盘类型信息返回给所述存储节点管理服务器。其中,所述硬盘类型信息包括本地所拥有的硬盘类型,所述硬盘类型包括但不限于SSD、SMR。
步骤S23:接收所述存储节点管理服务器根据所述硬盘类型信息发送的逻辑资源创建请求。
在得到所述硬盘类型信息之后,还需要接收所述存储节点管理服务器根据所述硬盘类型信息发送的逻辑资源创建请求。具体的,就是所述存储节点管理服务器接收到所述硬盘类型信息之后,判断所述硬盘类型信息对应的硬盘是否是基于基本存储单元模式的硬盘,如果是,且需要在本地创建虚拟资源,则所述存储节点管理服务器需要先本地的资源管理模块发出逻辑资源创建请求。其中,所述逻辑资源创建请求中携带基本存储单元参数。
步骤S24:根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分成不同的基本存储单元,以便在进行存储对象分配时将所述基本存储单元作为最小分配单元。
可以理解的是,在接收到所述逻辑资源创建请求之后,便可以根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分为不同的基本存储单元,这样在进行存储对象分配时将所述基本单元作为最小分配单元分配给相应的用户。在实际应用中,本地创建的基本存储单元的大小可以不相同,例如,本地硬盘包括三个阵列,阵列A、阵列B、阵列C,将阵列A的基本分配单元的大小确定为a,分配的总容量为L,阵列B的基本分配单元的大小确定为b,分配的总容量为M,阵列C的基本分配单元的大小确定为c,分配的总容量为N。在逻辑资源创建完成之后,还需要确定向所述逻辑资源写入数据的逻辑写入顺序。
参见图3所示,为逻辑资源创建流程图。其中,图中的CDV表示存储节点管理服务器,LV表示逻辑资源,zone表示基本存储单元。存储节点管理服务器先向存储节点中的存储资源管理模块查询存储节点中是否存在基于基本存储单元模式的硬盘,存储节点中的存储管理模块向所述存储节点管理服务器返回存在基于基本存储单元模式硬盘的信息,则所述存储节点管理服务器在基于基本存储单元模式的硬盘上创建虚拟资源,创建在逻辑资源包括在阵列A上创建基本存储单元大小为a,分配容量为L,在阵列B上创建基本存储单元大小为b,分配容量为M,在阵列C上创建基本存储单元大小为c,分配容量为N,数据写入顺序为先写到阵列A,再写到阵列B,最后写到阵列C。
在实际应用中,在逻辑资源创建之后,还需要向所述存储节点管理服务器反馈逻辑资源创建成功信息;接收所述存储节点管理服务器根据所述逻辑资源创建成功信息发送的本地对应的基本存储单元信息;将所述基本存储单元信息存储到本地,以便根据所述基本存储单元信息进行存储分配。具体的,就是在所述逻辑资源创建完成之后,向所述存储节点管理服务器返回逻辑资源创建成功信息,所述存储节点管理服务器将所述基本存储单元信息发送到元数据管理服务器中进行存储,所述基本存储单元信息如下表1所示:
表1
其中,cdv_code:存储节点管理服务器设备编码,用于区分一个元数据管理服务器下的不同存储节点管理服务器的资源;res_id:资源ID,根据该zone在LV内的逻辑写入顺序递增;res_type:资源类型,表示底层资源的具体类型;res_name:逻辑资源名称,该字段对于同一个逻辑资源内的所有基本存储单元都相同,用于关联属于同一个逻辑资源的基本存储单元;zone_size:基本存储单元的大小,单位字节;zone_capacity:该逻辑资源内基本存储单元的分配容量,单位字节。
在得到所述基本存储单元信息之后,还需要将所述基本存储单元信息发送到本地,所以本地需要接收所述基本存储单元信息,并将所述基本存储单元信息存储到本地,以便根据所述基本存储单元信息进行存储分配。
步骤S25:获取目标用户触发的对象分配请求。
步骤S206:根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值。
可以理解的是,在获取所述对象分配请求之后,便需要根据所述对象分配请求为所述对象分配请求对应的用户分配存储对象。具体的,就是根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象。在存储对象分配过程中,需要满足以下原则:以基本存储单元为最小分配单元,一个基本存储单元只能分配给一个对象;所分配的对象总容量不能小于用户申请的对象容量;尽量减少存储空间浪费。则可以根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值。
在只考虑所述对象分配请求对应的请求对象容量时,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,包括:确定所述对象分配请求对应的所述请求对象容量;根据所述请求对象容量和所述预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象。所述预设对象分配方法采用动态规划算法从空闲基本存储单元集合中找到满足用户需求的最小基本存储单元组合容量。一是使用动态规划算法的思路具体如下:存储节点在内存中维护一个数组Z[m],其元素是空闲基本存储单元的大小,元素个数m表示当前共有m个空闲基本存储单元可用,用户需求容量为u,则问题求解目标为:从Z[m]中找出一个子集,使得子集元素的总和为不小于u的最小值。二是定义动态规划算法的状态:定义F[i][j]表示从前i个空闲基本存储单元集合中找出的子集总容量不小于j的最小值。三是确定动态规划算法的状态转移方程(递推公式):对于第i个空闲基本存储单元,有两种可能:要么本次被分配,要么不分配继续保持空闲。当选择不分配Z[i]时,即从前i-1个空闲基本存储单元中分配,可得:F[i][j]=F[i-1][j],当选择分配Z[i]时,又分为两种情况:(1)当Z[i]≥j时,则只需要Z[i]一个就可以满足要求,仅分配Z[i]即可;(2)当Z[i]<j时,分配了Z[i],还需要在前i-1个空闲基本存储单元中至少分配j-Z[i]的容量;从分配Z[i]和不分配Z[i]两种方案中选择容量较小的方案作为结果,综上可得,当i≥1时有:
四是确定动态规划算法的初始状态:F[0][0]表示没有空闲基本存储单元,需求容量也是0,此时结果为0,即F[0][0]=0,F[0][j](j>0)表示没有空闲基本存储单元,需求容量大于0,此时容量不够无解,用+∞表示该状态,即F[0][j]=+∞(j>0)。在之后的递推过程中凡是遇到+∞则表示该方案容量不够不可行。五是通过递推公式求解出F[m][u]即为所求满足u的最小分配容量。这样通过采用动态规划算法可以找到对象分配的最优解或者判断为容量不够无解,即满足了用户需求,又最大程度避免了浪费。
在考虑所述对象分配请求对应的请求对象容量、待存储数据类型以及硬盘性能时,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,包括:确定所述对象分配请求对应的所述请求对象容量、以及待存储数据的数据类型;根据所述数据类型、本地硬盘的硬盘类型信息以及预设硬盘性能级别,确定出用于存储所述待存储数据的目标硬盘;根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象。其中,根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象的过程中,还包括:如果所述目标硬盘的空闲最小分配单元集合中各个最小分配单元的总容量小于所述请求对象容量,则将所述目标硬盘的空闲最小分配单元集合中的全部最小分配单元以及比所述目标硬盘的性能级别高的硬盘中的空闲最小分配单元作为所述目标对象。具体的,就是先将用户数据按照访问频率的高低分类,可以分为热数据、冷数据以及归档数据。同样将本地磁盘按照性能等级高低依次分为1级、2级、3级等,例如SSD为1级,SMR阵列为2级,SMR独立磁盘为3级,热数据优先存储到1级硬盘中,冷数据优先存储到2级硬盘中,归档数据优先存储到3级硬盘之中。这样在确定目标对象时,先确定所述对象分配请求对应的所述请求对象容量、以及待存储数据的数据类型,然后如果本地存在多种类型的硬盘,则根据所述数据类型和硬盘性能级别确定出用于存储所述待存储数据的目标硬盘,在根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象。如果由于目标硬盘的空闲空间不够,则将所述目标硬盘的空闲最小分配单元集合中的全部最小分配单元以及比所述目标硬盘的性能级别高的硬盘中的空闲最小分配单元作为所述目标对象。如果目标硬盘的空闲空间不够,且没有比所述目标硬盘的性能更好的硬盘空闲,则分配失败。具体的,由于所述目标硬盘的资源不够导致分配失败,则将剩余的资源全部预分配给该对象,短缺的资源在更高级性能资源中分配,重复分配流程;如果最终分配成功,则将预分配转给正式分配,结束流程。否则回退所有预分配,返回失败,流程结束。
步骤S27:将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
步骤S28:将确定出所述目标对象时的系统时间作为所述目标对象的分配时间。
在确定出所述目标对象之后,还需要将确定出所述目标对象时的系统时间作为所述目标对象的分配时间,以便将所述分配时间存储到所述存储节点管理服务器中,进行对象分配时间顺序信息维护。
步骤S29:将所述目标对象的对象标识和所述分配时间发送给所述存储节点对应的存储节点管理服务器,以便所述存储节点管理服务器根据所述分配时间将所述对象标识和所述分配时间作为一个节点插入到红黑树中,其中,所述红黑树用于维护所述存储节点管理服务器对应的存储节点中的对象分配时间顺序信息。
可以理解的是,在确定出所述分配时间之后,还需要将所述目标对象的对象标识和所述分配时间发送给所述存储节点对应的存储节点管理服务器,以便所述存储节点管理服务器根据所述分配时间将所述对象标识和所述分配时间作为一个节点插入到红黑树中,其中,所述红黑树用于维护所述存储节点管理服务器对应的存储节点中的对象分配时间顺序信息。对象分配时间信息在对象申请时产生,获取最老对象时被访问,对象释放时消亡,因此需要能快速进行时间信息的存储、访问、删除操作。具体的,所述存储节点管理服务器中的保存的一颗红黑树中存储了器自身管理的全部存储节点上的目标对象的分配时间。获取当前系统时间作为本对象的分配时间AllocTime,将对象唯一标示ObjectId和AllocTime组合为一个红黑树节点,以AllocTime为比较的关键值,将节点插入红黑树中。同时,对象的ObjectId和AllocTime等信息还要保存至资源的元数据区域。红黑树插入操作的时间复杂度为O(logn),其中,n表示所述红黑树的节点个数。具体的,就是在获取当前系统时间作为本对象的分配时间AllocTime之后,将所述分配时间按照预设对应规则转化成一个整数,所述分配时间越往后转化的正数值越大,再将转化成整数的分配时间作为比较的关键值,将节点插入红黑树中。当需要寻找最老对象时,从红黑树根节点开始,循环访问左子树直到叶子节点,则叶子节点对应的对象为最老对象,红黑树查找操作的时间复杂度为O(logn)。当需要释放对象:根据待删除对象的ObjectId从元数据中获取对象的分配时间AllocTime,由AllocTime删除红黑树中的对应节点,红黑树删除操作的时间复杂度为O(logn)。对象存储系统启动初始化阶段时,遍历资源的元数据区域,根据所有对象的AllocTime构建初始状态的红黑树,相应的时间复杂度为O(n*logn)。这样基于红黑树的对象分配时间顺序信息维护方法,即满足了安防业务的感知对象分配时间顺序的需求,又不会给对象申请、删除操作带来较大的性能损害。参见图4所示,为红黑树示意图。其中,分配时间为“60”为比较的参考点,图中分配时间为“56、43、49、68”的节点为红节点,其余为黑节点。
参见图5所示,本申请实施例公开了一种数据存储装置,应用于对象存储系统中的存储节点,包括:
请求获取模块11,用于获取目标用户触发的对象分配请求;
对象确定模块12,用于根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值;
数据存储模块13,用于将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
可见,本申请先获取目标用户触发的对象分配请求,然后根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值,接着将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。在获取到对象分配请求之后,便可以根据本地空闲的最小分配单元中确定出整数个最小分配单元作为对象分配给所述对象分配请求对应的用户,且分配给用户的对象的总容量为不小于用户请求容量的最小值,这样能够根据最小分配单元进行存储对象分配,且在满足用户需求的同时尽量减少资源浪费,避免不同对象之间的耦合。
进一步的,所述数据存储装置,还包括:
指令接收模块,用于接收存储节点管理服务器发送的硬盘类型查询指令;
第二信息发送模块,用于根据所述硬盘类型查询指令,将本地的硬盘类型信息返回给所述存储节点管理服务器;
第一信息接收模块,用于接收所述存储节点管理服务器根据所述硬盘类型信息发送的逻辑资源创建请求;
逻辑资源创建模块,用于根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分成不同的基本存储单元,以便在进行存储对象分配时将所述基本存储单元作为最小分配单元。
进一步的,所述数据存储装置,还包括:
第三信息发送模块,用于向所述存储节点管理服务器反馈逻辑资源创建成功信息;
第二信息接收模块,用于接收所述存储节点管理服务器根据所述逻辑资源创建成功信息发送的本地对应的基本存储单元信息;
信息存储模块,用于将所述基本存储单元信息存储到本地,以便根据所述基本存储单元信息进行存储分配。
进一步的,所述数据存储装置,还包括:
时间确定模块,用于将确定出所述目标对象时的系统时间作为所述目标对象的分配时间;
第一信息发送模块,用于将所述目标对象的对象标识和所述分配时间发送给所述存储节点对应的存储节点管理服务器,以便所述存储节点管理服务器根据所述分配时间将所述对象标识和所述分配时间作为一个节点插入到红黑树中,其中,所述红黑树用于维护所述存储节点管理服务器对应的存储节点中的对象分配时间顺序信息。
具体的,所述对象确定模块12,包括:
容量确定单元,用于确定所述对象分配请求对应的所述请求对象容量;
第一对象确定单元,用于根据所述请求对象容量和所述预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象。
具体的,所述对象确定模块12,包括:
信息确定单元,用于确定所述对象分配请求对应的所述请求对象容量、以及待存储数据的数据类型;
硬盘确定单元,用于根据所述数据类型、本地硬盘的硬盘类型信息以及预设硬盘性能级别,确定出用于存储所述待存储数据的目标硬盘;
第二对象确定单元,用于根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象。
进一步的,所述第二对象确定单元,具体用于在所述目标硬盘的空闲最小分配单元集合中各个最小分配单元的总容量小于所述请求对象容量时,则将所述目标硬盘的空闲最小分配单元集合中的全部最小分配单元以及比所述目标硬盘的性能级别高的硬盘中的空闲最小分配单元作为所述目标对象。
进一步的,参见图6所示,本申请实施例还公开了一种数据存储设备,包括:处理器21和存储器22。
其中,所述存储器22,用于存储计算机程序;所述处理器21,用于执行所述计算机程序,以实现前述实施例中公开的数据存储方法。
其中,关于上述数据存储方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
参见图7所示,为本申请实施例提供的一种电子设备20的结构示意图,电子设备20可以实现前述实施例中公开的数据存储方法。
通常,本实施例中的电子设备20包括前述实施例中公开的处理器21和存储器22。
其中,处理器21可以包括一个或多个处理核心,比如四核心处理器、八核心处理器等。处理器21可以采用DSP(digital signal processing,数字信号处理)、FPGA(field-programmable gate array,现场可编程们阵列)、PLA(programmable logic array,可编程逻辑阵列)中的至少一种硬件来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(central processing unit,中应处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有GPU(graphics processing unit,图像处理器),GPU用于负责显示屏所需要显示的图像的渲染和绘制。一些实施例中,处理器21可以包括AI(artificialintelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器22可以包括一个或多个计算机可读存储介质,计算机可读存储介质可以是非暂态的。存储器22还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器22至少用于存储以下计算机程序221,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例中公开的数据存储方法步骤。另外,存储器22所存储的资源还可以包括操作系统222和数据223等,存储方式可以是短暂存储也可以是永久存储。其中,操作系统222可以是Windows、Unix、Linux等。数据223可以包括各种各样的数据。
在一些实施例中,电子设备20还可包括有显示屏23、输入输出接口24、通信接口25、传感器26、电源27以及通信总线28。
本技术领域人员可以理解,图7中示出的结构并不构成对电子设备20的限定,可以包括比图示更多或更少的组件。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的数据存储方法。
其中,关于上述数据存储方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种数据存储方法、装置、设备、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据存储方法,其特征在于,应用于对象存储系统中的存储节点,包括:
获取目标用户触发的对象分配请求;
根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值;所述空闲最小分配单元集合中包含多个大小不同的基本存储单元;
将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
2.根据权利要求1所述的数据存储方法,其特征在于,所述获取目标用户触发的对象分配请求之前,还包括:
接收存储节点管理服务器发送的硬盘类型查询指令;
根据所述硬盘类型查询指令,将本地的硬盘类型信息返回给所述存储节点管理服务器;
接收所述存储节点管理服务器根据所述硬盘类型信息发送的逻辑资源创建请求;
根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分成不同的基本存储单元,以便在进行存储对象分配时将所述基本存储单元作为最小分配单元。
3.根据权利要求2所述的数据存储方法,其特征在于,所述根据所述逻辑资源创建请求在本地硬盘的空闲区域创建逻辑资源,以将所述本地硬盘的空闲区域划分成不同的基本存储单元之后,还包括:
向所述存储节点管理服务器反馈逻辑资源创建成功信息;
接收所述存储节点管理服务器根据所述逻辑资源创建成功信息发送的本地对应的基本存储单元信息;
将所述基本存储单元信息存储到本地,以便根据所述基本存储单元信息进行存储分配。
4.根据权利要求1所述的数据存储方法,其特征在于,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象之后,还包括:
将确定出所述目标对象时的系统时间作为所述目标对象的分配时间;
将所述目标对象的对象标识和所述分配时间发送给所述存储节点对应的存储节点管理服务器,以便所述存储节点管理服务器根据所述分配时间将所述对象标识和所述分配时间作为一个节点插入到红黑树中,其中,所述红黑树用于维护所述存储节点管理服务器对应的存储节点中的对象分配时间顺序信息。
5.根据权利要求1至4任一项所述的数据存储方法,其特征在于,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,包括:
确定所述对象分配请求对应的所述请求对象容量;
根据所述请求对象容量和所述预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象。
6.根据权利要求1至4任一项所述的数据存储方法,其特征在于,所述根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,包括:
确定所述对象分配请求对应的所述请求对象容量、以及待存储数据的数据类型;
根据所述数据类型、本地硬盘的硬盘类型信息以及预设硬盘性能级别,确定出用于存储所述待存储数据的目标硬盘;
根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象。
7.根据权利要求6所述的数据存储方法,其特征在于,所述根据所述请求对象容量和所述预设对象分配方法从所述目标硬盘的空闲最小分配单元集合中确定出目标对象的过程中,还包括:
如果所述目标硬盘的空闲最小分配单元集合中各个最小分配单元的总容量小于所述请求对象容量,则将所述目标硬盘的空闲最小分配单元集合中的全部最小分配单元以及比所述目标硬盘的性能级别高的硬盘中的空闲最小分配单元作为所述目标对象。
8.一种数据存储装置,其特征在于,应用于对象存储系统中的存储节点,包括:
请求获模块,用于获取目标用户触发的对象分配请求;
对象确定模块,用于根据所述对象分配请求和预设对象分配方法从本地的空闲最小分配单元集合中确定出目标对象,其中,所述目标对象的总容量大于或等于所述对象分配请求对应的请求对象容量,且所述目标对象的总容量为所述空闲最小分配单元集合中满足所述对象分配请求的各个对象的总容量中的最小值;所述空闲最小分配单元集合中包含多个大小不同的基本存储单元;
数据存储模块,用于将获取到的、与所述对象分配请求对应的待存储数据存储到所述目标对象中。
9.一种数据存储设备,其特征在于,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现权利要求1至7任一项所述的数据存储方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010461877.6A CN113741787B (zh) | 2020-05-27 | 2020-05-27 | 一种数据存储方法、装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010461877.6A CN113741787B (zh) | 2020-05-27 | 2020-05-27 | 一种数据存储方法、装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113741787A CN113741787A (zh) | 2021-12-03 |
CN113741787B true CN113741787B (zh) | 2024-04-05 |
Family
ID=78723799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010461877.6A Active CN113741787B (zh) | 2020-05-27 | 2020-05-27 | 一种数据存储方法、装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113741787B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048572A1 (en) * | 2011-09-30 | 2013-04-04 | Netapp, Inc. | Collaborative management of shared resources |
CN107273061A (zh) * | 2017-07-12 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种固态硬盘创建多namespace的方法及系统 |
CN109992536A (zh) * | 2018-01-03 | 2019-07-09 | 华为技术有限公司 | 数据处理方法、固态硬盘以及计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010257274A (ja) * | 2009-04-27 | 2010-11-11 | Hitachi Ltd | 仮想化環境におけるストレージ管理システム及びストレージ管理方法 |
-
2020
- 2020-05-27 CN CN202010461877.6A patent/CN113741787B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048572A1 (en) * | 2011-09-30 | 2013-04-04 | Netapp, Inc. | Collaborative management of shared resources |
CN107273061A (zh) * | 2017-07-12 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种固态硬盘创建多namespace的方法及系统 |
CN109992536A (zh) * | 2018-01-03 | 2019-07-09 | 华为技术有限公司 | 数据处理方法、固态硬盘以及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113741787A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
US11853549B2 (en) | Index storage in shingled magnetic recording (SMR) storage system with non-shingled region | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
WO2019062574A1 (zh) | 一种元数据查询方法及装置 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
WO2017107414A1 (zh) | 文件操作方法和装置 | |
EP2583181A2 (en) | Hierarchical allocation for file system storage device | |
CN112287182A (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
US11347711B2 (en) | Sparse infrastructure for tracking ad-hoc operation timestamps | |
WO2024078429A1 (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
WO2022120522A1 (zh) | 内存空间的分配方法、装置及存储介质 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN113568582A (zh) | 数据管理方法、装置和存储设备 | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN108984102B (zh) | 管理存储系统的方法、系统和计算机程序产品 | |
CN114327642A (zh) | 一种数据读写的控制方法及电子设备 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN115964002B (zh) | 一种电能表终端档案管理方法、装置、设备及介质 | |
CN113741787B (zh) | 一种数据存储方法、装置、设备、介质 | |
CN115878625A (zh) | 数据处理方法和装置及电子设备 | |
US20200226060A1 (en) | In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations | |
EP4318257A1 (en) | Method and apparatus for processing data, reduction server, and mapping server | |
CN115934999A (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 |