一种RAID卡的写缓存方法、系统、设备及存储介质技术方案

技术编号:37502860 阅读:19 留言:0更新日期:2023-05-07 09:38
本申请公开了一种RAID卡的写缓存方法、系统、设备及存储介质,应用于存储技术领域,包括:接收写指令;根据写指令的地址信息,按照跳跃表的结构进行索引,并在索引过程中,在当前进行索引的层中设置加锁区域;在索引完成之后,在跳跃表的数据层中对应于地址信息的位置写入地址信息和写数据内容,作为写入的节点的节点数据;其中,RAID卡中的跳跃表为用于进行写缓存的跳跃表,包括多层索引层和1层数据层,数据层中包括多个节点,表示的是当前待落盘的各个写缓存数据;在数据层中,基于节点数据中的地址信息进行各个节点的顺序排列、应用本申请的方案,有利于提高读写效率,便于并发操作。便于并发操作。便于并发操作。

【技术实现步骤摘要】
一种RAID卡的写缓存方法、系统、设备及存储介质


[0001]本专利技术涉及存储
,特别是涉及一种RAID卡的写缓存方法、系统、设备及存储介质。

技术介绍

[0002]目前,在发展中出现了通过RAID(Redundant Arrays of Independent Disks,独立磁盘冗余阵列)管理硬盘的方法,可以提高数据的访问性能,同时RAID阵列也能够提供一定程度的数据冗余。最早的RAID阵列由软件实现,随着发展产生了专门用来提供RAID功能的硬件设备,即RAID卡,可以更为高效地进行IO(Input/Output,读写)处理操作。RAID卡中同样设计了一些特定的功能用来加速硬盘的数据读取,其中写缓存就是一个重要的功能。目前实现RAID卡写缓存的方式为红黑树,因为红黑树不仅能够保证数据读取序列的顺序性,也能够保持树的平衡,并且可以提供对数级的读写访问速度。图1a是一个用来进行数据缓存的红黑树结构,红黑树整体遍历上可以保证有序性,和磁盘写缓存的需求相适应。图1a中进行中序遍历后数据下盘在磁道结构上是顺序的,可以减少寻道时间,图1a的下盘次序为2、5、9、12、13、15、18、20、26、30。但是,使用红黑树实现数据插入和删除时,为了不破坏红黑树的性质需要进行节点的左旋/右旋操作,这些旋转操作不仅次数多,并且实现方式包括后续的问题排查复杂。例如图1b为一种场合中的旋转操作,通过右旋操作修正子树深度,类似的操作基本在每次插入或者删除节点数据的时候都需要进行。此外当存在并发插入和删除时,需要给正在调整的节点的兄弟节点、父节点、叔叔节点、爷爷节点等节点加锁,因为调整过程中可能改变这些结点的节点信息,这会导致缓存的并发写入能力差。
[0003]综上所述,如何实现高效的写缓存,是目前本领域技术人员急需解决的技术问题。

技术实现思路

[0004]本专利技术的目的是提供一种RAID卡的写缓存方法、系统、设备及存储介质,以实现高效的写缓存。
[0005]为解决上述技术问题,本专利技术提供如下技术方案:一种RAID卡的写缓存方法,包括:接收携带有地址信息和写数据内容的写指令;根据所述地址信息,按照跳跃表的结构进行索引,并且在索引过程中,在当前进行索引的层中设置加锁区域;在索引完成之后,在所述跳跃表的数据层中对应于所述地址信息的位置写入所述地址信息和所述写数据内容,作为写入的节点的节点数据;其中,RAID卡中的所述跳跃表为用于进行写缓存的跳跃表,包括多层索引层和1层数据层,所述数据层中包括多个节点,表示的是当前待落盘的各个写缓存数据;在所述数据层中,基于节点数据中的地址信息进行各个节点的顺序排列。
[0006]优选的,在所述数据层中,基于节点数据中的逻辑地址从小到大的顺序,进行各个
节点的顺序排列。
[0007]优选的,在所述跳跃表的每一层索引层中,该层索引层的各个节点按照节点键值从小到大的顺序进行排列,并且该层索引层的各个节点指向下一层索引层中具有相同节点键值的节点;所述跳跃表最下层的索引层中的各个节点指向所述数据层中具有相同节点键值的节点;在所述数据层中,各个节点的节点数据中的逻辑地址,作为该节点的键值。
[0008]优选的,从所述跳跃表中最上层的索引层至最下层的索引层,节点的数量递增。
[0009]优选的,从所述跳跃表中最上层的索引层至最下层的索引层,节点的数量按照翻倍的原则递增。
[0010]优选的,在索引过程中,在当前进行索引的层中设置加锁区域,包括:在对所述跳跃表中最上层的索引层进行索引时,基于最上层的索引层中的最小节点和最大节点确定出加锁边界,并设定最上层的索引层的整层均为加锁区域;在对所述跳跃表中最上层的索引层之外的其它层进行索引时,基于上一层的索引结果对当前的所述加锁边界进行缩短,并基于缩短之后的加锁边界设定加锁区域。
[0011]优选的,在任意一层索引层设定的加锁区域均为写锁,在所述数据层设定的加锁区域为读写锁。
[0012]优选的,还包括:在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,选取一个非指向性节点;将选取的该非指向性节点添加至上一层,以使得该非指向性节点变为指向性节点;其中,对于任意一层中的任意一个节点,当该节点被上一层节点索引时,该节点为指向性节点,否则节点为非指向性节点。
[0013]优选的,在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,选取一个非指向性节点,包括:在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,随机选取一个非指向性节点。
[0014]优选的,在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,选取一个非指向性节点,包括:在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,选取居中位置的一个非指向性节点。
[0015]优选的,还包括:接收携带有地址信息的读指令;根据所述读指令的地址信息,按照跳跃表的结构进行索引,判断所述跳跃表的数据层中是否存在对应于所述读指令的地址信息的节点;
如果存在,则将对应于所述读指令的地址信息的节点的节点数据中的写数据内容,作为所述读指令的读取数据进行反馈。
[0016]优选的,还包括:在判断出所述跳跃表的数据层中不存在对应于所述读指令的地址信息的节点之后,根据所述读指令的地址信息,从硬盘中读取数据并进行反馈。
[0017]优选的,还包括:当从硬盘中读取数据出错时,输出读取数据失败的反馈信息。
[0018]优选的,还包括:从硬盘读取热数据并保存在缓存中,并对缓存中的热数据进行周期性更新。
[0019]优选的,还包括:基于所述跳跃表的数据层向硬盘写数据。
[0020]优选的,所述基于所述跳跃表的数据层向硬盘写数据,包括:基于电梯算法循环遍历所述数据层;在遍历到所述数据层中的任意1个节点时,基于该节点的节点数据中的写地址,将该的节点数据中的写数据内容写入硬盘中,并进行所述跳跃表的更新。
[0021]优选的,所述进行所述跳跃表的更新,包括:在将任意一个节点的节点数据中的写数据内容写入硬盘之后,将该节点从所述数据层中删除,并且按照自下向上的顺序,将所述跳跃表中指向该节点的各个节点进行删除。
[0022]优选的,所述基于电梯算法循环遍历所述数据层,包括:基于电梯算法,以每次遍历a个节点的方式,循环遍历所述数据层;其中,a为正整数。
[0023]一种RAID卡的写缓存系统,包括:写指令接收模块,用于接收携带有地址信息和写数据内容的写指令;索引模块,用于根据所述地址信息,按照跳跃表的结构进行索引,并且在索引过程中,在当前进行索引的层中设置加锁区域;写入本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种RAID卡的写缓存方法,其特征在于,包括:接收携带有地址信息和写数据内容的写指令;根据所述地址信息,按照跳跃表的结构进行索引,并且在索引过程中,在当前进行索引的层中设置加锁区域;在索引完成之后,在所述跳跃表的数据层中对应于所述地址信息的位置写入所述地址信息和所述写数据内容,作为写入的节点的节点数据;其中,RAID卡中的所述跳跃表为用于进行写缓存的跳跃表,包括多层索引层和1层数据层,所述数据层中包括多个节点,表示的是当前待落盘的各个写缓存数据;在所述数据层中,基于节点数据中的地址信息进行各个节点的顺序排列。2.根据权利要求1所述的RAID卡的写缓存方法,其特征在于,在所述数据层中,基于节点数据中的逻辑地址从小到大的顺序,进行各个节点的顺序排列。3.根据权利要求2所述的RAID卡的写缓存方法,其特征在于,在所述跳跃表的每一层索引层中,该层索引层的各个节点按照节点键值从小到大的顺序进行排列,并且该层索引层的各个节点指向下一层索引层中具有相同节点键值的节点;所述跳跃表最下层的索引层中的各个节点指向所述数据层中具有相同节点键值的节点;在所述数据层中,各个节点的节点数据中的逻辑地址,作为该节点的键值。4.根据权利要求2所述的RAID卡的写缓存方法,其特征在于,从所述跳跃表中最上层的索引层至最下层的索引层,节点的数量递增。5.根据权利要求4所述的RAID卡的写缓存方法,其特征在于,从所述跳跃表中最上层的索引层至最下层的索引层,节点的数量按照翻倍的原则递增。6.根据权利要求1所述的RAID卡的写缓存方法,其特征在于,在索引过程中,在当前进行索引的层中设置加锁区域,包括:在对所述跳跃表中最上层的索引层进行索引时,基于最上层的索引层中的最小节点和最大节点确定出加锁边界,并设定最上层的索引层的整层均为加锁区域;在对所述跳跃表中最上层的索引层之外的其它层进行索引时,基于上一层的索引结果对当前的所述加锁边界进行缩短,并基于缩短之后的加锁边界设定加锁区域。7.根据权利要求6所述的RAID卡的写缓存方法,其特征在于,在任意一层索引层设定的加锁区域均为写锁,在所述数据层设定的加锁区域为读写锁。8.根据权利要求1所述的RAID卡的写缓存方法,其特征在于,还包括:在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,选取一个非指向性节点;将选取的该非指向性节点添加至上一层,以使得该非指向性节点变为指向性节点;其中,对于任意一层中的任意一个节点,当该节点被上一层节点索引时,该节点为指向性节点,否则节点为非指向性节点。9.根据权利要求8所述的RAID卡的写缓存方法,其特征在于,在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性节点中,选取一个非指向性节点,包括:在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,
则从这两个相邻的指向性节点之间中的非指向性节点中,随机选取一个非指向性节点。10.根据权利要求8所述的RAID卡的写缓存方法,其特征在于,在任意一层的两个相邻的指向性节点之间,如果非指向性节点的数量超过第一阈值,则从这两个相邻的指向性节点之间中的非指向性...

【专利技术属性】
技术研发人员:王辉王见孙明刚
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1