CN115373908A - 一种数据存储方法及相关装置 - Google Patents
一种数据存储方法及相关装置 Download PDFInfo
- Publication number
- CN115373908A CN115373908A CN202110560361.1A CN202110560361A CN115373908A CN 115373908 A CN115373908 A CN 115373908A CN 202110560361 A CN202110560361 A CN 202110560361A CN 115373908 A CN115373908 A CN 115373908A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- target
- instruction
- target data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种数据存储方法,该方法应用于包括有内存储器和外存储器的终端中。该方法包括:终端将目标数据存储至第一存储器,第一存储器为内存储器;终端向第二存储器发送第一指令,第一指令包括目标数据,第一指令用于指示所述第二存储器写入目标数据,第二存储器为外存储器,第二存储器包括易失性存储器和非易失性存储器;在所述第二存储器复位后,终端基于所述第一存储器中的所述目标数据恢复所述第二存储器中的数据。通过本方案,在外存储器下电复位时,终端能够将备份于内存储器中的目标数据重新发送给外存储器,避免了外存储器下电复位后所引起的数据丢失的问题,保证了终端的正常运行。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据存储方法及相关装置。
背景技术
在数据存储领域中,在存储设备的运行过程中,传输链路不稳定、存储设备的内部控制器异常或者存储介质异常等因素可能会导致存储设备无法正常运行。在存储设备无法正常运行的情况下,终端的操作系统与存储设备之间无法进行数据交互,进而影响终端的正常运行。
在服务器领域,一般能够通过冗余备份方法来解决存储设备无法正常运行的问题。服务器中包括主存储设备和从存储设备,在主存储设备异常后,则将数据交互业务迁移到从存储设备,从而保障数据交互业务不中断。
对于便携终端,例如智能手机或平板电脑等终端,由于成本及终端体积受限,通常无法使用冗余备份方法。因此,便携终端通常是通过触发存储设备复位来解决存储设备异常的问题。然而,触发存储设备复位会对存储设备进行下电复位,导致存储设备内的易失性存储器的数据丢失,进而影响终端的正常运行。
发明内容
本申请实施例提供了一种数据存储方法,终端在需要向外存储器写入目标数据的情况下,终端将目标数据存储于内存储器中。这样,在外存储器下电复位时,终端能够将备份于内存储器中的目标数据重新发送给外存储器,避免了外存储器下电复位后所引起的数据丢失的问题,保证了终端的正常运行。
本申请第一方面提供一种数据存储方法,该方法应用于包括有内存储器和外存储器的终端中。该方法包括:在终端需要长期存储目标数据的情况下,终端中的操作系统将目标数据存储至第一存储器,所述第一存储器为内存储器。其中,目标数据为非临时性存储的数据。即目标数据的存储要求为:终端断电后,目标数据仍能够存储于终端中。终端可以包括一个或多个内存储器,所述第一存储器可以为终端中的任意一个内存储器。内存储器也称为内存或主存,内存储器通常用于临时存放处理器中的运算数据。
操作系统向第二存储器发送第一指令,所述第一指令包括所述目标数据,所述第一指令用于指示所述第二存储器写入所述目标数据。其中,所述第二存储器为外存储器,用于长期存储数据。
所述第二存储器包括易失性存储器和非易失性存储器,所述易失性存储器用于临时存储待写入至所述非易失性存储器的所述目标数据,所述非易失性存储器用于长期存储所述目标数据。其中,易失性存储器的数据写入速度较快,但是易失性存储器在断电后无法保存数据。非易失性存储器的数据写入速度较慢,但是非易失性存储器在断电后仍然能保存数据。因此,第二存储器写入目标数据的过程包括:第二存储器先将目标数据写入到易失性存储器中,然后再将易失性存储器中的目标数据写入到非易失性存储器中的目标地址。通过在第二存储器中设置易失性存储器,可以保证操作系统下发的数据能够快速地写入至易失性存储器中,然后再从易失性存储器中写入非易失性存储器,避免了操作系统下发的数据直接写入非易失性存储器时由于写入速度过慢而影响操作系统正常下发数据写入指令。
在所述第二存储器复位后,所述第二存储器中的易失性存储器所存储的数据丢失,操作系统可以基于所述第一存储器中的目标数据恢复所述第二存储器中的数据。
本实施例中,终端在需要向外存储器写入目标数据的情况下,终端将目标数据存储于内存储器中。这样,在外存储器下电复位时,终端能够将备份于内存储器中的目标数据重新发送给外存储器,避免了外存储器下电复位后所引起的数据丢失的问题,保证了终端的正常运行。
在一种可能的实现方式中,所述在所述第二存储器复位后,基于所述第一存储器中的所述目标数据恢复所述第二存储器中的数据具体包括:操作系统获取所述第二存储器发送的第一消息,所述第一消息用于指示所述第二存储器复位成功。操作系统向所述第二存储器发送第二指令。其中,所述第二指令是根据所述第一存储器中的所述目标数据生成的。操作系统在确认第二存储器复位成功后,可以获取第一存储器中的目标数据,并且根据所述目标数据生成第二指令。所述第二指令包括所述目标数据,所述第二指令用于指示所述第二存储器写入所述目标数据。这样,第二存储器在接收到第二指令之后,则将第二指令中的目标数据写入到易失性存储器中,然后再从易失性存储器中将所述目标数据写入到非易失性存储器。
本方案中,在第二存储器复位后,操作系统则重新向第二存储器发送第一存储器中所存储的目标数据,能够有效避免第二存储器下电复位后所引起的数据丢失的问题,保证终端的正常运行。
在一种可能的实现方式中,所述方法还包括:在第二存储器的运行过程中,当第二存储器出现异常而导致第二存储器无法正常写入数据时,第二存储器则向操作系统发送第二消息,所述第二消息用于指示第二存储器出现异常。操作系统获取所述第二存储器发送的第二消息,所述第二消息用于指示所述第二存储器出现异常。操作系统向所述第二存储器发送第三指令,所述第三指令用于指示所述第二存储器执行复位操作。
在第二存储器接收到指示执行复位操作的第三指令之后,第二存储器则根据第三指令执行复位操作,以消除第二存储器中所出现的异常。在第二存储器执行复位操作之后,第二存储器的易失性存储器中的数据由于断电而丢失。
在一种可能的实现方式中,所述方法还包括:操作系统获取所述第二存储器发送的第三消息。所述第三消息为所述第一指令的响应消息,所述第三消息用于指示所述目标数据已写入至所述非易失性存储器。操作系统删除所述第一存储器中的所述目标数据。
本方案中,由于第一存储器中用于存储待写入第二存储器的数据的存储空间有限,因此在数据已写入至第二存储器的非易失性存储器之后,终端可以删除第一存储器中所存储的目标数据,以保证第一存储器中有足够的空闲存储空间。
在一种可能的实现方式中,所述操作系统将目标数据存储至第一存储器,包括:操作系统将所述目标数据存储至所述第一存储器中的目标存储空间,所述目标存储空间为预分配的存储空间。所述目标存储空间用于临时存储待写入第二存储器的数据。
具体地,在终端的启动过程中,终端在第一存储器中划分一个特定容量大小的存储空间,并将该存储空间指定为用于临时存储待写入第二存储器的数据的目标存储空间。由于所述目标存储空间是内存储器中容量较小的一个存储空间,因此终端在内存储器中划分目标存储空间并不会影响内存储器正常存储处理器的运算数据。
本方案中,通过在第一存储器中分配独立的目标存储空间来存储待写入第二存储器的数据,能够有效地隔离待写入第二存储器的与处理器的运算数据,保证数据之间的独立性。
在一种可能的实现方式中,所述目标存储空间的容量大于或等于所述易失性存储器的容量,以保证在第二存储器的易失性存储器中的所有数据均能够备份在目标存储空间中。
在一种可能的实现方式中,所述方法还包括:操作系统向所述第二存储器发送第四指令,所述第四指令用于查询所述易失性存储器中所存储的数据。操作系统获取所述第二存储器发送的第四消息,所述第四消息用于指示所述易失性存储器中所存储的第一数据。操作系统删除所述第一存储器中的第二数据。其中,所述第二数据和所述第一数据均包含于所述目标数据中,且所述第一数据和所述第二数据不同。
本方案中,终端通过查询仍存储于第二存储器的易失性存储器中的数据,来实现将已经不在易失性存储器中的数据从第一存储器中删除,从而保证第一存储器中有足够的空闲存储空间。
在一种可能的实现方式中,所述向所述第二存储器发送第四指令,包括:若所述第二存储器执行指令的方式为乱序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则操作系统向所述第二存储器发送所述第四指令。
当第二存储器执行的指令的方式为乱序执行时,第二存储器并不会根据接收指令的顺序来有序地处理指令。也就是说,第二存储器可能会先处理后接收到的指令,从而将后接收到的数据先从易失性存储器中写入到非易失性存储器中;对于先接收到的某一些指令,第二存储器可能一直没有执行,导致了先接收到的数据一直存储于易失性存储器中。在这种情况下,操作系统通过查询易失性存储器中所存储的数据内容,来删除目标存储空间中的部分数据,能够很好地保证第一存储器的目标存储空间中能够完整地保存有易失性存储器中所存储的数据。
在一种可能的实现方式中,所述方法还包括:若所述第二存储器执行指令的方式为顺序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则操作系统删除所述目标存储空间中的第三数据,所述第三数据为所述目标存储空间中最先写入所述目标存储空间的数据。
简单来说,操作系统基于先进先出的方式来删除目标存储空间中已被成功写入非易失性存储器的数据,从而保证目标存储空间中存在足够的空闲空间。
本申请第二方面提供一种终端,包括:处理单元和收发单元。所述处理单元,用于将目标数据存储至第一存储器,所述第一存储器为内存储器;所述收发单元,用于向第二存储器发送第一指令,所述第一指令包括所述目标数据,所述第一指令用于指示所述第二存储器写入所述目标数据,所述第二存储器为外存储器,所述第二存储器包括易失性存储器和非易失性存储器,所述易失性存储器用于临时存储待写入至所述非易失性存储器的所述目标数据,所述非易失性存储器用于存储所述目标数据;所述收发单元,还用于在所述第二存储器复位后,基于所述第一存储器中的所述目标数据恢复所述第二存储器中的数据。
在一种可能的实现方式中,所述收发单元,还用于获取所述第二存储器发送的第一消息,所述第一消息用于指示所述第二存储器复位成功;所述收发单元,还用于向所述第二存储器发送第二指令,所述第二指令是根据所述第一存储器中的所述目标数据生成的,所述第二指令包括所述目标数据,所述第二指令用于指示所述第二存储器写入所述目标数据。
在一种可能的实现方式中,所述收发单元,还用于获取所述第二存储器发送的第二消息,所述第二消息用于指示所述第二存储器出现异常;所述收发单元,还用于向所述第二存储器发送第三指令,所述第三指令用于指示所述第二存储器执行复位操作。
在一种可能的实现方式中,所述收发单元,还用于获取所述第二存储器发送的第三消息,所述第三消息用于指示所述目标数据已写入至所述非易失性存储器;所述处理单元,还用于删除所述第一存储器中的所述目标数据。
在一种可能的实现方式中,所述处理单元,还用于将所述目标数据存储至所述第一存储器中的目标存储空间,所述目标存储空间为预分配的存储空间。
在一种可能的实现方式中,所述目标存储空间的容量大于或等于所述易失性存储器的容量。
在一种可能的实现方式中,所述收发单元,还用于向所述第二存储器发送第四指令,所述第四指令用于查询所述易失性存储器中所存储的数据;所述收发单元,还用于获取所述第二存储器发送的第四消息,所述第四消息用于指示所述易失性存储器中所存储的第一数据;所述处理单元,还用于删除所述第一存储器中的第二数据;其中,所述第二数据和所述第一数据均包含于所述目标数据中,且所述第一数据和所述第二数据不同。
在一种可能的实现方式中,所述收发单元,还用于若所述第二存储器执行指令的方式为乱序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则向所述第二存储器发送所述第四指令。
在一种可能的实现方式中,所述处理单元,还用于若所述第二存储器执行指令的方式为顺序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则删除所述目标存储空间中的第三数据,所述第三数据为所述目标存储空间中最先写入所述目标存储空间的数据。
本申请第三方面提供一种终端,该终端包括:内存储器、外存储器和处理器;所述外存储器存储有代码,所述处理器被配置为执行所述代码,当所述代码被执行时,所述终端执行如第一方面中的任意一种实现方式的方法。
本申请第四方面提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面中的任意一种实现方式的方法。
本申请第五方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面中的任意一种实现方式的方法。
本申请第六方面提供一种芯片,包括一个或多个处理器。处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行上述任一方面任意可能的实现方式中的方法。
可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。本申请提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
附图说明
图1为本申请实施例提供的一种存储设备的结构示意图;
图2为本申请实施例提供的一种终端101的结构示意图;
图3为本申请实施例提供的一种应用场景的架构示意图;
图4为本申请实施例提供的一种数据存储方法400的流程示意图;
图5为本申请实施例提供的数据存储方法400的另一流程示意图;
图6为本申请实施例提供的数据存储方法的应用架构示意图;
图7为本申请实施例提供的一种数据存储方法700的流程示意图;
图8为本申请实施例提供的一种终端800的结构示意图;
图9为本申请实施例提供的一种计算机可读存储介质900的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
在数据存储领域中,在存储设备的运行过程中,传输链路不稳定、存储设备的内部控制器异常或者存储介质异常等因素可能会导致存储设备无法正常运行。在存储设备无法正常运行的情况下,终端的操作系统与存储设备之间无法进行数据交互,进而影响终端的正常运行。
在服务器领域,一般能够通过冗余备份方法来解决存储设备无法正常运行的问题。服务器中包括主存储设备和从存储设备,在主存储设备异常后,则将数据交互业务迁移到从存储设备,从而保障数据交互业务不中断。
对于便携终端,例如智能手机或平板电脑等终端,由于成本及终端体积受限,通常无法使用冗余备份方法。因此,便携终端通常是通过触发存储设备复位来解决存储设备异常的问题。然而,触发存储设备复位会对存储设备进行下电复位,导致存储设备内的易失性存储器的数据丢失,进而影响终端的正常运行。
可以参阅图1,图1为本申请实施例提供的一种存储设备的结构示意图。如图1所示,终端中的操作系统通过驱动组件与存储设备进行数据交互。存储设备中包括易失性存储器和非易失性存储器。易失性存储器的数据写入速度较快,但是易失性存储器在断电后无法保存数据。非易失性存储器的数据写入速度较慢,但是非易失性存储器在断电后仍然能保存数据。因此,在终端中的操作系统向存储设备写入数据的过程中,数据先被写入到存储设备的易失性存储器中,然后再从易失性存储器写入到非易失性存储器中。
当存储设备在数据写入的过程中发生异常时,操作系统触发存储设备下电复位,存储设备的易失性存储器中的数据则丢失。由于易失性存储器中的数据还没来得及写入到非易失性存储器中,且易失性存储器断电后丢失了数据,因此操作系统写入到存储设备中的部分数据丢失。在易失性存储器所丢失的数据为关键数据的情况下,可能会导致终端的文件系统损坏,影响终端的正常运行。
有鉴于此,本申请实施例提供了一种数据存储方法,该方法可以应用于终端中。终端在需要向外存储器写入目标数据的情况下,终端将目标数据存储于内存储器中。这样,在外存储器下电复位时,终端能够将备份于内存储器中的目标数据重新发送给外存储器,避免了外存储器下电复位后所引起的数据丢失的问题,保证了终端的正常运行。
本申请实施例所涉及的终端可以为具有内存储器和外存储器的终端。示例性地,该终端例如可以是个人电脑(personal computer,PC)、笔记本电脑、服务器、手机(mobilephone)、平板电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。该终端可以是运行安卓系统、IOS系统、windows系统以及其他系统的设备。为便于理解,以下将以终端为智能手机为例,对本申请实施例提供的数据存储方法进行介绍。
可以参阅图2,图2为本申请实施例提供的一种终端101的结构示意图。如图2所示,终端101包括处理器103,处理器103和系统总线105耦合。处理器103可以是一个或者多个处理器,其中每个处理器都可以包括一个或多个处理器核。显示适配器(video adapter)107,显示适配器可以驱动显示器109,显示器109和系统总线105耦合。系统总线105通过总线桥111和输入输出(I/O)总线耦合。I/O接口115和I/O总线耦合。I/O接口115和多种I/O设备进行通信,比如输入设备117(如:触摸屏等),外存储器121,(例如,硬盘、软盘、光盘或优盘),多媒体接口等)。收发器123(可以发送和/或接收无线电通信信号),摄像头155(可以捕捉静态和动态数字视频图像)和外部USB端口125。其中,可选地,和I/O接口115相连接的接口可以是USB接口。
其中,处理器103可以是任何传统处理器,包括精简指令集计算(reducedinstruction set Computing,RISC)处理器、复杂指令集计算(complex instruction setcomputing,CISC)处理器或上述的组合。可选地,处理器可以是诸如ASIC的专用装置。
终端101可以通过网络接口129和软件部署服务器149通信。示例性的,网络接口129是硬件网络接口,比如,网卡。网络127可以是外部网络,比如因特网,也可以是内部网络,比如以太网或者虚拟私人网络(virtual private network,VPN)。可选地,网络127还可以是无线网络,比如WiFi网络,蜂窝网络等。
硬盘驱动器接口131和系统总线105耦合。硬件驱动接口和硬盘驱动器133相连接。内存储器135和系统总线105耦合。运行在内存储器135的数据可以包括终端101的操作系统(OS)137、应用程序143和调度表。
操作系统包括Shell 139和内核(kernel)141。Shell 139是介于使用者和操作系统的内核间的一个接口。shell是操作系统最外面的一层。shell管理使用者与操作系统之间的交互:等待使用者的输入,向操作系统解释使用者的输入,并且处理各种各样的操作系统的输出结果。
内核141由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。内核141直接与硬件交互,操作系统内核通常运行进程,并提供进程间的通信,提供CPU时间片管理、中断、内存管理和IO管理等等。
示例性地,在终端101为智能手机的情况下,应用程序143包括即时通讯相关的程序。在一个实施例中,在需要执行应用程序143时,终端101可以从软件部署服务器149下载应用程序143。
可以参阅图3,图3为本申请实施例提供的一种应用场景的架构示意图。如图3所示,以终端为智能手机为例,终端中的软件分别运行在用户态和操作系统,终端中的硬件则为存储设备。在终端中,应用程序运行在用户态,文件系统(file system,FS)、块层(BLOCKLayer)和存储设备的驱动组件则运行在操作系统。
其中,文件系统是操作系统中负责管理和存储文件信息的软件机构,文件系统也称为文件管理系统。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
块层是文件系统访问存储设备的接口,是连接文件系统和驱动组件的桥梁。
驱动组件是添加到操作系统中的特殊程序。驱动组件中包含有关硬件设备的信息,用于实现终端中的软件与存储设备之间的通信。
在终端的运行过程中,用户态的应用程序在需要读取存储设备中的数据或者将数据写入存储设备时,应用程序向文件系统发送数据读取请求或者数据写入请求。文件系统根据获取到的数据读取请求或者数据写入请求,向块层下发相应的数据处理请求。块层根据下发的数据处理请求,生成相应的IO请求,并下发给驱动组件。驱动组件根据接收到的IO请求与存储设备进行通信,从而实现数据的读取或写入。
可以参阅图4,图4为本申请实施例提供的一种数据存储方法400的流程示意图。如图4所示,该方法400包括以下的步骤401-407。
步骤401,操作系统将目标数据存储至第一存储器,所述第一存储器为内存储器。
在终端需要长期存储目标数据的情况下,终端中的操作系统可以将目标数据存储至作为内存储器的第一存储器中,以实现目标数据的备份。
其中,目标数据为非临时性存储的数据。即目标数据的存储要求为:终端断电后,目标数据仍能够存储于终端中。
终端可以包括一个或多个内存储器,所述第一存储器可以为终端中的任意一个内存储器。内存储器也称为内存或主存,内存储器通常用于临时存放处理器中的运算数据。内存储器是外存储器与处理器进行沟通的桥梁,终端中的所有程序都在内存中运行。示例性地,在终端为计算机的情况下,内存储器可以为内存条等存储设备。在终端为智能手机的情况下,内存储器可以为运行内存等存储设备。
步骤402,操作系统向第二存储器发送第一指令,所述第一指令包括所述目标数据,所述第一指令用于指示所述第二存储器写入所述目标数据。
在获取到待写入第二存储器的目标数据后,操作系统则根据目标数据生成第一指令,并通过驱动组件向第二存储器发送所述第一指令。所述第一指令包括所述目标数据和目标地址,所述第一指令用于指示所述第二存储器将所述目标数据写入所述目标地址。
本实施例中,操作系统可以是串行地执行步骤401与步骤402,即操作系统先执行步骤401,再执行步骤402;操作系统也可以是并行地执行步骤401与步骤402,本实施例对此不做具体限定。
其中,所述第二存储器为外存储器,用于长期存储数据。终端可以包括一个或多个外存储器,所述第二存储器可以为终端中的任意一个外存储器。外存储器是指终端中除内存储器和处理器缓存之外的存储器。示例性地,在终端为计算机的情况下,外存储器可以为硬盘、软盘、光盘或优盘等存储设备。在终端为智能手机的情况下,外存储器可以为内置存储器或SD卡等存储设备。例如,所述第一存储器可以为智能手机中容量为8吉字节(GB)的运行内存,所述第二存储器可以为智能手机中容量为256GB的内置存储器。
所述第二存储器包括易失性存储器和非易失性存储器,所述易失性存储器用于临时存储待写入至所述非易失性存储器的所述目标数据,所述非易失性存储器用于长期存储所述目标数据。其中,易失性存储器的数据写入速度较快,但是易失性存储器在断电后无法保存数据。非易失性存储器的数据写入速度较慢,但是非易失性存储器在断电后仍然能保存数据。因此,第二存储器写入目标数据的过程包括:第二存储器先将目标数据写入到易失性存储器中,然后再将易失性存储器中的目标数据写入到非易失性存储器中的目标地址。
例如,假设第一指令用于指示将大小为4字节(kB)的目标数据写入到地址段0-3中。那么,第二存储器根据第一指令先将4kB的目标数据写入到易失性存储器中,然后再从易失性存储器中所存储的目标数据写入到非易失性存储器的地址段0-3中。
本实施例中,易失性存储器可以为静态随机存取存储器(Static Random-AccessMemory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)。非易失性存储器可以为通用闪存存储(Universal Flash Storage,UFS)、嵌入式多媒体卡(EmbeddedMulti Media Card,eMMC)或非易失性高速传输总线(Non-Volatile Memory express,NVMe)
步骤403,操作系统获取所述第二存储器发送的第二消息,所述第二消息用于指示所述第二存储器出现异常。
在第二存储器的运行过程中,当第二存储器出现异常而导致第二存储器无法正常写入数据时,第二存储器则向操作系统发送第二消息,所述第二消息用于指示第二存储器出现异常。其中,第二存储器出现异常的原因包括但不限于:传输链路不稳定、第二存储器的内部控制器异常或者存储介质异常等因素。
步骤404,操作系统向所述第二存储器发送第三指令,所述第三指令用于指示所述第二存储器执行复位操作。
在获取到第二存储器所上报的第二消息之后,操作系统则将第二存储器的状态置为异常,以阻塞应用程序所提交的数据读取请求以及数据写入请求。即,操作系统中断向第二存储器发送写入数据的指令或者读取数据的指令。然后,操作系统向第二存储器发送用于指示第二存储器执行复位操作的第三指令。
在第二存储器接收到指示执行复位操作的第三指令之后,第二存储器则根据第三指令执行复位操作,以消除第二存储器中所出现的异常。在第二存储器执行复位操作之后,第二存储器的易失性存储器中的数据由于断电而丢失。
步骤405,操作系统获取所述第二存储器发送的第一消息。
在第二存储器成功执行复位操作后,第二存储器则向操作系统发送第一消息。该第一消息用于指示所述第二存储器复位成功。操作系统通过获取第一消息,能够确认第二存储器已恢复正常。
步骤406,操作系统向所述第二存储器发送第二指令。
其中,操作系统向第二存储器所发送的所述第二指令是根据所述第一存储器中的目标数据生成的。操作系统在确认第二存储器复位成功后,可以获取第一存储器中的目标数据,并且根据所述目标数据生成第二指令。所述第二指令包括所述目标数据,所述第二指令用于指示第二存储器写入所述目标数据。
步骤407,第二存储器根据第二指令写入所述目标数据。
这样,第二存储器在接收到第二指令之后,则将第二指令中的目标数据写入到易失性存储器中,然后再从易失性存储器中将所述目标数据写入到非易失性存储器。
应理解,第二指令中包括目标数据所需要写入的目标地址。因此,第二存储器在获取到第二指令之后,会将所述目标数据重新写入到目标地址上。也就是说,即便第二存储器在执行复位操作之前已经将所述目标数据写入到非易失性存储器中,第二存储器也仅仅是将所述目标数据重新覆盖于目标地址上,而不会产生数据紊乱的问题。
本实施例中,在第二存储器复位后,操作系统则重新向第二存储器发送第一存储器中所存储的目标数据,能够有效避免第二存储器下电复位后所引起的数据丢失的问题,保证终端的正常运行。
可选的,为了保证第一存储器能够正常存储处理器的运算数据,终端可以在第一存储器中预先分配一个目标存储空间,所述目标存储空间用于临时存储待写入第二存储器的数据。示例性地,在终端的启动过程中,终端在第一存储器中划分一个特定容量大小的存储空间,并将该存储空间指定为用于临时存储待写入第二存储器的数据的目标存储空间。由于所述目标存储空间是内存储器中容量较小的一个存储空间,因此终端在内存储器中划分目标存储空间并不会影响内存储器正常存储处理器的运算数据。此外,通过在第一存储器中分配独立的目标存储空间来存储待写入第二存储器的数据,能够有效地隔离待写入第二存储器的与处理器的运算数据,保证数据之间的独立性。
终端在第一存储器中所分配的目标存储空间的容量大于或等于第二存储器的易失性存储器的容量,以保证在第二存储器的易失性存储器中的所有数据均能够备份在目标存储空间中。例如,在第二存储器的易失性存储器的容量为1MB的情况下,第一存储器中的目标存储空间的容量可以为1MB、2MB或者10MB。
在终端预分配了目标存储空间的情况下,在操作系统获取到待写入第二存储器的目标数据时,操作系统可以将所述目标数据存储于所述第一存储器的目标存储空间中。
应理解,由于第一存储器中用于存储待写入第二存储器的数据的存储空间有限,因此在数据已写入至第二存储器的非易失性存储器之后,终端可以删除第一存储器中所存储的目标数据,以保证第一存储器中有足够的空闲存储空间。
在本实施例中,终端可以通过多种方式来删除第一存储器中的数据。
方式一,终端根据第二存储器所反馈的指令已完成的消息,删除第一存储器中的数据。
示例性地,所述方法400还可以包括:操作系统获取所述第二存储器发送的第三消息。所述第三消息为所述第一指令的响应消息,所述第三消息用于指示所述目标数据已写入至所述非易失性存储器。操作系统删除所述第一存储器中的所述目标数据。
简单来说,第二存储器在完成操作系统所下发的第一指令(即完成将目标数据写入非易失性存储器的任务)之后,第二存储器则向操作系统返回第三消息,以指示第二存储器已完成目标数据的写入。操作系统则可以根据所述第三消息,删除第一存储器中的目标数据。
方式二,终端查询仍存储于第二存储器的易失性存储器中的数据,从而将已经不在易失性存储器中的数据从第一存储器中删除。
示例性地,可以参阅图5,图5为本申请实施例提供的数据存储方法400的另一流程示意图。如图5所示,该方法400还包括以下的步骤408-410。
步骤408,操作系统向所述第二存储器发送第四指令,所述第四指令用于查询所述易失性存储器中所存储的数据。
操作系统可以是周期性地向第二存储器发送查询易失性存储器中的数据的指令。例如,操作系统每隔1ms则向第二存储器发送一次用于查询易失性存储器中的数据的指令。
操作系统也可以是在第一存储器中用于存储待写入数据的目标存储空间将要饱和的情况下,向第二存储器发送查询易失性存储器中的数据的指令。例如,在第一存储器中的目标存储空间所存储的数据的数据量大于或等于预设阈值时,操作系统则向所述第二存储器发送所述第四指令。其中,所述预设阈值可以根据所述目标存储空间的容量以及第二存储器中的易失性存储器的容量来确定。例如,在所述目标存储空间的容量为10MB,第二存储器中的易失性存储器的容量为1MB的情况下,所述预设阈值可以设置为9MB。这样,操作系统每次查询完易失性存储器中的数据之后,操作系统至少能够删除目标存储空间中8MB大小的数据。并且,在预设阈值为9MB的情况下,目标存储空间中还剩下1MB的空闲空间,该空闲空间的容量大小于易失性存储器的容量大小相同。这样,操作系统能够保证在删除目标存储空间中的其他数据之前,目标存储空间中还有足够的空闲空间来存储后续到来的数据。
步骤409,操作系统获取所述第二存储器发送的第四消息。
第二存储器在接收到操作系统下发的第四指令后,第二存储器则根据易失性存储器中所存储的数据生成第四消息,并向操作系统发送所述第四消息,所述第四消息用于指示所述易失性存储器中所存储的第一数据。例如,所述第四消息指示易失性存储器中所存储的第一数据为待写入至地址段10-19的数据。
步骤410,操作系统删除所述第一存储器中的第二数据。
其中,所述第二数据和所述第一数据均包含于所述目标数据中,且所述第一数据和所述第二数据不同。所述第二数据为所述目标数据中已从易失性存储器中写入至非易失性存储器的数据。例如,假设第一存储器中所存储的目标数据为待写入至地址段0-19的数据,第一数据为待写入至地址段10-19的数据,第二数据为待写入至地址段0-9的数据,第二数据已从易失性存储器中写入至非易失性存储器中。因此,操作系统可以根据第四消息删除待写入至地址段0-9的第二数据。也就是说,操作系统可以根据所述第四消息,将已经不在易失性存储器中的数据从第一存储器中删除。
可选的,操作系统可以是在第二存储器执行指令的方式为乱序执行的情况下,通过方式二来删除目标存储空间中的部分数据。当第二存储器执行的指令的方式为乱序执行时,第二存储器并不会根据接收指令的顺序来有序地处理指令。也就是说,第二存储器可能会先处理后接收到的指令,从而将后接收到的数据先从易失性存储器中写入到非易失性存储器中;对于先接收到的某一些指令,第二存储器可能一直没有执行,导致了先接收到的数据一直存储于易失性存储器中。在这种情况下,操作系统通过方式二来删除目标存储空间中的部分数据,能够很好地保证第一存储器的目标存储空间中能够完整地保存有易失性存储器中所存储的数据。
此外,在第二存储器执行指令的方式为顺序执行的情况下,操作系统也可以是通过方式二来删除目标存储空间中的部分数据。当第二存储器执行的指令的方式为顺序执行时,第二存储器会根据接收指令的顺序来有序地处理指令。即,第二存储器先接收到的数据会被先写入到非易失性存储器中,第二存储器后接收到的数据则会被后写入到非易失性存储器中。
方式三,在目标存储空间已存储较多数据的情况下,终端删除先写入目标存储空间的数据。
示例性地,若所述第二存储器执行指令的方式为顺序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,终端中的操作系统则删除所述目标存储空间中的第三数据,所述第三数据为所述目标存储空间中最先写入所述目标存储空间的数据。
可选的,为了避免误删除易失性存储器仍存储的数据,操作系统可以删除目标存储空间中的部分数据,以保证在删除目标存储空间中的部分数据后,所述目标存储空间中剩下的数据的数据量大于或等于易失性存储器的容量。即,操作系统删除目标存储空间中的第三数据之后,目标存储空间中的剩余数据的数据量大于或等于易失性存储器的容量。例如,在目标存储空间的容量为10MB,易失性存储器的容量为1MB的情况下,操作系统可以是在目标存储空间中已存储有9MB数据的情况下,删除目标存储空间中先写入的8MB数据。这样一来,在操作系统删除了8MB的数据之后,目标存储空间中还剩下1MB的数据,保证了目标存储空间中仍存储有易失性存储器中所存储的所有数据。
简单来说,在方式三中,操作系统基于先进先出的方式来删除目标存储空间中已被成功写入非易失性存储器的数据,从而保证目标存储空间中存在足够的空闲空间。
一般来说,终端中的第二存储器执行指令的方式通常是固定不变的,只有在终端的固件进行升级的情况下,第二存储器执行指令的方式才会发生变化。并且,终端升级固件往往需要重启。因此,在实际应用中,终端可以在启动后获取第二存储器执行指令的方式,并且根据第二存储器执行指令的方式选择删除第一存储器中的数据的方式。例如,在第二存储器执行指令的方式为顺序执行时,终端则基于上述的方式三来删除第一存储器中的数据;在第二存储器执行指令的方式为乱序执行时,终端则基于上述的方式二来删除第一存储器中的数据。
为了便于理解,以下将结合具体例子对本申请实施例提供的数据存储方法进行详细的介绍。
可以参阅图6,图6为本申请实施例提供的数据存储方法的应用架构示意图。如图6所示,终端的操作系统中包括文件系统、块层、第一存储器中的目标存储空间、数据恢复模块、异常处理模块和驱动组件(图中未示出);终端的设备层包括第二存储器。其中,文件系统、块层和驱动组件可以参考图3对应的架构的介绍,在此不再赘述。此外,在本实施例中,驱动组件用于传递操作系统与第二存储器之间的交互信息。为便于叙述,本实施例中省去驱动组件传递操作系统中的模块与第二存储器之间的交互信息的过程,而直接叙述操作系统中的模块与第二存储器之间的交互。
在图6中,在需要往第二存储器中写入数据的情况下,块层向第二存储器发送包括目标数据的数据写入指令,并将目标数据存储到目标存储空间中。当第二存储器在写入数据的过程中出现异常时,第二存储器向异常处理模块上报指示第二存储器出现异常的消息。异常处理模块则触发第二存储器复位,并在第二存储器复位成功后将第二存储器成功复位的消息通知数据恢复模块。数据恢复模块则从目标存储空间中取出目标数据,并向第二存储器重新发送目标数据。
可以参阅图7,图7为本申请实施例提供的一种数据存储方法700的流程示意图。所述方法700包括以下的步骤701-步骤710。
步骤701,块层将目标数据存储于第一存储器的目标存储空间中。
在块层获取到文件系统下发的数据写入请求之后,块层则将该数据写入请求中所指示的目标数据存储于第一存储器的目标存储空间中,以实现目标数据的备份。
步骤702,块层向第二存储器发送包括目标数据的第一指令。
在将目标数据存储于目标存储空间后,块层则根据目标数据生成第一指令,并通过驱动组件向第二存储器发送所述第一指令。所述第一指令包括目标数据和目标地址,所述第一指令用于指示所述第二存储器将所述目标数据写入非易失性存储器中的目标地址。
步骤703,第二存储器向异常处理模块发送指示出现异常的第二消息。
在第二存储器根据第一指令执行目标数据的写入操作的过程中,第二存储器出现异常,导致第二存储器无法正常写入目标数据。第二存储器则向异常处理模块发送第二消息,所述第二消息指示第二存储器出现异常。
步骤704,异常处理模块向第二存储器发送执行复位操作的第三指令。
在获取到第二存储器所上报的第二消息之后,异常处理模块则将第二存储器的状态置为异常,以阻塞应用程序所提交的数据读取请求以及数据写入请求。然后,异常处理模块向第二存储器发送用于指示第二存储器执行复位操作的第三指令。
步骤705,第二存储器执行复位操作。
第二存储器根据所接收到的第三指令,执行复位操作,以消除第二存储器中所出现的异常。
步骤706,第二存储器向异常处理模块发送指示复位成功的第一消息。
在执行复位操作之后,第二存储器则向异常处理模块发送第一消息,所述第一消息用于指示第二存储器已复位成功。
步骤707,异常处理模块向数据恢复模块发送指示执行数据恢复的消息。
在异常处理模块获取到第一消息之后,异常处理模块则向数据恢复模块发送消息,以通知数据恢复模块执行数据恢复。
步骤708,数据恢复模块根据目标数据生成第二指令。
基于异常处理模块所发送的用于指示执行数据恢复的消息,数据恢复模块获取目标存储空间中的目标数据,并根据目标数据生成第二指令。其中,所述第二指令包括所述目标数据,所述第二指令用于指示第二存储器写入所述目标数据。
步骤709,数据恢复模块向第二存储器发送包括目标数据的第二指令。
步骤710,第二存储器根据第二指令写入目标数据。
在获取到第二指令后,第二存储器根据第二指令中的目标数据,重新将目标数据写入到易失性存储器中,然后再从易失性存储器中将所述目标数据写入到非易失性存储器。
在第二存储器成功写入目标数据之后,第二存储器可以向数据恢复模块返回指示成功写入目标数据的消息。这样,数据恢复模块可以通知异常处理模块已成功执行数据恢复。最后,异常处理模块将第二存储器的状态置为正常,以使得块层继续处理应用程序所提交的数据读取请求以及数据写入请求。
在图1至图7所对应的实施例的基础上,为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关设备。
具体可以参阅图8,图8为本申请实施例提供的一种终端800的结构示意图,该终端800包括:处理单元801和收发单元802。所述处理单元801,用于将目标数据存储至第一存储器,所述第一存储器为内存储器;所述收发单元802,用于向第二存储器发送第一指令,所述第一指令包括所述目标数据,所述第一指令用于指示所述第二存储器写入所述目标数据,所述第二存储器为外存储器,所述第二存储器包括易失性存储器和非易失性存储器,所述易失性存储器用于临时存储待写入至所述非易失性存储器的所述目标数据,所述非易失性存储器用于存储所述目标数据;所述收发单元802,还用于在所述第二存储器复位后,基于所述第一存储器中的所述目标数据恢复所述第二存储器中的数据。
在一种可能的实现方式中,所述收发单元802,还用于获取所述第二存储器发送的第一消息,所述第一消息用于指示所述第二存储器复位成功;所述收发单元802,还用于向所述第二存储器发送第二指令,所述第二指令是根据所述第一存储器中的所述目标数据生成的,所述第二指令包括所述目标数据,所述第二指令用于指示所述第二存储器写入所述目标数据。
在一种可能的实现方式中,所述收发单元802,还用于获取所述第二存储器发送的第二消息,所述第二消息用于指示所述第二存储器出现异常;所述收发单元802,还用于向所述第二存储器发送第三指令,所述第三指令用于指示所述第二存储器执行复位操作。
在一种可能的实现方式中,所述收发单元802,还用于获取所述第二存储器发送的第三消息,所述第三消息用于指示所述目标数据已写入至所述非易失性存储器;所述处理单元801,还用于删除所述第一存储器中的所述目标数据。
在一种可能的实现方式中,所述处理单元801,还用于将所述目标数据存储至所述第一存储器中的目标存储空间,所述目标存储空间为预分配的存储空间。
在一种可能的实现方式中,所述目标存储空间的容量大于或等于所述易失性存储器的容量。
在一种可能的实现方式中,所述收发单元802,还用于向所述第二存储器发送第四指令,所述第四指令用于查询所述易失性存储器中所存储的数据;所述收发单元802,还用于获取所述第二存储器发送的第四消息,所述第四消息用于指示所述易失性存储器中所存储的第一数据;所述处理单元801,还用于删除所述第一存储器中的第二数据;其中,所述第二数据和所述第一数据均包含于所述目标数据中,且所述第一数据和所述第二数据不同。
在一种可能的实现方式中,所述收发单元802,还用于若所述第二存储器执行指令的方式为乱序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则向所述第二存储器发送所述第四指令。
在一种可能的实现方式中,所述处理单元801,还用于若所述第二存储器执行指令的方式为顺序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则删除所述目标存储空间中的第三数据,所述第三数据为所述目标存储空间中最先写入所述目标存储空间的数据。
本申请实施例提供的数据存储方法具体可以由终端中的芯片来执行,该芯片包括:处理单元和通信单元,处理单元例如可以是处理器,通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图1至图7所示实施例描述的数据存储方法。可选的,存储单元为芯片内的存储单元,如寄存器、缓存等,存储单元还可以是无线接入设备端内的位于芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
参照图9,本申请还提供了一种计算机可读存储介质,在一些实施例中,上述图4所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。
图9示意性地示出根据这里展示的至少一些实施例而布置的示例计算机可读存储介质的概念性局部视图,示例计算机可读存储介质包括用于在计算设备上执行计算机进程的计算机程序。
在一个实施例中,计算机可读存储介质900是使用信号承载介质901来提供的。信号承载介质901可以包括一个或多个程序指令902,其当被一个或多个处理器运行时可以提供以上针对图2描述的功能或者部分功能。因此,例如,参考图4中所示的实施例,步骤401-407的一个或多个特征可以由与信号承载介质901相关联的一个或多个指令来承担。此外,图9中的程序指令902也描述示例指令。
在一些示例中,信号承载介质901可以包含计算机可读介质903,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、ROM或RAM等等。
在一些实施方式中,信号承载介质901可以包含计算机可记录介质904,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质901可以包含通信介质905,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质901可以由无线形式的通信介质905(例如,遵守IEEE 802.9标准或者其它传输协议的无线通信介质)来传达。
一个或多个程序指令902可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,计算设备的计算设备可以被配置为,响应于通过计算机可读介质903、计算机可记录介质904、和/或通信介质905中的一个或多个传达到计算设备的程序指令902,提供各种操作、功能、或者动作。
应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (12)
1.一种数据存储方法,其特征在于,包括:
将目标数据存储至第一存储器,所述第一存储器为内存储器;
向第二存储器发送第一指令,所述第一指令包括所述目标数据,所述第一指令用于指示所述第二存储器写入所述目标数据,所述第二存储器为外存储器,所述第二存储器包括易失性存储器和非易失性存储器,所述易失性存储器用于临时存储待写入至所述非易失性存储器的所述目标数据,所述非易失性存储器用于存储所述目标数据;
在所述第二存储器复位后,基于所述第一存储器中的所述目标数据恢复所述第二存储器中的数据。
2.根据权利要求1所述的方法,其特征在于,所述在所述第二存储器复位后,基于所述第一存储器中的所述目标数据恢复所述第二存储器中的数据包括:
获取所述第二存储器发送的第一消息,所述第一消息用于指示所述第二存储器复位成功;
向所述第二存储器发送第二指令,所述第二指令是根据所述第一存储器中的所述目标数据生成的,所述第二指令包括所述目标数据,所述第二指令用于指示所述第二存储器写入所述目标数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述第二存储器发送的第二消息,所述第二消息用于指示所述第二存储器出现异常;
向所述第二存储器发送第三指令,所述第三指令用于指示所述第二存储器执行复位操作。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述方法还包括:
获取所述第二存储器发送的第三消息,所述第三消息用于指示所述目标数据已写入至所述非易失性存储器;
删除所述第一存储器中的所述目标数据。
5.根据权利要求1-3任意一项所述的方法,其特征在于,所述将目标数据存储至第一存储器,包括:
将所述目标数据存储至所述第一存储器中的目标存储空间,所述目标存储空间为预分配的存储空间。
6.根据权利要求5所述的方法,其特征在于,所述目标存储空间的容量大于或等于所述易失性存储器的容量。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
向所述第二存储器发送第四指令,所述第四指令用于查询所述易失性存储器中所存储的数据;
获取所述第二存储器发送的第四消息,所述第四消息用于指示所述易失性存储器中所存储的第一数据;
删除所述第一存储器中的第二数据,所述第二数据和所述第一数据均包含于所述目标数据中,且所述第一数据和所述第二数据不同。
8.根据权利要求7所述的方法,其特征在于,所述向所述第二存储器发送第四指令,包括:
若所述第二存储器执行指令的方式为乱序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则向所述第二存储器发送所述第四指令。
9.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
若所述第二存储器执行指令的方式为顺序执行,且所述目标存储空间所存储的数据的数据量大于或等于预设阈值,则删除所述目标存储空间中的第三数据,所述第三数据为所述目标存储空间中最先写入所述目标存储空间的数据。
10.一种终端,其特征在于,包括内存储器、外存储器和处理器;所述外存储器或所述内存储器存储有代码,所述处理器被配置为执行所述代码,当所述代码被执行时,所述终端执行如权利要求1至9任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至9中任一项所述的方法。
12.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110560361.1A CN115373908A (zh) | 2021-05-21 | 2021-05-21 | 一种数据存储方法及相关装置 |
PCT/CN2022/093465 WO2022242665A1 (zh) | 2021-05-21 | 2022-05-18 | 一种数据存储方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110560361.1A CN115373908A (zh) | 2021-05-21 | 2021-05-21 | 一种数据存储方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373908A true CN115373908A (zh) | 2022-11-22 |
Family
ID=84058654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110560361.1A Pending CN115373908A (zh) | 2021-05-21 | 2021-05-21 | 一种数据存储方法及相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115373908A (zh) |
WO (1) | WO2022242665A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116405164A (zh) * | 2023-06-07 | 2023-07-07 | 南京创芯慧联技术有限公司 | 译码方法、装置及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117308B (zh) * | 2015-09-29 | 2020-06-23 | 联想(北京)有限公司 | 一种数据处理方法、装置和系统 |
CN107765990A (zh) * | 2016-08-17 | 2018-03-06 | 中兴通讯股份有限公司 | 一种系统磁盘管理方法和装置 |
CN106933706A (zh) * | 2017-03-10 | 2017-07-07 | 联想(北京)有限公司 | 非易失性内存的掉电保护方法及装置 |
US10936452B2 (en) * | 2018-11-14 | 2021-03-02 | International Business Machines Corporation | Dispersed storage network failover units used to improve local reliability |
CN111581018B (zh) * | 2020-04-20 | 2023-08-01 | 深圳震有科技股份有限公司 | 一种数据恢复方法、智能终端及存储介质 |
-
2021
- 2021-05-21 CN CN202110560361.1A patent/CN115373908A/zh active Pending
-
2022
- 2022-05-18 WO PCT/CN2022/093465 patent/WO2022242665A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116405164A (zh) * | 2023-06-07 | 2023-07-07 | 南京创芯慧联技术有限公司 | 译码方法、装置及设备 |
CN116405164B (zh) * | 2023-06-07 | 2023-09-26 | 南京创芯慧联技术有限公司 | 译码方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2022242665A1 (zh) | 2022-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10802870B2 (en) | Virtual machine live migration method, virtual machine memory data processing method, server, and virtual machine system | |
US8843716B2 (en) | Computer system, storage apparatus and data transfer method | |
US9262090B2 (en) | Asynchronous data mirroring in memory controller | |
CN112114999A (zh) | 一种数据备份方法、数据恢复方法、装置及电子设备 | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN102598141A (zh) | 用于减少存储器阵列中的读取等待时间的存储器操作暂停 | |
CN106919494B (zh) | 安卓应用日志的实现方法和装置 | |
CN104216793A (zh) | 应用程序备份、恢复的方法及设备 | |
US20170083419A1 (en) | Data management method, node, and system for database cluster | |
CN112130959B (zh) | 一种虚拟机的保护系统及方法 | |
CN103218227A (zh) | 一种安卓设备内置硬盘上兼容多种文件系统的方法及装置 | |
WO2022242665A1 (zh) | 一种数据存储方法及相关装置 | |
US8886597B2 (en) | Synchronizing changes in a file system which are initiated by a storage device and a host device | |
CN112698987A (zh) | 无快照操作系统在线备份方法、装置、设备及存储介质 | |
US10572166B1 (en) | Firmware download for a solid state storage card | |
US20190213045A1 (en) | Method and electronic device for executing data reading/writing in volume migration | |
US11500741B2 (en) | Data write method and storage system | |
CN110704249A (zh) | 一种保证应用一致性的方法、装置及系统 | |
CN113722147A (zh) | 一种保持业务连接方法及相关设备 | |
CN111857944A (zh) | 虚拟机热迁移的方法、装置、系统和计算机可读存储介质 | |
CN111208947A (zh) | 数据迁移方法、装置、物理机、云平台和计算机存储介质 | |
US20230236742A1 (en) | NONVOLATILE MEMORY EXPRESS (NVMe) OVER COMPUTE EXPRESS LINK (CXL) | |
KR20190062093A (ko) | 인쇄 시스템의 에러 발생시 인쇄작업을 관리하는 방법 및 이를 수행하기 위한 장치 | |
CN113609150B (zh) | 基于硬件的原子写方法、设备及系统 | |
CN114490175A (zh) | 数据处理方法、系统、计算机设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |