CN112698937A - 一种高效编码存储方法及装置 - Google Patents
一种高效编码存储方法及装置 Download PDFInfo
- Publication number
- CN112698937A CN112698937A CN201911013816.7A CN201911013816A CN112698937A CN 112698937 A CN112698937 A CN 112698937A CN 201911013816 A CN201911013816 A CN 201911013816A CN 112698937 A CN112698937 A CN 112698937A
- Authority
- CN
- China
- Prior art keywords
- sub
- data
- data block
- occupied
- last
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种高效编码存储方法及装置,通过对待编码条带进行横向分组获得多个子条带,并将多个子条带中本次存储数据的至少一个目标子条带的信息发送给编码管理器,编码管理器从多个CPU核中为每个目标子条带分配一个空闲的目标CPU核,由该目标CPU核对目标子条带进行编码存储。基于本发明,可以实现多个CPU核同时编码存储,最大化利用CPU的能力,大幅提高编码存储工作的效率,减少用户等待时间,提升用户体验。
Description
技术领域
本发明涉及计算机技术领域,更具体地说,涉及一种高效编码存储方法及装置。
背景技术
在分布式存储系统中,服务器集群中的所有磁盘被统一管理以4+2/6+3/8+4/等模式进行分组,以4+2模式为例,每个分组共计6个磁盘中的4个磁盘用来保存文件的原始数据、2个磁盘用来存储编码数据。每个分组中的每一磁盘被分为N个数据块,从每一磁盘中分别获得一个数据块构成一个条带,每个分组也就对应N个条带。
当一个条带中用于存储原始数据的数据块被写入原始数据时,需要对写入的原始数据进行编码,并将编码得到的编码数据存储到用于存储编码数据的数据块中。但是,现阶段一个条带独占服务器中的一个CPU核进行编码存储,即使服务器中有其他空闲的CPU核也无法参与,导致编码存储工作的效率极低,使用户等待的时间过长,影响用户体验。
发明内容
有鉴于此,为解决上述问题,本发明提供一种高效编码存储方法及装置。
技术方案如下:
一种高效编码存储方法,所述方法包括:
获取待编码条带;其中,所述待编码条带包括存储原始数据的第一数据块和用于存储编码数据的第二数据块,且所述第一数据块和所述第二数据块的存储空间大小相同;
对所述第一数据块和所述第二数据块进行横向分组得到多个子条带;其中,每个所述子条带包括存储原始数据的第一子数据块和用于存储编码数据的第二子数据块,且每个所述子条带的第一子数据块和第二子数据块的存储空间大小相同;
从所述多个子条带中确定本次存储数据的至少一个目标子条带;
将所述至少一个目标子条带的信息发送给编码管理器,以使所述编码管理器从多个CPU核中为每个所述目标子条带分配一个空闲的目标CPU核,由所述目标CPU核对相应所述目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应所述目标子条带的第二子数据块内。
优选的,所述从所述多个子条带中确定本次存储数据的至少一个目标子条带,包括:
判断本次存储数据所占的空间大小是否小于所述第一数据块的存储空间大小;
如果所述本次存储数据所占的空间大小小于所述第一数据块的存储空间大小,确定上次存储数据最后占用的第一子数据块和偏移位置,并根据所述本次存储数据所占的空间大小确定本次存储数据最后占用的第一子数据块和偏移位置;
判断所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块是否相同;
如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块相同,将所述多个子条带中位于所述上次存储数据最后占用的偏移位置与所述本次存储数据最后占用的偏移位置之间的子条带作为本次存储数据的至少一个目标子条带;
如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块不相同,将所述多个子条带中除位于所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带。
优选的,所述方法还包括:
如果所述本次存储数据所占的空间大小不小于所述第一数据块的存储空间大小,将所述多个子条带中的每个子条带作为一个目标子条带。
优选的,如果所述上次存储数据最后占用的第一子数据块与所述本次存储数据最后占用的第一子数据块不相同,所述方法还包括:
在所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置对应于相同的子条带的情况下,将对应的所述子条带划分为两个新的子条带;其中,一个新的子条带位于所述本次存储数据最后占用的偏移位置与对应的所述子条带的最小偏移位置之间,另一个新的子条带位于所述上次存储数据最后占用的偏移位置与对应的所述子条带的最大偏移位置之间。
优选的,所述将所述至少一个目标子条带的信息发送给编码管理器,包括:
将每个所述子条带中本次存储数据的存储位置发送给编码管理器。
一种高效编码存储装置,所述装置包括:
获取模块,用于获取待编码条带;其中,所述待编码条带包括存储原始数据的第一数据块和用于存储编码数据的第二数据块,且所述第一数据块和所述第二数据块的存储空间大小相同;
分组模块,用于对所述第一数据块和所述第二数据块进行横向分组得到多个子条带;其中,每个所述子条带包括存储原始数据的第一子数据块和用于存储编码数据的第二子数据块,且每个所述子条带的第一子数据块和第二子数据块的存储空间大小相同;
确定模块,用于从所述多个子条带中确定本次存储数据的至少一个目标子条带;
发送模块,用于将所述至少一个目标子条带的信息发送给编码管理器,以使所述编码管理器从多个CPU核中为每个所述目标子条带分配一个空闲的目标CPU核,由所述目标CPU核对相应所述目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应所述目标子条带的第二子数据块内。
优选的,所述确定模块,具体用于:
判断本次存储数据所占的空间大小是否小于所述第一数据块的存储空间大小;如果所述本次存储数据所占的空间大小小于所述第一数据块的存储空间大小,确定上次存储数据最后占用的第一子数据块和偏移位置,并根据所述本次存储数据所占的空间大小确定本次存储数据最后占用的第一子数据块和偏移位置;判断所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块是否相同;如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块相同,将所述多个子条带中位于所述上次存储数据最后占用的偏移位置与所述本次存储数据最后占用的偏移位置之间的子条带作为本次存储数据的至少一个目标子条带;如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块不相同,将所述多个子条带中除位于所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带。
优选的,所述确定模块,还用于:
如果所述本次存储数据所占的空间大小不小于所述第一数据块的存储空间大小,将所述多个子条带中的每个子条带作为一个目标子条带。
优选的,所述确定模块,还用于:
在所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置对应于相同的子条带的情况下,将对应的所述子条带划分为两个新的子条带;其中,一个新的子条带位于所述本次存储数据最后占用的偏移位置与对应的所述子条带的最小偏移位置之间,另一个新的子条带位于所述上次存储数据最后占用的偏移位置与对应的所述子条带的最大偏移位置之间。
优选的,所述发送模块,具体用于:
将每个所述子条带中本次存储数据的存储位置发送给编码管理器。
以上本发明提供的高效编码存储方法及装置,通过对待编码条带进行横向分组获得多个子条带,并将多个子条带中本次存储数据的至少一个目标子条带的信息发送给编码管理器,编码管理器从多个CPU核中为每个目标子条带分配一个空闲的目标CPU核,由该目标CPU核对目标子条带进行编码存储。基于本发明,可以实现多个CPU核同时编码存储,最大化利用CPU的能力,大幅提高编码存储工作的效率,减少用户等待时间,提升用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的高效编码存储方法的方法流程图;
图2为条带示意图;
图3为条带的横向分组示意图;
图4为数据存储示意图;
图5为本发明实施例提供的高效编码存储方法的部分方法流程图;
图6(a)-(d)为另一数据存储示意图;
图7为再一数据存储示意图;
图8为又一数据存储示意图;
图9为条带的划分结果示意图;
图10为本发明实施例提供的高效编码存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为方便理解,首先对编码存储相关概念进行介绍:
磁盘条带化:当多个进程同时访问磁盘时,会出现磁盘冲突。大多数磁盘系统都对访问次数(每秒的I/O操作)和数据传输率(每秒传输的数据量)有限制。当达到这些限制时,后面需要访问磁盘的进程就需要等待,这就是所谓的磁盘冲突。磁盘条带化是指利用条带化技术就是将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上去。
数据块:数据块是一组按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位。数据的物理记录,与数据的逻辑记录(逻辑上有联系,在存储器上占有一组邻接单元的数据单位)之间的对应关系有3种方式:①一个块即为一个记录;②一个块包含若干个逻辑记录;③一个逻辑记录占有几个块。数据块的大小可以是固定的或是可变的,块与块之间有间隙。设计数据块大小,受到多方面因素的影响,包括输入、输出效率,存储空间代价以及计算机应用特点等。
每一个数据块都有对应的一个索引节点,索引节点中保存有数据块的索引号,文件系统根据索引号来读取该数据块的数据。
编码制:数据存储的方式之一,编码制的数据处理方式是为了减少备份制存储的1比n(n>=1,即一份元数据,至少有一份镜像与之对应)的空间占有率,降低硬件成本,所以编码制一般是使用2:1,即元数据为2,编码后的数据为1。
本发明实施例提供一种高效编码存储方法,该方法的方法流程图如图1所示,包括如下步骤:
S10,获取待编码条带;其中,待编码条带包括存储原始数据的第一数据块和用于存储编码数据的第二数据块,且第一数据块和第二数据块的存储空间大小相同。
为方便理解,本实施例继续以4+2模式为例。图2为该模式下条带的示例,其中,块1~块4表示用于存储原始数据的第一数据块,块5~块6表示用于存储编码数据的第二数据块,块1~块6各数据块的存储空间大小相同。
S20,对第一数据块和第二数据块进行横向分组得到多个子条带;其中,每个子条带包括存储原始数据的第一子数据块和用于存储编码数据的第二子数据块,且每个子条带的第一子数据块和第二子数据块的存储空间大小相同。
本实施例中,按照预设空间大小将每个第一数据块横向分组得到多个第一子数据块,将每个第二数据块横向分组得到多个第二子数据块。将同一位置区间的第一子数据块和第二子数据块构成一个子条带。
为方便理解,本实施例继续以4+2模式为例。假设图2示出的条带中每个数据块的存储空间大小均为4M,本实施例中预设空间大小以32K为例进行说明:
如图3所示的横向分组示意图。块1~块4的[0,32K)位置区间内的4个第一子数据块与块5~块6的[0,32K)位置区间内的2个第二子数据块构成子条带1,块1~块4的[32K,64K)位置区间内的4个第一子数据块与块5~块6的[32K,64K)位置区间内的2个第二子数据块构成子条带2,……,最终可以得到128个子条带。
需要说明的是,为提高计算机处理能力,预设空间大小优选为计算机一次寻址空间的整数倍。
S30,从多个子条带中确定本次存储数据的至少一个目标子条带。
本实施例中,可以基于上次存储数据的数据位置确定上次存储数据的最后占用的第一子数据块和偏移位置,进而结合本次存储数据所占的空间大小确定本次存储数据占用的所有第一子数据块,最后将本次数据所占用的每个第一子数据块对应的子条带作为一个目标子条带。
为方便理解,本实施例继续以4+2模式为例。如图4所示的数据存储示意图,假设上次存储数据的数据位置为40K,可以确定上次存储数据最后占用的第一子数据块为块1内的子块2、且该子块2的偏移位置为40K-32K=8K。假设本次存储数据所占的空间大小为121K,则可以确定本次存储数据的数据位置为40K+121K=161K,相应的,本次存储数据的所占用的第一子数据块为块1内的区间位置[32K,64K)对应的子块2、区间位置[64K,96K)对应的子块3、区间位置[96K,128K)对应的子块4、区间位置[128K,160K)对应的子块5、区间位置[160K,192K)对应的子块6。因此,可以将块1内的子块2~子块6对应的子条带2~子条带6作为5个目标子条带。
而在其他一些实施例中,为提高确定目标子条带的运算效率,步骤S30“从多个子条带中确定本次存储数据的至少一个目标子条带”可以采用如下步骤,部分方法流程图如图5所示:
S301,判断本次存储数据所占的空间大小是否小于第一数据块的存储空间大小;若是,则执行步骤S302。
为方便理解,本实施例继续以4+2模式为例。如图6所示的数据存储示意图,在上次存储数据的基础上,本次存储数据所占的空间大小依次增加。在图6(a)中本次存储数据所占的空间大小小于4M,在图6(b)中本次存储数据所占的空间大小也小于4M,在图6(c)中本次存储数据所占的空间大小等于4M,在图6(d)中本次存储数据所占的空间大小大于4M。
由图6(a)~图6(d)可见,本次存储数据所占的空间大小不小于(大于等于)第一数据块的存储空间大小时,每个子条带均为一个目标子条带;而本次存储数据所占的空间大小小于第一数据块的存储空间大小时,则只有部分子条带可以作为目标子条带。
S302,确定上次存储数据最后占用的第一子数据块和偏移位置,并根据本次存储数据所占的空间大小确定本次存储数据最后占用的第一子数据块和偏移位置。
在执行步骤S302的过程中,可以基于上次存储数据最后占用的第一子数据块和偏移位置,进一步结合本次存储数据所占的空间大小确定本次存储数据占用的所有第一子数据块。该过程可以参加见以上步骤S30部分的描述,本实施例在此不再赘述。
进一步,基于本次存储数据占用的所有第一子数据块确定最后占用的第一子数据块和偏移位置。
为方便理解,本实施例继续以4+2模式为例。如图7所示的数据存储示意图,假设上次存储数据的数据位置为40K,可以确定上次存储数据最后占用的第一子数据块为块1内的子块2、且该子块2的偏移位置为40K-32K=8K。假设本次存储数据所占的空间大小为4060K,则可以确定本次存储数据的数据位置为40K+4060K=4100K,相应的,本次存储数据所占用的第一子数据块为块1内的区间位置[32K,64K)对应的子块2、区间位置[64K,96K)对应的子块3、……、区间位置[4064K,4096K)对应的子块128,以及块2内的区间位置[0K,32K)对应的子块1,且该块2内的子块1的偏移位置为4K。
S303,判断上次存储数据最后占用的第一子数据块对应的第一数据块与本次存储数据最后占用的第一子数据块对应的第一数据块是否相同;若是,则执行步骤S304;若否,则执行步骤S305。
本实施例中,通过判断上次存储数据最后占用的第一子数据块对应的第一数据块与本次存储数据最后占用的第一子数据块对应的第一数据块是否相同,可以确定本次存储数据是否跨数据块。参见图4所示的数据存储示意图,上次存储数据最后占用的子块2对应的第一数据块为块1、本次存储数据最后占用的子块6对应的第一数据块为块1,因此可以确定本次存储数据未跨数据块。继续参见图7所示的数据存储示意如图,上次存储数据最后占用的子块2对应的第一数据块为块1,本次存储数据最后占用的子块1对应的第一数据块为块2,因此可以确定本次存储数据跨数据块。
S304,将多个子条带中位于上次存储数据最后占用的偏移位置与本次存储数据最后占用的偏移位置之间的子条带作为本次存储数据的至少一个目标子条带。
继续参见图4所示的数据存储示意图,本次存储数据未跨数据块,因此可以将40K~161K之间的子条带,也就是子条带2、子条带3、子条带4、子条带5和子条带6作为5个目标子条带。
S305,将多个子条带中除位于本次存储数据最后占用的偏移位置与上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带。
继续参见图7所示的数据存储示意图,本次存储数据跨数据块,因此可以剔除子块1偏移位置4K~子块2偏移位置8K之间的子条带,将剩余的所有子条带作为目标子条带。而由于子块1偏移位置4K~子块2偏移位置8K之间没有子条带,因此可以将子条带1~子条带128作为128个目标子条带。
为方便理解,本实施例再举一例进行说明:如图8所示的数据存储示意图,假设上次存储数据的数据位置为72K,可以确定上次存储数据最后占用的第一子数据块为块1内的子块3、且该子块3的偏移位置为72K-64K=8K。假设本次存储数据所占的空间大小为4054K,则可以确定本次存储数据的数据位置为72K+4054K=4126K,相应的,本次存储数据所占用的第一子数据块为块1内的区间位置[64K,96K)对应的子块3、……、区间位置[4064K,4096K]对应的子块128,以及块2内的区间位置[0K,32K)对应的子块1,且该块2内的子块1的偏移位置为30K。因此可以剔除子块1偏移位置30K~子块3偏移位置8K之间的子条带,将剩余的所有子条带作为目标子条带。而由于子块1偏移位置30K~子块3偏移位置8K之间为子条带2,因此可以将子条带1、子条带3~子条带128作为127个目标子条带。
在其他一些实施例中,为剔除目标子条带中的非本次存储数据,将多个子条带中除位于本次存储数据最后占用的偏移位置与上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带之前,还可以包括如下步骤:
在本次存储数据最后占用的偏移位置与上次存储数据最后占用的偏移位置对应于相同的子条带的情况下,将对应的子条带划分为两个新的子条带;其中,一个新的子条带位于本次存储数据最后占用的偏移位置与对应的子条带的最小偏移位置之间,另一个新的子条带位于上次存储数据最后占用的偏移位置与对应的子条带的最大偏移位置之间。
为方便理解,本实施例继续以4+2模式为例。参见图6(b),可以将条带2划分为两个新的子条带a和新子条带b,划分结果参见图9。
S40,将至少一个目标子条带的信息发送给编码管理器,以使编码管理器从多个CPU核中为每个目标子条带分配一个空闲的目标CPU核,由目标CPU核对相应目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应目标子条带的第二子数据块内。
本实施例中,可以至少将目标子条带的条带标识发送给编码管理器,编码管理器为该目标子条带分配对应的目标CPU核,由该目标CPU核对相应目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应目标子条带的第二子数据块内。
优选的,还可以将目标子条带内本次存储数据的存储位置发送给编码管理器,从而由目标CPU核基于存储位置仅对本次存储数据进行编码存储,以减少目标CPU核的数据处理量。
需要说明的是,如果本次存储数据的数据量不为计算机一次寻址空间的整数倍,则可以将本次存储数据的存储位置补齐为一次寻址空间的整数倍,所补齐位置的数据为空即可。
本发明实施例提供的高效编码存储方法,通过对待编码条带进行横向分组获得多个子条带,并将多个子条带中本次存储数据的至少一个目标子条带的信息发送给编码管理器,编码管理器从多个CPU核中为每个目标子条带分配一个空闲的目标CPU核,由该目标CPU核对目标子条带进行编码存储。基于本发明,可以实现多个CPU核同时编码存储,最大化利用CPU的能力,大幅提高编码存储工作的效率,减少用户等待时间,提升用户体验。
基于上述实施例提供的高效编码存储方法,本发明实施例则对应提供执行上述高效编码存储方法的装置,该装置的结构示意图如图10所示,包括:
获取模块10,用于获取待编码条带;其中,待编码条带包括存储原始数据的第一数据块和用于存储编码数据的第二数据块,且第一数据块和第二数据块的存储空间大小相同;
分组模块20,用于对第一数据块和第二数据块进行横向分组得到多个子条带;其中,每个子条带包括存储原始数据的第一子数据块和用于存储编码数据的第二子数据块,且每个子条带的第一子数据块和第二子数据块的存储空间大小相同;
确定模块30,用于从多个子条带中确定本次存储数据的至少一个目标子条带;
发送模块40,用于将至少一个目标子条带的信息发送给编码管理器,以使编码管理器从多个CPU核中为每个目标子条带分配一个空闲的目标CPU核,由目标CPU核对相应目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应目标子条带的第二子数据块内。
可选的,确定模块30,具体用于:
判断本次存储数据所占的空间大小是否小于第一数据块的存储空间大小;如果本次存储数据所占的空间大小小于第一数据块的存储空间大小,确定上次存储数据最后占用的第一子数据块和偏移位置,并根据本次存储数据所占的空间大小确定本次存储数据最后占用的第一子数据块和偏移位置;判断上次存储数据最后占用的第一子数据块对应的第一数据块与本次存储数据最后占用的第一子数据块对应的第一数据块是否相同;如果上次存储数据最后占用的第一子数据块对应的第一数据块与本次存储数据最后占用的第一子数据块对应的第一数据块相同,将多个子条带中位于上次存储数据最后占用的偏移位置与本次存储数据最后占用的偏移位置之间的子条带作为本次存储数据的至少一个目标子条带;如果上次存储数据最后占用的第一子数据块对应的第一数据块与本次存储数据最后占用的第一子数据块对应的第一数据块不相同,将多个子条带中除位于本次存储数据最后占用的偏移位置与上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带。
可选的,确定模块30,还用于:
如果本次存储数据所占的空间大小不小于第一数据块的存储空间大小,将多个子条带中的每个子条带作为一个目标子条带。
可选的,确定模块30,还用于:
在本次存储数据最后占用的偏移位置与上次存储数据最后占用的偏移位置对应于相同的子条带的情况下,将对应的子条带划分为两个新的子条带;其中,一个新的子条带位于本次存储数据最后占用的偏移位置与对应的子条带的最小偏移位置之间,另一个新的子条带位于上次存储数据最后占用的偏移位置与对应的子条带的最大偏移位置之间。
可选的,发送模块40,具体用于:
将每个子条带中本次存储数据的存储位置发送给编码管理器。
本发明实施例提供的高效编码存储装置,通过对待编码条带进行横向分组获得多个子条带,并将多个子条带中本次存储数据的至少一个目标子条带的信息发送给编码管理器,编码管理器从多个CPU核中为每个目标子条带分配一个空闲的目标CPU核,由该目标CPU核对目标子条带进行编码存储。基于本发明,可以实现多个CPU核同时编码存储,最大化利用CPU的能力,大幅提高编码存储工作的效率,减少用户等待时间,提升用户体验。
以上对本发明所提供的一种高效编码存储方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种高效编码存储方法,其特征在于,所述方法包括:
获取待编码条带;其中,所述待编码条带包括存储原始数据的第一数据块和用于存储编码数据的第二数据块,且所述第一数据块和所述第二数据块的存储空间大小相同;
对所述第一数据块和所述第二数据块进行横向分组得到多个子条带;其中,每个所述子条带包括存储原始数据的第一子数据块和用于存储编码数据的第二子数据块,且每个所述子条带的第一子数据块和第二子数据块的存储空间大小相同;
从所述多个子条带中确定本次存储数据的至少一个目标子条带;
将所述至少一个目标子条带的信息发送给编码管理器,以使所述编码管理器从多个CPU核中为每个所述目标子条带分配一个空闲的目标CPU核,由所述目标CPU核对相应所述目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应所述目标子条带的第二子数据块内。
2.根据权利要求1所述的方法,其特征在于,所述从所述多个子条带中确定本次存储数据的至少一个目标子条带,包括:
判断本次存储数据所占的空间大小是否小于所述第一数据块的存储空间大小;
如果所述本次存储数据所占的空间大小小于所述第一数据块的存储空间大小,确定上次存储数据最后占用的第一子数据块和偏移位置,并根据所述本次存储数据所占的空间大小确定本次存储数据最后占用的第一子数据块和偏移位置;
判断所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块是否相同;
如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块相同,将所述多个子条带中位于所述上次存储数据最后占用的偏移位置与所述本次存储数据最后占用的偏移位置之间的子条带作为本次存储数据的至少一个目标子条带;
如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块不相同,将所述多个子条带中除位于所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述本次存储数据所占的空间大小不小于所述第一数据块的存储空间大小,将所述多个子条带中的每个子条带作为一个目标子条带。
4.根据权利要求2所述的方法,其特征在于,如果所述上次存储数据最后占用的第一子数据块与所述本次存储数据最后占用的第一子数据块不相同,所述方法还包括:
在所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置对应于相同的子条带的情况下,将对应的所述子条带划分为两个新的子条带;其中,一个新的子条带位于所述本次存储数据最后占用的偏移位置与对应的所述子条带的最小偏移位置之间,另一个新的子条带位于所述上次存储数据最后占用的偏移位置与对应的所述子条带的最大偏移位置之间。
5.根据权利要求1所述的方法,其特征在于,所述将所述至少一个目标子条带的信息发送给编码管理器,包括:
将每个所述子条带中本次存储数据的存储位置发送给编码管理器。
6.一种高效编码存储装置,其特征在于,所述装置包括:
获取模块,用于获取待编码条带;其中,所述待编码条带包括存储原始数据的第一数据块和用于存储编码数据的第二数据块,且所述第一数据块和所述第二数据块的存储空间大小相同;
分组模块,用于对所述第一数据块和所述第二数据块进行横向分组得到多个子条带;其中,每个所述子条带包括存储原始数据的第一子数据块和用于存储编码数据的第二子数据块,且每个所述子条带的第一子数据块和第二子数据块的存储空间大小相同;
确定模块,用于从所述多个子条带中确定本次存储数据的至少一个目标子条带;
发送模块,用于将所述至少一个目标子条带的信息发送给编码管理器,以使所述编码管理器从多个CPU核中为每个所述目标子条带分配一个空闲的目标CPU核,由所述目标CPU核对相应所述目标子条带的第一子数据块内的数据进行编码、并将编码结果存储于相应所述目标子条带的第二子数据块内。
7.根据权利要求6所述的装置,其特征在于,所述确定模块,具体用于:
判断本次存储数据所占的空间大小是否小于所述第一数据块的存储空间大小;如果所述本次存储数据所占的空间大小小于所述第一数据块的存储空间大小,确定上次存储数据最后占用的第一子数据块和偏移位置,并根据所述本次存储数据所占的空间大小确定本次存储数据最后占用的第一子数据块和偏移位置;判断所述上次存储数据最后子数据块对应的第一数据块是否相同;如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一对应的第一数据块相同,将所述多个子条带中位于所述上次存储数据最后占用的偏移位置与所述本次存储数据最后占用的偏移位置之间的子条带作为本次存储数据的至少一个目标子条带;如果所述上次存储数据最后占用的第一子数据块对应的第一数据块与所述本次存储数据最后占用的第一子数据块对应的第一数据块不相同,将所述多个子条带中除位于所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置之间的子条带所剩余的子条带作为本次存储数据的至少一个目标子条带。
8.根据权利要求7所述的装置,其特征在于,所述确定模块,还用于:
如果所述本次存储数据所占的空间大小不小于所述第一数据块的存储空间大小,将所述多个子条带中的每个子条带作为一个目标子条带。
9.根据权利要求7所述的装置,其特征在于,所述确定模块,还用于:
在所述本次存储数据最后占用的偏移位置与所述上次存储数据最后占用的偏移位置对应于相同的子条带的情况下,将对应的所述子条带划分为两个新的子条带;其中,一个新的子条带位于所述本次存储数据最后占用的偏移位置与对应的所述子条带的最小偏移位置之间,另一个新的子条带位于所述上次存储数据最后占用的偏移位置与对应的所述子条带的最大偏移位置之间。
10.根据权利要求6所述的装置,其特征在于,所述发送模块,具体用于:
将每个所述子条带中本次存储数据的存储位置发送给编码管理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911013816.7A CN112698937A (zh) | 2019-10-23 | 2019-10-23 | 一种高效编码存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911013816.7A CN112698937A (zh) | 2019-10-23 | 2019-10-23 | 一种高效编码存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112698937A true CN112698937A (zh) | 2021-04-23 |
Family
ID=75505307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911013816.7A Pending CN112698937A (zh) | 2019-10-23 | 2019-10-23 | 一种高效编码存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698937A (zh) |
-
2019
- 2019-10-23 CN CN201911013816.7A patent/CN112698937A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5802599A (en) | System and method for allocating storage in a fragmented storage space | |
US7236992B2 (en) | Storage system | |
US8489555B2 (en) | Method of managing storage and retrieval of data objects | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
CN101567003A (zh) | 并行文件系统中资源的管理和分配方法 | |
CN106970765B (zh) | 数据存储方法及装置 | |
JPH11191267A (ja) | 圧縮データ・レコードの格納のためにディスク記憶空間を割り振るための方法および記憶媒体 | |
US20190026317A1 (en) | Memory use in a distributed index and query system | |
US10649967B2 (en) | Memory object pool use in a distributed index and query system | |
CN103617133B (zh) | 一种Windows系统中虚拟内存压缩方法和装置 | |
CN109558456A (zh) | 一种文件迁移方法、装置、设备及可读存储介质 | |
US11287996B2 (en) | Method, device and computer program product for storing data | |
CN111190537B (zh) | 一种追加写场景下顺序存储磁盘管理的方法及系统 | |
CN108958660B (zh) | 分布式存储系统及其数据处理方法和装置 | |
CN107423425A (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN109753224B (zh) | 存储结构及存储结构配置方法 | |
EP0694831A2 (en) | Computer system having storage unit provided with data compression function andmethod of management of storage area thereof | |
CN116009761A (zh) | 一种数据写入方法以及相关设备 | |
US10311026B2 (en) | Compressed data layout for optimizing data transactions | |
CN112698937A (zh) | 一种高效编码存储方法及装置 | |
CN116700606A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN111597129A (zh) | 缓存管理方法、装置、存储介质和固态非易失存储设备 | |
US7565483B2 (en) | Method and apparatus for exchanging data with a hard disk | |
CN115639968A (zh) | 一种对raid的容量空间的分配方法、装置、设备及介质 | |
CN109960588B (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 |