CN116893786B - 一种数据处理方法、装置、电子设备及存储介质 - Google Patents
一种数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116893786B CN116893786B CN202311134632.2A CN202311134632A CN116893786B CN 116893786 B CN116893786 B CN 116893786B CN 202311134632 A CN202311134632 A CN 202311134632A CN 116893786 B CN116893786 B CN 116893786B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- target
- subtree
- determining
- 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
- 238000003672 processing method Methods 0.000 title abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000011010 flushing procedure Methods 0.000 claims description 49
- 230000001680 brushing effect Effects 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 14
- 238000010276 construction Methods 0.000 claims description 9
- 230000001960 triggered effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/064—Management of blocks
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种数据处理方法、装置、电子设备及存储介质,该方法包括:获取磁盘阵列的写操作数据;其中,写操作数据包括磁盘请求信息和缓存数据;根据磁盘请求信息,确定缓存数据的目标存储块;根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树;将缓存数据写入目标缓存子树。上述方案提供的方法,通过将不同写操作产生的缓存数据分散存储至不同的若干个缓存子树,进行一个写操作仅需要锁定对应的目标缓存子树,即便此时写操作请求较多,也不会造成写操作请求堵塞,提高了RAID卡的I/O性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
目前,存储服务器普遍采用磁盘阵列(Redundant Arrays of IndependentDisks,简称:RAID)对数据进行存储,这是一种既可以提高数据读写效率,又可以提供数据冗余能力的存储方法。
在现有技术中,通常基于RAID卡实现写操作的缓存,针对写操作产生的缓存数据,将以二叉树的结构进行存储,经过多次写操作将形成一个包括多个节点的二叉树,一个缓存数据对应一个二叉树节点,然后再按照预设的磁盘下刷规则,将该二叉树当前保存的缓存数据下刷至磁盘。
但是,由于存储服务器可能会出现多个用户同时访问的情况,因此为避免发生冲突,在任一用户进行写操作时,将对该二叉树进行加锁,若此时写操作请求较多,将造成写操作请求堵塞,也就降低了RAID卡的I/O性能。
发明内容
本申请提供一种数据处理方法、装置、电子设备及存储介质,以解决现有技术在写操作请求较多,将造成写操作请求堵塞,降低了RAID卡的I/O性能等缺陷。
本申请第一个方面提供一种数据处理方法,包括:
获取磁盘阵列的写操作数据;其中,所述写操作数据包括磁盘请求信息和缓存数据;
根据所述磁盘请求信息,确定所述缓存数据的目标存储块;
根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树;
将所述缓存数据写入所述目标缓存子树。
在一种可选的实施方式中,所述磁盘请求信息包括第一逻辑区块地址,所述根据所述磁盘请求信息,确定所述缓存数据的目标存储块,包括:
根据所述第一逻辑区块地址,确定所述缓存数据的目标存储空间;
根据所述目标存储空间的存储块划分情况,确定所述目标存储空间中各存储块对应的地址区间;
根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的目标存储块。
在一种可选的实施方式中,所述磁盘请求信息还包括缓存数据长度,所述根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的目标存储块,包括:
根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的起始存储块;
根据所述第一逻辑区块地址和缓存数据长度,判断所述缓存数据的目标存储块的数量是否为1;
当确定所述缓存数据的目标存储块的数量为1时,将所述起始存储块作为所述缓存数据的目标存储块。
在一种可选的实施方式中,所述根据所述第一逻辑区块地址和缓存数据长度,判断所述缓存数据的目标存储块的数量是否为1,包括:
根据所述第一逻辑区块地址和所述起始存储块的地址区间,确定所述起始存储块的缓存空间;
当所述起始存储块的缓存空间不小于所述缓存数据长度时,确定所述缓存数据的目标存储块的数量为1。
在一种可选的实施方式中,所述方法还包括:
当所述起始存储块的缓存空间小于所述缓存数据长度时,确定所述缓存数据的目标存储块的数量不为1。
在一种可选的实施方式中,所述方法还包括:
当确定所述缓存数据的目标存储块的数量不为1时,将所述缓存数据拆分为若干个连续的子缓存数据;
将所述起始存储块及与所述起始存储块相连续的若干个存储块作为各所述子缓存数据对应的目标存储块。
在一种可选的实施方式中,所述将所述缓存数据拆分为若干个连续的子缓存数据,包括:
根据所述缓存数据长度与所述起始存储块的缓存空间之间的差值,确定剩余数据量;
根据所述剩余数据量及各所述存储块的额定空间大小,确定目标存储块的数量;
根据所述目标存储块的数量,将所述缓存数据拆分为若干个连续的子缓存数据。
在一种可选的实施方式中,在根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树之前,所述方法还包括:
获取存储块划分信息;
按照预设的缓存子树分配标准,根据所述存储块划分信息表征的各所述存储块之间的排列关系,确定各缓存子树与存储块之间的对应关系。
在一种可选的实施方式中,所述预设的缓存子树分配标准包括任一所述缓存子树对应的若干个存储块不相邻。
在一种可选的实施方式中,所述将所述缓存数据写入所述目标缓存子树,包括:
按照预设子树构造标准,根据所述目标缓存子树的当前组成信息及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中所对应的目标子节点;
将所述缓存数据写入所述目标子节点。
在一种可选的实施方式中,所述根据所述目标缓存子树的当前组成信息及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中所对应的目标子节点,包括:
根据所述目标缓存子树的当前组成信息表征的各节点当前存储的历史缓存数据对应的第二逻辑区块地址及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中的目标路径;
根据所述目标路径,确定缓存数据在所述目标缓存子树中所对应的目标子节点。
在一种可选的实施方式中,在将所述缓存数据写入所述目标子节点之后,所述方法还包括:
校验所述目标缓存子树是否满足预设子树规则;
若所述目标缓存子树不满足预设子树规则,则对所述目标子节点所对应的节点区域进行节点旋转操作。
在一种可选的实施方式中,所述方法还包括:
当触发所述磁盘阵列的缓存数据下刷进程时,遍历各所述缓存子树,确定各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
按照所述第二逻辑区块地址从小到大的顺序,将所述待下刷缓存数据下刷至对应的目标磁盘。
在一种可选的实施方式中,所述遍历各所述缓存子树,确定各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据,包括:
对各所述缓存子树进行中序遍历,以得到各所述缓存子树的中序遍历结果;
根据各所述缓存子树的中序遍历结果,构造各所述缓存子树对应的缓存数据子队列;
将各所述缓存数据子队列的头指针指向的待下刷缓存数据,作为各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
其中,在所述中序遍历结果中所述待下刷缓存数据按照所述第二逻辑区块地址从小到大排序。
在一种可选的实施方式中,所述按照所述第二逻辑区块地址从小到大的顺序,将所述待下刷缓存数据下刷至对应的目标磁盘,包括:
比较各所述缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果;
根据所述第二逻辑区块地址比较结果,确定全局最小第二逻辑区块地址及所述全局最小第二逻辑区块地址对应的目标缓存数据子队列;
下刷所述全局最小第二逻辑区块地址对应的待下刷缓存数据;
控制所述目标缓存数据子队列的头指针向后移动一节点,并返回至所述比较各所述缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果的步骤。
在一种可选的实施方式中,所述下刷所述全局最小第二逻辑区块地址对应的待下刷缓存数据,包括:
将所述全局最小第二逻辑区块地址对应的待下刷缓存数据,添加至下刷队列;
当所述下刷队列满足预设下刷条件时,下刷所述下刷队列中的待下刷缓存数据。
在一种可选的实施方式中,所述方法还包括:
若所述下刷队列中存储的待下刷缓存数据的数量达到预设数量阈值,则确定所述下刷队列满足预设下刷条件。
本申请第二个方面提供一种数据处理装置,包括:
获取模块,用于获取磁盘阵列的写操作数据;其中,所述写操作数据包括磁盘请求信息和缓存数据;
确定模块,用于根据所述磁盘请求信息,确定所述缓存数据的目标存储块;
对应模块,用于根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树;
处理模块,用于将所述缓存数据写入所述目标缓存子树。
在一种可选的实施方式中,所述磁盘请求信息包括第一逻辑区块地址,所述确定模块,具体用于:
根据所述第一逻辑区块地址,确定所述缓存数据的目标存储空间;
根据所述目标存储空间的存储块划分情况,确定所述目标存储空间中各存储块对应的地址区间;
根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的目标存储块。
在一种可选的实施方式中,所述磁盘请求信息还包括缓存数据长度,所述确定模块,具体用于:
根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的起始存储块;
根据所述第一逻辑区块地址和缓存数据长度,判断所述缓存数据的目标存储块的数量是否为1;
当确定所述缓存数据的目标存储块的数量为1时,将所述起始存储块作为所述缓存数据的目标存储块。
在一种可选的实施方式中,所述确定模块,具体用于:
根据所述第一逻辑区块地址和所述起始存储块的地址区间,确定所述起始存储块的缓存空间;
当所述起始存储块的缓存空间不小于所述缓存数据长度时,确定所述缓存数据的目标存储块的数量为1。
在一种可选的实施方式中,所述确定模块,还用于:
当所述起始存储块的缓存空间小于所述缓存数据长度时,确定所述缓存数据的目标存储块的数量不为1。
在一种可选的实施方式中,所述确定模块,还用于:
当确定所述缓存数据的目标存储块的数量不为1时,将所述缓存数据拆分为若干个连续的子缓存数据;
将所述起始存储块及与所述起始存储块相连续的若干个存储块作为各所述子缓存数据对应的目标存储块。
在一种可选的实施方式中,所述确定模块,具体用于:
根据所述缓存数据长度与所述起始存储块的缓存空间之间的差值,确定剩余数据量;
根据所述剩余数据量及各所述存储块的额定空间大小,确定目标存储块的数量;
根据所述目标存储块的数量,将所述缓存数据拆分为若干个连续的子缓存数据。
在一种可选的实施方式中,所述对应模块,还用于:
在根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树之前,获取存储块划分信息;
按照预设的缓存子树分配标准,根据所述存储块划分信息表征的各所述存储块之间的排列关系,确定各缓存子树与存储块之间的对应关系。
在一种可选的实施方式中,所述预设的缓存子树分配标准包括任一所述缓存子树对应的若干个存储块不相邻。
在一种可选的实施方式中,所述处理模块,具体用于:
按照预设子树构造标准,根据所述目标缓存子树的当前组成信息及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中所对应的目标子节点;
将所述缓存数据写入所述目标子节点。
在一种可选的实施方式中,所述处理模块,具体用于:
根据所述目标缓存子树的当前组成信息表征的各节点当前存储的历史缓存数据对应的第二逻辑区块地址及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中的目标路径;
根据所述目标路径,确定缓存数据在所述目标缓存子树中所对应的目标子节点。
在一种可选的实施方式中,所述处理模块,还用于:
在将所述缓存数据写入所述目标子节点之后,校验所述目标缓存子树是否满足预设子树规则;
若所述目标缓存子树不满足预设子树规则,则对所述目标子节点所对应的节点区域进行节点旋转操作。
在一种可选的实施方式中,所述装置还包括:
下刷模块,用于当触发所述磁盘阵列的缓存数据下刷进程时,遍历各所述缓存子树,确定各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据;按照所述第二逻辑区块地址从小到大的顺序,将所述待下刷缓存数据下刷至对应的目标磁盘。
在一种可选的实施方式中,所述下刷模块,具体用于:
对各所述缓存子树进行中序遍历,以得到各所述缓存子树的中序遍历结果;
根据各所述缓存子树的中序遍历结果,构造各所述缓存子树对应的缓存数据子队列;
将各所述缓存数据子队列的头指针指向的待下刷缓存数据,作为各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
其中,在所述中序遍历结果中所述待下刷缓存数据按照所述第二逻辑区块地址从小到大排序。
在一种可选的实施方式中,所述下刷模块,具体用于:
比较各所述缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果;
根据所述第二逻辑区块地址比较结果,确定全局最小第二逻辑区块地址及所述全局最小第二逻辑区块地址对应的目标缓存数据子队列;
下刷所述全局最小第二逻辑区块地址对应的待下刷缓存数据;
控制所述目标缓存数据子队列的头指针向后移动一节点,并返回至所述比较各所述缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果的步骤。
在一种可选的实施方式中,所述下刷模块,具体用于:
将所述全局最小第二逻辑区块地址对应的待下刷缓存数据,添加至下刷队列;
当所述下刷队列满足预设下刷条件时,下刷所述下刷队列中的待下刷缓存数据。
在一种可选的实施方式中,所述下刷模块,还用于:
若所述下刷队列中存储的待下刷缓存数据的数量达到预设数量阈值,则确定所述下刷队列满足预设下刷条件。
本申请第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请技术方案,具有如下优点:
本申请提供一种数据处理方法、装置、电子设备及存储介质,该方法包括:获取磁盘阵列的写操作数据;其中,写操作数据包括磁盘请求信息和缓存数据;根据磁盘请求信息,确定缓存数据的目标存储块;根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树;将缓存数据写入目标缓存子树。上述方案提供的方法,通过将不同写操作产生的缓存数据分散存储至不同的若干个缓存子树,进行一个写操作仅需要锁定对应的目标缓存子树,即便此时写操作请求较多,也不会造成写操作请求堵塞,提高了RAID卡的I/O性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例基于的数据处理***的结构示意图;
图2为本申请实施例提供的数据处理方法的流程示意图;
图3为本申请实施例提供的磁盘存储块划分逻辑图;
图4为本申请实施例提供的缓存子树分配逻辑图;
图5为本申请实施例提供的示例性的缓存子树的结构示意图;
图6为本申请实施例提供的示例性的节点旋转逻辑图;
图7为本申请实施例提供的示例性的缓存数据下刷逻辑图;
图8为本申请实施例提供的数据处理方法的整体流程示意图;
图9为本申请实施例提供的数据处理装置的结构示意图;
图10为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
RAID:磁盘阵列(Redundant Arrays of Independent Disks,简称:RAID),独立磁盘组成的具有冗余性的阵列,利用成员磁盘组成的冗余阵列可以有效提高数据可靠性和I/O性能。利用这项技术,将数据切割成许多区段,分别存放在各个磁盘上。RAID卡是一种可以创建硬盘RAID组的设备,通过多盘并行访问,可以提高数据的访问速度,同时提供了对数据进行冗余纠错的能力。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
随着大数据以及人工智能技术的快速发展,互联网中的数据也越来越多样化。另外网民数量在近十年也出现了前所未有的增长,随着网民数量越来越多,互联网企业的访问量骤增,这给企业带来了前所未有的挑战。
企业通常使用专用的存储服务器对用户数据进行存储,并对外提供访问服务。如今一些大的企业,存储服务器的数量会达到几百万台。如何更好的利用这些存储资源,是每个企业都在砥砺研究的一个技术方向。其中RAID是这个过程中发展较好的一种存储方式和架构。RAID是一种多硬盘管理方法,它通过将多块盘组成不同的RAID阵列并将数据条带化存储,提高了数据的并发访问速度。同时,部分RAID阵列提供了冗余功能,它能够在部分盘坏掉的情况下对整体数据进行恢复,极大地增加了数据存储的安全性。较早的时候,RAID功能是纯软件实现的,使用的通用CPU的算力,在中后期的发展中慢慢的发展出来专门提供RAID功能的RAID卡,RAID卡将RAID功能中的大部分计算实现以硬件方式完成,既提高了速度,也降低了功耗。如今,RAID卡已成为存储服务器中必不可少的一个存储组件。
在现有技术中,通常基于RAID卡实现写操作的缓存,针对写操作产生的缓存数据,将以二叉树的结构进行存储,经过多次写操作将形成一个包括多个节点的二叉树,一个缓存数据对应一个二叉树节点,然后再按照预设的下盘规则,将该二叉树当前保存的缓存数据下刷至磁盘。
但是,由于存储服务器可能会出现多个用户同时访问的情况,因此为避免发生冲突,在任一用户进行写操作时,将对该二叉树进行加锁,若此时写操作请求较多,将造成写操作请求堵塞,也就降低了RAID卡的I/O性能。
针对上述问题,本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,该方法包括:获取磁盘阵列的写操作数据;其中,写操作数据包括磁盘请求信息和缓存数据;根据磁盘请求信息,确定缓存数据的目标存储块;根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树;将缓存数据写入目标缓存子树。上述方案提供的方法,通过将不同写操作产生的缓存数据分散存储至不同的若干个缓存子树,进行一个写操作仅需要锁定对应的目标缓存子树,即便此时写操作请求较多,也不会造成写操作请求堵塞,提高了RAID卡的I/O性能。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的数据处理***的结构进行说明:
本申请实施例提供的数据处理方法、装置、电子设备及存储介质,适用于处理RAID缓存数据。如图1所示,为本申请实施例基于的数据处理***的结构示意图,主要包括RAID卡、数据采集装置及数据处理装置。具体地,可以基于数据采集装置采集RAID卡的写操作数据,并将采集到的写操作数据发送至数据数理装置,数据处理装置根据得到的写操作数据,处理RAID卡写操作产生的缓存数据。
本申请实施例提供了一种数据处理方法,用于处理RAID缓存数据。本申请实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于处理RAID缓存数据的电子设备。
如图2所示,为本申请实施例提供的数据处理方法的流程示意图,该方法包括:
步骤201,获取磁盘阵列的写操作数据。
其中,写操作数据包括磁盘请求信息和缓存数据。
步骤202,根据磁盘请求信息,确定缓存数据的目标存储块。
其中,磁盘请求信息至少表征缓存数据的磁盘下刷需求,以指定该缓存数据的磁盘下刷区域。
需要说明的是,由于RAID卡涉及多个磁盘,针对任一磁盘,可以预先将该磁盘划分为若干个存储块。
具体地,可以根据磁盘请求信息指定的缓存数据的磁盘下刷区域,查找该区域对应的存储块,以确定该缓存数据的目标存储块。
步骤203,根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树。
具体地,可以预设若干个缓存子树,并建立各缓存子树与存储块之间的对应关系,一个缓存子树对应多个存储块。在确定缓存数据的目标存储块后,将该目标存储块对应的缓存子树,确定为目标缓存子树。
步骤204,将缓存数据写入目标缓存子树。
具体地,可以先对目标缓存子树进行上锁操作,在缓存数据成功写入目标缓存子树后,再对目标缓存子树进行解锁。此时即便还有写操作需要进行其他缓存数据的写入,只要其他缓存数据所对应的目标缓存子树与当前缓存数据所对应的目标缓存子树不同,则不影响其他缓存数据的写入,实现了写操作的并行处理,提高了写缓存数据加入内存时的并发数,从而提高了RAID卡的I/O性能。
在上述实施例的基础上,为了提高缓存数据的处理效率,作为一种可实施的方式,在一实施例中,磁盘请求信息包括第一逻辑区块地址(LBA),根据磁盘请求信息,确定缓存数据的目标存储块,包括:
步骤2021,根据第一逻辑区块地址,确定缓存数据的目标存储空间;
步骤2022,根据目标存储空间的存储块划分情况,确定目标存储空间中各存储块对应的地址区间;
步骤2023,根据第一逻辑区块地址与各存储块所对应的地址区间之间的匹配情况,确定缓存数据的目标存储块。
其中,目标存储空间具体指缓存数据的磁盘下刷区域所属的存储空间,第一逻辑区块地址具体指写操作请求携带的写入LBA地址,也称起始逻辑区块地址。
具体地,可以根据第一逻辑区块地址,确定该缓存数据将落到磁盘的哪个存储空间,即确定缓存数据的目标存储空间。由于磁盘的每个存储空间预先被划分为若干个存储块,每个存储块包括一段连续地址,因此可以根据该目标存储空间的存储块划分情况,确定该目标存储空间中各存储块对应的地址区间,以根据第一逻辑区块地址,精确确定该缓存数据落到哪个存储块的地址区间,进而确定缓存数据的目标存储块。通过依据第一逻辑区块地址,逐级依次确定目标存储空间和目标存储块,以快速定位目标存储块,为提高缓存数据的处理效率奠定了基础。
示例性的,如图3所示,为本申请实施例提供的磁盘存储块划分逻辑图。以1T的磁盘为例,首先将其划分为1024个1G大小的存储空间,每个存储空间对应一段磁盘的连续地址,然后再将各存储空间划分为16个存储块,每个存储块64M,图3中存储空间0中的存储块0对应的地址区间为[0,63]存储块1对应的地址区间为[64,127],依次类推。若缓存数据的第一逻辑区块地址为5,则确定该缓存数据的目标存储空间为存储空间0,目标存储块为存储块0。
具体地,在一实施例中,由于每次写操作产生的缓存数据的数据量不同,在缓存数据的数据量较大时,可能会出现跨存储块的情况,因此为确保对缓存数据处理的可靠性,磁盘请求信息还包括缓存数据长度(Length),具体可以根据第一逻辑区块地址与各存储块所对应的地址区间之间的匹配情况,确定缓存数据的起始存储块;根据第一逻辑区块地址和缓存数据长度,判断缓存数据的目标存储块的数量是否为1;当确定缓存数据的目标存储块的数量为1时,将起始存储块作为缓存数据的目标存储块。
示例性的,若缓存数据的第一逻辑区块地址为43,则确定缓存数据的起始存储块为存储空间0中的存储块0,若该缓存数据长度为10M,第一逻辑区块地址和缓存数据长度之和为53,依然属于该起始缓存块的地址区间,因此确定该缓存数据的目标存储块的数量为1,进而将起始存储块作为缓存数据的目标存储块。
具体地,在一实施例中,可以根据第一逻辑区块地址和起始存储块的地址区间,确定起始存储块的缓存空间;当起始存储块的缓存空间不小于缓存数据长度时,确定缓存数据的目标存储块的数量为1。
相应地,在一实施例中,当起始存储块的缓存空间小于缓存数据长度时,确定缓存数据的目标存储块的数量不为1。
其中,起始存储块的缓存空间具体指可用于存储该缓存数据的空间。
示例性的,若缓存数据的第一逻辑区块地址为43,则确定缓存数据的起始存储块为存储空间0中的存储块0,起始存储块的地址区间为[0,63],因此确定起始存储块的缓存空间为20M,此时若起始存储块的缓存空间不小于缓存数据长度,则确定缓存数据的目标存储块的数量为1。反之,则确定缓存数据的目标存储块的数量不为1。
具体地,在一实施例中,当确定缓存数据的目标存储块的数量不为1时,将缓存数据拆分为若干个连续的子缓存数据;将起始存储块及与起始存储块相连续的若干个存储块作为各子缓存数据对应的目标存储块。
具体地,在确定缓存数据的目标存储块的数量不为1时,进一步确定目标缓存块的具体数量,进而将缓存数据拆分为相应数量的连续的子缓存数据,最后以起始存储块为首个目标存储块,将与起始存储块相连续的若干个存储块作为其他目标存储块,并将连续的子缓存数据依次分配至对应的目标存储块。
具体地,在一实施例中,为避免出现在对缓存数据进行拆分后,得到的子缓存数据依然存在跨存储块的情况,可以根据缓存数据长度与起始存储块的缓存空间之间的差值,确定剩余数据量;根据剩余数据量及各存储块的额定空间大小,确定目标存储块的数量;根据目标存储块的数量,将缓存数据拆分为若干个连续的子缓存数据。
示例性的,若确定缓存数据长度为30M,起始存储块的缓存空间为20M,则确定剩余数据量10M,由于在本申请实施例中存储块的额定空间为64M,即剩余数据量小于存储块的额定空间,因此可以确定目标存储块的数量为2,因此可以将缓存数据拆分为一份20M的子缓存数据和一份10M的子缓存数据,也可以直接对缓存数据进行均分,以均分成两份15M的子缓存数据。
其中,若确定缓存数据的目标存储块的数量为2,目标存储块分别为存储空间0中的存储块0和存储块1,则可以根据存储块0(起始存储块)的缓存空间,将该缓存数据差分为两份子缓存数据,分别为与起始缓存块的缓存空间相应大小的第一子缓存数据及剩余数据量的第二子缓存数据,最后将存储块0作为第一子缓存数据的目标存储块,将存储块1作为第二子缓存数据的目标存储块。
需要说明的是,在RAID写操作的第一逻辑区块地址随机的情况下,数据在磁盘中散列分布,此时目标存储块的具体数量也可以根据后续存储块的缓存空间设定,例如与起始存储块相邻的存储块的存储空间仅有5M,小于剩余数据量,则确定目标存储块的数量大于2。缓存数据的具体拆分逻辑可以根据缓存数据长度及起始存储块的缓存空间大小灵活设定,但需保证拆分后的子缓存数据不会出现跨存储块的情况,以避免进行二次拆分。
在上述实施例的基础上,为了进一步提高缓存数据的处理效率,作为一种可实施的方式,在一实施例中,在根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树之前,该方法还包括:
步骤301,获取存储块划分信息;
步骤302,按照预设的缓存子树分配标准,根据存储块划分信息表征的各存储块之间的排列关系,确定各缓存子树与存储块之间的对应关系。
其中,预设的缓存子树分配标准包括任一缓存子树对应的若干个存储块不相邻。
示例性的,若存储块划分信息表征将1G的存储空间划分为16个64M的存储块,则确定各存储块之间的排列关系为4×4阵列,进而以任一缓存子树对应的若干个存储块不相邻的缓存子树分配标准,确定各缓存子树与存储块之间的对应关系。其中,通过采用任一缓存子树对应的若干个存储块不相邻的缓存子树分配标准,尽可能使连续发起的写操作对应不同的缓存子树,提高了写操作的并发数,进而提高了缓存数据的处理效率。
示例性的,如图4所示,为本申请实施例提供的缓存子树分配逻辑图,采用的缓存子树的数量可以根据实际的缓存数据管理需求设定,本申请实施例以采用5个缓存子树为例,分别为缓存子树0、缓存子树1、缓存子树2、缓存子树3和缓存子树4,存储空间0和存储空间1中的存储块均呈4×4阵列分布,存储块编号为0~15。为实现任一缓存子树对应的若干个存储块不相邻,在存储空间0中,可以将编号0、5、11和15的存储块分配至缓存子树0,将编号1、6和11的存储块分配至缓存子树1,将编号2、7和12的存储块分配至缓存子树2,将编号3、8和13的存储块分配至缓存子树3,将编号4、9和14的存储块分配至缓存子树4。为确保每个缓存子树分配的存储块数量接近相等,每个存储空间对应的存储子树分配逻辑存在一定的差异,例如在缓存空间1中,可以将编号0、5、11和15的存储块分配至缓存子树1,将编号1、6和11的存储块分配至缓存子树2,将编号2、7和12的存储块分配至缓存子树3,将编号3、8和13的存储块分配至缓存子树4,将编号4、9和14的存储块分配至缓存子树0。以此类推,直至建立各存储空间中每个存储块与缓存子树之间的对应关系。
具体地,在缓存子树为5个的情况下,为实现目标缓存子树的快速定位,可以根据LBA / 64M / 5三者的比值计算情况,确定对应的目标缓存子树的编号。其中,逻辑区块地址(Logical Block Address,简称:LBA),在本申请实施例中LBA表示第一逻辑区块地址。
在上述实施例的基础上,为提高后续的缓存数据下刷效率,作为一种可实施的方式,在一实施例中,将缓存数据写入目标缓存子树,包括:
步骤2041,按照预设子树构造标准,根据目标缓存子树的当前组成信息及缓存数据对应的第二逻辑区块地址,确定缓存数据在目标缓存子树中所对应的目标子节点;
步骤2042,将缓存数据写入目标子节点。
需要说明的是,预设子树构造标准具体可以根据实际情况设定,如根据平衡二叉树的构造标准指定该预设子树构造标准。第二逻辑区块地址具体该缓存数据在当前目标缓存子树中所对应的LBA地址,若该缓存数据未进行拆分,则第二逻辑区块地址与第一逻辑区块地址相同,若该缓存数据进行了拆分,则第二逻辑区块地址指子缓存数据在对应的目标缓存子树中的LBA地址。
其中,目标缓存子树的当前组成信息至少包括各节点当前存储的历史缓存数据的第二逻辑区块地址。
具体地,在向目标缓存子树写入缓存数据时,可以根据该目标缓存子树各节点当前存储的历史缓存数据的第二逻辑区块地址与当前待写入的缓存数据所对应的第二逻辑区块地址之间的大小关系,确定该缓存数据在目标缓存子树中所对应的目标子节点,进而将该缓存数据写入目标子节点。
示例性的,针对任一缓存子树,假如该缓存子树的缓存数据的写入顺序为:10、70、20、5、90、60、30、65、1、100,其中,这些数字表示各缓存数据对应的第二逻辑区块地址,该缓存子树的结构如图5所示,图5为本申请实施例提供的示例性的缓存子树的结构示意图。
具体地,在一实施例中,根据目标缓存子树的当前组成信息表征的各节点当前存储的历史缓存数据对应的第二逻辑区块地址及缓存数据对应的第二逻辑区块地址,确定缓存数据在目标缓存子树中的目标路径;根据目标路径,确定缓存数据在目标缓存子树中所对应的目标子节点。
其中,目标路径具体可以用二进制编码表示,如图5中第二逻辑区块地址为60的缓存数据在缓存子树中的路径为101,第二逻辑区块地址为65的缓存数据在缓存子树中的路径为1011。
在上述实施例的基础上,为进一步提高后续的缓存数据下刷效率,作为一种可实施的方式,在将缓存数据写入目标子节点之后,该方法还包括:
步骤401,校验目标缓存子树是否满足预设子树规则;
步骤402,若目标缓存子树不满足预设子树规则,则对目标子节点所对应的节点区域进行节点旋转操作。
需要说明的是,红黑平衡二叉树有较好的平衡性,并且提供了O(log n)的访问时间复杂度,因此缓存子树实际可以采用红黑平衡二叉树。但因为红黑二叉树在构造时有过多的规则限制,所以在对红黑二叉树节点的***和删除操作中会包含很多的旋转操作,因此可以每对缓存子树进行数据***和删除操作时,均对缓存子树进行一次预设子树规则验证,在目标缓存子树不满足预设子树规则的情况下,对目标子节点所对应的节点区域进行节点旋转操作。其中,预设子树规则具体可以指预设的红黑平衡二叉树规则,如图6所示,为本申请实施例提供的示例性的节点旋转逻辑图,在进行节点旋转的同时,还根据实际旋转情况进行节点变色,每一次左旋右旋操作都会影响到旋转节点的父亲、爷爷、叔叔和兄弟节点。因为旋转后需要修改这些节点的属性内容,所以在旋转过程中需要对很多节点加锁,防止并发访问时,操作区域重合,造成数据破坏。
其中,预设子树规则包括:每个节点不是红色就是黑色;不能有连在一起的红色节点;根节点都是黑色root;每个红色节点的两个子节点都是黑色。叶子节点都是黑色,且出度为0;是一颗二叉搜索树。红黑平衡二叉树满足这些性质就可以达到近似平衡状态。
在上述实施例的基础上,为提高缓存数据下刷效率,作为一种可实施的方式,该方法还包括:
步骤501,当触发磁盘阵列的缓存数据下刷进程时,遍历各缓存子树,确定各缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
步骤502,按照第二逻辑区块地址从小到大的顺序,将待下刷缓存数据下刷至对应的目标磁盘。
其中,磁盘阵列(RAID)的缓存数据下刷进程的触发条件可以根据实际情况确定,本申请实施例不做限定。
具体地,通过在触发RAID的缓存数据下刷进程时,先确定各缓存子树中第二逻辑区块地址最小的待下刷缓存数据,然后汇总各缓存子树中第二逻辑区块地址最小的待下刷缓存数据,按照第二逻辑区块地址从小到大的顺序,将这些待下刷缓存数据下刷至对应的目标磁盘,保证连续下刷的缓存数据在磁道区域上是相近的。每次写入数据磁头只需要移动到位置最近的待写数据的磁道即可。减少了随机写情况下磁头的来回跳转,减少了平均寻道时间,提高了I/O读写性能。
具体地,在一实施例中,可以对各缓存子树进行中序遍历,以得到各缓存子树的中序遍历结果;根据各缓存子树的中序遍历结果,构造各缓存子树对应的缓存数据子队列;将各缓存数据子队列的头指针指向的待下刷缓存数据,作为各缓存子树中第二逻辑区块地址最小的待下刷缓存数据。
其中,在中序遍历结果中待下刷缓存数据按照第二逻辑区块地址从小到大排序。
示例性的,通过对如图5所示的缓存子树进行中序遍历,确定缓存子树的中序遍历结果为:1、5、10、20、30、60、65、70、90、100,进而按照该中序遍历结果表征的先后顺序,构造该缓存子树对应的缓存数据子队列,该缓存数据子队列的头指针指向第二逻辑区块地址为1的待下刷缓存数据,即头指针指向该缓存子树中第二逻辑区块地址最小的待下刷缓存数据。由于这些区域地址没有跳跃,所以相比直接不使用缓存直接下刷磁盘减少了很多不必要的磁道移动。
具体地,在一实施例中,由于待下刷缓存数据来自若干个缓存子树,为进一步保证缓存数据下刷效率,可以比较各缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果;根据第二逻辑区块地址比较结果,确定全局最小第二逻辑区块地址及全局最小第二逻辑区块地址对应的目标缓存数据子队列;下刷全局最小第二逻辑区块地址对应的待下刷缓存数据;控制目标缓存数据子队列的头指针向后移动一节点,并返回至比较各缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果的步骤。
具体地,通过比较各缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,确保先下刷的待下刷缓存数据的第二逻辑区块地址为全局最小第二逻辑区块地址。针对任一缓存数据子队列,该缓存数据子队列中每下刷一个待下刷缓存数据,头指针加1,以使头指针指向下一待下刷缓存数据,直至该缓存数据子队列中的头指针=尾指针,即该缓存数据子队列为空。
具体地,在一实施例中,可以将全局最小第二逻辑区块地址对应的待下刷缓存数据,添加至下刷队列;当下刷队列满足预设下刷条件时,下刷下刷队列中的待下刷缓存数据。
需要说明的是,由于缓存数据拆分时,是将一个缓存数据拆分为若干个连续的子缓存数据,各子缓存数据的第二逻辑区块地址是连续的,所以对应不同目标缓存子树的子缓存数据,添加至下刷队列时,各子缓存数据在下刷队列中相邻。
其中,若下刷队列中存储的待下刷缓存数据的数量达到预设数量阈值,则确定下刷队列满足预设下刷条件。也可以在达到预设下刷周期时,确定下刷队列满足预设下刷条件。
需要说明的是,通过先基于下刷队列缓存待下刷缓存数据,并在下刷队列满足预设下刷条件时,下刷下刷队列中的待下刷缓存数据,可以实现待下刷缓存数据的集中下刷,减少磁头跳转,从而提高了缓存数据下刷效率。
示例性的,如图7所示,为本申请实施例提供的示例性的缓存数据下刷逻辑图。首先确定缓存子树0~4的缓存数据子队列,如缓存子树1的缓存数据子队列为0、5、20,并确定每个缓存子树的两个信息:1、树中最小LBA地址;2、当前可操作LBA地址。其中,树中最小LBA地址可以用最小第二逻辑区块地址,当前可操作LBA地址表示上一次节点删除后的下一个节点的LBA地址,即向后移动后的头指针所指向的节点的第二逻辑区块地址,缓存子树首次输出待下刷缓存数据时,当前可操作LBA地址节点和树中最小LBA地址节点是一致的。通过对比5个缓存子树的当前可操作LBA地址节点,确定全局最小第二逻辑区块地址所对应的待下刷缓存数据,并将待下刷缓存数据依次写入下刷队列,当下刷队列满足预设下刷条件时,下刷下刷队列中的待下刷缓存数据。
其中,下刷队列是一种链表结构,在任一待下刷缓存数据保存至下刷队列后,在缓存子树中删除该待下刷缓存数据所对应的节点,直至各缓存子树的所有节点都删除时,确定待下刷缓存数据已全部保存至下刷队列。
示例性的,如图8所示,为本申请实施例提供的数据处理方法的整体流程示意图,写请求包括LBA起始地址(第一逻辑区块地址)和Length长度(缓存数据长度),如图8所示的方法是如图2所示的方法的一种示例性的实施方式,二者实现原理相同,不再赘述。
本申请实施例提供的数据处理方法,通过获取磁盘阵列的写操作数据;其中,写操作数据包括磁盘请求信息和缓存数据;根据磁盘请求信息,确定缓存数据的目标存储块;根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树;将缓存数据写入目标缓存子树。上述方案提供的方法,通过将不同写操作产生的缓存数据分散存储至不同的若干个缓存子树,进行一个写操作仅需要锁定对应的目标缓存子树,即便此时写操作请求较多,也不会造成写操作请求堵塞,提高了RAID卡的I/O性能。并且,在进行缓存数据下刷时,加入了下刷队列保存排序后的待下刷缓存数据,可以保证数据在磁道空间上汇聚排序下刷,在实现写操作并行的同时,稳定了磁头的寻道时间,提高了缓存数据的下刷效率。
本申请实施例提供了一种数据处理装置,用于执行上述实施例提供的数据处理方法。
如图9所示,为本申请实施例提供的数据处理装置的结构示意图。该数据处理装置90包括:获取模块901、确定模块902、对应模块903及处理模块904。
其中,获取模块,用于获取磁盘阵列的写操作数据;其中,写操作数据包括磁盘请求信息和缓存数据;确定模块,用于根据磁盘请求信息,确定缓存数据的目标存储块;对应模块,用于根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树;处理模块,用于将缓存数据写入目标缓存子树。
具体地,在一实施例中,磁盘请求信息包括第一逻辑区块地址,确定模块,具体用于:
根据第一逻辑区块地址,确定缓存数据的目标存储空间;
根据目标存储空间的存储块划分情况,确定目标存储空间中各存储块对应的地址区间;
根据第一逻辑区块地址与各存储块所对应的地址区间之间的匹配情况,确定缓存数据的目标存储块。
具体地,在一实施例中,磁盘请求信息还包括缓存数据长度,确定模块,具体用于:
根据第一逻辑区块地址与各存储块所对应的地址区间之间的匹配情况,确定缓存数据的起始存储块;
根据第一逻辑区块地址和缓存数据长度,判断缓存数据的目标存储块的数量是否为1;
当确定缓存数据的目标存储块的数量为1时,将起始存储块作为缓存数据的目标存储块。
具体地,在一实施例中,确定模块,具体用于:
根据第一逻辑区块地址和起始存储块的地址区间,确定起始存储块的缓存空间;
当起始存储块的缓存空间不小于缓存数据长度时,确定缓存数据的目标存储块的数量为1。
具体地,在一实施例中,确定模块,还用于:
当起始存储块的缓存空间小于缓存数据长度时,确定缓存数据的目标存储块的数量不为1。
具体地,在一实施例中,确定模块,还用于:
当确定缓存数据的目标存储块的数量不为1时,将缓存数据拆分为若干个连续的子缓存数据;
将起始存储块及与起始存储块相连续的若干个存储块作为各子缓存数据对应的目标存储块。
具体地,在一实施例中,确定模块,具体用于:
根据缓存数据长度与起始存储块的缓存空间之间的差值,确定剩余数据量;
根据剩余数据量及各存储块的额定空间大小,确定目标存储块的数量;
根据目标存储块的数量,将缓存数据拆分为若干个连续的子缓存数据。
具体地,在一实施例中,对应模块,还用于:
在根据各缓存子树与存储块之间的对应关系,确定目标存储块所对应的目标缓存子树之前,获取存储块划分信息;
按照预设的缓存子树分配标准,根据存储块划分信息表征的各存储块之间的排列关系,确定各缓存子树与存储块之间的对应关系。
具体地,在一实施例中,预设的缓存子树分配标准包括任一缓存子树对应的若干个存储块不相邻。
具体地,在一实施例中,处理模块,具体用于:
按照预设子树构造标准,根据目标缓存子树的当前组成信息及缓存数据对应的第二逻辑区块地址,确定缓存数据在目标缓存子树中所对应的目标子节点;
将缓存数据写入目标子节点。
具体地,在一实施例中,处理模块,具体用于:
根据目标缓存子树的当前组成信息表征的各节点当前存储的历史缓存数据对应的第二逻辑区块地址及缓存数据对应的第二逻辑区块地址,确定缓存数据在目标缓存子树中的目标路径;
根据目标路径,确定缓存数据在目标缓存子树中所对应的目标子节点。
具体地,在一实施例中,处理模块,还用于:
在将缓存数据写入目标子节点之后,校验目标缓存子树是否满足预设子树规则;
若目标缓存子树不满足预设子树规则,则对目标子节点所对应的节点区域进行节点旋转操作。
具体地,在一实施例中,该装置还包括:
下刷模块,用于当触发RAID的缓存数据下刷进程时,遍历各缓存子树,确定各缓存子树中第二逻辑区块地址最小的待下刷缓存数据;按照第二逻辑区块地址从小到大的顺序,将待下刷缓存数据下刷至对应的目标磁盘。
具体地,在一实施例中,下刷模块,具体用于:
对各缓存子树进行中序遍历,以得到各缓存子树的中序遍历结果;
根据各缓存子树的中序遍历结果,构造各缓存子树对应的缓存数据子队列;
将各缓存数据子队列的头指针指向的待下刷缓存数据,作为各缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
其中,在中序遍历结果中待下刷缓存数据按照第二逻辑区块地址从小到大排序。
具体地,在一实施例中,下刷模块,具体用于:
比较各缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果;
根据第二逻辑区块地址比较结果,确定全局最小第二逻辑区块地址及全局最小第二逻辑区块地址对应的目标缓存数据子队列;
下刷全局最小第二逻辑区块地址对应的待下刷缓存数据;
控制目标缓存数据子队列的头指针向后移动一节点,并返回至比较各缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果的步骤。
具体地,在一实施例中,下刷模块,具体用于:
将全局最小第二逻辑区块地址对应的待下刷缓存数据,添加至下刷队列;
当下刷队列满足预设下刷条件时,下刷下刷队列中的待下刷缓存数据。
具体地,在一实施例中,下刷模块,还用于:
若下刷队列中存储的待下刷缓存数据的数量达到预设数量阈值,则确定下刷队列满足预设下刷条件。
关于本实施例中的数据处理装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的数据处理装置,用于执行上述实施例提供的数据处理方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的数据处理方法。
如图10所示,为本申请实施例提供的电子设备的结构示意图。该电子设备10包括:至少一个处理器1001和存储器1002。
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的数据处理方法。
本申请实施例提供的电子设备,用于执行上述实施例提供的数据处理方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的数据处理方法。
本申请实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的数据处理方法的计算机执行指令,其实现方式与原理相同,不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (20)
1.一种数据处理方法,其特征在于,包括:
获取磁盘阵列的写操作数据;其中,所述写操作数据包括磁盘请求信息和缓存数据;
根据所述磁盘请求信息,确定所述缓存数据的目标存储块;
根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树;
将所述缓存数据写入所述目标缓存子树。
2.根据权利要求1所述的方法,其特征在于,所述磁盘请求信息包括第一逻辑区块地址,所述根据所述磁盘请求信息,确定所述缓存数据的目标存储块,包括:
根据所述第一逻辑区块地址,确定所述缓存数据的目标存储空间;
根据所述目标存储空间的存储块划分情况,确定所述目标存储空间中各存储块对应的地址区间;
根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的目标存储块。
3.根据权利要求2所述的方法,其特征在于,所述磁盘请求信息还包括缓存数据长度,所述根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的目标存储块,包括:
根据所述第一逻辑区块地址与各所述存储块所对应的地址区间之间的匹配情况,确定所述缓存数据的起始存储块;
根据所述第一逻辑区块地址和缓存数据长度,判断所述缓存数据的目标存储块的数量是否为1;
当确定所述缓存数据的目标存储块的数量为1时,将所述起始存储块作为所述缓存数据的目标存储块。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一逻辑区块地址和缓存数据长度,判断所述缓存数据的目标存储块的数量是否为1,包括:
根据所述第一逻辑区块地址和所述起始存储块的地址区间,确定所述起始存储块的缓存空间;
当所述起始存储块的缓存空间不小于所述缓存数据长度时,确定所述缓存数据的目标存储块的数量为1。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述起始存储块的缓存空间小于所述缓存数据长度时,确定所述缓存数据的目标存储块的数量不为1。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当确定所述缓存数据的目标存储块的数量不为1时,将所述缓存数据拆分为若干个连续的子缓存数据;
将所述起始存储块及与所述起始存储块相连续的若干个存储块作为各所述子缓存数据对应的目标存储块。
7.根据权利要求6所述的方法,其特征在于,所述将所述缓存数据拆分为若干个连续的子缓存数据,包括:
根据所述缓存数据长度与所述起始存储块的缓存空间之间的差值,确定剩余数据量;
根据所述剩余数据量及各所述存储块的额定空间大小,确定目标存储块的数量;
根据所述目标存储块的数量,将所述缓存数据拆分为若干个连续的子缓存数据。
8.根据权利要求1所述的方法,其特征在于,在根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树之前,所述方法还包括:
获取存储块划分信息;
按照预设的缓存子树分配标准,根据所述存储块划分信息表征的各所述存储块之间的排列关系,确定各缓存子树与存储块之间的对应关系。
9.根据权利要求8所述的方法,其特征在于,所述预设的缓存子树分配标准包括任一所述缓存子树对应的若干个存储块不相邻。
10.根据权利要求1所述的方法,其特征在于,所述将所述缓存数据写入所述目标缓存子树,包括:
按照预设子树构造标准,根据所述目标缓存子树的当前组成信息及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中所对应的目标子节点;
将所述缓存数据写入所述目标子节点。
11.根据权利要求10所述的方法,其特征在于,所述根据所述目标缓存子树的当前组成信息及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中所对应的目标子节点,包括:
根据所述目标缓存子树的当前组成信息表征的各节点当前存储的历史缓存数据对应的第二逻辑区块地址及所述缓存数据对应的第二逻辑区块地址,确定所述缓存数据在所述目标缓存子树中的目标路径;
根据所述目标路径,确定缓存数据在所述目标缓存子树中所对应的目标子节点。
12.根据权利要求10所述的方法,其特征在于,在将所述缓存数据写入所述目标子节点之后,所述方法还包括:
校验所述目标缓存子树是否满足预设子树规则;
若所述目标缓存子树不满足预设子树规则,则对所述目标子节点所对应的节点区域进行节点旋转操作。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当触发所述磁盘阵列的缓存数据下刷进程时,遍历各所述缓存子树,确定各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
按照所述第二逻辑区块地址从小到大的顺序,将所述待下刷缓存数据下刷至对应的目标磁盘。
14.根据权利要求13所述的方法,其特征在于,所述遍历各所述缓存子树,确定各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据,包括:
对各所述缓存子树进行中序遍历,以得到各所述缓存子树的中序遍历结果;
根据各所述缓存子树的中序遍历结果,构造各所述缓存子树对应的缓存数据子队列;
将各所述缓存数据子队列的头指针指向的待下刷缓存数据,作为各所述缓存子树中第二逻辑区块地址最小的待下刷缓存数据;
其中,在所述中序遍历结果中所述待下刷缓存数据按照所述第二逻辑区块地址从小到大排序。
15.根据权利要求14所述的方法,其特征在于,所述按照所述第二逻辑区块地址从小到大的顺序,将所述待下刷缓存数据下刷至对应的目标磁盘,包括:
比较各所述缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果;
根据所述第二逻辑区块地址比较结果,确定全局最小第二逻辑区块地址及所述全局最小第二逻辑区块地址对应的目标缓存数据子队列;
下刷所述全局最小第二逻辑区块地址对应的待下刷缓存数据;
控制所述目标缓存数据子队列的头指针向后移动一节点,并返回至所述比较各所述缓存数据子队列的头指针指向的待下刷缓存数据的第二逻辑区块地址的大小,得到第二逻辑区块地址比较结果的步骤。
16.根据权利要求15所述的方法,其特征在于,所述下刷所述全局最小第二逻辑区块地址对应的待下刷缓存数据,包括:
将所述全局最小第二逻辑区块地址对应的待下刷缓存数据,添加至下刷队列;
当所述下刷队列满足预设下刷条件时,下刷所述下刷队列中的待下刷缓存数据。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
若所述下刷队列中存储的待下刷缓存数据的数量达到预设数量阈值,则确定所述下刷队列满足预设下刷条件。
18.一种数据处理装置,其特征在于,包括:
获取模块,用于获取磁盘阵列的写操作数据;其中,所述写操作数据包括磁盘请求信息和缓存数据;
确定模块,用于根据所述磁盘请求信息,确定所述缓存数据的目标存储块;
对应模块,用于根据各缓存子树与存储块之间的对应关系,确定所述目标存储块所对应的目标缓存子树;
处理模块,用于将所述缓存数据写入所述目标缓存子树。
19.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至17任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至17任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311134632.2A CN116893786B (zh) | 2023-09-05 | 2023-09-05 | 一种数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311134632.2A CN116893786B (zh) | 2023-09-05 | 2023-09-05 | 一种数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116893786A CN116893786A (zh) | 2023-10-17 |
CN116893786B true CN116893786B (zh) | 2024-01-09 |
Family
ID=88313753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311134632.2A Active CN116893786B (zh) | 2023-09-05 | 2023-09-05 | 一种数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116893786B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117406933B (zh) * | 2023-12-12 | 2024-03-29 | 深圳大普微电子股份有限公司 | 固态硬盘数据处理方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045258A (zh) * | 2010-12-22 | 2011-05-04 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN103336669A (zh) * | 2013-05-21 | 2013-10-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
CN103995855A (zh) * | 2014-05-14 | 2014-08-20 | 华为技术有限公司 | 存储数据的方法和装置 |
CN107844436A (zh) * | 2017-11-02 | 2018-03-27 | 郑州云海信息技术有限公司 | 一种缓存中脏数据的组织管理方法、***及存储*** |
CN108572865A (zh) * | 2018-04-04 | 2018-09-25 | 国家计算机网络与信息安全管理中心 | 一种任务队列处理方法和装置 |
CN111625198A (zh) * | 2020-05-28 | 2020-09-04 | 深圳佰维存储科技股份有限公司 | 一种元数据缓存方法和元数据缓存装置 |
CN112463333A (zh) * | 2020-12-03 | 2021-03-09 | 北京浪潮数据技术有限公司 | 一种基于多线程并发的数据存取方法、装置和介质 |
CN113625973A (zh) * | 2021-08-30 | 2021-11-09 | 深圳市得一微电子有限责任公司 | 数据写入方法、装置、电子设备及计算机可读存储介质 |
CN115904255A (zh) * | 2023-01-19 | 2023-04-04 | 苏州浪潮智能科技有限公司 | 一种数据请求方法、装置、设备及存储介质 |
CN116431099A (zh) * | 2023-06-13 | 2023-07-14 | 摩尔线程智能科技(北京)有限责任公司 | 数据的处理方法、多输入输出队列电路及存储介质 |
-
2023
- 2023-09-05 CN CN202311134632.2A patent/CN116893786B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045258A (zh) * | 2010-12-22 | 2011-05-04 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN103336669A (zh) * | 2013-05-21 | 2013-10-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
CN103995855A (zh) * | 2014-05-14 | 2014-08-20 | 华为技术有限公司 | 存储数据的方法和装置 |
CN107844436A (zh) * | 2017-11-02 | 2018-03-27 | 郑州云海信息技术有限公司 | 一种缓存中脏数据的组织管理方法、***及存储*** |
CN108572865A (zh) * | 2018-04-04 | 2018-09-25 | 国家计算机网络与信息安全管理中心 | 一种任务队列处理方法和装置 |
CN111625198A (zh) * | 2020-05-28 | 2020-09-04 | 深圳佰维存储科技股份有限公司 | 一种元数据缓存方法和元数据缓存装置 |
CN112463333A (zh) * | 2020-12-03 | 2021-03-09 | 北京浪潮数据技术有限公司 | 一种基于多线程并发的数据存取方法、装置和介质 |
CN113625973A (zh) * | 2021-08-30 | 2021-11-09 | 深圳市得一微电子有限责任公司 | 数据写入方法、装置、电子设备及计算机可读存储介质 |
CN115904255A (zh) * | 2023-01-19 | 2023-04-04 | 苏州浪潮智能科技有限公司 | 一种数据请求方法、装置、设备及存储介质 |
CN116431099A (zh) * | 2023-06-13 | 2023-07-14 | 摩尔线程智能科技(北京)有限责任公司 | 数据的处理方法、多输入输出队列电路及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116893786A (zh) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6571244B1 (en) | Run formation in large scale sorting using batched replacement selection | |
CN103186350B (zh) | 混合存储***及热点数据块的迁移方法 | |
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
US7930559B1 (en) | Decoupled data stream and access structures | |
US20220027326A1 (en) | Metadata management method, system and medium | |
CN110188108B (zh) | 数据存储方法、装置、***、计算机设备及存储介质 | |
US11061788B2 (en) | Storage management method, electronic device, and computer program product | |
Mei et al. | SifrDB: A unified solution for write-optimized key-value stores in large datacenter | |
CN106775476A (zh) | 混合内存***及其管理方法 | |
CN116893786B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111400083B (zh) | 数据存储方法及***、存储介质 | |
Lee et al. | ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
Rumble | Memory and object management in RAMCloud | |
CN111444149A (zh) | 一种数据导入方法、装置、设备及存储介质 | |
CN112148217B (zh) | 全闪存储***的重删元数据的缓存方法、装置及介质 | |
US7210019B2 (en) | Exclusive access for logical blocks | |
Wang et al. | Bamboo filters: Make resizing smooth | |
Papagiannis et al. | Kreon: An efficient memory-mapped key-value store for flash storage | |
CN115114370A (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN113722320A (zh) | 一种基于并行的图数据索引的持久化方法 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
Wang et al. | Circ-Tree: A B+-Tree variant with circular design for persistent memory | |
CN115933994B (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 |