一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据存储系统、方法、计算机设备及存储介质与流程

2022-03-19 22:02:43 来源:中国专利 TAG:


1.本公开涉及存储技术领域,尤其涉及一种数据存储系统、方法、计算机设备及存储介质。


背景技术:

2.随着存储技术的发展,出现了相较于传统hdd(hard disk drive,硬盘驱动器)具有大吞吐量、高iops(input/output operations per second,每秒可读写次数)的新型存储硬件,其中包括ssd(solid state disk,固态硬盘)和pmem(persistent memory,持久化内存)。
3.传统的文件读写机制下,应用程序需要基于文件系统通过系统调用对存储硬件进行读写,而系统调用涉及到从用户态到内核态的转换。
4.对于高性能的新型存储硬件来说,传统的文件读写机制下,文件读写路径过长,使得对存储硬件进行读写耗时较久,从而导致对新型存储硬件进行读写的速度远远慢于新型存储硬件所支持的读写速度,无法充分发挥出新型存储硬件的大吞吐量与高iops,在新型存储硬件中进行数据存储的效率十分低下。


技术实现要素:

5.本公开提供一种数据存储系统、方法、计算机设备及存储介质,能够提高数据存储的效率。本公开的技术方案如下:
6.根据本公开实施例的第一方面,提供一种数据存储系统,该系统应用于计算机设备,该计算机设备包括持久化内存pmem和固态硬盘ssd,该数据存储系统包括工作在用户空间的存储性能开发工具包spdk单元、持久化内存开发工具包pmdk单元以及内存管理单元mmu,该mmu提供该pmem中的物理地址和该用户空间中的虚拟地址之间的映射关系;
7.该pmdk单元,被配置为基于应用层的读写指令,对该pmem进行读写;
8.该spdk单元,被配置为基于该读写指令以及该读写指令对应数据的元数据,对该ssd进行读写。
9.在一种可能实施方式中,该读写指令为写指令;
10.该spdk单元,被配置为基于该写指令,在该ssd中写入该写指令对应的第一数据,向该应用层返回该第一数据的元数据;
11.该pmdk单元,被配置为基于该写指令和该第一数据的元数据,在该pmem中写入该第一数据的元数据,将该第一数据的元数据写入至该用户空间对应的内存。
12.在一种可能实施方式中,该读写指令为删除指令;
13.该pmdk单元,被配置为基于该删除指令,在该pmem中删除与该删除指令对应的第二数据的元数据,从该用户空间对应的内存中删除该第二数据的元数据;
14.该spdk单元,被配置为基于该删除指令以及该第二数据的元数据,在该ssd中删除该第二数据。
15.在一种可能实施方式中,该读写指令为修改指令;
16.该spdk单元,被配置为基于该修改指令以及该修改指令对应的第三数据的元数据,在该ssd中修改该第三数据;
17.该pmdk单元,被配置为基于该修改指令以及修改后的该第三数据,在该pmem中修改该第三数据的元数据,在该用户空间对应的内存中更新该第三数据的元数据。
18.在一种可能实施方式中,该读写指令为读取指令;
19.该spdk单元,被配置为基于该读取指令,从该用户空间对应的内存中读取该读取指令对应的第四数据的元数据;
20.基于该读取指令以及该第四数据的元数据,从该ssd中读取该第四数据。
21.在一种可能实施方式中,该读写指令为重启指令;
22.该spdk单元,被配置为基于该重启指令,将该ssd中存储的数据设置为可读取状态;
23.该pmdk单元,被配置为基于该重启指令,从该pmem中,将该ssd中存储的数据的元数据读取至该用户空间对应的内存中。
24.根据本公开实施例的第二方面,提供一种数据存储方法,由数据存储系统执行,该数据存储系统包括工作在用户空间的spdk单元、pmdk单元以及mmu,该方法包括:
25.通过工作在用户空间的该pmdk单元,基于应用层的读写指令,对pmem进行读写,该mmu提供该pmem中的物理地址和用户空间中的虚拟地址之间的映射关系;
26.通过工作在用户空间的该spdk单元,基于该读写指令以及该读写指令对应数据的元数据,对ssd进行读写。
27.在一种可能实施方式中,该读写指令为写指令;
28.通过该spdk单元,基于该写指令,在该ssd中写入该写指令对应的第一数据,向该应用层返回该第一数据的元数据;
29.通过该pmdk单元,基于该写指令和该第一数据的元数据,在该pmem中写入该第一数据的元数据,将该第一数据的元数据写入至该用户空间对应的内存。
30.在一种可能实施方式中,该读写指令为删除指令;
31.通过该pmdk单元,基于该删除指令,在该pmem中删除与该删除指令对应的第二数据的元数据,从该用户空间对应的内存中删除该第二数据的元数据;
32.通过该spdk单元,基于该删除指令以及该第二数据的元数据,在该ssd中删除该第二数据。
33.在一种可能实施方式中,该读写指令为修改指令;
34.通过该spdk单元,基于该修改指令以及该修改指令对应的第三数据的元数据,在该ssd中修改该第三数据;
35.通过该pmdk单元,基于该修改指令以及修改后的该第三数据,在该pmem中修改该第三数据的元数据,在该用户空间对应的内存中更新该第三数据的元数据。
36.在一种可能实施方式中,该读写指令为读取指令;
37.通过该spdk单元,基于该读取指令,从该用户空间对应的内存中读取该读取指令对应的第四数据的元数据;
38.基于该读取指令以及该第四数据的元数据,从该ssd中读取该第四数据。
39.在一种可能实施方式中,该读写指令为重启指令;
40.通过该spdk单元,基于该重启指令,将该ssd中存储的数据设置为可读取状态;
41.通过该pmdk单元,基于该重启指令,从该pmem中,将该ssd中存储的数据的元数据读取至该用户空间对应的内存中。
42.根据本公开实施例的第三方面,提供一种计算机设备,该计算机设备包括:
43.一个或多个处理器;
44.用于存储该处理器可执行程序代码的存储器,该存储器包括:pmem和ssd;
45.其中,该处理器被配置为执行该程序代码,以实现上述的数据存储方法。
46.根据本公开实施例的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括:当该计算机可读存储介质中的程序代码由计算机设备的处理器执行时,使得计算机设备能够执行上述的数据存储方法。
47.根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的数据存储方法。
48.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
49.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
50.图1是根据一示例性实施例示出的一种数据存储系统的示意图;
51.图2是根据一示例性实施例示出的一种数据存储方法的流程图;
52.图3是根据一示例性实施例示出的一种数据存储方法的流程图;
53.图4是根据一示例性实施例示出的一种数据存储方法的流程图;
54.图5是根据一示例性实施例示出的一种数据存储方法的流程图;
55.图6是根据一示例性实施例示出的一种数据存储方法的流程图;
56.图7是根据一示例性实施例示出的一种数据存储方法的流程图;
57.图8是根据一示例性实施例示出的一种计算机设备的框图。
具体实施方式
58.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
59.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
60.本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
61.图1是本公开实施例提供的一种数据存储系统的示意图,参见图1,该数据存储系
统100包括:spdk(storage performance development kit,存储性能开发工具包)单元101、pmdk(persistent memory development kit,持久化内存开发工具包)单元102和mmu(memory management unit,内存管理单元)103。
62.其中,该spdk单元101工作在用户空间,能够基于应用层的读写指令,在用户空间实现对ssd的直接管理与读写;该pmdk单元102工作在用户空间,能够基于应用层的读写指令,通过该mmu 103,在用户空间实现对pmem的管理与读写;该mmu 103用于提供pmem中的物理地址与用户空间中的虚拟地址之间的映射关系。
63.本公开实施例中,该数据存储系统能够应用于包括pmem与ssd的计算机设备。
64.图2是根据一示例性实施例示出的一种数据存储方法的流程图,如图2所示,该方法应用于上述数据存储系统中,该数据存储系统应用于包括pmem与ssd的计算机设备中,该方法包括以下步骤:
65.在步骤201中,计算机设备通过工作在用户空间的pmdk单元,基于应用层的读写指令,通过mmu,对pmem进行读写,该mmu提供该pmem中的物理地址和用户空间中的虚拟地址之间的映射关系。
66.其中,用户空间是指数据存储系统的应用层中的应用程序所运行的空间。在本公开实施例中,该pmdk单元即是运行在应用层的应用程序,可以访问该用户空间对应的内存。
67.运行在用户空间的该pmdk单元包括能够对pmem进行管理与读写的函数库和软件工具,向上为应用层的用户提供编程接口,从而在用户空间即可实现对该pmem的管理与读写。
68.其中,pmdk单元能够通过该mmu,将在用户空间中的虚拟地址上对该pmem进行的读写操作,映射到pmem中的物理地址上实现,也即是,在用户空间中的虚拟地址上进行的读写操作,都会被视为是在pmem的对应物理地址上进行的。在一些实施例中,上述映射的过程能够通过调用函数实现,例如,mmap函数。
69.在步骤202中,该计算机设备通过工作在用户空间spdk单元,基于该读写指令以及该读写指令对应数据的元数据,对ssd进行读写。
70.该spdk单元包括能够对ssd进行管理与读写的函数库和软件工具,向上为应用层的用户提供编程接口,向下驱动该ssd。spdk中用于ssd的驱动程序运行在用户空间,因此,该spdk单元能够在用户空间实现对该ssd的管理与读写。在本公开实施例中,该spdk单元是运行在应用层的应用程序,可以访问该用户空间对应的内存。
71.其中,该元数据是该读写指令对应数据的相关信息。例如,数据在ssd中的存储位置信息、数据的大小、数据的执行权限、数据的最近修改时间等。在一些实施例中,该数据在该ssd中的存储位置信息是该数据在ssd中的物理地址,例如,该数据所在数据块的起始数据块编号、数据块长度以及该数据的块内偏移量等。
72.需要说明的是,在采用不同文件存放方式的情况下,该元数据中的存储位置信息的形式也有所不同,例如,起始数据块编号、块内偏移量以及数据块长度可以对应于连续空间存放方式,数据块编号以及块内偏移量可以对应于非连续空间存放方式,本公开实施例对存储位置信息的形式不做限定。
73.其中,该读写指令包括该读写指令对应数据的文件标识。在一些实施例中,当需要进行数据读写的情况下,基于该文件标识,能够在当前用户空间对应内存的进程控制表中,
查询该数据的元数据在用户空间中的虚拟地址,该进程控制表记录了当前用户空间中的虚拟地址的分配情况。访问该元数据的虚拟地址,通过mmu将该虚拟地址映射为pmem中的物理地址,进而基于该物理地址,在pmem中对元数据进行读写。
74.在一些实施例中,基于读取到的数据的元数据,能够获取该元数据中该数据在该ssd中的存储位置信息,也即是,该数据在ssd中的物理地址,基于读取到的该物理地址,即可在ssd中对该数据进行读写。
75.本公开实施例提供的技术方案中,通过工作在用户空间的pmdk单元,基于读写指令,使用mmu,对pmem进行读写,通过工作在用户空间的spdk单元,基于读写指令,根据数据的元数据,对ssd进行读写。通过上述技术方案,为pmem与ssd分别规划了基于用户空间的读写路径,在用户空间即可实现数据的读写,避免了系统调用带来的性能损耗,提高了对pmem与ssd的读写速度,充分发挥了pmem与ssd的大吞吐量与高iops,大大提高了数据存储的效率。
76.上述图2对应的实施例仅为本公开的简要流程,下面将结合一些实施例,进一步阐述本公开提供的数据存储方法。接下来,将基于不同读写指令的实现过程,对本公开提供的数据存储方法进行详细说明。
77.图3是根据一示例性实施例示出的一种数据存储方法的流程图,如图3所示,该方法用于上述数据存储系统中,由上述计算机设备执行,在数据写入的场景下,该数据存储方法包括以下步骤:
78.在步骤301中,计算机设备通过工作在用户空间的spdk单元,基于应用层的写指令,在ssd中创建第一数据块,该第一数据块用于存储该写指令对应的第一数据,执行步骤302和步骤303。
79.该写指令用于指示在计算机设备的ssd中写入第一数据。该spdk单元根据该第一数据的大小以及该ssd当前的数据块占用情况,确定该ssd中能够分配给该第一数据的该第一数据块。
80.在一些实施例中,通过查询该ssd对应的文件分配表,能够确定该ssd当前的数据块占用情况。例如,该ssd中的单元数据块大小为32mb(megabytes,兆字节),该ssd的文件分配表记录该ssd中共有128个单元数据块,当前已有120个单元数据块被占用,则根据该第一数据的大小为64mb,能够将该ssd中第121至第122个单元数据块确定为第一数据块。
81.需要说明的是,上述过程仅为示例性的,根据该ssd中不同的数据块分配方式,该spdk能够以相应方式确定该ssd当前的占用情况,从而确定该第一数据块,进而完成该第一数据块的创建。例如,在该ssd中采用的数据块分配方式为顺序分配的情况下,则查询顺序表中数据块的地址(也即是数据块的编号);在该ssd中采用索引分配的情况下,则查询索引列表中,指向数据块的指针;在该ssd中采用采用链表分配的情况下,则查询链表中,指向数据块的指针,本公开实施例对此不做限定。
82.在确定了能够分配给该第一数据的第一数据块之后,在该ssd中记录该第一数据块已分配,则该第一数据块创建成功。在一些实施例中,通过在ssd的文件分配表中,将该第一数据块的占用情况标记为已占用,来实现分配该第一数据块的目的。
83.在一些实施例中,在该第一数据块创建失败的情况下,该spdk单元向应用层返回失败,不再执行步骤301之后的步骤。
84.在步骤302中,该计算机设备在该第一数据块创建成功的情况下,通过该spdk单元,基于该写指令和该第一数据块,确定该第一数据的元数据,执行步骤304。
85.其中,在该第一数据块创建成功的情况下,该spdk基于该第一数据块的信息以及该写指令包括的该第一数据的文件标识,即可确定该第一数据的元数据。
86.在一些实施例中,该第一数据块包括多个单元数据块,则该第一数据块的信息包括该第一数据块的起始数据块编号(也即是从哪个单元数据块开始)以及数据块长度,也即是,该第一数据在该ssd中的存储位置信息。在一些实施例中,该数据存储系统所应用的计算机设备,采用列表的形式存储数据的元数据,在这种情况下,则将该第一数据块的信息存储至该元数据所在列表的指定位置。
87.在一些实施例中,该spdk单元将包括该第一数据块的信息的元数据返回至应用层,该元数据存储于用户空间对应的内存中,便于进行对该元数据的读写操作。
88.在步骤303中,该计算机设备在该第一数据块创建成功的情况下,通过该spdk单元,基于该写指令和该第一数据的元数据,在ssd中写入该写指令对应的第一数据。
89.在该第一数据块创建成功的情况下,该spdk单元基于该第一数据的元数据中该第一数据块的信息,将该第一数据写入该第一数据块。在一些实施例中,该第一数据块的信息包括该第一数据块的起始数据块编号(也即是从哪个单元数据块开始),按照该第一数据块中单元数据块编号的顺序,即可将该第一数据顺序写入该ssd中。
90.在一些实施例中,该spdk单元在该第一数据块创建成功之后的任意时刻执行上述在ssd中写入该写指令对应的第一数据的步骤。
91.在步骤304中,该计算机设备通过工作在用户空间的pmdk单元,基于该写指令和该第一数据的元数据,通过mmu,在该pmem中写入该第一数据的元数据,该mmu提供该pmem中的物理地址和该用户空间中的虚拟地址之间的映射关系。
92.其中,该读写指令包括该读写指令对应数据的文件标识。在一些实施例中,基于该文件标识,在该pmdk单元当前所占用的内存的进程控制表中,为该第一数据的元数据分配虚拟地址。基于此,pmdk单元访问该元数据的虚拟地址,通过mmu将该虚拟地址映射为pmem中的物理地址,从而在该物理地址中写入该元数据。
93.需要说明的是,该pmem中的物理地址与该用户空间对应的虚拟地址之间的映射关系是预设的。在一些实施例中,也可以根据pmem或用户空间对应的内存当前的占用情况来实时分配。
94.在一些实施例中,在pmem中写入该第一数据的元数据失败的情况下,该pmdk单元向应用层返回失败,不再执行步骤304之后的步骤。
95.在步骤305中,在对pmem写入成功的情况下,该计算机设备将该第一数据的元数据写入至该用户空间对应的内存。
96.其中,该用户空间对应的内存是工作在用户空间的应用程序能够直接访问的内存,应用程序可以直接从该内存中读取数据,而不需要将用户空间的虚拟地址映射到pmem中的物理地址,再去pmem中读取数据。因此,将该第一数据的元数据写入至该内存中,使得工作在用户空间的应用程序能够直接地从内存中读取该元数据,缩短了数据的读写路径,提高了数据存储的效率。
97.在一些实施例中,再对pmem写入成功的情况下,将该第一数据的元数据写入该用
户空间对应的内存的过程包括:在内存中为该第一数据的元数据对应的列表分配一个索引号,并在文件标识与索引号的对应关系表中,记录该第一数据的文件标识与对应的索引号,以在内存中建立内存索引,其中,该索引号即指向该元数据在内存中的存储地址。通过建立内存索引,使得工作在用户空间的应用程序可以直接从内存中读取元数据,也即是,根据该第一数据的文件标识,在内存中查询该对应关系表,即可从内存中读取到该第一数据的元数据,以进行读写。
98.在一些实施例中,在对内存写入失败的情况下,向应用层返回失败。
99.本公开实施例提供的技术方案中,通过工作在用户空间的pmdk单元,基于读写指令,使用mmu,对pmem进行读写;通过工作在用户空间的spdk单元,基于读写指令,根据数据的元数据,对ssd进行读写。通过上述技术方案,为pmem与ssd分别规划了基于用户空间的读写路径,在用户空间即可实现数据的读写,避免了系统调用带来的性能损耗,提高了对pmem与ssd的读写速度,充分发挥了pmem与ssd的大吞吐量与高iops,进而大大提高了数据存储的效率。
100.进一步地,由于该元数据与数据相比,通常只占用很小的存储空间,通过上述技术方案,利用了pmem对于小数据量的随机读写操作的低时延性能,用pmem来存储元数据,而基于ssd的原子写入特性,用ssd来存储数据,使用pmem与ssd分别存储不同类型的数据,在降低了存储成本的同时,提升了读写元数据的速度,进而大大提高了数据存储的效率。
101.图4是根据一示例性实施例示出的一种数据存储方法的流程图,如图4所示,该方法用于上述数据存储系统中,由上述计算机设备执行,在数据删除的场景下,该数据存储方法包括以下步骤:
102.在步骤401中,计算机设备基于该删除指令,从用户空间对应的内存中,读取该删除指令对应的第二数据的元数据,从该用户空间对应的内存中删除该第二数据的元数据,执行步骤402与步骤403。
103.其中,该删除指令包括该第二数据的文件标识。根据该文件标识,能够从该用户空间对应的内存中读取该第二数据的元数据。在一些实施例中,该计算机设备先从内存中读取该第二数据的元数据并以临时变量的形式暂时存储,再从该内存中将该元数据删除。
104.在一些实施例中,从内存中读取该元数据的过程包括:根据该第二数据的文件标识,在内存索引中,查询与该文件标识对应的索引号,进而从索引号指向的内存中的存储地址中,读取该第二数据的元数据。其中,该内存索引的建立参考步骤305,在此不作赘述。
105.在一些实施例中,删除元数据的过程包括:该计算机设备在内存索引中,删除该第二数据的文件标识与对应的索引号的对应关系。在另一些实施例中,通过将该索引号标记为可用,实现删除元数据的目的。
106.在一些实施例中,在读取该第二数据的元数据失败的情况下,向应用层返回失败,不执行步骤401后续的步骤。
107.在步骤402中,该计算机设备基于该第二数据的元数据,向工作在用户空间的spdk单元发送该第二数据在ssd中的存储位置信息,执行步骤404。
108.其中,在读取到该第二数据的元数据之后,该计算机设备将该第二数据的元数据中的该第二数据在ssd中的存储位置信息发送给该spdk单元,使得该spdk能够基于该存储位置信息执行删除指令。
109.在一些实施例中,在内存中删除该第二数据的元数据失败的情况下,向应用层返回失败,不执行步骤402之后的步骤。
110.在步骤403中,该计算机设备通过该pmdk单元,通过mmu,在该pmem中删除该第二数据的元数据,该mmu提供该pmem中的物理地址和该用户空间中的虚拟地址之间的映射关系。
111.该删除指令用于指示在计算机设备的pmem中删除该第二数据的元数据。
112.在一些实施例中,该pmdk单元基于该文件标识,能够在当前用户空间对应内存的进程控制表中,查询该第二数据的元数据的虚拟地址。该pmdk单元访问该元数据的虚拟地址,通过mmu将该虚拟地址映射为pmem中的物理地址,基于该物理地址,在pmem中将该第二数据的元数据删除。
113.在一些实施例中,通过将该第二数据的元数据在pmem中的物理地址标记为可用,实现在pmem中删除该第二数据的元数据的目的,当下一次对该物理地址进行写入,则该第二数据的元数据被覆盖。
114.在一些实施例中,还可以通过将该第二数据的元数据在用户空间的虚拟地址标记为可用,当该虚拟地址被标记为可用,则pmem中该虚拟地址映射的物理地址也可用,实现在pmem中删除该第二数据的元数据的目的。
115.在一些实施例中,在pmem中删除该第二数据的元数据失败的情况下,该pmdk单元向应用层返回失败,不执行步骤403之后的步骤。
116.在步骤404中,该计算机设备通过该spdk单元,基于该删除指令以及该第二数据的元数据包括的该第二数据在ssd中的存储位置信息,在该ssd中删除该第二数据。
117.其中,该删除指令用于指示在计算机设备的ssd中删除该第二数据。在一些实施例中,该spdk单元基于接收到的该第二数据在该ssd中的存储位置信息,在ssd中删除该第二数据。在一些实施例中,该存储位置信息是该第二数据在ssd中所占用的第二数据块的信息。其中,该第二数据块的信息包括该第二数据块的起始数据块编号以及数据块长度,基于此,该spdk单元能够在ssd中,删除该第二数据。
118.在一些实施例中,通过在ssd的文件分配表中,将该第二数据块的存储状态标记为可用,实现删除该第二数据的目的,当下一次对该第二数块进行写入,则该第二数据被覆盖。
119.在一些实施例中,在ssd中删除该第二数据失败的情况下,该pmdk单元向应用层返回失败。
120.本公开实施例提供的技术方案中,通过工作在用户空间的pmdk单元,基于读写指令,使用mmu,对pmem进行读写;通过工作在用户空间的spdk单元,基于读写指令,根据数据的元数据,对ssd进行读写。通过上述技术方案,为pmem与ssd分别规划了基于用户空间的读写路径,在用户空间即可实现数据的读写,避免了系统调用带来的性能损耗,提高了对pmem与ssd的读写速度,充分发挥了pmem与ssd的大吞吐量与高iops,进而大大提高了数据存储的效率。
121.图5是根据一示例性实施例示出的一种数据存储方法的流程图,如图5所示,该方法用于上述数据存储系统中,由上述计算机设备执行,在数据修改的场景下,该数据存储方法包括以下步骤:
122.在步骤501中,计算机设备基于修改指令,从用户空间对应的内存中,读取该修改
指令对应的第三数据的元数据。
123.本步骤参考上述步骤401。
124.在一些实施例中,在读取该第三数据的元数据失败的情况下,向应用层返回失败,不执行步骤501之后的步骤。
125.在步骤502中,该计算机设备通过该spdk单元,基于该修改指令以及该修改指令对应的第三数据的元数据,在ssd中修改该第三数据。
126.其中,该修改指令用于指示在计算机设备的ssd中对该第三数据进行修改。在一些实施例中,该spdk单元基于该修改指令,从该第三数据的元数据中,读取该第三数据在该ssd中的存储位置信息,进而在ssd中对该第三数据进行修改。在一些实施例中,该存储位置信息是该第三数据在ssd中所占用的第三数据块的信息。其中,该第三数据块的信息包括该第三数据块的起始数据块编号以及数据块长度,基于此,该spdk单元能够在ssd中,对该第三数据进行修改。
127.在一些实施例中,在修改该第三数据失败的情况下,该spdk单元向应用层返回失败,不执行步骤502之后的步骤。
128.在步骤503中,该计算机设备在该第三数据修改成功的情况下,通过工作在用户空间的pmdk单元,基于该修改指令以及修改后的该第三数据,通过该mmu,在pmem中修改该第三数据的元数据。
129.该修改指令用于指示在计算机设备的pmem中修改该第二数据的元数据。
130.其中,在该第三数据修改成功的情况下,该第三数据发生变化,则该第三数据的元数据需要相应进行修改。例如,修改后的该第三数据的大小发生变化,则需要在该第三数据的元数据中修改该第三数据的大小以及该第三数据的最近修改时间等信息。
131.在一些实施例中,该pmdk单元基于该文件标识,能够在当前用户空间对应内存的进程控制表中,查询该第三数据的元数据的虚拟地址。该pmdk单元访问该元数据的虚拟地址,通过mmu将该虚拟地址映射为pmem中的物理地址,基于该物理地址,在pmem中修改该第三数据的元数据。
132.在一些实施例中,在pmem中修改该第三数据的元数据失败的情况下,该pmdk单元向应用层返回失败,不执行步骤503之后的步骤。
133.在步骤504中,该计算机设备基于修改后的该第三数据的元数据,在该用户空间对应的内存中,更新该第三数据的元数据。
134.在该pmem中的元数据发生修改之后,需要根据修改后的该元数据,更新该用户空间对应的内存中所存储的该元数据,以在数据存储系统的不同存储区域中,保持数据的一致性。
135.在一些实施例中,需要从该pmem中读取修改后的该第三数据的元数据,并存储到内存中。其中,基于该文件标识,能够在当前用户空间对应内存的进程控制表中,查询该数据的元数据的虚拟地址。通过访问该元数据的虚拟地址,能够将该虚拟地址映射为pmem中的物理地址,基于该物理地址,从pmem中读取对应的数据并写入到内存中。
136.在一些实施例中,在将修改后的该第三数据的元数据存储至内存的同时,会在内存中重新建立内存索引,便于从内存中读取元数据。内存索引的建立过程以及使用过程参考步骤305,在此不作赘述。
137.在一些实施例中,在内存中更新该第三数据的元数据失败的情况下,该pmdk单元向应用层返回失败。
138.本公开实施例提供的技术方案中,通过工作在用户空间的pmdk单元,基于读写指令,使用mmu,对pmem进行读写;通过工作在用户空间的spdk单元,基于读写指令,根据数据的元数据,对ssd进行读写。通过上述技术方案,为pmem与ssd分别规划了基于用户空间的读写路径,在用户空间即可实现数据的读写,避免了系统调用带来的性能损耗,提高了对pmem与ssd的读写速度,充分发挥了pmem与ssd的大吞吐量与高iops,进而大大提高了数据存储的效率。
139.图6是根据一示例性实施例示出的一种数据存储方法的流程图,如图6所示,该方法用于上述数据存储系统中,由上述计算机设备执行,在数据读取的场景下,该数据存储方法包括以下步骤:
140.在步骤601中,该计算机设备基于读取指令,从该用户空间对应的内存中读取该读取指令对应的第四数据的元数据。
141.本步骤参考上述步骤401。
142.在一些实施例中,在读取该第四数据的元数据失败的情况下,向应用层返回失败,不执行步骤601之后的步骤。
143.在步骤602中,该计算机设备通过工作在用户空间的spdk单元,基于该读取指令以及该第四数据的元数据,从ssd中读取该第四数据。
144.其中,基于该读取指令包括的该第四数据的文件标识以及该第四数据的元数据,能够读取该第四数据在该ssd中的存储位置信息,进而从ssd中读取该第四数据。在一些实施例中,该存储位置信息是该第四数据在ssd中所占用的第四数据块的信息。其中,该第四数据块的信息包括该第四数据块的起始数据块编号、块内偏移量以及数据长度,基于数据块编号与块内偏移量,能够确定从该第四数据块中的何处开始读取,进而从ssd中读取该数据长度的信息,以完成读取该第四数据的过程。在一些实施例中,在读取该第四数据之后,将其存储到用户空间对应的内存中,使得该用户空间运行的应用程序能够直接地读取并使用该第四数据。
145.本公开实施例提供的技术方案中,通过工作在用户空间的pmdk单元,基于读写指令,使用mmu,对pmem进行读写;通过工作在用户空间的spdk单元,基于读写指令,根据数据的元数据,对ssd进行读写。通过上述技术方案,为pmem与ssd分别规划了基于用户空间的读写路径,在用户空间即可实现数据的读写,避免了系统调用带来的性能损耗,提高了对pmem与ssd的读写速度,充分发挥了pmem与ssd的大吞吐量与高iops,进而大大提高了数据存储的效率。
146.图7是根据一示例性实施例示出的一种数据存储方法的流程图,如图7所示,该方法用于上述数据存储系统中,由上述计算机设备执行,在重启恢复的场景下,该数据存储方法包括以下步骤:
147.在步骤701中,计算机设备通过工作在用户空间的spdk单元,基于重启指令,将ssd中存储的数据设置为可读取状态。
148.其中,基于该重启指令,该spdk将该ssd中已创建的数据块设置为可读取状态,完成对该ssd的重启恢复过程。在一些实施例中,重启之后,用户空间对应的内存中的数据丢
失,因此,spdk单元遍历ssd中已创建的数据块,并通过设置数据块的文件描述符为指定数值,将数据块标识为打开状态,使得数据块中存储的数据处于可读取状态。
149.在一些实施例中,在打开数据块失败的情况下,该spdk单元向应用层返回失败,不执行步骤601之后的步骤。
150.在步骤702中,该计算机设备通过工作在用户空间的pmdk单元,基于该重启指令,通过mmu,从pmem中,将该ssd中存储的数据的元数据读取至该用户空间对应的内存中。
151.在一些实施例中,重启之后,用户空间对应的内存中的元数据丢失,因此,pmdk单元遍历pmem中存储的数据的元数据,通过mmu,将其读取至用户空间对应的内存中,使得该用户空间运行的应用程序能够直接地读取该元数据,基于该元数据,即可对ssd进行读写。
152.在一些实施例中,该pmdk单元通过该mmu,从该pmem中读取元数据,并存储到内存中。其中,该pmdk单元基于该文件标识,能够在当前用户空间对应内存的进程控制表中,查询该数据的元数据的虚拟地址。该pmdk单元访问该元数据的虚拟地址,通过mmu将该虚拟地址映射为pmem中的物理地址,基于该物理地址,从pmem中读取对应的数据并写入到内存中。
153.在一些实施例中,在将元数据存储至内存的同时,会在内存中建立内存索引,便于从内存中读取元数据。内存索引的建立过程以及使用过程参考步骤305,在此不作赘述。
154.需要说明的是,上述步骤701与步骤702之间不存在时序上的先后关系,步骤701可以在步骤702之前执行,也可以在步骤702之后执行,还可以与步骤702同步执行。
155.本公开实施例提供的技术方案中,通过工作在用户空间的pmdk单元,基于读写指令,使用mmu,对pmem进行读写;通过工作在用户空间的spdk单元,基于读写指令,根据数据的元数据,对ssd进行读写。通过上述技术方案,为pmem与ssd分别规划了基于用户空间的读写路径,在用户空间即可实现数据的读写,避免了系统调用带来的性能损耗,提高了对pmem与ssd的读写速度,充分发挥了pmem与ssd的大吞吐量与高iops,进而大大提高了数据存储的效率。
156.图8是根据一示例性实施例示出的一种计算机设备的框图,该计算机设备800可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(central processing units,cpu)801和一个或多个的存储器802,该一个或多个存储器802包括pmem和ssd两种类型的存储器,其中,该一个或多个存储器802中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器801加载并执行以实现上述各个方法实施例提供的数据存储方法中执行的过程。当然,该计算机设备800还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备800还可以包括其他用于实现设备功能的部件,在此不做赘述。
157.在示例性实施例中,还提供了一种包括程序代码的计算机可读存储介质,例如包括程序代码的存储器802,上述程序代码可由计算机设备800的处理器801执行以完成上述数据存储方法。在一些实施例中,计算机可读存储介质可以是只读内存(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact-disc read-only memory,cd-rom)、磁带、软盘、ssd、pmem和光数据存储设备等。
158.在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时能够实现上述的数据存储方法。
159.在一些实施例中,本技术实施例所涉及的计算机程序可被部署在一个计算机设备
上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链系统。
160.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
161.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献