一种数据刷写方法、装置、缓存设备及存储介质与流程

文档序号:37143978发布日期:2024-02-26 16:56阅读:16来源:国知局
一种数据刷写方法、装置、缓存设备及存储介质与流程

本发明涉及存储领域,特别涉及一种数据刷写方法、装置、缓存设备及存储介质。


背景技术:

1、存储系统通常分为缓存设备和后端存储设备。为了提升写请求的响应时间,用户数据写入缓存设备后就返回写入结果,而写入到缓存设备中的用户数据再异步刷写到后端磁盘设备。另外,为了防止单盘故障导致的数据丢失,后端存储设备可组织成raid(redundant arrays of independent disks,磁盘阵列)的形式,如一般使用raid5或者raid6。

2、相关技术中,为尽量避免磁盘阵列存在的写放大问题,通常可在将缓存设备中的用户数据凑成条带后,再将条带刷写至磁盘阵列中。然而,条带通常需要利用逻辑地址连续的用户数据,而上层并不总会写入逻辑地址连续的用户数据,如在随机写场景中,上层所写入的用户数据通常对应随机的逻辑地址。当缓存中包含较多的随机逻辑地址的用户数据时,强行凑条带容易增大缓存设备的负担。


技术实现思路

1、本发明的目的是提供一种数据刷写方法、装置、缓存设备及存储介质,可区分写场景,并可在顺序写场景下采用凑条带的刷写策略,以及在随机写场景下采用立即刷写的刷写策略,从而可提升缓存脏数据的刷写效率。

2、为解决上述技术问题,本发明提供一种数据刷写方法,应用于缓存设备,所述方法包括:

3、当接收到写请求时,将所述写请求对应的用户数据保存至存储空间,并将所述写请求作为历史写请求保存至数组;

4、在确定数据刷写操作触发时,判断所述数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值;

5、当确定所述地址长度已超过所述预设阈值时,根据条带长度对所述存储空间中逻辑地址连续的用户数据进行合并,并在合并后将所述存储空间中的用户数据刷写至后端存储设备;逻辑地址为所述用户数据在所述后端存储设备中的地址;

6、当确定所述地址长度未超过所述预设阈值时,将所述存储空间中的用户数据刷写至所述后端存储设备。

7、可选地,所述将所述写请求作为历史写请求保存至数组,包括:

8、判断多个所述历史写请求中是否存在与所述写请求所访问的地址范围衔接的目标历史写请求;

9、若存在,则在所述数组中为所述目标历史写请求对应的地址长度叠加所述写请求对应的地址长度,以将所述写请求合并至所述目标历史写请求中;

10、若不存在,则将所述写请求作为所述历史写请求保存至所述数组;

11、所述判断所述数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值,包括:

12、判断所述数组中的各所述历史写请求对应的地址长度是否超过所述预设阈值。

13、可选地,所述判断多个所述历史写请求中是否存在与所述写请求所访问的地址范围衔接的目标历史写请求,包括:

14、利用所述写请求对应的首地址生成第一键值,并判断第一哈希链表中是否包含与所述第一键值对应的所述目标历史写请求;所述第一哈希链表保存有所述数组中的所有历史写请求;

15、若包含,则判定所述目标历史写请求存在,并为所述目标历史写请求对应的地址长度叠加所述写请求对应的地址长度,利用叠加后的目标历史写请求对应的首地址和地址长度确定所述叠加后的目标历史写请求对应的末尾地址,利用所述合并后的目标历史写请求对应的末尾地址生成第二键值,基于所述第二键值更新所述目标历史写请求在所述第一哈希链表中的位置;

16、若不包含,则判定所述目标历史写请求不存在,并利用所述写请求对应的首地址和地址长度确定所述写请求对应的末尾地址,利用所述写请求对应的末尾地址生成第三键值,基于所述第三键值将所述写请求作为所述历史写请求添加至所述第一哈希链表。

17、可选地,在判定所述目标历史写请求存在之后,还包括:

18、将所述目标历史写请求从最近最少使用链表中取出,将所述写请求合并至所述目标历史写请求,并将合并后的目标历史写请求重新插入所述最近最少使用链表的末尾;

19、所述将所述写请求作为所述历史写请求保存至所述数组,包括:

20、将所述写请求作为所述历史写请求插入所述最近最少使用链表的末尾;

21、当确定所述最近最少使用链表的长度大于预设长度时,将所述最近最少使用链表首部的历史写请求作为淘汰写请求移出所述最近最少使用链表,将所述淘汰写请求移出所述第一哈希链表,并将所述写请求作为所述历史写请求在所述数组中覆盖所述淘汰写请求;

22、当确定所述最近最少使用链表的长度不大于所述预设长度时,将所述写请求作为所述历史写请求保存至所述数组。

23、可选地,还包括:

24、当确定所述缓存设备中已保存的用户数据大小大于预设大小时,触发所述数据刷写操作。

25、可选地,所述将所述写请求作为历史写请求保存至数组,包括:

26、根据所述写请求在所述后端存储设备中对应的逻辑卷,将所述写请求作为所述历史写请求保存至所述逻辑卷对应的数组;

27、所述判断所述数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值,包括:

28、判断所述逻辑卷对应的数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值;

29、所述根据条带长度对所述存储空间中逻辑地址连续的用户数据进行合并,并在合并后将所述存储空间中的用户数据刷写至后端存储设备,包括:

30、根据所述条带长度对所述存储空间中对应于所述逻辑卷的、逻辑地址连续的用户数据进行合并,并在合并后将所述存储空间中对应于所述逻辑卷的用户数据刷写至所述逻辑卷;

31、所述将所述存储空间中的用户数据刷写至所述后端存储设备,包括:

32、将所述存储空间中对应于所述逻辑卷的用户数据刷写至所述逻辑卷。

33、可选地,在接收写请求之前,还包括:

34、根据预设尺寸将所述存储空间等分为多个缓存块;

35、所述将所述写请求对应的用户数据保存至存储空间,包括:

36、将所述写请求对应的用户数据以数据块形式保存至所述缓存块,并将数据块的逻辑地址记录至所述缓存块;

37、利用所述数据块对应的逻辑地址生成第四键值,并基于所述第四键值将所述缓存块记录至第二哈希链表;

38、所述根据条带长度对所述存储空间中逻辑地址连续的用户数据进行合并,包括:

39、利用所述第二哈希链表确定逻辑地址连续的待合并缓存块,并根据条带长度对各所述待合并缓存块中的数据块进行合并。

40、可选地,所述利用所述第二哈希链表确定逻辑地址连续的待合并缓存块,并根据条带长度对各所述待合并缓存块中的数据块进行合并,包括:

41、从所述第二哈希链表中选择一个缓存块标记为待处理缓存块及待合并缓存块;

42、依据预设的逻辑地址变换方向,确定所述待处理缓存块记录的逻辑地址对应的相邻逻辑地址,并利用由所述相邻逻辑地址生成的键值在所述第二哈希链表查找相邻缓存块;

43、当确定所述相邻缓存块存在时,判断当前已标记的待合并缓存块对应的数据块总大小是否达到所述条带长度;

44、若是,则对所有所述待合并缓存块中的数据块进行合并,将所述待合并缓存块移出所述第二哈希表,将所述相邻缓存块标记为所述待处理缓存块和所述待合并缓存块,并进入所述确定所述待处理缓存块记录的逻辑地址对应的相邻逻辑地址,并利用由所述相邻逻辑地址生成的键值在所述第二哈希链表查找相邻缓存块的步骤;

45、若否,则将所述相邻缓存块标记为所述待处理缓存块和所述待合并缓存块,并进入所述确定所述待处理缓存块记录的逻辑地址对应的相邻逻辑地址,并利用由所述相邻逻辑地址生成的键值在所述第二哈希链表查找相邻缓存块的步骤;

46、当确定所述相邻缓存块不存在时,对所有待合并缓存块中的数据块进行合并,并进入所述从所述第二哈希链表中选择一个缓存块标记为待处理缓存块及待合并缓存块的步骤。

47、本发明还提供一种数据刷写装置,应用于缓存设备,所述装置包括:

48、保存模块,用于当接收到写请求时,将所述写请求对应的用户数据保存至存储空间,并将所述写请求作为历史写请求保存至数组;

49、判断模块,用于在确定数据刷写操作触发时,判断所述数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值;

50、合并刷写模块,用于当确定所述地址长度已超过所述预设阈值时,根据条带长度对所述存储空间中逻辑地址连续的用户数据进行合并,并在合并后将所述存储空间中的用户数据刷写至后端存储设备;逻辑地址为所述用户数据在所述后端存储设备中的地址;

51、立即刷写模块,用于当确定所述地址长度未超过所述预设阈值时,将所述存储空间中的用户数据刷写至所述后端存储设备。

52、本发明还提供一种缓存设备,包括:

53、第一存储器,用于存储用户数据;

54、第二存储器,用于存储计算机程序;

55、处理器,用于执行所述计算机程序时实现如上所述的数据刷写方法。

56、本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的数据刷写方法。

57、本发明提供一种数据刷写方法,应用于缓存设备,所述方法包括:当接收到写请求时,将所述写请求对应的用户数据保存至存储空间,并将所述写请求作为历史写请求保存至数组;在确定数据刷写操作触发时,判断所述数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值;当确定所述地址长度已超过所述预设阈值时,根据条带长度对所述存储空间中逻辑地址连续的用户数据进行合并,并在合并后将所述存储空间中的用户数据刷写至后端存储设备;逻辑地址为所述用户数据在所述后端存储设备中的地址;当确定所述地址长度未超过所述预设阈值时,将所述存储空间中的用户数据刷写至所述后端存储设备。

58、可见,本发明在接收到写请求时,除了将写请求对应的用户数据保存至存储空间外,还可将写请求作为历史写请求保存至数组。随后,在确定数据刷写操作触发时,可判断数组中的多个历史写请求所连续访问的地址长度是否超过预设阈值;当确定该地址长度已超过预设阈值时,则可确定上层在近期下发的多个写请求所访问的地址范围是连续的,属于顺序写场景,此时凑条带所带来的额外开销小,因此可根据条带长度对存储空间中逻辑地址连续的用户数据进行合并,并在合并后将存储空间中的用户数据刷写至后端存储设备,其中逻辑地址为用户数据在后端存储设备中的地址;当确定地址长度未超过预设阈值时,则可确定上层在近期下发的多个写请求所访问的地址范围是随机的,属于随机写场景,此时凑条带所带来的额外开销大,因此将存储空间中的用户数据直接刷写至后端存储设备。显然,本发明能够根据历史写请求所连续访问的地址长度来区分上层下发写请求的场景,并可在顺序写场景下采用凑条带的刷写策略,在随机写场景下采用立即刷写的刷写策略,从而可提升缓存脏数据的刷写效率。本发明还提供一种数据刷写装置、缓存设备及计算机可读存储介质,具有上述有益效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1