重启数据不丢失方法及逻辑存储资源管理单元的制作方法

文档序号:6424126阅读:312来源:国知局
专利名称:重启数据不丢失方法及逻辑存储资源管理单元的制作方法
技术领域
本发明涉及数据存储技术领域,具体涉及重启数据不丢失方法及逻辑存储资源管理单元。
背景技术
伴随着高可靠性要求的提高,上层软件会要求系统在重启前能存储一些数据,在重新启动后能够读出这些数据,以实现运行数据的快速恢复,从而减少系统的停工时间。在常见的计算机系统中,会使用磁盘、数据卡等非易失性存储设备完成上述功能。 但是,在嵌入式系统中,不一定具备磁盘、数据卡等器件。且磁盘、数据卡的访问速率较低, 对于一些可靠性要求很高且数据量较大的场景,若使用磁盘、数据卡完成上述功能,会较大地延长系统停工时间。在常见的嵌入式系统中,会使用保留内存来完成上述功能。保留内存常见于嵌入式设备,是设备出于某些目的而保留的内存。在系统初始化阶段,保留内存不会被纳入内存管理系统。保留内存具备重启数据不丢失的特性,可以用于保存一些重启前希望保留、供下一次启动时读取的数据,如重启信息等。相对于磁盘、数据卡,内存的访问速度要快许多。但是对于数据量较大的场景,要求较多的保留内存,很可能导致系统内存的30% 40%要作为保留内存。内存一旦成为保留内存,平时就不能用于存储普通的数据。这就导致一旦要支持快速恢复,系统的规格就要大幅下降,或者要增加额外的内存。

发明内容
本发明提供重启数据不丢失方法及逻辑存储资源管理单元,以提高存储资源利用率。本发明的技术方案是这样实现的一种重启数据不丢失方法,预先分配专用于保存存储资源映射表的保留内存,该方法包括在系统重启前,逻辑存储资源管理单元为数据来源单元分配逻辑存储资源,当数据来源单元将数据写入逻辑存储资源时,逻辑存储资源管理单元在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置;当系统重启时,逻辑存储资源管理单元从存储资源映射表中获取已写入数据的逻辑存储资源的物理位置,将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态;当数据来源单元读取所有数据后,逻辑存储资源管理单元释放所有逻辑存储资源。所述逻辑存储资源管理单元将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态进一步包括将未写入数据的逻辑存储资源对应的物理内存块置为空闲状态。所述逻辑存储资源管理单元在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置包括对于已写入数据的逻辑存储资源对应的物理内存块,逻辑存储资源管理单元在存储资源映射表中记录该物理内存块的物理位置,并将该物理内存块的状态标志置为有效;所述逻辑存储资源管理单元释放所有逻辑存储资源进一步包括逻辑存储资源管理单元将存储资源映射表中的所有状态标志置为无效。所述系统无文件支撑,所述逻辑存储资源为逻辑内存;所述逻辑存储资源管理单元为数据来源单元分配逻辑存储资源为数据来源单元发现系统即将重启,向逻辑存储资源管理单元申请用于存储数据的逻辑内存,逻辑存储资源管理单元为数据来源单元分配一逻辑内存;所述数据来源单元将数据写入逻辑存储资源为数据来源单元将数据写入逻辑内存时,引发缺页异常,逻辑存储资源管理单元为数据来源单元分配物理内存,数据来源单元将数据写入物理内存。所述逻辑存储资源管理单元将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态进一步包括逻辑存储资源管理单元将逻辑存储资源的首地址提供给数据来源单元,以便数据来源单元根据该首地址从逻辑存储资源读取数据。所述系统有文件支撑,所述逻辑存储资源为文件系统,所述数据来源单元将数据写入逻辑存储资源包括数据来源单元在文件系统中创建文件,在将数据写入文件时,引发缺页异常,逻辑存储资源管理单元为数据来源单元分配物理内存,数据来源单元将数据写入物理内存。一种逻辑存储资源管理单元,包括保留内存分配模块预先分配专用于保存存储资源映射表的保留内存;逻辑存储资源分配模块在系统重启前,为数据来源模块分配逻辑存储资源;管理模块当数据来源模块将数据写入逻辑存储资源时,在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置;当系统重启时,从存储资源映射表中获取已写入数据的逻辑存储资源的物理位置,将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态,且当数据来源模块读取所有数据后,释放所有逻辑存储资源。所述管理模块进一步用于,在将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态的同时,将未写入数据的逻辑存储资源对应的物理内存块置为空闲状态。所述管理模块进一步用于,在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置的同时,在存储资源映射表中将该逻辑存储资源对应的物理内存块的状态标志置为有效,且,在释放所有逻辑存储资源的同时,将存储资源映射表中的所有状态标志置为无效。所述系统无文件支撑,所述逻辑存储资源分配模块根据数据来源单元的申请,为数据来源单元分配一逻辑内存;且,所述管理模块进一步用于,当数据来源单元将数据写入逻辑内存时,引发缺页异常,为数据来源单元分配物理内存,以便数据来源单元将数据写入物理内存。所述管理模块进一步用于,在将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态的同时,将逻辑存储资源的首地址提供给数据来源单元,以便数据来源单元根据该首地址从逻辑存储资源读取数据。所述逻辑存储资源为逻辑内存或文件系统。与现有技术相比,本发明中,存储资源只会在系统即将重启时到重启后数据来源模块读取数据这一期间被占用,在数据来源模块读取完数据后,存储资源会被释放,这样, 存储资源不会被一直占用,提高了存储资源利用率。


图1为本发明实施例提供的无文件系统支撑时的重启数据不丢失方法流程图;图2为本发明实施例提供的有文件系统支撑时的重启数据不丢失方法流程图;图3为本发明实施例提供的逻辑存储资源管理单元的组成示意图。
具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。图1为本发明实施例提供的无文件系统支撑时的重启数据不丢失方法流程图,如图1所示,其具体步骤如下步骤100 逻辑存储资源管理单元预先分配一专用于保存存储资源映射表的保留内存,并将该保留内存的虚拟地址通知各数据来源单元。这里,逻辑存储资源管理单元只需将保留内存的虚拟地址如应用程序编程接口 (API, Application Programming Interface)通知数据来源单元即可,数据来源单元根据该虚拟地址就可完成对保留内存的读、写操作。步骤101 数据来源单元发现系统即将重启,向逻辑存储资源管理单元申请用于存储数据的内存。本步骤中,逻辑存储资源管理单元为数据来源单元分配的是逻辑内存。逻辑存储资源管理单元会将该逻辑内存的虚拟位置(如虚拟页框号、虚拟地址)提供给数据来源单元,例如若系统使用Linux/UNIX的写时分配技术,则逻辑存储资源管理单元只向数据来源单元提供了一虚拟地址空间作为内存地址,如0x0012;3400至0x001243ff。步骤102 数据来源单元得到逻辑存储资源管理单元分配的逻辑内存位置,开始向逻辑内存写入数据,且对于已写入数据的逻辑内存对应的物理内存块,逻辑存储资源管理单元在存储资源映射表中,将该逻辑存储资源使用的物理内存块对应节点的状态标志置为有效。由于数据来源单元从逻辑存储资源管理单元处得到的是逻辑内存位置,真正的物理内存是在数据来源单元根据逻辑内存位置将数据写入内存时引发的缺页异常过程中申请的。具体地,在数据来源单元根据逻辑内存位置进行数据块的写动作时,由于真正的物理内存还未分配,因此会引发缺页异常,此时,逻辑存储资源管理单元会为数据来源单元分配真正的物理内存,同时,逻辑存储资源管理单元将该内存的虚拟位置信息和物理位置信息的对应关系写入页表中,而数据来源单元则将数据写入物理内存中。其中,物理位置信息如物理页框号、物理地址等,虚拟位置信息如虚拟页框号、虚拟地址等。当逻辑存储资源管理单元为数据来源单元分配物理内存时,会在存储资源映射表的各个节点中依次记录各物理内存块的物理位置信息如物理页框号或物理地址等,同时, 将各个节点的状态标志初始化为无效。当数据来源单元将一数据块写入到一物理内存块时,逻辑存储资源管理单元就将存储资源映射表中该物理内存块对应的节点的状态标志置为有效。存储资源映射表的结构如下表1存储资源映射表的结构如表1所示,每个表项表示物理内存的一个页,例如第0个节点表示内存的第0 页,第1个节点表示内存的第1页,......,第100个节点表示内存的第100页。当数据来源单元只有一个时,系统需要记录该数据来源单元对应的逻辑内存的首位置信息;当数据来源单元为多个时,系统需要记录每个数据来源单元标识与该数据来源单元的逻辑内存的首位置信息的对应关系。此处的首位置信息可以是首虚拟页框号、首虚拟地址等。步骤103 所有数据来源单元完成数据存储,系统重启。数据来源单元申请到的物理内存大小可能大于存储数据的总大小,这样对于没有数据写入的物理内存块,存储资源映射表中该物理内存块对应的节点被置为无效。步骤104 系统重启过程中,逻辑存储资源管理单元初始化时,读取保留内存中的存储资源映射表,当发现一节点被置为有效时,将该节点对应的物理内存块置为已使用状态,以确保该物理内存块内的数据不会被修改;否则,将该节点对应的物理内存块置为空闲状态。将物理内存块置为空闲状态,则其它单元就可以使用该物理内存块即,对其进行写、读操作。步骤105 数据来源单元初始化时,向逻辑存储资源管理单元获取自身的逻辑内存的首位置信息,根据该逻辑内存的首位置信息,从内存中读取数据。步骤106 当所有数据来源单元读取所有数据后,逻辑存储资源管理单元释放所有数据来源模块占用的逻辑存储资源,同时将存储资源映射表中的所有节点的状态标志置为无效。图2为本发明实施例提供的有文件系统支撑时的重启数据不丢失方法流程图,如图2所示,其具体步骤如下步骤200 逻辑存储资源管理单元预先分配一专用于保存存储资源映射表的保留内存,并将该保留内存的虚拟地址通知各数据来源单元。步骤201 系统重启前,系统创建一个文件系统,将该文件系统挂载到一挂载点上。该文件系统实际上也可以看作是一块逻辑存储资源。系统将该逻辑存储资源作为一个块设备处理,提供相应的驱动接口,并将其挂在文件系统的一个挂载点上。挂载点可以看作文件系统的存储路径。挂载点可以预先设定,也可以临时分配,若为后者,则系统需将挂载点通知各数据来源单元。
步骤202 数据来源单元在文件系统中创建文件,并将数据写入创建的文件,且对于已写入数据的文件,逻辑存储资源管理单元将存储资源映射表中该文件所在的物理内存块对应节点的状态标志置为有效。数据来源单元可根据预设规则来定义文件名。在数据来源单元进行将一数据块写入一文件的写动作时,由于真正的物理内存还未分配,因此会引发缺页异常,此时,逻辑存储资源管理单元会为数据来源单元分配真正的物理内存,数据来源单元将数据写入物理内存中。当逻辑存储资源管理单元为数据来源单元分配物理内存时,会在存储资源映射表的各个节点中依次记录各物理内存块的物理位置信息如物理页框号或物理地址等,同时, 将各个节点的状态标志初始化为无效。当数据来源单元将一数据块写入到一物理内存块时,逻辑存储资源管理单元就将存储资源映射表中该物理内存块对应的节点的状态标志置为有效。步骤203 所有数据来源单元完成数据存储,系统重启。步骤204:系统重启过程中,逻辑存储资源管理单元初始化时,读取保留内存中的存储资源映射表,当发现一节点被置为有效时,将该节点对应的物理内存块置为已使用状态,以确保该物理内存块内的数据不会被修改;否则,将该节点对应的物理内存块置为空闲状态。步骤205 逻辑存储资源管理单元根据存储资源映射表,恢复文件系统,并将文件系统挂载到挂载点上。本步骤中的挂载点与步骤201中的挂载点相同。步骤206 数据来源单元到挂载点上打开自身对应的文件,读取文件中的数据。通常数据来源单元在创建文件时,是根据预设规则来定义文件名的,因此,本步骤中,数据来源单元根据该预设规则就可得知自身对应文件的文件名,从而打开对应文件。步骤207 当所有数据来源单元读取所有数据后,逻辑存储资源管理单元将文件系统从挂载点上卸载,并释放文件系统对应的所有逻辑存储资源,同时将存储资源映射表中的所有节点的状态标志置为无效。需要说明的是,本发明实施例中,对于数据来源单元来说,物理内存对其是不可见的,它通过对逻辑内存或文件系统的操作来实现数据的存储和读取。实际上,当数据来源单元对逻辑内存或文件系统进行读、写操作时,操作系统会根据数据来源单元的动作对对应的物理内存进行读、写操作,这一部分可采用现有技术实现,在此不再赘述。本发明可以通过计算机软件实现,由CPU执行若干存放于内存或其它存储介质中的指令完成本发明各个步骤。图3为本发明实施例提供的逻辑存储资源管理单元的组成示意图,如图3所示,其主要包括保留内存分配模块31、逻辑存储资源分配模块32和管理模块33,其中保留内存分配模块31 预先分配专用于保存存储资源映射表的保留内存,并将该保留内存的虚拟地址发送给管理模块33。逻辑存储资源分配模块32 在系统重启前,为数据来源模块分配逻辑存储资源。管理模块33 接收并记录保留内存分配模块31发来的专用于保存存储资源映射表的保留内存的虚拟地址,当数据来源模块将数据写入逻辑存储资源时,根据记录的专用于保存存储资源映射表的保留内存的虚拟地址,在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置;当系统重启时,从存储资源映射表中获取已写入数据的逻辑存储资源的物理位置,将已写入数据的逻辑存储资源使用的物理内存块置为已使用状态,且当数据来源模块读取所有数据后,释放所有数据来源模块占用的逻辑存储资源。其中,逻辑存储资源可以为逻辑内存或文件系统。管理模块33进一步用于,在将已写入数据的逻辑存储资源使用的物理内存块置为已使用状态的同时,将未写入数据的逻辑存储资源使用的物理内存块置为空闲状态。管理模块33进一步用于,在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置的同时,在存储资源映射表中将该逻辑存储资源对应的物理内存块的状态标志置为有效,且,在释放所有逻辑存储资源的同时,将存储资源映射表中的所有状态标志置为无效。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种重启数据不丢失方法,其特征在于,预先分配专用于保存存储资源映射表的保留内存,该方法包括在系统重启前,逻辑存储资源管理单元为数据来源单元分配逻辑存储资源,当数据来源单元将数据写入逻辑存储资源时,逻辑存储资源管理单元在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置;当系统重启时,逻辑存储资源管理单元从存储资源映射表中获取已写入数据的逻辑存储资源的物理位置,将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态;当数据来源单元读取所有数据后,逻辑存储资源管理单元释放所有逻辑存储资源。
2.根据权利要求1所述的方法,其特征在于,所述逻辑存储资源管理单元将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态进一步包括将未写入数据的逻辑存储资源对应的物理内存块置为空闲状态。
3.根据权利要求1所述的方法,其特征在于,所述逻辑存储资源管理单元在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置包括对于已写入数据的逻辑存储资源对应的物理内存块,逻辑存储资源管理单元在存储资源映射表中记录该物理内存块的物理位置,并将该物理内存块的状态标志置为有效;所述逻辑存储资源管理单元释放所有逻辑存储资源进一步包括逻辑存储资源管理单元将存储资源映射表中的所有状态标志置为无效。
4.根据权利要求1所述的方法,其特征在于,所述系统无文件支撑,所述逻辑存储资源为逻辑内存;所述逻辑存储资源管理单元为数据来源单元分配逻辑存储资源为数据来源单元发现系统即将重启,向逻辑存储资源管理单元申请用于存储数据的逻辑内存,逻辑存储资源管理单元为数据来源单元分配一逻辑内存;所述数据来源单元将数据写入逻辑存储资源为数据来源单元将数据写入逻辑内存时,引发缺页异常,逻辑存储资源管理单元为数据来源单元分配物理内存,数据来源单元将数据写入物理内存。
5.根据权利要求4所述的方法,其特征在于,所述逻辑存储资源管理单元将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态进一步包括逻辑存储资源管理单元将逻辑存储资源的首地址提供给数据来源单元,以便数据来源单元根据该首地址从逻辑存储资源读取数据。
6.根据权利要求1所述的方法,其特征在于,所述系统有文件支撑,所述逻辑存储资源为文件系统,所述数据来源单元将数据写入逻辑存储资源包括数据来源单元在文件系统中创建文件,在将数据写入文件时,引发缺页异常,逻辑存储资源管理单元为数据来源单元分配物理内存,数据来源单元将数据写入物理内存。
7.一种逻辑存储资源管理单元,其特征在于,包括保留内存分配模块预先分配专用于保存存储资源映射表的保留内存;逻辑存储资源分配模块在系统重启前,为数据来源模块分配逻辑存储资源;管理模块当数据来源模块将数据写入逻辑存储资源时,在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置;当系统重启时,从存储资源映射表中获取已写入数据的逻辑存储资源的物理位置,将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态,且当数据来源模块读取所有数据后,释放所有逻辑存储资源。
8.根据权利要求7所述的逻辑存储资源管理单元,其特征在于,所述管理模块进一步用于,在将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态的同时,将未写入数据的逻辑存储资源对应的物理内存块置为空闲状态。
9.根据权利要求7所述的逻辑存储资源管理单元,其特征在于,所述管理模块进一步用于,在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置的同时,在存储资源映射表中将该逻辑存储资源对应的物理内存块的状态标志置为有效,且,在释放所有逻辑存储资源的同时,将存储资源映射表中的所有状态标志置为无效。
10.根据权利要求7所述的逻辑存储资源管理单元,其特征在于,所述系统无文件支撑,所述逻辑存储资源分配模块根据数据来源单元的申请,为数据来源单元分配一逻辑内存;且,所述管理模块进一步用于,当数据来源单元将数据写入逻辑内存时,引发缺页异常,为数据来源单元分配物理内存,以便数据来源单元将数据写入物理内存。
11.根据权利要求7所述的逻辑存储资源管理单元,其特征在于,所述管理模块进一步用于,在将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态的同时,将逻辑存储资源的首地址提供给数据来源单元,以便数据来源单元根据该首地址从逻辑存储资源读取数据。
12.根据权利要求7所述的逻辑存储资源管理单元,其特征在于,所述逻辑存储资源为逻辑内存或文件系统。
全文摘要
本发明公开了重启数据不丢失方法及逻辑存储资源管理单元。方法包括预先分配专用于保存存储资源映射表的保留内存;在系统重启前,逻辑存储资源管理单元为数据来源单元分配逻辑存储资源,当数据来源单元将数据写入逻辑存储资源时,逻辑存储资源管理单元在存储资源映射表中记录已写入数据的逻辑存储资源的物理位置;当系统重启时,逻辑存储资源管理单元从存储资源映射表中获取已写入数据的逻辑存储资源的物理位置,将已写入数据的逻辑存储资源对应的物理内存块置为已使用状态;当数据来源单元读取所有数据后,逻辑存储资源管理单元释放所有逻辑存储资源。本发明提高了存储资源利用率。
文档编号G06F12/08GK102184145SQ20111012451
公开日2011年9月14日 申请日期2011年5月13日 优先权日2011年5月13日
发明者魏巍 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1