CN103412822B - 操作非易失性内存和数据操作的方法和相关装置 - Google Patents

操作非易失性内存和数据操作的方法和相关装置 Download PDF

Info

Publication number
CN103412822B
CN103412822B CN201310320024.0A CN201310320024A CN103412822B CN 103412822 B CN103412822 B CN 103412822B CN 201310320024 A CN201310320024 A CN 201310320024A CN 103412822 B CN103412822 B CN 103412822B
Authority
CN
China
Prior art keywords
nonvolatile memory
file
block device
physical address
address
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.)
Active
Application number
CN201310320024.0A
Other languages
English (en)
Other versions
CN103412822A (zh
Inventor
覃宣植
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310320024.0A priority Critical patent/CN103412822B/zh
Publication of CN103412822A publication Critical patent/CN103412822A/zh
Application granted granted Critical
Publication of CN103412822B publication Critical patent/CN103412822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例公开了操作非易失性内存的方法和数据操作的方法和相关装置。其中,一种操作非易失性内存的方法,可包括:生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下。本发明实施例提供的技术方案有利于在尽可能安全可靠的前提下实现系统热启动或异常复位后数据不丢失。

Description

操作非易失性内存和数据操作的方法和相关装置
技术领域
本发明涉及计算机技术领域,具体涉及操作非易失性内存的方法和数据操作的方法和相关装置。
背景技术
个人计算机系统中,数据存储是一项极其重要和必要的功能,系统异常复位后数据也不丢失,这样方便后续定位问题之需要。目前个人计算机是将数据存放于物理硬盘上。
随着Linux嵌入式系统在电信设备中的广泛应用,同样要求将Linux系统数据存储起来,并要求确保系统在热启动或异常复位后数据不丢失。但是Linux嵌入式系统一般是没有物理硬盘设备的,一种技术是将数据存储到闪存(flash)块设备中,貌似可解决该问题,但flash块设备在写之前都必须先擦除,而擦除的次数比较有限,所以这种方式变得不完全可靠,难以满足电信级设备对可靠性的要求。
发明内容
本发明实施例提供一种操作非易失性内存的方法和数据操作的方法和相关装置,以期能够尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
本发明第一方面提供一种操作非易失性内存的方法,可包括:
生成非易失性内存区对应的块设备文件;
格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;
将格式化后的所述块设备文件挂载到所述第一文件系统的目录下。
结合第一方面,在第一种可能的实施方式中,
所述生成非易失性内存区对应的块设备文件之前,还包括:
获得所述非易失性内存区的地址;根据所述非易失性内存区的地址确定所述非易失性内存区是否踩到内核内存,若根据所述非易失性内存区的地址确定出所述非易失性内存区未踩到内核内存,执行所述生成非易失性内存区对应的块设备文件的步骤。
本发明第二方面提供一种数据操作方法,可包括:
从第一文件系统接收第一数据操作请求,其中,所述第一文件系统的目录下挂载有格式化后的块设备文件,所述块设备文件为非易失性内存区对应的块设备文件;
获取所述第一数据操作请求对应的第一物理地址,其中,所述第一物理地址为第一非易失性内存对应的物理地址,所述第一非易失性内存为所述非易失性内存区中的非易失性内存,所述第一非易失性内存为所述第一数据操作请求所请求操作的非易失性内存;
向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求。
结合第二方面,在第一种可能的实施方式中,
所述方法还包括:在所述系统内核基于所述第一物理地址或第一虚拟地址执行所述第一数据操作请求之后,由块设备驱动程序释放所述第一物理地址和所述第一虚拟地址的映射关系;或者,在所述系统内核基于所述第一物理地址或第一虚拟地址执行所述第一数据操作请求之后,由所述系统内核释放所述第一物理地址和所述第一虚拟地址的映射关系。
结合第二方面或第二方面的第一种可能的实施方式,在第二种可能的实施方式中,若所述第一数据操作请求具体为第一文件写请求;则所述第一非易失性内存为所述第一文件写请求所请求写入的文件将使用的非易失性内存,则所述向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求,包括:向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的写入操作;
或者,
若所述第一数据操作请求具体为第一文件读请求,则所述第一非易失性内存为所述第一文件读请求所请求读取的文件所使用的所述非易失性内存,所述向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求,包括:向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的读取操作;
或者,
若所述第一数据操作请求具体为第一文件执行请求,则所述第一非易失性内存为所述第一文件执行请求所请求执行的文件所使用的所述非易失性内存,所述向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求,包括:向系统内核传递所述第一物理地址,以便于所述系统内核基于由所述第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。
本发明第三方面提供一种操作非易失性内存的装置,可包括:
生成单元,用于生成非易失性内存区对应的块设备文件;
格式化单元,用于格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;
挂载单元,用于将所述格式化单元格式化后的所述块设备文件挂载到所述第一文件系统的目录下。
结合第三方面,在第一种可能的实施方式中,所述操作非易失性内存的装置还包括:
有效性判断单元,用于在所述生成单元生成非易失性内存区对应的块设备文件之前,获得所述非易失性内存区的地址;根据所述非易失性内存区的地址确定所述非易失性内存区未踩到内核内存。
本发明第四方面提供一种数据操作装置,可包括:
接收单元,用于从第一文件系统接收第一数据操作请求,其中,所述第一文件系统的目录下挂载有格式化后的块设备文件,所述块设备文件为非易失性内存区对应的块设备文件;
获取单元,用于获取所述第一数据操作请求对应的第一物理地址,其中所述第一物理地址为第一非易失性内存对应的物理地址,所述第一非易失性内存为所述非易失性内存区中的非易失性内存,所述第一非易失性内存为所述第一数据操作请求所请求操作的非易失性内存;
传递单元,用于向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求。
结合第四方面,在第一种可能的实施方式中,
若所述第一数据操作请求具体为第一文件写请求,则所述第一非易失性内存为所述第一文件写请求所请求写入的文件将使用的非易失性内存,
所述传递单元具体用于,向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的写入操作;
或者,
若所述第一数据操作请求具体为第一文件读请求,所述第一非易失性内存为所述第一文件读请求所请求读取的文件所使用的所述非易失性内存;
所述传递单元具体用于,向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的读取操作;
或者,
若所述第一数据操作请求具体为第一文件执行请求,所述第一非易失性内存为所述第一文件执行请求所请求执行的文件所使用的所述非易失性内存;
所述传递单元具体用于,向系统内核传递所述第一物理地址,以便于所述系统内核基于由所述第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。
结合第四方面或第四方面的第一种可能的实施方式,在第二种可能的实施方式中,所述数据操作装置还包括:
映射释放单元,用于在所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求之后,释放所述第一物理地址和所述第一虚拟地址的映射关系。
本发明第五方面提供一种数据操作方法,可包括:
生成非易失性内存区对应的块设备文件;
格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;
将格式化后的所述块设备文件挂载到所述第一文件系统的目录下;
从所述第一文件系统接收第一数据操作请求;
获取所述第一数据操作请求对应的第一物理地址,其中,所述第一物理地址为第一非易失性内存对应的物理地址,所述第一非易失性内存为所述非易失性内存区中的非易失性内存,所述第一非易失性内存为所述第一数据操作请求所请求操作的非易失性内存;
向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求。
结合第五方面,在第一种可能的实施方式中,
所述方法还包括:在所述系统内核基于所述第一物理地址或第一虚拟地址执行所述第一数据操作请求之后,由块设备驱动程序释放所述第一物理地址和所述第一虚拟地址的映射关系;或者,在所述系统内核基于所述第一物理地址或第一虚拟地址执行所述第一数据操作请求之后,由所述系统内核释放所述第一物理地址和所述第一虚拟地址的映射关系。
结合第五方面或第五方面的第一种可能的实施方式,在第二种可能的实施方式中,若所述第一数据操作请求具体为第一文件写请求;则所述第一非易失性内存为所述第一文件写请求所请求写入的文件将使用的非易失性内存,则所述向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求,包括:向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的写入操作;
若所述第一数据操作请求具体为第一文件读请求,则所述第一非易失性内存为所述第一文件读请求所请求读取的文件所使用的所述非易失性内存,所述向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求,包括:向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的读取操作;
或者,
若所述第一数据操作请求具体为第一文件执行请求,则所述第一非易失性内存为所述第一文件执行请求所请求执行的文件所使用的所述非易失性内存,所述向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求,包括:向系统内核传递所述第一物理地址,以便于所述系统内核基于由所述第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。
结合第五方面或第五方面的第一种可能的实施方式或第五方面的第二种可能的实施方式,在第三种可能的实施方式中,所述生成非易失性内存区对应的块设备文件之前,还包括:
获得所述非易失性内存区的地址;根据所述非易失性内存区的地址确定所述非易失性内存区是否踩到内核内存,若根据所述非易失性内存区的地址确定出所述非易失性内存区未踩到内核内存,执行所述生成非易失性内存区对应的块设备文件的步骤。
本发明第六方面提供一种数据操作装置,可包括:
生成单元,用于生成非易失性内存区对应的块设备文件;
格式化单元,用于格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;
挂载单元,用于将所述格式化单元格式化后的所述块设备文件挂载到所述第一文件系统的目录下;
接收单元,用于从所述第一文件系统接收第一数据操作请求;
获取单元,用于获取所述第一数据操作请求所请求操作的所述非易失性内存区的第一物理地址;
传递单元,用于向系统内核传递所述第一物理地址或由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求。
结合第六方面,在第一种可能的实施方式中,
若所述第一数据操作请求具体为第一文件写请求,则所述第一非易失性内存为所述第一文件写请求所请求写入的文件将使用的非易失性内存,
所述传递单元具体用于,向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的写入操作;
或者,
若所述第一数据操作请求具体为第一文件读请求,所述第一非易失性内存为所述第一文件读请求所请求读取的文件所使用的所述非易失性内存;
所述传递单元具体用于,向系统内核传递由所述第一物理地址映射得到的第一虚拟地址,以便于所述系统内核基于所述第一虚拟地址执行对应文件的读取操作;
或者,
若所述第一数据操作请求具体为第一文件执行请求,所述第一非易失性内存为所述第一文件执行请求所请求执行的文件所使用的所述非易失性内存;
所述传递单元具体用于,向系统内核传递所述第一物理地址,以便于所述系统内核基于由所述第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。
结合第六方面或第六方面的第一种可能的实施方式,在第二种可能的实施方式中,所述数据操作装置还包括:
映射释放单元,用于在所述系统内核基于所述第一物理地址或所述第一虚拟地址执行所述第一数据操作请求之后,释放所述第一物理地址和所述第一虚拟地址的映射关系。
结合第六方面或第六方面的第一种可能的实施方式或第六方面的第二种可能的实施方式,在第三种可能的实施方式中,
所述数据操作装置还包括:有效性判断单元,用于在所述生成单元生成非易失性内存区对应的块设备文件之前,获得所述非易失性内存区的地址;根据所述非易失性内存区的地址确定所述非易失性内存区未踩到内核内存。
可以看出,本发明一些实施例提供的技术方案中,通过生成非易失性内存区对应的块设备文件;格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;将格式化后的所述块设备文件挂载到所述第一文件系统的目录下。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,系统内核可直接对非易失性内存进行读/写等多种操作,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种操作非易失性内存的方法的流程示意图;
图2是本发明实施例提供的一种数据操作的方法的流程示意图;
图3是本发明实施例提供的一种数据访问示意图;
图4-a是本发明实施例提供的一种操作非易失性内存装置的示意图;
图4-b是本发明实施例提供的另一种操作非易失性内存装置的示意图;
图5-a是本发明实施例提供的一种数据操作装置的示意图;
图5-b是本发明实施例提供的另一种数据操作装置的示意图;
图5-c是本发明实施例提供的另一种数据操作装置的示意图;
图6是本发明实施例提供的一种计算节点的示意图;
图7是本发明实施例提供的另一种计算节点的示意图。
具体实施方式
本发明实施例提供一种操作非易失性内存的方法和数据操作的方法和相关装置,以期能够尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
以下分别进行详细说明。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明一种操作非易失性内存的方法的一个实施例,一种操作非易失性内存的方法,可应用于linux系统或类似linux系统的操作系统,可包括:生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下。
参见图1,图1是本发明一个实施例提供的一种操作非易失性内存的方法的流程示意图。图1所示,本发明一个实施例提供的一种操作非易失性内存的方法可包括以下内容:
101、生成非易失性内存区对应的块设备文件。
其中,系统内核可以访问块设备文件。
102、格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统。
其中,基于第一文件系统的格式要求对块设备文件进行格式化,可使得格式化后的上述块设备文件能够支持第一文件系统。
103、将格式化后的上述块设备文件挂载到第一文件系统的目录下。
其中,通过将块设备文件挂载到第一文件系统的目录下,使得块设备文件能够在第一文件系统(第一文件系统可以是二级文件系统)下被访问,非易失性内存区和文件系统之间实现对接。
在本发明的一些实施例中,上述生成非易失性内存区对应的块设备文件之前还可包括:获得上述非易失性内存区的地址;根据上述非易失性内存区的地址确定上述非易失性内存区是否踩到内核内存,若根据上述非易失性内存区的地址确定出上述非易失性内存区未踩到内核内存,执行上述生成非易失性内存区对应的块设备文件的步骤。可以理解,在生成非易失性内存区对应的块设备文件之前,先对传递过来的非易失性内存区的地址进行判断有效性,这有利于提高可靠性,减少后期出错几率。
可以理解的是,本实施例的技术方案不仅可应用在基于linux系统的电信领域,还可以应用于基于linux系统的其它嵌入式领域,对于类似linux系统的场景同样是适用的。
可以看出,本实施例提供的技术方案中,通过生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,系统内核可直接对非易失性内存进行读/写等多种操作,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
本发明一种数据操作方法的一个实施例,一种数据操作方法可应用于linux系统或类似linux系统的操作系统,其中,数据操作方法可包括:从第一文件系统接收第一数据操作请求;其中,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件;获取第一数据操作请求对应的第一物理地址,其中,第一物理地址为第一非易失性内存对应的物理地址,第一非易失性内存为上述非易失性内存区中的非易失性内存,其中,第一非易失性内存为第一数据操作请求所请求操作的非易失性内存;向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。
请参见图2,图2是本发明的一个实施例提供的一种数据操作方法的流程示意图。如图2所示,本发明的一个实施例提供的一种数据操作方法可以包括以下内容:
201、从第一文件系统接收第一数据操作请求;其中,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件。
在本发明一些实施例中,若第一数据操作请求可第一文件写请求、第一文件读请求或者第一文件执行请求或其它类型的数据操作请求。由于块设备文件被挂载到第一文件系统下,因此,第一文件系统可对块设备文件对应的非易失性内存区进行操作。
202、获取第一数据操作请求对应的第一物理地址,其中,第一物理地址为第一非易失性内存对应的物理地址,第一非易失性内存为上述非易失性内存区中的非易失性内存,第一非易失性内存为第一数据操作请求所请求操作的非易失性内存。
其中,第一数据操作请求中可携带其所请求操作的第一非易失性内存对应的第一物理地址,因此,可通过解析第一数据操作请求,获得第一数据操作请求所请求操作的第一非易失性内存的第一物理地址。
203、将第一物理地址映射为第一虚拟地址;向系统内核传递获取到的第一物理地址和第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。
在本发明的一些实施例中,在上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求之后,还可由块设备驱动程序释放第一物理地址和第一虚拟地址的映射关系;或者,在上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求之后,还可由上述系统内核释放第一物理地址和第一虚拟地址的映射关系。
在本发明一些实施例中,若第一数据操作请求具体为第一文件写请求;则第一非易失性内存为第一文件写请求所请求写入的文件将使用的非易失性内存,则上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的写入操作。
其中,内核基于第一虚拟地址执行对应文件的写入操作,该写入操作可直接将对应文件写入非易失内存中的第一虚拟地址,对应文件写入非易失内存不经过缓存页(pagecache)、一级缓存或二级缓存。
在本发明一些实施例中,若第一数据操作请求具体为第一文件读请求,则第一非易失性内存为第一文件读请求所请求读取的文件所使用的上述非易失性内存,上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的读取操作。
在本发明的一些实施例中,若第一数据操作请求具体为第一文件执行请求,则第一非易失性内存为第一文件执行请求所请求执行的文件所使用的上述非易失性内存,上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递第一物理地址,以便于上述系统内核基于由第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。其中,系统内核可将第一物理地址映射为第一虚拟地址,而后基于第一虚拟地址进行对应文件的执行操作。
可以理解的是,本实施例的技术方案不仅可应用在基于linux系统的电信领域,还可以应用于基于linux系统的其它嵌入式领域,对于类似linux系统的场景同样是适用的。
可以看出,本实施例提供的技术方案中,从第一文件系统接收第一数据操作请求;其中,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件;获取第一数据操作请求所请求操作的第一非易失性内存的第一物理地址;向系统内核传递获取到的第一物理地址或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,当第一文件系统发出数据操作请求,系统内核可直接对非易失性内存执行该数据操作请求,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
例如,在linux嵌入式系统中没有硬盘等非易失存储介质来存放数据,可从系统所使用的内存RAM中划出一部分内存作为非易失内存区,通过生成该非易失内存区的块设备文件,并将其挂载到文件系统下,例如可通过块设备驱动程序将物理内存注册到系统内核,以便利用非易失内存区存放数据,并且存放的数据在系统异常复位后不丢失。
本发明的另一实施例还提供一种数据操作方法,可包括:生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下;从第一文件系统接收第一数据操作请求;获取第一数据操作请求对应的第一物理地址,其中,第一物理地址为第一非易失性内存对应的物理地址,第一非易失性内存为上述非易失性内存区中的非易失性内存,第一非易失性内存为第一数据操作请求所请求操作的非易失性内存;向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。
在本发明一些实施例中,方法还可包括:在上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求之后,由块设备驱动程序释放第一物理地址和第一虚拟地址的映射关系;或者,在上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求之后,由上述系统内核释放第一物理地址和第一虚拟地址的映射关系。
在本发明一些实施例中,若第一数据操作请求具体为第一文件写请求;则第一非易失性内存为第一文件写请求所请求写入的文件将使用的非易失性内存,则上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的写入操作。
其中,内核基于第一虚拟地址执行对应文件的写入操作,该写入操作可直接将对应文件写入非易失内存中的第一虚拟地址,对应文件写入非易失内存不经过缓存页(pagecache)、一级缓存或二级缓存。
在本发明一些实施例中,若第一数据操作请求具体为第一文件读请求,则第一非易失性内存为第一文件读请求所请求读取的文件所使用的上述非易失性内存,上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的读取操作。
在本发明的一些实施例中,若第一数据操作请求具体为第一文件执行请求,则第一非易失性内存为第一文件执行请求所请求执行的文件所使用的上述非易失性内存,上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递第一物理地址,以便于上述系统内核基于由第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。其中,系统内核可将第一物理地址映射为第一虚拟地址,而后基于第一虚拟地址进行对应文件的执行操作。
在本发明一些实施例中,在生成非易失性内存区对应的块设备文件之前还可包括:获得上述非易失性内存区的地址;根据上述非易失性内存区的地址确定出上述非易失性内存区未踩到内核内存。可以理解的是,在生成非易失性内存区对应的块设备文件之前,先对传递过来的非易失性内存区的地址进行判断有效性,这有利于提高可靠性,减少后期出错几率。
可以看出,本实施例的技术方案中,可生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的该块设备文件能够支持第一文件系统;从第一文件系统接收第一数据操作请求;获取第一数据操作请求所请求操作的第一非易失性内存的第一物理地址;向系统内核传递获取到的第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,当第一文件系统发出数据操作请求,系统内核可直接对非易失性内存执行该数据操作请求,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
为便于更好的理解和实施本发明实施例的上述方案,下面以利用块设备驱动程序配合实现本发明实施例的方案的一种场景为例。
其中,块设备驱动程序可获得非易失内存区的地址(包括起始物理地址和空间大小),对获得的非易失内存区的地址进行有效性判断(例如可判断获得的非易失内存区的地址是否是非整数类型,还可根据获得的非易失性内存区的地址判断该非易失性内存区的地址所表示的非易失性内存区,是否踩到内核内存),其中,若获得的非易失内存区的地址有效(如获得的非易失内存区的地址为整数类型、非易失性内存区的地址所表示的非易失性内存区未踩到内核内存)生成非易失性内存区对应的块设备文件。
可以理解,在生成非易失性内存区对应的块设备文件之前,先对传递过来的非易失性内存区的地址进行判断有效性,这有利于提高可靠性,减少后期出错几率。
可以理解的是,通过生成非易失性内存区对应的块设备文件,可将普通内存(normal RAM)转为非易失内存(non-volatile RAM),即将内核内存转为非内核内存(非易失内存)。
非本地执行(xip,execute in place)模式下,通过块设备驱动程序可在非易失内存上挂载多种文件系统,即可将非易失内存对应的块设备文件挂载到多种文件系统下,对于不同应用场景可选择最合适的文件系统进行挂载,通过文件系统来管理数据,可为用户程序提供了更友好的接口。
如图3所示,用户程序可通过读(read),写(write)和mmap等系统调用,进入到内核态的虚拟文件系统层(VFS,Virtual File System),这是所有真实文件系统的抽象层,然后依据所读/写/执行的文件所属的文件系统进入具体文件系统层(可称二级文件系统),其中,不同的文件系统对应read、write或mmap等系统调用的实现方式可能不尽相同,然后,例如基于read接口优选从缓存页(page cache)读数据,若数据不在page cache之中,则会通过非易失内存的块设备驱动层从非易失内存上读取数据并放到page cache,然后返回到用户态;若数据已经在page cache中,则可以直接将数据返回到用户态而无需进入到块设备驱动层。类似的,对于write系统调用,首先是将数据写到page cache中,然后直接返回到用户态,什么时候将page cache中的数据刷回非易失内存中由块设备的IO调度程序决定;而对于mmap系统调用,首先也是将数据写到page cache中,然后也写到一级缓存L1cache和二级缓存L2cache中,什么时候将page cache中的数据刷回非易失内存中可由块设备的IO调度程序决定。
其中,在xip模式下,元数据的处理流程可与非xip模式下的处理流程相同或类似。在本发明的一些实施例中,从非易失内存上读写数据可不经过page cache、L1cache和L2cache。基于该直接读写机制,例如在多进程读写文件时可节省内存开销,可保证数据同步写到非易失内存,有利于防止数据丢失,有利于提高可靠性。用户程序通过read、write和mmap等系统调用进入到内核态的虚拟文件系统层,虚拟文件系统层是所有真实文件系统的抽象层,然后,直接进入到ext2文件系统(假设块设备文件挂载到ext2文件系统),在xip模式下,所有的读/写/映射操作都经过非易失内存的块设备驱动层,然后直接对非易失内存进行操作,由于不经过page cache等缓存,在多线程操作非易失内存时可节省不少内存开销,因为每个文件都需对应大小page cache,而page cache是系统内核分配内存,将数据直接写回非易失内存中,在系统突然异常复位时保证了数据信息不丢失,若先写到pagecache中,系统复位时page cache中的数据会可能因没及时刷回非易失内存而丢失。其中,块设备驱动程序可支持以xip方式操作非易失内存。
本发明实施例的方案中能从非易失内存中读写数据,而常规机制只能从内核分配内存中读写数据,而不能从非易失内存中读写数据。本发明一些是实施例中,借助磁盘块设备的扇区管理方式来管理非易失内存,然后可通过普通文件系统ext2的接口函数来操作这些扇区,有别于一些常规机制直接对扇区进行操作。非易失内存能可支持多种文件系统,而常规机制只支持一种文件系统。
假设只有ext2文件系统支持xip模式,所以若要使用xip模式,可将块设备文件挂载到ext2文件系统的目录下。本发明一些实施例中,块设备驱动程序提供两个钩子函数,其中一个钩子函数是用来将非易失内存的物理地址映射到虚拟页上,即将物理地址映射为虚拟地址,另一个钩子函数可那个要在操作完后取消映射,要不然会一直占用虚拟页,进而可能导致虚拟页出现泄漏。在一些是实施例中,块设备驱动程序亦可不提供用于取消物理地址映射和虚拟地址映射的钩子函数,只是提供将非易失内存的物理地址映射到虚拟页上的钩子函数,而取消物理地址映射和虚拟地址之间映射关系可由块设备驱动程序完成,也可以由系统内核释放物理地址映射和虚拟地址之间映射关系。
下面通过一个具体更为具体的实施场景进行介绍。
首先,块设备驱动程序获得非易失内存区的地址,
其中,非易失内存区的地址可如下:
ramdisk_addr=XXXX、pramdisk_size=XXXX。
例如,pramdisk_addr=0x39000000(对应为912M),参数pramdisk_addr表示创建块设备文件所使用的非易失内存区的起始地址。假设pramdisk_size=56,参数pramdisk_size表示创建块设备文件所使用的非易失内存区的空间大小,单位可为M字节。块设备驱动程序可调用内核接口函数来判断非易失内存区的地址所表示的非易失内存区是否有踩到内核内存。
块设备驱动程序生成非易失性内存区对应的块设备文件;块设备驱动程序格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统。
块设备驱动程序可见将格式化后的上述块设备文件挂载到第一文件系统的目录下。例如:mount–t ext2–o xip/dev/pramdisk0/var/log,这里若增加xip选项参数,可使得文件系统支持xip模式。
块设备文件挂载到文件系统后,便可以在/var/log下创建文件和读写文件了。若系统运行一定时间后突然异常复位,则在系统重新起来后,可以直接mount–t ext2–o xip/dev/pramdisk0/var/log,这样/var/log目录下在上次系统异常复位前纪录的数据依然存在。
如果不需支持xip模式,则可mount–t ext2/dev/pramdisk0/var/log,这样读写数据都经过page cache,所以假如有一进程里有20个线程,每个线程会单独读写一个2M大小的文件,那么这种方式下将会消耗系统40M大小的内存,而xip模式下是不会消耗这部分的内存。
其中,Ramdisk块设备上建立文件系统读写文件,一些可能的实施方式中系统内核可先建立缓冲区(page cache and buffer cache),然后将用户数据拷贝到缓冲区中,之后再将缓冲区的用户数据拷贝到保留内存,这样若有几十个进程同时进行写操作,就会导致缓冲区占用的内存增加,影响系统性能。而基于xip模式可很好的解决该问题,xip模式下,保留物理内存与用户虚拟地址空间直接建立映射关系,这样读写操作都可直接对保留物理内存进行,而无需通过缓冲区作为桥接,另外,用户程序从RAM启动执行的机制,对嵌入式系统最大影响是需要较大的RAM空间开销。如果使用xip模式下,则将有效地节省了RAM的开销。另外Ramdisk块设备占用的内核内存是系统分配的内存,内存属性都是cache,所以若记录用户数据的进程一直在运行并有频繁有读写操作,那将一直会占用cache,那对系统性能也有一定影响,另外,若系统出现异常复位,若用户数据还处于cache中而没写到非易失内存中,这样就会造成数据丢失,而xip模式下文件I/O总是直接同步的,就不会有该问题。
可以理解的是,本发明实施例的技术方案不仅可应用在基于linux系统的电信领域,还可以应用于基于linux系统的其它嵌入式领域,对于类似linux系统的场景同样是适用的。
参见图4-a,本发明实施例提供一种操作非易失性内存的装置400,具体可以包括:生成单元410、格式化单元420和挂载单元430。
其中,生成单元410,用于生成非易失性内存区对应的块设备文件。
格式化单元420,用于格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统。
挂载单元430,用于将格式化单元420格式化后的上述块设备文件挂载到第一文件系统的目录下。
参见图4-b,在本发明的一些实施例中,操作非易失性内存的装置400还可包括:有效性判断单元440,用于在生成单元410生成非易失性内存区对应的块设备文件之前,获得上述非易失性内存区的地址;根据上述非易失性内存区的地址确定上述非易失性内存区未踩到内核内存。
可以理解的是,本实施例提供的操作非易失性内存的装置400可以用于实现上述方法实施例中的部分或全部技术方案,其各个功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
可以看出,本实施例的操作非易失性内存的装置400通过生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,系统内核可直接对非易失性内存进行读/写等多种操作,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
参见图5-a,本发明实施例提供一种数据操作装置400,具体可包括:
接收单元510、获取单元520和传递单元530。
其中,接收单元510,用于从第一文件系统接收第一数据操作请求,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件。
获取单元520,用于获取第一数据操作请求对应的第一物理地址,其中,第一物理地址为第一非易失性内存对应的物理地址,第一非易失性内存为上述非易失性内存区中的非易失性内存,第一非易失性内存为第一数据操作请求所请求操作的非易失性内存。
传递单元530,用于向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。
在本发明一些实施例中,若第一数据操作请求具体为第一文件写请求,第一非易失性内存为第一文件写请求所请求写入的文件将使用的非易失性内存。其中,传递单元530可具体用于,向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的写入操作。
在本发明一些实施例中,若第一数据操作请求具体为第一文件读请求,则第一非易失性内存为第一文件读请求所请求读取的文件所使用的上述非易失性内存。其中,传递单元530可具体用于,向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的读取操作。
在本发明一些实施例中,若第一数据操作请求为第一文件执行请求,第一非易失性内存为第一文件执行请求所请求执行的文件所使用的上述非易失性内存,。其中,传递单元530具体用于,向系统内核传递第一物理地址,以便于上述系统内核基于由第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。
参见图5-b,在本发明一些实施例中,数据操作装置500还可包括:
映射释放单元540,可用于在上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求之后,释放第一物理地址和第一虚拟地址的映射关系。
参见图5-c,在本发明一些实施例中,数据操作装置500还可包括:
生成单元550、格式化单元560和挂载单元570。
其中,生成单元550,用于生成非易失性内存区对应的块设备文件。
格式化单元560,用于格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统。
挂载单元570,用于将格式化单元560格式化后的上述块设备文件挂载到第一文件系统的目录下。
可以理解的是,本实施例提供的数据操作装置500可以用于实现上述方法实施例中的部分或全部技术方案,其各个功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
可以看出,本实施例数据操作装置500从第一文件系统接收第一数据操作请求;其中,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件;获取第一数据操作请求所请求操作的第一非易失性内存的第一物理地址;向系统内核传递获取到的第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,当第一文件系统发出数据操作请求,系统内核可直接对非易失性内存执行该数据操作请求,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
图6为本发明提供的计算节点600的结构示意图,如图6所示,本实施例的计算节点600包括至少一个总线601、与总线601相连的至少一个处理器602以及与总线601相连的至少一个存储器603。
其中,处理器602通过总线601,调用存储器603中存储的代码(如块设备驱动程序)以用于生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下。
其中,通过将块设备文件挂载到第一文件系统的目录下,使得块设备文件能够在第一文件系统(第一文件系统可以是二级文件系统)下被访问,非易失性内存区和文件系统之间实现对接。
在本发明的一些实施例中,处理器602还可调用存储器603中存储的代码以用于,在生成非易失性内存区对应的块设备文件之前还可包括:获得上述非易失性内存区的地址;根据上述非易失性内存区的地址确定上述非易失性内存区是否踩到内核内存,若根据上述非易失性内存区的地址确定出上述非易失性内存区未踩到内核内存,执行上述生成非易失性内存区对应的块设备文件的步骤。可以理解,在生成非易失性内存区对应的块设备文件之前,先对传递过来的非易失性内存区的地址进行判断有效性,这有利于提高可靠性,减少后期出错几率。
可以理解的是,本实施例的技术方案不仅可应用在基于linux系统的电信领域,还可以应用于基于linux系统的其它嵌入式领域,对于类似linux系统的场景同样是适用的。
可以理解的是,本实施例提供的计算节点600可以用于实现上述方法实施例中的部分或全部技术方案,其各个功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
可以看出,本实施例中的计算节点600通过生成非易失性内存区对应的块设备文件;格式化上述块设备文件,以使得格式化后的上述块设备文件能够支持第一文件系统;将格式化后的上述块设备文件挂载到第一文件系统的目录下。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,系统内核可直接对非易失性内存进行读/写等多种操作,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
图7为本发明提供的计算节点700的结构示意图,如图7所示,本实施例的计算节点700包括至少一个总线701、与总线701相连的至少一个处理器702以及与总线701相连的至少一个存储器703。
其中,处理器702通过总线701,调用存储器703中存储的代码(如块设备驱动程序)以用于从第一文件系统接收第一数据操作请求;其中,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件;获取第一数据操作请求对应的第一物理地址,其中,第一物理地址为第一非易失性内存对应的物理地址,第一非易失性内存为上述非易失性内存区中的非易失性内存,第一非易失性内存为第一数据操作请求所请求操作的非易失性内存;向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。
在本发明一些实施例中,若第一数据操作请求可第一文件写请求、第一文件读请求或者第一文件执行请求或其它类型的数据操作请求。由于块设备文件被挂载到第一文件系统下,因此,第一文件系统可对块设备文件对应的非易失性内存区进行操作。
在本发明的一些实施例中,在上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求之后,处理器702还可释放第一物理地址和第一虚拟地址的映射关系。
在本发明一些实施例中,若第一数据操作请求具体为第一文件写请求;则第一非易失性内存为第一文件写请求所请求写入的文件将使用的非易失性内存,处理器702上述向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的写入操作。
其中,内核基于第一虚拟地址执行对应文件的写入操作,该写入操作可直接将对应文件写入非易失内存中的第一虚拟地址,对应文件写入非易失内存不经过缓存页(pagecache)、一级缓存或二级缓存。
在本发明一些实施例中,若第一数据操作请求具体为第一文件读请求,则第一非易失性内存为第一文件读请求所请求读取的文件所使用的上述非易失性内存,处理器702向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一虚拟地址执行对应文件的读取操作。
在本发明的一些实施例中,若第一数据操作请求具体为第一文件执行请求,则第一非易失性内存为第一文件执行请求所请求执行的文件所使用的上述非易失性内存,处理器702向系统内核传递第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求,包括:向系统内核传递第一物理地址,以便于上述系统内核基于由第一物理地址映射得到的第一虚拟地址进行对应文件的执行操作。
可以看出,本实施例提供的计算节点700从第一文件系统接收第一数据操作请求;其中,第一文件系统的目录下挂载有格式化后的块设备文件,上述块设备文件为非易失性内存区对应的块设备文件;获取第一数据操作请求所请求操作的第一非易失性内存的第一物理地址;向系统内核传递获取到的第一物理地址和/或由第一物理地址映射得到的第一虚拟地址,以便于上述系统内核基于第一物理地址或第一虚拟地址执行第一数据操作请求。由于生成了非易失性内存区对应的块设备文件,并将块设备文件挂载到第一文件系统的目录下,实现非易失性内存注册到系统内核,如此有利于实现系统内核对非易失性内存的直接访问,因此,当第一文件系统发出数据操作请求,系统内核可直接对非易失性内存执行该数据操作请求,这使得系统内核将系统热启动或异常复位之前的数据便可写入非易失性内存之中变得可能,这就有利于在尽可能在安全可靠的前提下实现系统热启动或异常复位后数据不丢失。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的数据操作方法的部分或全部步骤。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的操作非易失性内存方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上上述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (2)

1.一种操作非易失性内存的方法,其特征在于,包括:
从系统所使用的内存RAM中划出一部分内存作为非易失内存区,生成非易失性内存区对应的块设备文件;
格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;
将格式化后的所述块设备文件挂载到所述第一文件系统的目录下;
其中,所述生成非易失性内存区对应的块设备文件之前,还包括:
获得所述非易失性内存区的地址;根据所述非易失性内存区的地址确定所述非易失性内存区是否踩到内核内存,若根据所述非易失性内存区的地址确定出所述非易失性内存区未踩到内核内存,执行所述生成非易失性内存区对应的块设备文件的步骤。
2.一种操作非易失性内存的装置,其特征在于,包括:
生成单元,用于从系统所使用的内存RAM中划出一部分内存作为非易失内存区,生成非易失性内存区对应的块设备文件;
格式化单元,用于格式化所述块设备文件,以使得格式化后的所述块设备文件能够支持第一文件系统;
挂载单元,用于将所述格式化单元格式化后的所述块设备文件挂载到所述第一文件系统的目录下;
其中,所述操作非易失性内存的装置还包括:
有效性判断单元,用于在所述生成单元生成非易失性内存区对应的块设备文件之前,获得所述非易失性内存区的地址;根据所述非易失性内存区的地址确定所述非易失性内存区未踩到内核内存。
CN201310320024.0A 2013-07-26 2013-07-26 操作非易失性内存和数据操作的方法和相关装置 Active CN103412822B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310320024.0A CN103412822B (zh) 2013-07-26 2013-07-26 操作非易失性内存和数据操作的方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310320024.0A CN103412822B (zh) 2013-07-26 2013-07-26 操作非易失性内存和数据操作的方法和相关装置

Publications (2)

Publication Number Publication Date
CN103412822A CN103412822A (zh) 2013-11-27
CN103412822B true CN103412822B (zh) 2017-06-06

Family

ID=49605835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310320024.0A Active CN103412822B (zh) 2013-07-26 2013-07-26 操作非易失性内存和数据操作的方法和相关装置

Country Status (1)

Country Link
CN (1) CN103412822B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126382B (zh) * 2016-06-29 2019-11-15 北京小米移动软件有限公司 识别文件系统错误的方法及装置
CN106708627B (zh) * 2016-12-29 2020-08-07 中国科学院计算技术研究所 一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统
CN106649152A (zh) * 2016-12-29 2017-05-10 郑州云海信息技术有限公司 一种基于非易失内存的系统日志存储方法及装置
CN106933508B (zh) * 2017-02-14 2020-05-12 深信服科技股份有限公司 应用容器的迁移方法及装置
CN108664523B (zh) * 2017-03-31 2021-08-13 华为技术有限公司 一种虚拟磁盘文件格式转换方法和装置
CN107463652A (zh) * 2017-07-27 2017-12-12 北京小米移动软件有限公司 外接存储设备的连接控制方法及装置
CN108287664A (zh) * 2018-01-02 2018-07-17 江苏科海智能系统有限公司 一种基于nvm存储设备的快速大数据系统及其设计方法
CN109358818B (zh) * 2018-10-30 2021-08-03 深圳润迅数据通信有限公司 一种数据中心的块设备io请求处理方法
CN111414248B (zh) * 2019-01-04 2023-03-21 阿里巴巴集团控股有限公司 内存管理方法、装置及计算设备
CN111444113B (zh) * 2019-01-16 2023-06-13 阿里巴巴集团控股有限公司 非易失性存储介质共享方法、装置、电子设备及存储设备
CN113312091B (zh) * 2020-02-27 2024-02-06 西安诺瓦星云科技股份有限公司 参数处理方法、装置和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2819675Y (zh) * 2005-08-31 2006-09-20 声宝股份有限公司 兼具数字电视及数字影音播放功能的可携式装置
CN1904833A (zh) * 2005-07-29 2007-01-31 华邦电子股份有限公司 更新存储卡固件的方法
CN101853196A (zh) * 2010-04-21 2010-10-06 中兴通讯股份有限公司 一种记录异常数据的方法及装置
CN101901273A (zh) * 2010-08-13 2010-12-01 优视科技有限公司 一种基于内存磁盘的高性能存储方法及其装置
CN102056022A (zh) * 2010-10-26 2011-05-11 深圳创维-Rgb电子有限公司 一种操作系统在机顶盒中的应用方法、装置及机顶盒
CN102200930A (zh) * 2011-05-26 2011-09-28 华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006085380A (ja) * 2004-09-15 2006-03-30 Toshiba Corp ファイルストレージデバイス、プログラム、及び不揮発性半導体メモリの書込方法
CN100481025C (zh) * 2007-02-08 2009-04-22 深圳万利达电子工业有限公司 一种nandflash文件系统实现方法
CN101996168B (zh) * 2009-08-25 2013-08-07 中兴通讯股份有限公司 格式化闪存的方法和装置
CN101727503A (zh) * 2010-01-29 2010-06-09 宋振华 一种创建磁盘文件系统的方法
US20110302224A1 (en) * 2010-06-08 2011-12-08 Rahav Yairi Data storage device with preloaded content

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1904833A (zh) * 2005-07-29 2007-01-31 华邦电子股份有限公司 更新存储卡固件的方法
CN2819675Y (zh) * 2005-08-31 2006-09-20 声宝股份有限公司 兼具数字电视及数字影音播放功能的可携式装置
CN101853196A (zh) * 2010-04-21 2010-10-06 中兴通讯股份有限公司 一种记录异常数据的方法及装置
CN101901273A (zh) * 2010-08-13 2010-12-01 优视科技有限公司 一种基于内存磁盘的高性能存储方法及其装置
CN102056022A (zh) * 2010-10-26 2011-05-11 深圳创维-Rgb电子有限公司 一种操作系统在机顶盒中的应用方法、装置及机顶盒
CN102200930A (zh) * 2011-05-26 2011-09-28 华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法

Also Published As

Publication number Publication date
CN103412822A (zh) 2013-11-27

Similar Documents

Publication Publication Date Title
CN103412822B (zh) 操作非易失性内存和数据操作的方法和相关装置
CN105446813B (zh) 一种资源分配的方法及装置
CN105630632B (zh) 一种虚拟机恢复的方法及虚拟机管理设备
CN103729300B (zh) 非易失内存的管理方法和相关装置
CN104571954B (zh) 一种数据存储方法及装置
CN103401902A (zh) 一种便携式云存储系统及方法
CN103885895A (zh) 容错集群存储系统中的写入性能
CN106598692A (zh) 在逻辑卷中创建镜像文件、虚拟机启动方法及服务器
CN111124277A (zh) 一种深度学习数据集缓存方法、系统、终端及存储介质
CN107229415A (zh) 一种数据写方法、数据读方法及相关设备、系统
CN105335306B (zh) 一种内存控制方法和装置
CN106227621A (zh) 基于逻辑卷管理精简卷的数据备份方法及系统
CN108496161A (zh) 数据缓存装置及控制方法、数据处理芯片、数据处理系统
CN107179878A (zh) 基于应用优化的数据存储的方法和装置
CN106445409A (zh) 一种分布式块存储的数据写入方法及装置
CN106201923A (zh) 读写数据方法及装置
CN109522154A (zh) 数据恢复方法及相关设备与系统
EP3974969A1 (en) System startup method and related device
CN109471843A (zh) 一种元数据缓存方法、系统及相关装置
CN103491193B (zh) 一种文件共享的方法和设备
CN108345477A (zh) 一种双镜像共享conf分区文件的设计方法及装置
CN114710263B (zh) 密钥管理方法、密钥管理装置、密钥管理设备及存储介质
CN109491605A (zh) 一种基于cow的数据存储方法、装置和介质
CN102693232B (zh) 一种删除文件的方法及文件删除装置
CN104424115B (zh) 恢复电子设备的预设状态的方法、存储装置和电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant