一种写数据处理方法、装置、电子设备及存储介质与流程

文档序号:24180338发布日期:2021-03-09 11:45阅读:67来源:国知局
一种写数据处理方法、装置、电子设备及存储介质与流程

1.本发明涉及服务器技术领域,尤其是涉及一种写数据处理方法、装置、电子设备及存储介质。


背景技术:

2.随着互联网、云计算、物联网、大数据等技术的发展及广泛应用,在人类生活中,时时刻刻都会产生海量的数据,这些海量的数据需要进行处理和存储,信息技术的告诉发展对存储系统的性能提出了更高的要求。固态硬盘因为其读写速度快、能耗低,而被广泛的应用。
3.当前固态硬盘的使用变得越来越广泛,对固态硬盘的性能、容量的要求都更高,随着闪存技术的发展、主控芯片的性能提高,固态硬盘的相关技术不断更新,使得能够尽可能满足应用的需求。
4.当前固态硬盘使用的场景变得越来越复杂,对固态硬盘的要求也越来越高,随之而来的针对于固态硬盘的协议也越来越完善,从最初的sata/sas等协议发展到适应ssd的nvme协议,使得ssd的优势体现的越来越明显。作为ssd的重要组件的flash不断的向大容量高性能发展,但是其固有的弊端也是无法避免,这样使用者、开发者开始在系统中、协议中做文章来规避这些弊端,这样nvme协议的不断的在补充与丰富。
5.zns(zone namespace)就是其中之一,该协议主要是为了能够减小ssd的写放大、提升ssd性能的一种特殊应用,他要求上层应用必须按照完全的顺序进行下发,ssd中也不允许出现乱序的写入动作,这样就极大的限制了应用的灵活性,导致了ssd的易用性降低。


技术实现要素:

6.本发明的目的在于提供一种写数据处理方法、装置、电子设备及存储介质,缓解了现有技术中存在的zns顺序写入灵活性过低的技术问题。
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.图1为本发明实施例提供的写数据处理方法流程图;
39.图2为本发明实施例提供的写数据处理方法详细流程图;
40.图3为本发明实施例提供的写数据处理装置示意图。
具体实施方式
41.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.本发明实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
43.如图1所示,本发明实施例提供的写数据处理方法,包括以下步骤:
44.s11:获取写缓存中的写数据信息;
45.s12:当所述写缓存写满后,将写缓存中的所有写数据写入到闪存中;
46.s13:将所述写数据从闪存中依次取出,并将无法响应的写数据放入到缓存队列;
47.s14:检查缓存队列,将可以响应的写数据取出,并响应写数据。
48.本发明实施例提供的写数据处理方法,对写缓存中的写数据信息实时监控,当写缓存写满后,将写数据写入到闪存中,固态硬盘再将写数据按顺序进行写数据响应,并将无法响应的数据放入到缓存队列,同时,通过检查缓存队列,将可以响应的写数据取出响应,通过上述方法对写数据顺序进行纠正,提升顺序写入的灵活性,提升系统的工作效率。
49.如图2所示,在一种可能的实施方式中,所述将无法响应的写数据放入到缓存队列的步骤之后,还包括:
50.s231:针对所述无法响应的写数据进行计时。
51.单条消息不能在缓存队列中存在过久,否则会导致主机写入超时,造成nvme驱动层错误,所以需要对每条消息进行计时,方便及时处理。
52.如图2所示,在一种可能的实施方式中,所述将无法响应的写数据放入到缓存队列的步骤之后,还包括:
53.s232:更新缓存队列中写数据的最小逻辑地址。
54.当检查缓存队列时,最小逻辑地址的写数据为最优先可能写入的写数据,加快乱序纠正效率。
55.如图2所示,在一种可能的实施方式中,所述检查缓存队列的步骤之后,还包括:
56.s2411:检查缓存队列中所有写数据的计时时间;
57.s2412:将计时时间超出预设值的写数据放入预设临时缓冲区中,将临时缓冲区的写数据排序;
58.s2413:记录临时缓冲区的最小逻辑地址;
59.s2414:向主机发送写入成功的信息。
60.当写数据在缓存队列中过久时,需要将写数据从缓存队列中取出,并放入临时缓冲区中,避免因时间过久不响应影响服务器的工作。
61.如图2所示,在一种可能的实施方式中,所述将无法响应的写数据放入到缓存队列的步骤之后,还包括:
62.s2421:检查临时缓冲区中最小逻辑地址的写数据是否可以响应,若是,则执行步
骤s2422;
63.s2422:将写数据取出,并响应写数据。
64.在硬盘进行写操作的同时,也需要进行检查临时缓冲区,当临时缓冲区中存在可以响应的写数据时,则需要将临时缓冲区中的写数据取出并响应,以纠正乱序。
65.如图2所示,在一种可能的实施方式中,所述将写数据取出,并响应写数据的步骤之后,还包括:
66.s2423:更新最小逻辑地址,并返回检查临时缓冲区中最小逻辑地址的写数据是否可以响应的写数据的步骤。
67.当取出逻辑地址最小的写数据取出后,需要及时更新最小逻辑地址,方便下次检测临时缓冲区时,检查最小逻辑地址是否可以响应数据。
68.在一种可能的实施方式中,所述的写数据处理方法,还包括:
69.当写缓存、缓存队列、临时缓冲区全部被占满,向主机发送无法写入的信息。
70.当写缓存、缓存队列、临时缓冲区全部被占满时,硬盘、内存等服务设备已经达到服务上线,说明写数据超出所能纠正的范围,需要向用户告警以进行人工处理。
71.本发明实施例提供的写数据处理方法,具体实施方式如下:
72.在zns协议的要求中,ssd收到写入请求时,可以根据接收的lba(logical block address,逻辑地址)进行判断,如果该lba不是上一次接收到的lba加1,则可以返回写入错误。在nvme的基础协议中,又说明了,对于先后多次下发的多个io请求(在前边多个io请求都没有返回写入成功的是下发了新的io),在ssd的处理中是不保证顺序的,即先下发到ssd的不一定先完成。
73.为了能够允许乱序写入,现有技术采用的方式是增加写缓存大小来提高乱序的容忍度,并取消前文说明的接收的lba必须一次累加的限制。
74.本发明实施例在现有技术的基础上,将写缓存配置为3个或更多,由于写缓存的数量受ssd硬件资源及异常掉电时间的限制,不能过多,具体数量可以根据需要进行不同的配置。
75.当某个写缓存全部写满后,将写缓存保存到nand闪存中,未写满的写缓存则继续等待用户写入。
76.ssd(固态硬盘)处理写数据时,需要将消息按顺序取出进行响应,当遇到无法响应的写数据时(即顺序错乱),将其放入到ssd缓存队列中,并对其进行计时,在加入到缓存队列后,更新缓存队列的最小lba。
77.当写缓存写满并保存到nand后,检查缓存队列,查看是否存在可以响应的写数据,如果有,则将可以响应的写数据取出并响应写数据。取出后,需要更新缓存队列最小lba。
78.在检查缓存队列的同时,需要检查缓存队列中每条消息的计时时间,若计时时间超出预设时间,则需要将此消息放入到临时缓冲区,并向主机发送写入成功的消息,避免因单条消息长时间无法响应造成驱动的错误,影响工作。
79.放入到临时缓冲区后,需要将临时缓冲区内的所有写缓存重新排序,更新最小lba。
80.在检查临时缓存队列的同时,仍需要检查临时缓冲区内是否存在可以响应的写缓存,若有,则将可以响应的写缓存取出并响应,并更新临时缓冲区内最小lba,同时查看最小
lba是否可以响应。
81.临时缓冲区作为最后一级缓冲,因为数据落入该区域后,当能够进行最终写入时,需要从该区域搬移到第一级的写缓存中,这个搬移过程需要消耗缓存带宽和cpu计算,会影响整体性能,所以必须作为最后一级缓冲。
82.当写缓存、缓存队列、临时缓冲区都已经被占满,且又有新的写请求无法被正常处理时,则需要返回无法写入给host。
83.如图3所示,本发明实施例还提供一种写数据处理装置,包括:
84.数据信息获取模块1,用于获取写缓存中的写数据信息;
85.写数据迁移模块2,用于写缓存写满后,将写缓存中的所有写数据写入到闪存中;
86.写数据处理模块3,用于将所述写数据从闪存中依次取出,并将无法响应的写数据放入到缓存队列;
87.乱序纠正模块4,用于检查缓存队列,将可以响应的写数据取出,并响应写数据。
88.对应于上述方法,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
89.对应于上述方法,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述方法的步骤。
90.本发明实施例所提供的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
91.在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
92.又例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,再例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
93.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
94.另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
95.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
96.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1