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

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

2023-01-15 10:04:41 来源:中国专利 TAG:


1.本发明涉及数据管理领域,特别涉及一种数据写入方法、装置、设备及存储介质。


背景技术:

2.分布式存储软件仅仅将ssd(solid state disk,即固态硬盘)作为存储单元使用,对于数据写入请求需要依赖双写来保证数据安全性,并没有合理的利用ssd固态硬盘内部的数据管理逻辑。如图1所示,数据写入请求时不仅会落盘一份新数据,而且会拷贝一份元数据管理旧数据,存在元数据落盘操作,元数据管理也会增加db(database,即数据库)操作,并且上层软件与ssd固态硬盘之间过多的交互不仅会降低性能还降低磁盘使用寿命。


技术实现要素:

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.本技术中,获取上层软件发送的针对新数据目录中的当前目标数据的数据更新请求;所述数据更新请求包括待写入新数据和目标逻辑地址;将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据,并在本地第一映射关系库中新建所述第一目标旧数据与所述目标逻辑地址之间的映射关系;对所述待写入新数据执行本地写入操作,并在写入失败时利用所述第一映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的所述第一目标旧数据,并将所述第一目标旧数据迁回至所述新数据目录,以完成相应的数据恢复操作。由此可见,本技术通过建立目标逻辑地址与目标旧数据之间的映射关系,可以利用目标逻辑地址管理相应的目标旧数据,避免了将拷贝的元数据进行落盘操作进而利用元数据管理旧数据的步骤,不仅减少了数据双写和固态硬盘与上层软件之间的交互操作,还减少了由于元数据管理所引起的更新db的操作,提升了数据写入的性能,并在数据写入失败时可以根据目标逻辑地址查找对应的目标旧数据进行数据恢复操作,避免了利用拷贝的元数据查找对应的旧数据的操作,从而避免了仅将固态硬盘作为存储单元使用,合理地利用了固态硬盘内部的数据管理逻辑。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
43.图1为本技术公开的一种写请求操作流程图;
44.图2为本技术公开的一种数据写入方法流程图;
45.图3为本技术公开的一种固态硬盘内部逻辑图;
46.图4为本技术公开的一种固态硬盘内部逻辑图;
47.图5为本技术公开的一种写请求操作流程图;
48.图6为本技术公开的一种具体数据写入方法流程图;
49.图7为本技术公开的一种具体数据写入方法流程图;
50.图8为本技术公开的一种数据写入方法流程图;
51.图9为本技术公开的一种数据写入装置结构示意图;
52.图10为本技术公开的一种数据写入装置结构示意图;
53.图11为本技术公开的一种电子设备结构图。
具体实施方式
54.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.现有技术中,分布式存储软件仅仅将ssd硬件磁盘作为存储单元使用,对于写数据请求需要依赖双写来保证数据安全性,并没有合理的利用ssd硬件磁盘内部的数据管理逻辑。为此,本技术提供了一种数据写入方法,通过建立目标逻辑地址与目标旧数据之间的映射关系,可以利用目标逻辑地址管理相应的目标旧数据,避免了将拷贝的元数据进行落盘操作进而利用元数据管理旧数据的步骤,减少了数据双写操作,提升了数据写入的性能,
56.参见图2所示,本发明实施例公开了一种数据写入方法,应用于固态硬盘,包括:
57.步骤s11、获取上层软件发送的针对新数据目录中的当前目标数据的数据更新请求;所述数据更新请求包括待写入新数据和目标逻辑地址。
58.本实施例中,如图3所示,在获取到上层软件发送的针对新数据目录中的当前目标数据的数据更新请求时,当前固态硬盘内部实际存储的有旧数据和新数据。并且,如图4所示,新数据目录中的当前目标数据为新数据1,也即,固态硬盘获取上层软件发送的针对新数据目录中的新数据1的数据更新请求,数据更新请求中的待写入新数据为新数据2,数据更新请求中的目标逻辑地址为固态硬盘与上层软件约定好的逻辑地址,其中,上层软件中的目标逻辑地址与固态硬盘中的目标逻辑地址之间可以传递相同的映射关系,也即,上层软件与固态硬盘均可以利用该映射关系查找与目标逻辑地址对应的目标数据。
59.步骤s12、将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据,并在本地第一映射关系库中新建所述第一目标旧数据与所述目标逻辑地址之间的映射关系。
60.本实施例中,在执行对待写入新数据的写入操作之前,需要先将当前目标数据迁移至旧数据目录,腾出新数据目录中的位置,以便对新数据目录中的当前目标数据进行更新。进一步的,通过在本地第一映射关系库中建立目标逻辑地址与第一目标旧数据之间的映射关系,可以利用目标逻辑地址管理第一目标旧数据,其中,本地第一映射关系库中记录的是目标逻辑地址与目标旧数据之间的映射关系。如图4所示,当前目标数据为新数据1,第一目标旧数据为旧数据2,其中,新数据1即为旧数据2,也即将新数据目录中的新数据1迁移至旧数据目录以得到旧数据2,并在本地第一映射关系库中新建旧数据2与目标逻辑地址之间的映射关系。这样一来,通过利用目标逻辑地址与第一目标旧数据之间的映射关系可以查找到第一目标旧数据,避免了将拷贝的元数据进行落盘操作进而利用元数据管理旧数据的步骤,不仅减少了数据双写和固态硬盘与上层软件之间的交互操作,还减少了由于元数据管理所引起的更新db的操作,提升了数据写入的性能。
61.步骤s13、对所述待写入新数据执行本地写入操作,并在写入失败时利用所述第一
映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的所述第一目标旧数据,并将所述第一目标旧数据迁回至所述新数据目录,以完成相应的数据恢复操作。
62.本实施例中,所述对所述待写入新数据执行本地写入操作之后,还可以包括向所述上层软件发送相应的写入结果反馈消息,以便所述上层软件在所述写入结果反馈消息表征写入操作已结束时,将本地的所述目标逻辑地址标记为可用状态。可以理解的是,在对待写入新数据的写入操作执行结束之后,不管写入成功还是写入失败均需要向上层软件发送相应的写入结果反馈消息,上层软件接收到写入结果反馈消息之后,将本地的目标逻辑地址标记为可用状态,供其它的数据更新请求使用,也即,固态硬盘获取到上层软件在本地的目标逻辑地址处于可用状态时发起的针对新数据目录中的当前目标数据的数据更新请求。进一步的,当上层软件中的目标逻辑地址被标记为不可用状态,则表明目标逻辑地址当前被占用,即对当前的待写入新数据的写入操作还没有完成,此时上层软件不会向固态硬盘发送数据更新请求,如果上层软件在目标逻辑地址被标记为不可用状态时,向固态硬盘发送数据更新请求,则会造成固态硬盘内的数据混乱,进而导致数据写入失败。这样一来,通过向上层软件发送写入结果反馈消息,可以使上层软件及时对本地的目标逻辑地址进行可用状态标记,避免在目标逻辑地址处于不可用状态时向固态硬盘发送数据更新请求进而导致数据写入失败的问题。
63.本实施例中,在待写入新数据写入失败时,需要利用目标逻辑地址与第一目标旧数据之间的映射关系从旧数据目录中查找到第一目标旧数据,并且由于待写入新数据写入失败,第一目标旧数据当前相当于还是新数据,故将第一目标旧数据迁回至新数据目录,以完成数据恢复操作。同时,对于目标逻辑地址与第一目标旧数据之间的映射关系,既可以从本地第一映射关系库中删除,也可以不从本地第一映射关系库中删除。进一步的,如果不将第一目标旧数据迁回至新数据目录,此时的新数据目录中没有第一目标旧数据,固态硬盘便无法获取上层软件发送的针对新数据目录的当前目标数据的数据更新请求。这样一来,在数据写入失败时可以根据目标逻辑地址查找对应的目标旧数据进行数据恢复操作,避免了利用拷贝的元数据查找对应的旧数据进行数据恢复的操作。
64.本实施例中,所述对所述待写入新数据执行本地写入操作之后,还可以包括若写入成功,利用所述第一映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的第二目标旧数据,并将所述旧数据目录中的所述第二目标旧数据标记为可回收状态;所述第二目标旧数据为上一次数据更新操作中从所述新数据目录迁移至所述旧数据目录的上一目标数据。可以理解的是,若待写入新数据写入成功,则将待写入新数据保存至新数据目录,同时第二目标旧数据便可以释放,从而可以利用目标逻辑地址与第二目标旧数据之间的映射关系查找到第二目标旧数据,将其标记为可回收状态,等待回收删除。如图4所示,第二目标旧数据即为旧数据1,待写入新数据即为新数据2,若新数据2写入成功,则利用本地第一映射关系库从旧数据目录中查找与目标逻辑地址对应的旧数据1,并将旧数据目录中的旧数据1标记为可回收状态,等待回收删除。这样一来,通过将第二目标旧数据标记为可回收状态,在固态硬盘获取到的请求较少时,再对标记为可回收状态的目标旧数据进行删除,避免了每次数据写入成功时都进行保留新数据删除旧数据的操作,减少了固态硬盘与上层软件之间的交互,提升了固态硬盘的使用寿命。
65.如图5所示,被覆盖的旧数据即为新数据目录中的当前目标数据,也即旧数据目录
中的第一目标旧数据,获取上层软件发送的针对新数据目录中的当前目标数据的数据更新请求,其中,数据更新请求包括待写入新数据和目标逻辑地址,待写入新数据中包括元数据和数据。在本地第一映射关系库中建立目标逻辑地址与旧数据目录中的被覆盖旧数据之间的映射关系,并向上层软件传递相同的映射关系,以便上层软件和固态硬盘均可以利用该映射关系查找到与目标逻辑地址对应的被覆盖旧数据。在对待写入新数据执行数据写入操作之后,向上层软件发送表征写入操作已结束的写入结果反馈消息,以便上层软件将本地的目标逻辑地址标记为可用状态,供其他数据更新请求使用。当数据写入失败时,利用本地第一映射关系库从旧数据目录中查找与目标逻辑地址对应的被覆盖的旧数据,并将旧数据目录中的被覆盖旧数据迁回至新数据目录中,以完成数据恢复操作。这样一来,避免了将拷贝的元数据进行落盘操作进而利用元数据管理旧数据的步骤,并且避免了在每次数据写入成功时保留新数据删除旧数据或每次数据写入失败时保留旧数据删除新数据的操作,减少了固态硬盘与上层软件之间的交互。
66.由此可见,本技术通过建立目标逻辑地址与目标旧数据之间的映射关系,可以利用目标逻辑地址管理相应的目标旧数据,避免了将拷贝的元数据进行落盘操作进而利用元数据管理旧数据的步骤,不仅减少了数据双写和固态硬盘与上层软件之间的交互操作,还减少了由于元数据管理所引起的更新db的操作,提升了数据写入的性能,并在数据写入失败时可以根据目标逻辑地址查找对应的目标旧数据进行数据恢复操作,避免了利用拷贝的元数据查找对应的旧数据的操作,从而避免了仅将固态硬盘中作为存储单元使用,合理地利用了固态硬盘内部的数据管理逻辑。
67.基于前一实施例可知,本技术详细描述了对目标逻辑地址与目标旧数据之间映射关系的建立,以及如何利用目标逻辑地址管理旧数据,为此,本技术接下来对如何基于目标逻辑地址对目标旧数据进行删除操作做了详细描述,参见图6所示,本发明实施例公开了一种数据删除过程,应用于固态硬盘,包括:
68.步骤s21、获取上层软件发送的包含目标逻辑地址的数据删除请求。
69.本实施例中,所述获取所述上层软件发送的包含所述目标逻辑地址的数据删除请求,可以包括获取所述上层软件在当前数据写入请求的数量小于预设数量阈值时发送的包含所述目标逻辑地址的数据删除请求;所述数据写入请求包括数据首次写入请求以及数据更新请求。可以理解的是,在固态硬盘的当前写入请求的数量较少时,获取上层软件发送的包含目标逻辑地址的数据删除请求,其中,预设数量阈值是由用户根据自身的实际删除需求设置的。例如,在当前数据写入请求的数量为5,预设数量阈值为10时,获取上层软件发送的包含目标逻辑地址的数据删除请求。这样一来,避免了在当前数据写入请求的数量大于预设数量阈值时,对与数据删除请求中的目标逻辑地址对应的处于可回收状态的目标旧数据进行删除操作所造成的数据通道拥堵或数据删除失败的问题,并且避免了在每次数据写入成功时保留新数据删除旧数据或每次数据写入失败时保留旧数据删除新数据的操作,减少了固态硬盘与上层软件之间的交互,提升了固态硬盘的使用寿命。
70.步骤s22、利用第一映射关系库从旧数据目录中查找与所述数据删除请求中的所述目标逻辑地址对应的处于可回收状态的目标旧数据。
71.步骤s23、对所述目标旧数据执行删除操作,并从所述第一映射关系库删除所述目标旧数据与所述目标逻辑地址之间的映射关系。
72.本实施例中,利用数据删除请求中的目标逻辑地址从旧数据目录中查找到对应的被标记为可回收状态的目标旧数据,并对上述目标旧数据进行删除操作,同时将目标逻辑地址与目标旧数据之间的映射关系从本地第一映射关系库中删除,减少不必要的资源占用。
73.由此可见,本技术通过在当前数据写入请求的数量小于预设数量阈值时。对旧数据目录中与数据删除请求中的目标逻辑地址对应的被标记为可回收状态的目标旧数据进行删除操作,避免了在当前数据写入请求的数量大于预设数量阈值时,对与数据删除请求中的目标逻辑地址对应的处于可回收状态的目标旧数据进行删除操作所造成的数据通道拥堵或数据删除失败的问题,并且避免了在每次数据写入成功时保留新数据删除旧数据或每次数据写入失败时保留旧数据删除新数据的操作,减少了固态硬盘与上层软件之间的交互,提升了固态硬盘的使用寿命。
74.基于前一实施例可知,本技术详细描述了对目标逻辑地址与目标旧数据之间映射关系的建立,以及如何利用目标逻辑地址管理旧数据,为此,本技术接下来对如何对首次待写入数据进行数据写入操作做了详细描述,参见图7所示,本发明实施例公开了一种首次待写入数据的写入过程,应用于固态硬盘,包括:
75.步骤s31、获取上层软件发送的数据首次写入请求;所述数据首次写入请求包括首次待写入数据以及所述上层软件为所述首次待写入数据配置的预设逻辑地址。
76.本实施例中,当获取到上层软件发送的数据首次写入请求时,由于新数据目录中没有当前目标数据,因此数据首次写入请求中的预设逻辑地址是为首次待写入数据配置的,并且预设逻辑地址为上层软件与固态硬盘约定好的逻辑地址。
77.步骤s32、对所述首次待写入数据执行本地写入操作以得到首次写入后目标数据。
78.步骤s33、在本地第二映射关系库中新建所述首次写入后目标数据与所述预设逻辑地址之间的映射关系。
79.本实施例中,在对首次待写入数据完成写入操作之后,需要在本地第二映射关系库中建立预设逻辑地址与首次写入后目标数据之间的映射关系,其中,本地第二映射关系库中记录的是目标逻辑地址与新数据之间的映射关系,以便可以利用本地第二映射关系库查找与目标逻辑地址对应的首次写入后目标数据。进一步的,在获取到上层软件发送的针对新数据目录中的首次写入后目标数据的数据更新请求后,利用所述第二映射关系库查找与数据更新请求中的目标逻辑地址对应的所述当前目标数据,并将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据,从而实现对旧数据的备份。
80.由此可见,本技术通过获取上层软件发送的数据首次写入请求,在执行对首次待写入数据的写入操作之后,在本地第二映射关系库中新建首次写入后目标数据与预设逻辑地址之间的映射关系,以便可以利用本地第二映射关系库查找与目标逻辑地址对应的首次写入后目标数据。
81.参见图8所示,本发明实施例公开了一种数据写入方法,应用于上层软件,包括:
82.步骤s41、创建针对固态硬盘上新数据目录中的当前目标数据的数据更新请求;所述数据更新请求包括待写入新数据和目标逻辑地址。
83.步骤s42、将所述数据更新请求发送至所述固态硬盘,以便所述固态硬盘将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据,并在本地第一映射关系库中新建所
述第一目标旧数据与所述目标逻辑地址之间的映射关系;对所述待写入新数据执行本地写入操作并在写入失败时利用所述第一映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的所述第一目标旧数据,并将所述第一目标旧数据迁回至所述新数据目录以完成相应的数据恢复操作。
84.本实施例中,当目标逻辑地址处于可用状态时,创建针对新数据目录中的当前目标数据的数据更新请求,其中,新数据目录处于固态硬盘中,然后将上述数据更新请求发送至固态硬盘,以便固态硬盘将新数据目录中的当前目标数据迁移至旧数据目录中,以得到第一目标旧数据,并建立数据更新请求中的目标逻辑地址与旧数据目录中的第一目标旧数据之间的映射关系,实现对第一目标旧数据的备份,并在数据写入失败时,利用本地第一映射关系库从旧数据中查找与目标逻辑地址对应的第一目标旧数据,以完成数据恢复操作。
85.由此可见,本技术通过发送包含待写入新数据和目标逻辑地址的数据更新请求至固态硬盘,以便固态硬盘建立目标逻辑地址与目标旧数据之间的映射关系,利用目标逻辑地址实现对目标旧数据的管理,避免了将拷贝的元数据进行落盘操作,进而利用元数据管理目标旧数据的步骤,不仅减少了数据双写和固态硬盘与上层软件之间的交互操作,还减少了由于元数据管理所引起的更新db的操作,提升了数据写入的性能。
86.参见图9所示,本发明实施例公开了一种数据写入装置,应用于固态硬盘,包括:
87.请求获取模块11,用于获取上层软件发送的针对新数据目录中的当前目标数据的数据更新请求;所述数据更新请求包括待写入新数据和目标逻辑地址;
88.关系新建模块12,用于将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据,并在本地第一映射关系库中新建所述第一目标旧数据与所述目标逻辑地址之间的映射关系;
89.数据写入模块13,用于对所述待写入新数据执行本地写入操作;
90.数据恢复模块14,用于在写入失败时利用所述第一映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的所述第一目标旧数据,并将所述第一目标旧数据迁回至所述新数据目录,以完成相应的数据恢复操作。
91.由此可见,本技术通过建立目标逻辑地址与目标旧数据之间的映射关系,可以利用目标逻辑地址管理相应的目标旧数据,避免了将拷贝的元数据进行落盘操作进而利用元数据管理旧数据的步骤,不仅减少了数据双写和固态硬盘与上层软件之间的交互操作,还减少了由于元数据管理所引起的更新db的操作,提升了数据写入的性能,并在数据写入失败时可以根据目标逻辑地址查找对应的目标旧数据进行数据恢复操作,避免了利用拷贝的元数据查找对应的旧数据的操作,从而避免了仅将固态硬盘中作为存储单元使用,合理地利用了固态硬盘内部的数据管理逻辑。
92.在一些具体实施例中,所述数据写入模块13之后,还可以包括:
93.消息发送单元,用于向所述上层软件发送相应的写入结果反馈消息,以便所述上层软件在所述写入结果反馈消息表征写入操作已结束时,将本地的所述目标逻辑地址标记为可用状态;
94.相应的,所述请求获取模块11,具体可以用于获取所述上层软件在本地的所述目标逻辑地址处于可用状态时发起的针对所述当前目标数据的所述数据更新请求。
95.在一些具体实施例中,所述数据写入模块13之后,还可以包括:
96.第一数据查找单元,用于当写入成功,利用所述第一映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的第二目标旧数据,
97.数据标记单元,用于将所述旧数据目录中的所述第二目标旧数据标记为可回收状态;所述第二目标旧数据为上一次数据更新操作中从所述新数据目录迁移至所述旧数据目录的上一目标数据。
98.在一些具体实施例中,所述数据写入装置,还可以包括:
99.删除请求获取子模块,用于获取所述上层软件发送的包含所述目标逻辑地址的数据删除请求;
100.第二数据查找单元,用于利用所述第一映射关系库从所述旧数据目录中查找与所述数据删除请求中的所述目标逻辑地址对应的处于可回收状态的目标旧数据;
101.数据删除单元,用于对所述目标旧数据执行删除操作;
102.关系删除单元,用于从所述第一映射关系库删除所述目标旧数据与所述目标逻辑地址之间的映射关系。
103.在一些具体实施例中,所述删除请求获取子模块,具体可以包括:
104.删除请求获取单元,用于获取所述上层软件在当前数据写入请求的数量小于预设数量阈值时发送的包含所述目标逻辑地址的数据删除请求;所述数据写入请求包括数据首次写入请求以及数据更新请求。
105.在一些具体实施例中,所述数据写入装置,还可以包括:
106.首次请求获取单元,用于获取所述上层软件发送的数据首次写入请求;所述数据首次写入请求包括首次待写入数据以及所述上层软件为所述首次待写入数据配置的预设逻辑地址;
107.首次数据写入单元,用于对所述首次待写入数据执行本地写入操作以得到首次写入后目标数据;
108.关系建立单元,用于在本地第二映射关系库中新建所述首次写入后目标数据与所述预设逻辑地址之间的映射关系;
109.相应的,所述关系新建模块12,具体可以用于利用所述第二映射关系库查找与所述目标逻辑地址对应的所述当前目标数据,并将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据。
110.参见图10所示,本发明实施例公开了一种数据写入装置,应用于上层软件,包括:
111.请求创建模块21,用于创建针对固态硬盘上新数据目录中的当前目标数据的数据更新请求;所述数据更新请求包括待写入新数据和目标逻辑地址;
112.请求发送模块22,用于将所述数据更新请求发送至所述固态硬盘,以便所述固态硬盘将所述当前目标数据迁移至旧数据目录以得到第一目标旧数据,并在本地第一映射关系库中新建所述第一目标旧数据与所述目标逻辑地址之间的映射关系;对所述待写入新数据执行本地写入操作并在写入失败时利用所述第一映射关系库从所述旧数据目录中查找与所述目标逻辑地址对应的所述第一目标旧数据,并将所述第一目标旧数据迁回至所述新数据目录以完成相应的数据恢复操作。
113.其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
114.由此可见,本技术通过发送包含待写入新数据和目标逻辑地址的数据更新请求至固态硬盘,以便固态硬盘建立目标逻辑地址与目标旧数据之间的映射关系,利用目标逻辑地址实现对目标旧数据的管理,避免了将拷贝的元数据进行落盘操作,进而利用元数据管理目标旧数据的步骤,不仅减少了数据双写和固态硬盘与上层软件之间的交互操作,还减少了由于元数据管理所引起的更新db的操作,提升了数据写入的性能。
115.进一步的,本技术实施例还公开了一种电子设备,图11是根据一示例性实施例示出的电子设备30结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
116.图11为本技术实施例提供的一种电子设备30的结构示意图。该电子设备30,具体可以包括:至少一个处理器31、至少一个存储器32、电源33、通信接口34、输入输出接口35和通信总线36。其中,所述存储器32用于存储计算机程序,所述计算机程序由所述处理器31加载并执行,以实现前述任一实施例公开的数据写入方法中的相关步骤。另外,本实施例中的电子设备30具体可以为电子计算机。
117.本实施例中,电源33用于为电子设备30上的各硬件设备提供工作电压;通信接口34能够为电子设备30创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口35,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
118.另外,存储器32作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统321、计算机程序322等,存储方式可以是短暂存储或者永久存储。
119.其中,操作系统321用于管理与控制电子设备30上的各硬件设备以及计算机程序322,其可以是windows server、netware、unix、linux等。计算机程序322除了包括能够用于完成前述任一实施例公开的由电子设备30执行的数据写入方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
120.进一步的,本技术还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据写入方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
121.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
122.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
123.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存
储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
124.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
125.以上对本技术所提供的技术方案进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献