CN117093160B - Cache的数据处理方法、装置、计算机设备和介质 - Google Patents
Cache的数据处理方法、装置、计算机设备和介质 Download PDFInfo
- Publication number
- CN117093160B CN117093160B CN202311348634.1A CN202311348634A CN117093160B CN 117093160 B CN117093160 B CN 117093160B CN 202311348634 A CN202311348634 A CN 202311348634A CN 117093160 B CN117093160 B CN 117093160B
- Authority
- CN
- China
- Prior art keywords
- cache
- command
- mode
- data
- data corresponding
- 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 claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 100
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000004590 computer program Methods 0.000 claims description 44
- 239000000872 buffer Substances 0.000 claims description 31
- 238000004364 calculation method Methods 0.000 claims description 21
- 238000012986 modification Methods 0.000 claims description 18
- 230000004048 modification Effects 0.000 claims description 18
- 238000004064 recycling Methods 0.000 claims description 14
- 238000011084 recovery Methods 0.000 claims description 13
- 230000007717 exclusion Effects 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 23
- 238000007726 management method Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100004933 Arabidopsis thaliana CYP79F1 gene Proteins 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
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及一种Cache的数据处理方法、装置、计算机设备和介质。方法包括:接收Cache命令;根据Cache命令执行Cache查找,得到查找结果;根据Cache命令以及查找结果确定预先配置的Cache操作模式;当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,将Cache命令对应的数据写入磁,并执行Cache更新。采用本方法能够支持更复杂的RAID Cache应用场景。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种Cache的数据处理方法、装置、计算机设备和介质。
背景技术
随着数据存储技术的发展,出现了RAID(Redundant Array of IndependentDisks,磁盘冗余阵列)技术,RAID是将多个独立的磁盘设备按照不同的方式组合起来,形成存储阵列组,能够提供比单个磁盘更高的存储性能,并增加冗余实现不同级别的数据保护。为了能进一步提升RAID***的IO性能,采用RAID Cache技术。RAID Controller通常外挂的DRAM(动态随机存储器)作为I/O数据的缓存空间。
传统技术中,对于写Cache,主机IO数据写到DRAM就完成当前IO写操作,即可向主机反馈完成标志。然而传统技术中,只能做到简单的写Cache流程,无法支持更加复杂的写Cache的流程,无法满足RAID Controller更加复杂的应用场景下对RAID Cache的需求。
发明内容
基于此,有必要针对上述技术问题,提供一种Cache的数据处理方法、装置、计算机设备和介质。
一种Cache的数据处理方法,上述的方法包括:
接收Cache命令;
根据Cache命令执行Cache查找,得到查找结果;
根据Cache命令以及查找结果确定预先配置的Cache操作模式;
当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,将Cache命令对应的数据写入磁盘,并执行Cache更新。
在其中一个实施例中,上述的根据Cache命令以及查找结果确定Cache操作模式,包括:
根据Cache命令、查找结果以及预先创建的配置数据,确定Cache操作模式,配置数据包括各Cache操作模式与各Cache命令的命令信息以及各查找结果的映射关系。
在其中一个实施例中,上述的根据Cache命令执行Cache查找,得到查找结果,包括:
根据Cache命令进行哈希计算,得到哈希值;
读取预先创建的哈希表中哈希值对应的目标哈希表项,所目标哈希表项中包括Cache的状态信息;
当Cache的状态信息指示磁盘数据在Cache中时,确定查找结果为Cache命令对应的数据在Cache中命中。
在其中一个实施例中,上述的Cache的状态信息包括多个状态信息位以及对应的取值,上述的根据查找结果回收Cache资源,包括:
将各状态信息位的取值都更新为无效,以进行回收Cache资源。
在其中一个实施例中,上述的状态信息位包括写锁定状态和修改状态,将Cache命令对应的数据写入Cache中之前,上述的方法还包括:
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,将目标哈希表项中的写锁定状态和修改状态更新为有效;
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,将写锁定状态更新为有效。
在其中一个实施例中,上述的状态信息位还包括磁盘数据是否在Cache的状态,当磁盘数据是否在Cache的状态为有效时,上述的执行Cache更新,包括:
当Cache操作模式为写Cache并不回收Cache资源的模式,且目标哈希表项中的磁盘数据是否在Cache的状态、写锁定状态以及修改状态均为有效时,将写锁定状态更新为无效,以执行Cache更新;
当Cache操作模式为写Cache并不回收Cache资源的模式,且磁盘数据是否在Cache的状态以及修改状态均为无效,写锁定状态为有效时,将的磁盘数据是否在Cache的状态更新为有效,写锁定更新为无效,以执行所述Cache更新。
在其中一个实施例中,上述的状态信息位还包括Cache存储地址,当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,上述的将Cache命令对应的数据写入Cache中,包括:
将Cache命令对应的数据写入Cache存储地址对应的空间;
上述的写Cache并不回收Cache资源的模式中包括写Cache并分配的模式,当Cache操作模式为写Cache并分配的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,上述的方法还包括:
根据查找结果分配新的Cache存储地址;
将Cache命令对应的数据写入Cache中,包括:
将Cache命令对应的数据写入新的Cache存储地址对应的空间。
在其中一个实施例中,上述的方法还包括:
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,读取Cache存储地址指定空间的数据写回主机,并执行Cache更新;
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,读取磁盘中Cache命令对应的数据返回主机,并执行Cache更新。
在其中一个实施例中,上述的方法还包括:
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,从磁盘中读取Cache命令对应的数据返回主机,并分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址,并执行Cache更新。
在其中一个实施例中,上述的状态信息为还包括读不分配锁定状态,上述的读取Cache存储地址指定空间的数据写回主机之前,上述的方法还包括:
将读不分配锁定状态置为有效。
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,上述的执行Cache更新,包括:
将读不分配锁定状态置为无效。
在其中一个实施例中,上述的状态信息位还包括读分配锁定状态,上述的从磁盘中读取Cache命令对应的数据返回主机之前,上述的方法还包括:
将读分配锁定状态置为有效;
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,上述的执行Cache更新,包括:
将读分配锁定状态置为无效。
在其中一个实施例中,上述的方法还包括:
当Cache操作模式为落盘操作,且查找结果为Cache命令对应的数据在Cache中未命中时,将Cache存储地址对应空间的数据写入磁盘,并将各状态信息位的取值都更新为无效,以进行回收Cache资源。
一种磁盘阵列Cache的数据处理***,上述的***包括磁盘阵列控制器和磁盘,上述的磁盘阵列控制器与磁盘连接,上述的磁盘阵列控制器包括Cache处理装置以及读写装置,Cache处理装置与读写装置连接,其中,
Cache处理装置用于接收Cache命令,根据Cache命令执行Cache查找,得到查找结果,根据Cache命令以及查找结果确定Cache操作模式,当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源;
读写装置用于将Cache命令对应的数据写入磁盘;
Cache处理装置还用于执行Cache更新。
在其中一个实施例中,上述的Cache命令包括多个,Cache处理装置包括命令队列、Hash管理单元以及Cache处理单元,命令队列与Hash管理单元连接,Hash管理单元与Cache处理单元连接,其中,
命令队列用于保存多个Cache命令,确定各Cache命令的Cache操作模式,并将各Cache命令派发到Hash管理单元;
Hash管理单元用于根据Cache命令进行哈希计算,并根据计算得到的哈希值将Cache命令派发到Cache处理单元;
Cache处理单元用于根据各Cache命令执行Cache查找,得到查找结果,当目标Cache命令的Cache操作模式为写Cache并回收Cache资源的模式,且目标Cache命令的查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源。
在其中一个实施例中,上述的Hash管理单元包括互斥锁、多个缓冲器以及各缓冲器对应的哈希计算单元,Cache处理单元包括Cache查找子单元、Cache更新子单元以及Cache回收子单元其中,
命令队列还用于根据各Cache命令确定各Cache命令对应的Cache操作类型,并根据各Cache命令对应的Cache操作类型以及预先创建的各缓冲器与Cache操作类型的关联关系,将各Cache命令派发给对应的缓冲器,操作类型包括Cache查找操作、Cache更新操作以及Cache回收操作;
哈希计算单元用于从对应的缓冲器中读取各Cache命令,并计算各Cache命令的哈希值;
互斥锁用于根据各Cache命令对应的哈希值进行锁定,当目标Cache命令被锁定时,将目标Cache命令根据目标Cache命令对应的Cache操作类型派发到Cache处理单元中的对应子单元;
Cache查找子单元用于根据各Cache命令执行Cache查找,得到查找结果;
Cache更新子单元用于处理的操作类型为Cache更新操作;
Cache回收子单元用于当目标Cache命令的Cache操作模式为写Cache并回收Cache资源的模式,且目标Cache命令的查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源。
在其中一个实施例中,上述的Cache查找子单元中至少一个子单元的个数包括多个。
一种磁盘阵列Cache的数据处理装置,上述的装置应用于磁盘阵列控制器,磁盘阵列控制器与主机连接,磁盘阵列控制器还与磁盘连接,磁盘阵列控制器包括Cache,上述的装置包括:
接收模块,用于接收Cache命令;
查找模块,用于根据Cache命令执行Cache查找,得到查找结果;
确定模块,用于根据Cache命令以及查找结果确定预先配置的Cache操作模式;
读写模块,用于当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,将Cache命令对应的数据写入磁盘,并执行Cache更新。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
收主机发送的Cache命令;
根据Cache命令执行Cache查找,得到查找结果;
根据Cache命令以及查找结果确定预先配置的Cache操作模式;
当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,将Cache命令对应的数据写入磁盘,并执行Cache更新。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
收主机发送的Cache命令;
根据Cache命令执行Cache查找,得到查找结果;
根据Cache命令以及查找结果确定预先配置的Cache操作模式;
当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,将Cache命令对应的数据写入磁盘,并执行Cache更新。
上述Cache的数据处理方法、装置、计算机设备和介质,通过磁盘阵列控制器根据主机发送的Cache命令进行Cache,根据查找结果确定Cache操作模式,本申请的Cache操作模式有别于传统技术中简单的读写模式,本申请的Cache操作模式可以为复杂的写Cache操作模式,例如,写Cache并回收Cache资源的模式,当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,并将Cache命令对应的数据写入磁盘,并执行Cache更新。采用本申请能够处理更加复杂的写Cache流程,能够支持更加复杂的应用场景。
附图说明
图1为一个实施例中Cache的数据处理方法的应用环境图;
图2为一个实施例中RAID Write Back模式的数据处理流程示意图;
图3为一个实施例中RAID Write Through模式的数据处理流程示意图;
图4为一个实施例中RAID Write Allocate模式的数据处理流程示意图;
图5为一个实施例中RAID No Write Allocate模式的数据处理流程示意图;
图6为一个实施例中RAID Read Back模式的数据处理流程示意图;
图7为一个实施例中RAID Read Through模式的数据处理流程示意图;
图8为一个实施例中RAID Read Allocate模式的数据处理流程示意图;
图9为一个实施例中落盘Cache的数据处理流程示意图;
图10为另一个实施例中磁盘阵列Cache的数据处理***的结构框图;
图11为一个实施例中Cache处理装置的结构框图;
图12为一个实施例中写Cache-nRecycle模式的操作流程示意图;
图13为一个实施例中RAID No Write Allocate模式的操作流程示意图;
图14为一个实施例中RAID Read Back模式的操作流程示意图;
图15为一个实施例中RAID Read Through模式的操作流程示意图;
图16为一个实施例中Read Allocate模式的操作流程示意图;
图17为一个实施例中落盘Cache的操作流程示意图;
图18为一个实施例中磁盘阵列Cache的数据处理装置的结构框图;
图19为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种Cache的数据处理方法,上述的方法包括:
S11,接收Cache命令。
本申请中,上述的方法可以应用于磁盘阵列控制器,磁盘阵列控制器与主机连接,磁盘阵列控制器还与磁盘连接,磁盘阵列控制器包括Cache。具体地,上述的磁盘阵列控制器可以为RAID Controller。上述的Cache为RAID Controller上的用于存放少量,且需要被快速访问的临时数据的一种存储器。本申请中RAID Controller使用Cache来存储写入RAID阵列的数据,从而避免频繁地访问磁盘,提高***的性能。当RAID Controller接收到写入请求时,它会将数据存储在Cache中,然后定期将数据写入磁盘中。
上述的主机向磁盘阵列控制器发送IO(Input/Output,输入/输出)命令,磁盘阵列控制器对IO进行解析得到上述的Cache命令。
S12,根据Cache命令执行Cache查找,得到查找结果。
其中,这里的Cache查找是指根据Cache命令从哈希表中进行查找,以查找Cache命令对应的数据是否在Cache中命中。这里的哈希表是预先创建的用于管理Cache数据结构。
进一步地,上述的查找结果可以包括命中Cache和未命中Cache。其中,命中Cache是指Cache命令对应的数据在Cache中命中。未命中Cache是指Cache命令对应的数据在Cache中未命中。
S13,根据Cache命令以及查找结果确定预先配置的Cache操作模式。
其中,上述的Cache操作模式是指根据Cache命令的信息而确定的对Cache的处理流程模式。具体地,本申请中预先配置了多种Cache操作模式,这里的Cache操作模式不仅仅包括传统技术中的读Cache和写Cache,还包括对读Cache和写Cache模式进行进一步细分的模式。例如,写Cache可以包括写Cache-Recycle模式,相当于上述的写Cache并回收Cache资源的模式。
进一步地,这里的写Cache-nRecycle模式还可以包括RAID Write Back模式以及RAID Write Through模式。其中,这里的RAID Write Back模式是指写Cache hit(Cache查找结果未命中)时,将写命令的数据写入RAID Cache的操作。这里的RAID Write Through模式是指写Cache hit时,将写命令的数据写入RAID Cache后再写入磁盘的操作。
S14,当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,并将Cache命令对应的数据写入磁盘,并执行Cache更新。
本申请中,预先配置了多个Cache操作模式以及各个Cache操作模式对应的操作流程,其中包括写Cache并回收Cache资源的模式。具体地,在写Cache并回收Cache资源的模式中,需要执行的操作流程为:先进行Cache查找,如果Cache hit(相当于上述的命中Cache),做Cache回收处理,否则不处理,完成后再将写命令的数据写入磁盘。上述的Cache更新是指对更新Cache的状态数据,具体是指在读Cache或者写Cache之后的哈希表的更新操作。
在其中一个实施例中,上述的根据Cache命令以及查找结果确定Cache操作模式,可以包括:
根据Cache命令、查找结果以及预先创建的配置数据,确定Cache操作模式,配置数据包括各Cache操作模式与各Cache命令的命令信息以及各查找结果的映射关系。
本申请中,上述的Cache命令中包括命令类型、需要访问的磁盘数据的地址信息以及数据大小等信息。其中,这里的命令类型可以包括读命令以及写命令。这里的地址信息可以包括磁盘中逻辑区块的起始地址。上述的查找结果可以包括Cache hit(Cache命中)以及Cache miss(Cache未命中),其中,Cache hit是指上述输入输出需要访问的磁盘数据在Cache中命中。Cache miss是指上述输入输出需要访问的磁盘数据在Cache中未命中。
上述的配置数据中包括多种基准的Cache操作模式以及各个基准的Cache操作模式下对应的Cache操作流程。其中,Cache操作流程中包括查找结果以及Cache操作类型。这里的Cache操作类型可以包括Cache查找、Cache更新、Cache回收。具体地,这里的Cache操作流程中还可以包括写Cache、读Cache、写盘、读盘以及分配Cache存储地址等。
本申请将Cache命令中的具体命令信息与各基准的Cache操作模式内的具体操作流程以及进行匹配,将根据输入输出信息进行Cache查找的查找结果与各基准的Cache操作模式对应的查找结果进行匹配,以确定上述的Cache操作模式。
本申请通过该实施方式可以将Cache命令与配置的Cache操作模式进行匹配,将Cache命令归类到对应的Cache操作模式,后续根据该Cache操作模式的处理流程响应该Cache命令,通过该实施方式能够将配置的Cache操作模式与Cache命令进行兼容,以实现支持更多更复杂的Cache操作模式。
在其中一个实施例中,上述的根据Cache命令执行Cache查找,得到查找结果,可以包括:
根据Cache命令进行哈希计算,得到哈希值;
读取预先创建的哈希表中哈希值对应的目标哈希表项,所目标哈希表项中包括Cache的状态信息;
当Cache的状态信息指示磁盘数据在Cache中时,确定查找结果为Cache命令对应的数据在Cache中命中。
本申请的Cache查找是指将Cache命令信息中的磁盘信息(如dev_lba和Disk ID)作为Hash K值,进行Hash计算后,获取Hash表项地址P,根据地址P读取Hash表项,做Cache查找操作。其中,Cache查找并回收仅在OpMode为写Cache-Recycle时有效,否则为Cache查找。Cache查找结果包括Cache hit、Cache miss、Hash冲突、无法锁定。当Hash冲突时,通过解决Hash冲突、重试或等待等方式,重新进行Cache查找。当无法锁定时,通过重试或等待等方式,重新进行Cache查找。
本申请中,上述的Hash(哈希)表是一种特殊的数据结构,它可以根据关键字(K)和Hash算法获取一个位置(P),然后将数据存储在P对应的Hash表项中。当需要查询、***或删除Cache数据时,RAID Controller(磁盘阵列控制器)会根据关键字和Hash算法获取对应的位置,然后读取或修改P对应的Hash表项,实现Cache的***、查询和删除等操作。
具体地,上述的哈希表包括多个表项,各个表项包括Cache的状态信息。这里的Cache的状态信息用于指示Cache的状态,具体可以包括Cache的锁定状态、磁盘数据是否在Cache中以及是否可用等。上述的磁盘数据在Cache中是指Cache命令所访问的磁盘数据在Cache中命中。 上述的磁盘数据在Cache中是指Cache命令所访问的磁盘数据在Cache中命中。
上述的执行Cache更新可以通过更新哈希表中目标表项中的状态信息实现。
本申请通过该实施方式能够确定Cache命令所访问的数据是否在Cache中命中,后续基于该查找结果确定对应的Cache操作模式,根据Cache操作模式执行对应的操作流程。
在其中一个实施例中,上述的Cache的状态信息包括多个状态信息位以及对应的取值,上述的根据查找结果回收Cache资源,可以包括:
将各状态信息位的取值都更新为无效,以进行回收Cache资源。
其中,上述的哈希表包括多个表项,各个表项包括Cache的状态信息,Cache的状态信息包括多个状态信息位以及各状态信息位对应的取值。这里的状态信息位以及对应的取值用于指示Cache的操作状态或者Cache的状态。这里的取值可以为0和1,其中0表示无效,1表示有效。
本申请中,Cache回收操作支持写Cache回收。本申请中写Cache回收时,将各个状态信息位的取值均更新为无效,更新完则回收Cache资源完成。一种实施方式中,写Cache回收功能具体为:当OpType为Cache回收、OpMode为写Cache时,当Cache hit,更新Hash表项,将Hash表项写全零。更新完成后写入Hash表,Cache回收完成。当Cache miss,不更新Hash表项,Cache回收完成。
在其中一个实施例中,上述的状态信息位包括写锁定状态和修改状态,将Cache命令对应的数据写入Cache中之前,方法还包括:
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,将目标哈希表项中的写锁定状态和修改状态更新为有效;
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,将写锁定状态更新为有效。
本申请中,上述的状态信息位还可以包括W_L:Write Lock(写锁定状态),该状态信息位表示dev_lba数据在写Cache时是否被锁定。该状态信息位有效时,表示Hash表项在写Cache操作时被锁定。上述的状态信息位还包括修改状态M:Modified(修改),表示dev_lba数据在写Cache时是否被修改。该状态信息位有效时,表示dev_lba数据在Cache中被修改。上述的D_L、RA_L、RnA_L与W_L之间为互斥关系。
当查找结果为Cache hit,且OpMode(Cache 操作模式)为写Cache-nRecycle时,更新Hash表项,将W_L和M置为有效,更新完成后写入Hash表,输出Cache查找结果:Cachehit,Cache查找完成。
当查找结果为Cache miss,且OpMode(Cache 操作模式)为写Cache-nRecycle时,更新Hash表项,将W_L置为有效,将命令信息中Disk ID(磁盘地址)和dev_lba字段的取值更新到Hash表项中Disk ID和dev_lba字段的取值,更新完成后写入Hash表,输出Cache查找结果:Cache miss,Cache查找完成,其中,dev_lba是指磁盘的LBA(Logical Block Address,逻辑区块地址)起始地址。dev_lba数据是指存储于dev_lba地址的磁盘数据。
具体地,上述的写Cache并不回收Cache资源的模式可以包括RAID Write Back模式以及RAID Write Through模式。其中,RAID Write Back模式是指写Cache hit时,将写命令的数据写入RAID Cache的操作模式。RAID Write Through模式是指写Cache hit时,将写命令的数据写入RAID Cache后再写入磁盘的操作模式。
进一步地,当Cache操作模式为RAID Write Back模式时,上述的将Cache命令对应的数据写入Cache中之前,可以包括如下流程:
S0:Cache查找,查找结果为:Cache hit。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新W_L =‘1’、M =‘1’,其它信息不更新;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果。执行S1;
S1:写Cache:RAID Controller根据查找结果,将写IO命令的数据写到Cache。
进一步地,上述的写Cache并不回收Cache资源的模式还可以包括RAID WriteAllocate模式。RAID Write Allocate是指写Cache miss时,由Raid Controller分配存放写命令数据的地址,将数据写入RAID Cache的操作模式。
进一步地,当Cache操作模式为RAID Write Allocate模式时,上述的将Cache命令对应的数据写入Cache中之前,可以包括如下流程:
S0:Cache查找,查找结果为:Cache miss。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新W_L = ‘1’,将命令信息中DISKID、NSID、dev_lba字段更新到Hash表项DISKID、NSID、dev_lba字段;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果:Cache miss,写入结果缓存。
在其中一个实施例中,上述的状态信息位还包括磁盘数据是否在Cache的状态,当磁盘数据是否在Cache的状态为有效时,上述的执行Cache更新,包括:
当Cache操作模式为写Cache并不回收Cache资源的模式,且目标哈希表项中的磁盘数据是否在Cache的状态、写锁定状态以及修改状态均为有效时,将写锁定状态更新为无效,以执行Cache更新;
当Cache操作模式为写Cache并不回收Cache资源的模式,且磁盘数据是否在Cache的状态以及修改状态均为无效,写锁定状态为有效时,将的磁盘数据是否在Cache的状态更新为有效,写锁定更新为无效,以执行Cache更新。
具体地,上述的状态信息位还可以包括V,表示dev_lba数据是否在Cache,当V的取值为有效时,表示dev_lba数据在Cache中。其中,这里的dev_lba数据是指存储于磁盘中dev_lba地址的数据,即相当于上述的磁盘数据。
本申请中,上述的将Cache命令对应的数据写入Cache中之后,方法还可以包括Cache更新。具体地,Cache更新包括:
当OpType(Cache操作类型)为Cache更新,OpMode为写Cache-nRecycle,且Hash表项V、W_L和M均为有效时,更新Hash表项,将W_L置为无效,更新完成后写入Hash表,Cache更新完成。
当Hash表项W_L为有效、V和M为无效时,更新Hash表项,将V置为有效,W_L置为无效,将命令信息中pageIndex字段的取值更新到Hash表项pageIndex字段的取值,更新完成后写入Hash表,Cache更新完成。
具体地,当上述的Cache操作模式为RAID Write Back时,上述的将Cache命令对应的数据写入Cache中之后,上述的方法还可以包括:
S2:Cache更新,执行S2.1
S2.1:更新Hash表项:读取Hash表项,更新W_L = ‘0’,其它信息不变;更新完成后写入Hash表,执行S2.2;
S2.2:输出结果:输出Cache更新完成标志,写Cache操作完成。
当上述的Cache操作模式为RAID Write Allocate模式,上述的将Cache命令对应的数据写入Cache中之后,上述的方法还可以包括:
S3:Cache更新,执行S3.1
S3.1:更新Hash表项:读取Hash表项,更新V = 1、W_L = ‘0’,将命令信息中pageIndex字段更新到Hash表项pageIndex字段;更新完成后写入Hash表,执行S3.2;
S3.2:输出结果:输出Cache更新完成标志,写Cache操作完成。
在其中一个实施例中,上述的状态信息位还包括Cache存储地址,当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,上述的将Cache命令对应的数据写入Cache中,可以包括:
将Cache命令对应的数据写入Cache存储地址对应的空间;
写Cache并不回收Cache资源的模式中包括写Cache并分配的模式,当Cache操作模式为写Cache并分配的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,方法还包括:
根据查找结果分配新的Cache存储地址;
上述的将Cache命令对应的数据写入Cache中,可以包括:
将Cache命令对应的数据写入新的Cache存储地址对应的空间。
其中,上述的状态信息位还可以包括pageIndex(相当于上述的Cache存储地址),该状态信息位表示dev_lba数据保存在Cache中的起始地址。当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,将Cache存储地址携带于查找结果中输出。具体地,输出Cache查找结果时,输出Cache hit和pageIndex,并写入结果缓存。
当Cache操作模式为写Cache并分配的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,输出Cache查找结果时,输出Cache miss(相当于上述的Cache命令对应的数据在Cache中未命中),并写入结果缓存。
具体地,上述的Cache操作模式还可以包括RAID Write Allocate模式,该模式是指写Cache miss时,由Raid Controller分配存放写命令数据的地址,将数据写入RAIDCache的操作模式。当Cache操作模式为RAID Write Allocate模式时,方法还可以包括:
S1:分配新的pageIndex:RAID Controller根据Cache查找结果分配新的pageIndex;执行S2;
S2:写Cache:RAID Controller将写IO命令的数据写到新的pageIndex指定的空间。
本申请通过该实施方式实现了写Cache并不回收Cache资源的模式下如何进行数据写入Cache,可以支持多种复杂的写Cache场景,例如RAID Write Back、RAID WriteThrough以及RAID Write Allocate等场景。
请参考图2,图2为一种实施例中,RAID Write Back模式的操作流程示意图。如图2所示,在RAID Write Back模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache hit(Cache命中)。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新W_L =‘1’,M =‘1’,其它信息不更新;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果:将Cache查找结果:Cache hit和pageIndex写入结果缓存。执行S1;
S1:写Cache:RAID Controller根据查找结果,将写IO命令的数据写到pageIndex指定的空间。执行S2;
S2:Cache更新,执行S2.1
S2.1:更新Hash表项:读取Hash表项,更新W_L =‘0’,其它信息不变;更新完成后写入Hash表,执行S2.2;
S2.2:输出结果:输出Cache更新完成标志,写Cache操作完成。
请参考图3,图3为一种实施例中,RAID Write Through模式的操作流程示意图。如图3所示,在RAID Write Through模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache hit。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新W_L =‘1’、M =‘1’,其它信息不更新;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果:将Cache查找结果:Cache hit和pageIndex写入结果缓存。执行S1;
S1:写Cache:RAID Controller根据查找结果,将写IO命令的数据写到pageIndex指定的空间。执行S2;
S2:写盘:RAID Controller根据查找结果,将写IO命令的数据写到磁盘。执行S3;
S3:Cache更新,执行S3.1
S3.1:更新Hash表项:读取Hash表项,更新W_L =‘0’,其它信息不变;更新完成后写入Hash表,执行S3.2;
S3.2:输出结果:输出Cache更新完成标志,写Cache操作完成。
请参考图4,图4为一种实施例中,RAID Write Allocate模式的操作流程示意图。如图4所示,在RAID Write Allocate模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache miss(Cache未命中)。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新W_L =‘1’,将命令信息中DISKID、NSID、dev_lba字段更新到Hash表项DISKID、NSID、dev_lba字段;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果:将Cache查找结果:Cache miss写入结果缓存。执行S1;
S1:分配新的pageIndex(Cache存储地址相当于图中的存储地址):RAIDController根据Cache查找结果分配新的pageIndex;执行S2;
S2:写Cache:RAID Controller将写IO命令的数据写到pageIndex指定的空间。执行S3;
S3:Cache更新,执行S3.1
S3.1:更新Hash表项:读取Hash表项,更新V = 1、W_L =‘0’,将命令信息中pageIndex字段更新到Hash表项pageIndex字段;更新完成后写入Hash表,执行S3.2;
S3.2:输出结果:输出Cache更新完成标志,写Cache操作完成。
请参考图5,图5为一种实施例中,RAID No Write Allocate模式的操作流程示意图。如图5所示,在RAID No Write Allocate模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache hit。执行S0.1;查找结果为:Cache miss。执行S0.2;
S0.1:更新Hash表项:Hash表项写全零,更新完成后写入Hash表。执行S0.2;
S0.2:输出查找结果:将Cache查找结果:Cache hit和recycle写入结果缓存。执行S1;
S1:写盘:RAID Controller根据查找结果,将写IO命令的数据写到磁盘。写Cache操作完成。
在其中一个实施例中,上述的方法还可以包括:
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,读取Cache存储地址指定空间的数据写回主机,并执行Cache更新;
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,读取磁盘中Cache命令对应的数据返回主机,并执行Cache更新。
本申请预先设置了多种读Cache模式,其中包括读Cache并不分配Cache存储地址的模式,即读Cache-nAllocate模式。
具体地,上述的读Cache并不分配Cache存储地址的模式可以包括RAID ReadBack模式。其中,RAID Read Back模式是指读Cache hit时,将RAID Cache中的数据写入主机的操作模式。
当上述的读Cache并不分配Cache存储地址的模式为RAID Read Back模式时,上述的方法可以包括:
RAID Controller根据查找结果,读取pageIndex指定空间的数据写回主机。
本申请通过该实施方式可以支持多种复杂的读Cache模式,支持多种读Cache的应用场景。
进一步地,当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,读取磁盘中Cache命令对应的数据返回主机。
其中,上述的读Cache并不分配Cache存储地址的模式还可以包括RAID ReadThrough模式。其中,RAID Read Through模式是指读Cache miss时,将磁盘中的数据写入主机的操作模式。
本申请通过该实施方式可以实现在RAID Read Through模式下的Cache读取流程。
在其中一个实施例中,上述的方法还可以包括:
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,从磁盘中读取Cache命令对应的数据返回主机,并分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址,并执行Cache更新。
本申请中,上述的Cache操作模式还包括读Cache并分配Cache存储地址的模式,即读Cache-Allocate模式。具体而言,该读Cache并分配Cache存储地址的模式可以为RAIDRead Allocate模式,其中,该RAID Read Allocate是指读Cache miss时,将磁盘中的数据写入RAID Cache,再写入主机的操作,或将磁盘中的数据写入主机后,再写入RAID Cache的操作模式。
在其中一个实施例中,上述的状态信息为还包括读不分配锁定状态,读取Cache存储地址指定空间的数据写回主机之前,方法还包括:
将读不分配锁定状态置为有效。
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,上述的执行Cache更新,包括:
将读不分配锁定状态置为无效。
其中,上述的状态信息位还可以包括读不分配锁定状态RnA_L:ReadnonAllocate Lock(读不分配锁定),表示在执行读Cache并分配Cache存储地址的模式时,dev_lba数据是否被锁定。该状态信息位有效时,表示Hash表项被锁定。
当查找结果为Cache hit,且OpMode(Cache操作模式)为读Cache-nonAllocate时,更新Hash表项,将RnA_L置为有效,输出Cache查找结果:Cache hit和pageIndex,Cache查找完成。
当读取Cache存储地址指定空间的数据写回主机之后,执行Cache更新。当OpType(Cache操作类型)为Cache更新,OpMode为读Cache-NonAllocate时,更新Hash表项,将RnA_L置为无效,更新完成后写入Hash表,Cache更新完成。
本申请通过该实施方式可以实现读Cache-nonAllocate模式下的Cache更新。
在其中一个实施例中,上述的状态信息位还包括读分配锁定状态,上述的从磁盘中读取Cache命令对应的数据返回主机之前,上述的方法还可以包括:
将读分配锁定状态置为有效;
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,上述的执行Cache更新,包括:
将读分配锁定状态置为无效。
其中,上述的状态信息位还可以包括读分配锁定状态RA_L:Read Allocate Lock(读分配锁定),表示在执行读Cache-Allocate模式时,dev_lba数据是否被锁定。该状态信息位有效时,表示Hash表项被锁定。
具体地,当查找结果为Cache hit,且OpMode为读Cache-Allocate时,更新Hash表项,将RA_L置为有效,将命令信息中Disk ID(磁盘ID)和dev_lba字段取值更新到Hash表项中Disk ID和dev_lba字段的取值;更新完成后写入Hash表,输出Cache查找结果:Cachemiss,Cache查找完成。
当分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址之后,执行Cache更新,当OpType为Cache更新,OpMode为读Cache-Allocate时,更新Hash表项,将V置为有效,RA_L置为无效,将命令信息中pageIndex字段的取值更新到Hash表项中pageIndex字段的取值,更新完成后写入Hash表,Cache更新完成。
本申请通过该实施方式可以实现读Cache-Allocate模式下的Cache更新。
请参考图6,图6为一种实施例中,RAID Read Back模式的操作流程示意图。如图6所示,在RAID Read Back模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache hit。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新RnA_L =‘1’,其它信息不更新;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果:将Cache查找结果:Cache hit和pageIndex写入结果缓存。执行S1;
S1:读Cache:RAID Controller根据查找结果,读取pageIndex指定空间的数据写回主机。执行S2;
S2:Cache更新,执行S2.1
S2.1:更新Hash表项:读取Hash表项,更新RnA_L =‘0’,其它信息不变;更新完成后写入Hash表,执行S2.2;
S2.2:输出结果:输出Cache更新完成标志,读Cache操作完成。
请参考图7,图7为一种实施例中,RAID Read Through模式的操作流程示意图。如图7所示,在RAID Read Through模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache miss。执行S0.1;
S0.1:输出Cache查找结果:将Cache查找结果:Cache hit和pageIndex写入结果缓存。执行S1;
S1:读盘:RAID Controller根据查找结果,读取磁盘数据写回主机。读Cache操作完成。
请参考图8,图8为一种实施例中,RAID Read Allocate模式的操作流程示意图。如图8所示,在RAID Read Allocate模式中,本申请的Cache的数据处理方法可以包括:
S0:Cache查找,查找结果为:Cache miss。执行S0.1;
S0.1:更新Hash表项:读取Hash表项,更新RA_L =‘1’,将命令信息中DISKID、NSID、dev_lba字段更新到Hash表项DISKID、NSID、dev_lba字段;更新完成后写入Hash表。执行S0.2;
S0.2:输出Cache查找结果:将Cache查找结果:Cache miss写入结果缓存。执行S1;
S1:读盘:RAID Controller根据查找结果,读取磁盘数据写回主机。执行S2;
S2:分配新的pageIndex:RAID Controller根据Cache查找结果分配新的pageIndex;执行S2;
S3:写Cache:RAID Controller将磁盘数据写到pageIndex指定的空间。执行S4;
S4:Cache更新,执行S4.1
S4.1:更新Hash表项:读取Hash表项,更新V =‘1’、RA_L =‘0’,将命令信息中pageIndex字段更新到Hash表项pageIndex字段;更新完成后写入Hash表,执行S4.2;
S4.2:输出结果:输出Cache更新完成标志,读Cache操作完成。
在其中一个实施例中,上述的方法还可以包括:
当Cache操作模式为落盘操作,且查找结果为Cache命令对应的数据在Cache中未命中时,将Cache存储地址对应空间的数据写入磁盘,并将各所述状态信息位的取值都更新为无效,以进行回收Cache资源。
具体地,当OpType为Cache回收,OpMode为落盘Cache时,更新目标哈希表项,将目标哈希表项中的各个状态信息位的取值写全零。更新完成后写入Hash表,Cache回收完成。
请参考图9,图9为一种实施例中,落盘操作的流程示意图。在图9中,落盘操作的流程包括:
S0:Cache查找,查找结果为:Cache hit。执行S0.1;查找结果为:Cache miss,输出查询结果:Cache miss,落盘Cache操作完成。
S0.1:更新Hash表项:更新D_L=‘1’,更新完成后写入Hash表。执行S0.2;
S0.2:输出结果:将Cache查找结果:Cache hit和pageIndex写入结果缓存。执行S1;
S1:落盘:RAID Controller根据查找结果,将pageIndex指定空间的数据写入磁盘。执行S2;
S2:Cache更新:执行S2.1
S2.1:更新Hash表项:Hash表项写全零,更新完成后写入Hash表。执行S2.2;
S2.2:输出结果:输出Cache回收完成标志,落盘Cache操作完成。
在一个实施例中,如图10所示,提供了一种磁盘阵列Cache的数据处理***,包括磁盘阵列控制器和磁盘,磁盘阵列控制器与磁盘连接,上述的磁盘阵列控制器包括Cache处理装置以及读写装置,Cache处理装置与读写装置连接,其中,
Cache处理装置用于接收Cache命令,根据Cache命令执行Cache查找,得到查找结果,根据Cache命令以及查找结果确定Cache操作模式,当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源;
读写装置用于将Cache命令对应的数据写入磁盘;
所述Cache处理装置还用于执行所述Cache更新。
本申请中,上述的***还包括主机,主机与上述的磁盘阵列控制器连接,主机向磁盘阵列控制器发送IO命令,磁盘阵列控制器解析IO命令得到上述的Cache命令。
具体地,磁盘阵列控制器根据Cache命令中的命令详情信息与配置数据中的各个预先配置的Cache操作模式进行匹配,当匹配到目标操作模式时,获取该目标操作模式对应配置的处理流程,该处理流程中包括Cache操作类型,根据该Cache操作类型确定Cache命令。
具体地,Cache命令中携带的信息包括但不限于以下信息:
(1)OpType:表示Cache操作类型,支持Cache查找、Cache更新、Cache回收。
(2)OpMode:表示Cache操作模式,支持写Cache-Recycle、写Cache-nRecycle、读Cache-Allocate、读Cache-nAllocate、落盘Cache。其中,写Cache-Recycle只在RAID NoWrite Allocate模式时有效,否则,均为写Cache- nRecycle。读Cache-Allocate只在RAIDRead Allocate模式时有效,否则,均为Cache-nAllocate。
(3)dev_lba:表示磁盘的LBA起始地址。
(4)Disk ID:表示磁盘ID号。
(5)pageIndex:表示RAID Controller分配的主机IO命令或磁盘数据的起始地址。
在其中一个实施例中,上述的Cache命令包括多个,上述的Cache处理装置包括命令队列、Hash管理单元以及Cache处理单元,上述的命令队列与Hash管理单元连接,Hash管理单元与Cache处理单元连接,其中,
命令队列用于保存多个Cache命令,确定各Cache命令的Cache操作模式,并将各Cache命令派发到Hash管理单元;
Hash管理单元用于根据Cache命令进行哈希计算,并根据计算得到的哈希值将Cache命令派发到Cache处理单元;
Cache处理单元用于根据各Cache命令执行Cache查找,得到查找结果,当目标Cache命令的Cache操作模式为写Cache并回收Cache资源的模式,且目标Cache命令的查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源。
本申请中,以逻辑块大小为单位组织Cache结构。其中,这里的逻辑块是指主机可访问的最小的数据单元,通常为512字节或4096字节。本申请根据Cache命令确定Cache命令时,确定的Cache命令包括一个或多个。
具体地,命令队列用于保存硬件或软件下发的RAID Cache处理的命令即Cache命令。这里的硬件或软件相当于上述的主机命令处理装置。Hash管理单元用于维护RAIDCache组织结构,从命令队列中拿到Cache命令后进行处理后派发到Cache处理单元中。Cache处理单元用于完成Cache查找、Cache更新和Cache回收功能。
本申请通过该实施例能够实现Cache的查找,更新以及回收。
请参考图11,在其中一个实施例中,上述的Hash管理单元包括互斥锁、多个缓冲器以及各缓冲器对应的哈希计算单元,Cache处理单元包括Cache查找子单元、Cache更新子单元以及Cache回收子单元,其中,
命令队列还用于根据各Cache命令确定各Cache命令对应的Cache操作类型,并根据各Cache命令对应的Cache操作类型以及预先创建的各缓冲器与Cache操作类型的关联关系,将各Cache命令派发给对应的缓冲器,操作类型包括Cache查找操作、Cache更新操作以及Cache回收操作;
哈希计算单元用于从对应的缓冲器中读取各Cache命令,并计算各Cache命令的哈希值;
互斥锁用于根据各Cache命令对应的哈希值进行锁定,当目标Cache命令被锁定时,将目标Cache命令根据目标Cache命令对应的Cache操作类型派发到Cache处理单元中的对应子单元;
Cache查找子单元用于根据各Cache命令执行Cache查找,得到查找结果;
Cache更新子单元用于处理的操作类型为Cache更新操作;
Cache回收子单元用于当目标Cache命令的Cache操作模式为写Cache并回收Cache资源的模式,且目标Cache命令的查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源。
其中,Cache处理装置还可以包括仲裁单元,仲裁单元与Cache处理单元连接,仲裁单元通过外部总线与外部设备连接。仲裁单元用于对Cache操作产生的访问外部设备的总线接口进行仲裁。
本申请中,缓冲器可以为命令buffer,Hash管理单元内部包含互斥锁以及D(D≥1)个命令Buffer和Hash计算单元。从命令Buffer读取命令,进行Hash计算,Cache互斥锁操作后,派发到不同的Cache操作通道中,这里的Cache操作通道相当于上述的Cache处理单元中的各子单元。
具体地,主机命令处理装置根据Cache命令确定Cache查找命令,进一步根据查找结果以及预先创建的配置数据确定Cache操作模式,并进一步根据Cache操作模式确定Cache更新命令以及Cache回收命令。主机命令处理装置确定多个Cache命令后将各Cache命令对应的Cache操作模式以及Cache操作类型携带与各Cache命令中派发至命令队列。命令队列存储各Cache命令。
进一步地,命令队列解析出各Cache命令中的Cache操作模式以及Cache操作类型,根据Cache操作类型将各Cache命令派发至对应的缓冲器。这里的缓冲器可以为命令buffer。这里的各缓冲器与Cache处理单元中的子单元存在关联关系。具体地,各缓冲器与Cache操作类型存在对应关系,各Cache处理单元中的子单元与Cache操作类型也存在对应关系,因此,各缓冲器与Cache处理单元中的子单元也存在对应关系。示例性地,预先配置命令buffer1固定保存Cache查找命令,命令buffer2固定保存Cache更新命令,命令buffer3固定保存Cache回收命令。
具体地,Hash管理单元从命令Buffer中读取命令队列信息,将磁盘信息(如dev_lba、Disk ID)作为K值,计算Hash表项地址P,将各命令Buffer计算出来的P值进行互斥锁操作后,派发到不同的Cache操作通道。
当当前Cache命令互斥锁冲突,或在Cache查找结果为Hash冲突,或无法锁定时,将命令写回命令Buffer。Hash管理单元还根据Cache操作执行完成状态,对Cache互斥锁进行解锁操作。Hash管理单元中还维护有命令Buffer与Cache操作通道之间的映射关系。
具体地,上述的Cache处理装置外部可以包含以下模块:
(1)BUS0:外部总线,用于接收硬件或软件下发的RAID Cache处理的命令。
(2)BUS1:外部总线,用于RAID Cache处理装置访问Hash表和结果缓存。
(3)Hash表:保存由RAID Cache维护的Cache数据结构。
(4)Data Cache:保存由RAID Cache维护的磁盘数据。
(5)结果缓存:保存由RAID Cache处理装置执行完Cache后的结果。
本申请通过该实施方式,通过设定多个命令buffer、多个哈希计算单元,以及多个Cache处理子单元可以实现主机命令的并行运行,提高数据处理效率。
在其中一个实施例中,上述的Cache处理装置还包括仲裁单元,所述仲裁单元与所述Cache处理单元连接,所述仲裁单元通过外部总线与外部设备连接,其中,
所述仲裁单元用于对Cache操作产生的访问外部设备的总线接口进行仲裁。
本申请中,上述的仲裁单元通过外部总线所连接的外部设备可以包括Hash表、Data Cache以及结果缓存。
在其中一个实施例中,Cache处理单元中至少一个子单元的个数包括多个。
本申请通过在Cache处理单元中设定多个子单元,且设定各子单元的数目包括多个,提升数据处理的并发性,提高数据处理效率。
在一种应用场景中,上述的磁盘阵列Cache的数据处理***支持写Cache操作。其中,写Cache操作支持写Cache-nRecycle模式,该写Cache-nRecycle模式可以包括以下模式:
RAID Write Back,RAID Write Through或RAID Allocate模式
请参考图12,在写Cache-nRecycle模式中,磁盘阵列控制器将写Cache命令的数据写入RAID Cache(相当于上述的Cache)。其中,21对应的OpType为Cache查找,OpMode为写Cache-nRecycle。23对应的OpType为Cache更新,OpMode为写Cache-nRecycle。21和23为Cache处理单元执行,22为磁盘阵列控制器执行。
在一种应用场景中,写Cache操作还支持写Cache-Recycle模式,该写Cache-Recycle模式可以包括RAID No Write Allocate模式。
请参考图13,在写Cache-Recycle模式中,磁盘阵列控制器对Cache进行回收,再将写命令的数据写入磁盘。其中,31对应的OpType为Cache查找,OpMode为写Cache-Recycle。31为Cache处理单元执行,32为磁盘阵列控制器执行。
在一种应用场景中,上述的磁盘阵列Cache的数据处理***支持读Cache操作。其中,读Cache操作支持读Cache-NonAllocate模式,该读Cache-NonAllocate模式可以包括以下模式:
RAID Read Back模式以及RAID Read Through模式
请参考图14,在RAID Read Back模式中,磁盘阵列控制器从RAID Cache中读取数据后再写回主机。其中,41对应的OpType为Cache查找
OpMode为读Cache-NonAllocate,查找结果为:Cache hit。43对应的OpType为Cache更新,OpMode为读Cache-NonAllocate。41和43为Cache处理单元执行,42为磁盘阵列控制器执行。
请参考图15,在RAID Read Through模式中,磁盘阵列控制器从磁盘中读取数据后写回主机。其中,51对应的OpType为Cache查找,OpMode为读Cache-NonAllocate,查找结果为:Cache miss。51为Cache处理单元执行,52为磁盘阵列控制器执行。
在一种应用场景中,读Cache操作还支持读Cache-Allocate模式,该读Cache-Allocate模式可以包括Read Allocate模式。
请参考图16,在Read Allocate模式中,磁盘阵列控制器从磁盘中读取数据写入Cache,再从Cache中读取数据写回主机。或从磁盘读取数据写回主机,再将数据写入Cache。其中,61对应的OpType为Cache查找,OpMode为读Cache-Allocate,查找结果为:Cachemiss。63对应的OpType为Cache更新,OpMode为读Cache-Allocate。61和63为Cache处理单元执行,62为磁盘阵列控制器执行。
在一种应用场景中,上述的磁盘阵列Cache的数据处理***支持落盘Cache操作。请参考图17,在落盘Cache操作中,磁盘阵列控制器将RAID Cache中的数据写入磁。其中,71对应的OpType为Cache查找,OpMode为落盘Cache,查找结果为:Cache hit。73对应的OpType为Cache回收,
OpMode为落盘Cache。71和73为Cache处理单元执行,72为磁盘阵列控制器执行。在处理落盘Cache时,当Cache查找结果为Cache miss时,说明要落盘的数据不在Cache。由硬件或软件重新发下新的落盘Cache命令。
在一个实施例中,如图18所示,提供了一种磁盘阵列Cache的数据处理装置,装置包括:接收模块11、查找模块12、确定模块13以及读写模块14,其中,
接收模块11,用于接收Cache命令;
查找模块12,用于根据Cache命令执行Cache查找,得到查找结果;
确定模块13,用于根据Cache命令以及查找结果确定预先配置的Cache操作模式;
读写模块14,用于当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,并将Cache命令对应的数据写入磁盘,并执行Cache更新。
在其中一个实施例中,上述的确定模块13可以根据Cache命令、查找结果以及预先创建的配置数据,确定Cache操作模式,配置数据包括各Cache操作模式与各Cache命令的命令信息以及各查找结果的映射关系。
在其中一个实施例中,上述的查找模块12可以根据Cache命令进行哈希计算,得到哈希值,读取预先创建的哈希表中哈希值对应的目标哈希表项,所目标哈希表项中包括Cache的状态信息,当Cache的状态信息指示磁盘数据在Cache中时,确定查找结果为Cache命令对应的数据在Cache中命中。
在其中一个实施例中,上述的Cache的状态信息包括多个状态信息位以及对应的取值,上述的读写模块14可以将各状态信息位的取值都更新为无效,以进行回收Cache资源。
在其中一个实施例中,上述的状态信息位包括写锁定状态和修改状态,上述的读写模块14还可以当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,将目标哈希表项中的写锁定状态和修改状态更新为有效,当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,将写锁定状态更新为有效。
在其中一个实施例中,上述的状态信息位还包括磁盘数据是否在Cache的状态,当磁盘数据是否在Cache的状态为有效时,上述的读写模块14还可以当Cache操作模式为写Cache并不回收Cache资源的模式,且目标哈希表项中的磁盘数据是否在Cache的状态、写锁定状态以及修改状态均为有效时,将写锁定状态更新为无效,以执行Cache更新,当Cache操作模式为写Cache并不回收Cache资源的模式,且磁盘数据是否在Cache的状态以及修改状态均为无效,写锁定状态为有效时,将的磁盘数据是否在Cache的状态更新为有效,写锁定更新为无效,以执行Cache更新。
在其中一个实施例中,上述的状态信息位还包括Cache存储地址,当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,上述的读写模块14可以将Cache命令对应的数据写入Cache存储地址对应的空间,写Cache并不回收Cache资源的模式中包括写Cache并分配的模式,当Cache操作模式为写Cache并分配的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,上述的读写模块14还可以根据查找结果分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址对应的空间。
在其中一个实施例中,上述的读写模块14还可以当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,读取Cache存储地址指定空间的数据写回主机,并执行Cache更新,当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,读取磁盘中Cache命令对应的数据返回主机,并执行Cache更新。
在其中一个实施例中,上述的读写模块14还可以当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,从磁盘中读取Cache命令对应的数据返回主机,并分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址,并执行Cache更新。
在其中一个实施例中,上述的状态信息为还包括读不分配锁定状态,上述的读取Cache存储地址指定空间的数据写回主机之前,上述的查找模块12还可以将读不分配锁定状态置为有效,当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为所述Cache命令对应的数据在Cache中命中时,上述的读写模块14还可以将读不分配锁定状态置为无效。
在其中一个实施例中,上述的状态信息位还包括读分配锁定状态,上述的从磁盘中读取Cache命令对应的数据返回主机之前,上述的查找模块12还可以将读分配锁定状态置为有效,当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为所述Cache命令对应的数据在Cache中未命中时,上述的读写模块14还可以将读分配锁定状态置为无效。
在其中一个实施例中,上述的读写模块14还可以当Cache操作模式为落盘操作,且查找结果为Cache命令对应的数据在Cache中未命中时,将Cache存储地址对应空间的数据写入磁盘,并将各状态信息位的取值都更新为无效,以进行回收Cache资源。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图19所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储智能家居设备的运行数据等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现Cache的数据处理方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:接收Cache命令;根据Cache命令执行Cache查找,得到查找结果;根据Cache命令以及查找结果确定预先配置的Cache操作模式;当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,并将Cache命令对应的数据写入磁盘,并执行Cache更新。
在一个实施例中,处理器执行计算机程序实现上述的根据Cache命令以及查找结果确定Cache操作模式步骤时,具体实现以下步骤:
根据Cache命令、查找结果以及预先创建的配置数据,确定Cache操作模式,配置数据包括各Cache操作模式与各Cache命令的命令信息以及各查找结果的映射关系。
在一个实施例中,处理器执行计算机程序实现上述的根据Cache命令执行Cache查找,得到查找结果步骤时,具体实现以下步骤:
根据Cache命令进行哈希计算,得到哈希值;
读取预先创建的哈希表中哈希值对应的目标哈希表项,所目标哈希表项中包括Cache的状态信息;
当Cache的状态信息指示磁盘数据在Cache中时,确定查找结果为Cache命令对应的数据在Cache中命中。
在一个实施例中,上述的Cache的状态信息包括多个状态信息位以及对应的取值,处理器执行计算机程序实现上述的根据查找结果回收Cache资源步骤时,具体实现以下步骤:
将各状态信息位的取值都更新为无效,以进行回收Cache资源。
在一个实施例中,上述的状态信息位包括写锁定状态和修改状态,处理器执行计算机程序实现上述的将Cache命令对应的数据写入Cache中之前,具体实现以下步骤:
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,将目标哈希表项中的写锁定状态和修改状态更新为有效;
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,将写锁定状态更新为有效。
在一个实施例中,上述的状态信息位还包括磁盘数据是否在Cache的状态,当磁盘数据是否在Cache的状态为有效时,处理器执行计算机程序实现上述的执行Cache更新,具体实现以下步骤:
当Cache操作模式为写Cache并不回收Cache资源的模式,且目标哈希表项中的磁盘数据是否在Cache的状态、写锁定状态以及修改状态均为有效时,将写锁定状态更新为无效,以执行Cache更新;
当Cache操作模式为写Cache并不回收Cache资源的模式,且磁盘数据是否在Cache的状态以及修改状态均为无效,写锁定状态为有效时,将的磁盘数据是否在Cache的状态更新为有效,写锁定更新为无效,以执行Cache更新。
在一个实施例中,上述的状态信息位还包括Cache存储地址,当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,处理器执行计算机程序实现上述的将Cache命令对应的数据写入Cache中步骤时,具体实现以下步骤:
将Cache命令对应的数据写入Cache存储地址对应的空间;
上述的写Cache并不回收Cache资源的模式中包括写Cache并分配的模式,当Cache操作模式为写Cache并分配的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,处理器执行计算机程序时,具体还实现以下步骤:
根据查找结果分配新的Cache存储地址;
处理器执行计算机程序实现上述的将Cache命令对应的数据写入Cache中步骤时,具体实现以下步骤:
将Cache命令对应的数据写入新的Cache存储地址对应的空间。
在一个实施例中,处理器执行计算机程序时,具体还实现以下步骤:
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,读取Cache存储地址指定空间的数据写回主机,并执行Cache更新;
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,读取磁盘中Cache命令对应的数据返回主机,并执行Cache更新。
在一个实施例中,处理器执行计算机程序时,具体还实现以下步骤:
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,从磁盘中读取Cache命令对应的数据返回主机,并分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址,并执行Cache更新。
在一个实施例中,上述的在一个实施例中,上述的状态信息为还包括读不分配锁定状态,处理器执行计算机程序实现上述的读取Cache存储地址指定空间的数据写回主机之前,具体还实现以下步骤:
将读不分配锁定状态置为有效。
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,处理器执行计算机程序实现上述的执行Cache更新的步骤时,具体实现以下步骤:
将读不分配锁定状态置为无效。
在一个实施例中,上述的状态信息位还包括读分配锁定状态,处理器执行计算机程序实现上述的从磁盘中读取Cache命令对应的数据返回主机之前,具体还实现以下步骤:
将读分配锁定状态置为有效;
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为所述Cache命令对应的数据在Cache中未命中时,处理器执行计算机程序实现上述的执行Cache更新的步骤时,具体实现以下步骤:
将读分配锁定状态置为无效。
在一个实施例中,处理器执行计算机程序时,具体还实现以下步骤:
当Cache操作模式为落盘操作,且查找结果为Cache命令对应的数据在Cache中未命中时,将Cache存储地址对应空间的数据写入磁盘,并将各状态信息位的取值都更新为无效,以进行回收Cache资源。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收Cache命令;根据Cache命令执行Cache查找,得到查找结果;根据Cache命令以及查找结果确定预先配置的Cache操作模式;当Cache操作模式为写Cache并回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,根据查找结果回收Cache资源,并将Cache命令对应的数据写入磁盘,并执行Cache更新。
在一个实施例中,计算机程序被处理器执行实现上述的根据Cache命令以及查找结果确定Cache操作模式步骤时,具体实现以下步骤:
根据Cache命令、查找结果以及预先创建的配置数据,确定Cache操作模式,配置数据包括各Cache操作模式与各Cache命令的命令信息以及各查找结果的映射关系。
在一个实施例中,计算机程序被处理器执行实现上述的根据Cache命令执行Cache查找,得到查找结果步骤时,具体实现以下步骤:
根据Cache命令进行哈希计算,得到哈希值;
读取预先创建的哈希表中哈希值对应的目标哈希表项,所目标哈希表项中包括Cache的状态信息;
当Cache的状态信息指示磁盘数据在Cache中时,确定查找结果为Cache命令对应的数据在Cache中命中。
在一个实施例中,上述的Cache的状态信息包括多个状态信息位以及对应的取值,计算机程序被处理器执行实现上述的根据查找结果回收Cache资源步骤时,具体实现以下步骤:
将各状态信息位的取值都更新为无效,以进行回收Cache资源。
在一个实施例中,上述的状态信息位包括写锁定状态和修改状态,计算机程序被处理器执行实现上述的将Cache命令对应的数据写入Cache中之前,具体实现以下步骤:
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,将目标哈希表项中的写锁定状态和修改状态更新为有效;
当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,将写锁定状态更新为有效。
在一个实施例中,上述的状态信息位还包括磁盘数据是否在Cache的状态,当磁盘数据是否在Cache的状态为有效时,计算机程序被处理器执行实现上述的将Cache命令对应的数据写入Cache中之后,具体实现以下步骤:
当Cache操作模式为写Cache并不回收Cache资源的模式,且目标哈希表项中的磁盘数据是否在Cache的状态、写锁定状态以及修改状态均为有效时,将写锁定状态更新为无效,以执行Cache更新;
当Cache操作模式为写Cache并不回收Cache资源的模式,且磁盘数据是否在Cache的状态以及修改状态均为无效,写锁定状态为有效时,将的磁盘数据是否在Cache的状态更新为有效,写锁定更新为无效,以执行Cache更新。
在一个实施例中,上述的状态信息位还包括Cache存储地址,当Cache操作模式为写Cache并不回收Cache资源的模式,且查找结果为Cache命令对应的数据在Cache中命中时,计算机程序被处理器执行实现上述的将Cache命令对应的数据写入Cache中步骤时,具体实现以下步骤:
将Cache命令对应的数据写入Cache存储地址对应的空间;
上述的写Cache并不回收Cache资源的模式中包括写Cache并分配的模式,当Cache操作模式为写Cache并分配的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,计算机程序被处理器执行时,具体还实现以下步骤:
根据查找结果分配新的Cache存储地址;
计算机程序被处理器执行实现上述的将Cache命令对应的数据写入Cache中步骤时,具体实现以下步骤:
将Cache命令对应的数据写入新的Cache存储地址对应的空间。
在一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,读取Cache存储地址指定空间的数据写回主机,并执行Cache更新;
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,读取磁盘中Cache命令对应的数据返回主机,并执行Cache更新。
在一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中未命中时,从磁盘中读取Cache命令对应的数据返回主机,并分配新的Cache存储地址,将Cache命令对应的数据写入新的Cache存储地址,并执行Cache更新。
在一个实施例中,上述的在一个实施例中,上述的状态信息为还包括读不分配锁定状态,计算机程序被处理器执行实现上述的读取Cache存储地址指定空间的数据写回主机之前,具体还实现以下步骤:
将读不分配锁定状态置为有效。
当Cache操作模式为读Cache并不分配Cache存储地址的模式,且查找结果为Cache命令对应的数据在Cache中命中时,计算机程序被处理器执行实现上述的执行Cache更新的步骤时,具体实现以下步骤:
将读不分配锁定状态置为无效。
在一个实施例中,上述的状态信息位还包括读分配锁定状态,计算机程序被处理器执行实现上述的从磁盘中读取Cache命令对应的数据返回主机之前,具体还实现以下步骤:
将读分配锁定状态置为有效;
当Cache操作模式为读Cache并分配Cache存储地址的模式,且查找结果为所述Cache命令对应的数据在Cache中未命中时,计算机程序被处理器执行实现上述的执行Cache更新的步骤时,具体实现以下步骤:
将读分配锁定状态置为无效。
在一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
当Cache操作模式为落盘操作,且查找结果为Cache命令对应的数据在Cache中未命中时,将Cache存储地址对应空间的数据写入磁盘,并将各状态信息位的取值都更新为无效,以进行回收Cache资源。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (20)
1.一种Cache的数据处理方法,其特征在于,所述方法包括:
接收Cache命令;
根据所述Cache命令执行Cache查找,得到查找结果;
根据所述Cache命令以及所述查找结果确定预先配置的Cache操作模式;
当所述Cache操作模式为写Cache并回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在Cache中命中时,根据所述查找结果回收Cache资源,将所述Cache命令对应的数据写入磁盘,并执行Cache更新。
2.根据权利要求1所述的方法,其特征在于,所述根据所述Cache命令以及所述查找结果确定Cache操作模式,包括:
根据所述Cache命令、所述查找结果以及预先创建的配置数据,确定所述Cache操作模式,所述配置数据包括各Cache操作模式与各Cache命令的命令信息以及各查找结果的映射关系。
3.根据权利要求1所述的方法,其特征在于,所述根据所述Cache命令执行Cache查找,得到查找结果,包括:
根据所述Cache命令进行哈希计算,得到哈希值;
读取预先创建的哈希表中所述哈希值对应的目标哈希表项,所目标哈希表项中包括所述Cache的状态信息;
当所述Cache的状态信息指示磁盘数据在所述Cache中时,确定所述查找结果为所述Cache命令对应的数据在所述Cache中命中。
4.根据权利要求3所述的方法,其特征在于,所述Cache的状态信息包括多个状态信息位以及对应的取值,所述根据所述查找结果回收Cache资源,包括:
将各所述状态信息位的取值都更新为无效,以进行回收Cache资源。
5.根据权利要求4所述的方法,其特征在于,所述状态信息位包括写锁定状态和修改状态,当所述Cache操作模式为写Cache并不回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中命中时,将所述Cache命令对应的数据写入所述Cache中,所述将所述Cache命令对应的数据写入所述Cache中之前,所述方法还包括:
当所述Cache操作模式为写Cache并不回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中命中时,将所述目标哈希表项中的写锁定状态和修改状态更新为有效;
当所述Cache操作模式为写Cache并不回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中未命中时,将所述写锁定状态更新为有效。
6.根据权利要求5所述的方法,其特征在于,所述状态信息位还包括磁盘数据是否在Cache的状态,当所述磁盘数据是否在Cache的状态为有效时,所述执行Cache更新,包括:
当所述Cache操作模式为写Cache并不回收Cache资源的模式,且所述目标哈希表项中的磁盘数据是否在Cache的状态、写锁定状态以及修改状态均为有效时,将所述写锁定状态更新为无效,以执行所述Cache更新;
当所述Cache操作模式为写Cache并不回收Cache资源的模式,且所述磁盘数据是否在Cache的状态以及所述修改状态均为无效,所述写锁定状态为有效时,将所述的磁盘数据是否在Cache的状态更新为有效,所述写锁定更新为无效,以执行所述Cache更新。
7.根据权利要求5所述的方法,其特征在于,所述状态信息位还包括Cache存储地址,当所述Cache操作模式为写Cache并不回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中命中时,所述将所述Cache命令对应的数据写入所述Cache中,包括:
将所述Cache命令对应的数据写入所述Cache存储地址对应的空间;
所述写Cache并不回收Cache资源的模式中包括写Cache并分配的模式,当所述Cache操作模式为写Cache并分配的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中未命中时,所述方法还包括:
根据所述查找结果分配新的Cache存储地址;
所述将所述Cache命令对应的数据写入所述Cache中,包括:
将所述Cache命令对应的数据写入所述新的Cache存储地址对应的空间。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述Cache操作模式为读Cache并不分配Cache存储地址的模式,且所述查找结果为所述Cache命令对应的数据在Cache中命中时,读取所述Cache存储地址指定空间的数据写回主机,并执行所述Cache更新;
当所述Cache操作模式为读Cache并不分配Cache存储地址的模式,且所述查找结果为所述Cache命令对应的数据在Cache中未命中时,读取所述磁盘中所述Cache命令对应的数据返回所述主机,并执行所述Cache更新。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述Cache操作模式为读Cache并分配Cache存储地址的模式,且所述查找结果为所述Cache命令对应的数据在Cache中未命中时,从所述磁盘中读取所述Cache命令对应的数据返回所述主机,并分配新的Cache存储地址,将所述Cache命令对应的数据写入所述新的Cache存储地址,并执行所述Cache更新。
10.根据权利要求8所述的方法,其特征在于,所述状态信息为还包括读不分配锁定状态,所述读取所述Cache存储地址指定空间的数据写回所述主机之前,所述方法还包括:
将所述读不分配锁定状态置为有效;
当所述Cache操作模式为读Cache并不分配Cache存储地址的模式,且所述查找结果为所述Cache命令对应的数据在Cache中命中时,所述执行所述Cache更新,包括:
将所述读不分配锁定状态置为无效。
11.根据权利要求9所述的方法,其特征在于,所述状态信息位还包括读分配锁定状态,所述从所述磁盘中读取所述Cache命令对应的数据返回所述主机之前,所述方法还包括:
将所述读分配锁定状态置为有效;
当所述Cache操作模式为读Cache并分配Cache存储地址的模式,且所述查找结果为所述Cache命令对应的数据在Cache中未命中时,所述执行所述Cache更新,包括:
将所述读分配锁定状态置为无效。
12.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述Cache操作模式为落盘操作,且所述查找结果为所述Cache命令对应的数据在Cache中未命中时,将所述Cache存储地址对应空间的数据写入所述磁盘,并将各所述状态信息位的取值都更新为无效,以进行回收Cache资源。
13.一种磁盘阵列Cache的数据处理***,其特征在于,所述***包括磁盘阵列控制器和磁盘,所述磁盘阵列控制器与所述磁盘连接,所述磁盘阵列控制器包括Cache处理装置以及读写装置,所述Cache处理装置与所述读写装置连接,其中,
所述Cache处理装置用于接收Cache命令,根据所述Cache命令执行Cache查找,得到查找结果,根据所述Cache命令以及所述查找结果确定Cache操作模式,当所述Cache操作模式为写Cache并回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中命中时,根据所述查找结果回收Cache资源;
所述读写装置用于将所述Cache命令对应的数据写入所述磁盘;
所述Cache处理装置还用于执行所述Cache更新。
14.根据权利要求13所述的***,其特征在于,所述Cache命令包括多个,所述Cache处理装置包括命令队列、Hash管理单元以及Cache处理单元,所述命令队列与所述Hash管理单元连接,所述Hash管理单元与所述Cache处理单元连接,其中,
所述命令队列用于保存所述多个Cache命令,确定各所述Cache命令的Cache操作模式,并将各所述Cache命令派发到所述Hash管理单元;
所述Hash管理单元用于根据所述Cache命令进行哈希计算,并根据计算得到的哈希值将所述Cache命令派发到所述Cache处理单元;
所述Cache处理单元用于根据各所述Cache命令执行Cache查找,得到查找结果,当目标Cache命令的Cache操作模式为写Cache并回收Cache资源的模式,且所述目标Cache命令的查找结果为所述Cache命令对应的数据在所述Cache中命中时,根据所述查找结果回收Cache资源。
15.根据权利要求14所述的***,其特征在于,所述Hash管理单元包括互斥锁、多个缓冲器以及各所述缓冲器对应的哈希计算单元,所述Cache处理单元包括Cache查找子单元、Cache更新子单元以及Cache回收子单元,其中,
所述命令队列还用于根据各所述Cache命令确定各所述Cache命令对应的Cache操作类型,并根据各所述Cache命令对应的Cache操作类型以及预先创建的各缓冲器与Cache操作类型的关联关系,将各所述Cache命令派发给对应的缓冲器,所述操作类型包括Cache查找操作、Cache更新操作以及Cache回收操作;
所述哈希计算单元用于从对应的缓冲器中读取各所述Cache命令,并计算各所述Cache命令的哈希值;
所述互斥锁用于根据各所述Cache命令对应的哈希值进行锁定,当所述目标Cache命令被锁定时,将所述目标Cache命令根据所述目标Cache命令对应的Cache操作类型派发到所述Cache处理单元中的对应子单元;
所述Cache查找子单元用于根据各所述Cache命令执行Cache查找,得到查找结果;
所述Cache更新子单元用于处理的操作类型为所述Cache更新操作;
所述Cache回收子单元用于当目标Cache命令的Cache操作模式为写Cache并回收Cache资源的模式,且所述目标Cache命令的查找结果为所述Cache命令对应的数据在所述Cache中命中时,根据所述查找结果回收Cache资源。
16.根据权利要求15所述的***,其特征在于,所述Cache处理装置还包括仲裁单元,所述仲裁单元与所述Cache处理单元连接,所述仲裁单元通过外部总线与外部设备连接,其中,
所述仲裁单元用于对Cache操作产生的访问外部设备的总线接口进行仲裁。
17.根据权利要求14所述的***,其特征在于,所述Cache处理单元中至少一个子单元的个数包括多个。
18.一种磁盘阵列Cache的数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收Cache命令;
查找模块,用于根据所述Cache命令执行Cache查找,得到查找结果;
确定模块,用于根据所述Cache命令以及所述查找结果确定预先配置的Cache操作模式;
读写模块,用于当所述Cache操作模式为写Cache并回收Cache资源的模式,且所述查找结果为所述Cache命令对应的数据在所述Cache中命中时,根据所述查找结果回收Cache资源,将所述Cache命令对应的数据写入所述磁盘,并执行Cache更新。
19.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述方法的步骤。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311348634.1A CN117093160B (zh) | 2023-10-18 | 2023-10-18 | Cache的数据处理方法、装置、计算机设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311348634.1A CN117093160B (zh) | 2023-10-18 | 2023-10-18 | Cache的数据处理方法、装置、计算机设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117093160A CN117093160A (zh) | 2023-11-21 |
CN117093160B true CN117093160B (zh) | 2024-02-02 |
Family
ID=88777206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311348634.1A Active CN117093160B (zh) | 2023-10-18 | 2023-10-18 | Cache的数据处理方法、装置、计算机设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117093160B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1804816A (zh) * | 2004-12-29 | 2006-07-19 | 英特尔公司 | 用于程序员控制的超高速缓冲存储器线回收策略的方法 |
CN104166601A (zh) * | 2014-08-14 | 2014-11-26 | 浙江宇视科技有限公司 | 一种存储数据的备份方法和装置 |
CN115904231A (zh) * | 2022-11-09 | 2023-04-04 | 超聚变数字技术有限公司 | 一种raid卡掉电处理方法及相关装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274713B2 (en) * | 2014-04-03 | 2016-03-01 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Device driver, method and computer-readable medium for dynamically configuring a storage controller based on RAID type, data alignment with a characteristic of storage elements and queue depth in a cache |
-
2023
- 2023-10-18 CN CN202311348634.1A patent/CN117093160B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1804816A (zh) * | 2004-12-29 | 2006-07-19 | 英特尔公司 | 用于程序员控制的超高速缓冲存储器线回收策略的方法 |
CN104166601A (zh) * | 2014-08-14 | 2014-11-26 | 浙江宇视科技有限公司 | 一种存储数据的备份方法和装置 |
CN115904231A (zh) * | 2022-11-09 | 2023-04-04 | 超聚变数字技术有限公司 | 一种raid卡掉电处理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117093160A (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
KR100772863B1 (ko) | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 | |
JP2020046963A (ja) | メモリシステムおよび制御方法 | |
US20220066693A1 (en) | System and method of writing to nonvolatile memory using write buffers | |
CN111694770B (zh) | 一种处理io请求的方法及装置 | |
CN107193503B (zh) | 一种数据重删方法及存储设备 | |
CN108319430B (zh) | 处理io请求的方法及装置 | |
US20230359380A1 (en) | Memory system and method for controlling nonvolatile memory | |
CN116431530B (zh) | 一种cxl内存模组、内存的处理方法及计算机*** | |
US9934248B2 (en) | Computer system and data management method | |
US11151064B2 (en) | Information processing apparatus and storage device access control method | |
US9569113B2 (en) | Data storage device and operating method thereof | |
CN117093160B (zh) | Cache的数据处理方法、装置、计算机设备和介质 | |
US11875152B2 (en) | Methods and systems for optimizing file system usage | |
CN107562654B (zh) | Io命令处理方法与装置 | |
CN111625477B (zh) | 访问擦除块的读请求的处理方法与装置 | |
US11474938B2 (en) | Data storage system with multiple-size object allocator for disk cache | |
US10649906B2 (en) | Method and system for hardware accelerated row lock for a write back volume | |
US11874767B2 (en) | Memory partitions for processing entities | |
EP4287028A1 (en) | Storage device providing high purge performance and memory block management method thereof | |
US20240241653A1 (en) | Method, distributed controller, and system for managing sequential storage devices in distributed storage environment | |
CN113076056B (zh) | 数据访问方法、硬盘和存储设备 | |
US20190095340A1 (en) | Discontiguous storage and contiguous retrieval of logically partitioned data | |
CN118227045A (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 |