一种Linux系统中使用闪存保存系统配置的方法转让专利

申请号 : CN201010171231.0

文献号 : CN102243602B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张志同

申请人 : 西安龙飞软件有限公司

摘要 :

本发明公开了一种Linux系统中使用闪存保存系统配置的方法,实现了利用闪存保存配置信息时,对闪存操作的磨损均衡处理,解决了坏块及闪存擦写过程中系统断电导致的系统配置损坏的问题。使用目录区分当前配置和备份配置,并将配置项和配置文件名对应,利用了文件系统自身的文件查找和文件完整性检查功能,当配置项异常时实现了当前配置和备份配置恢复。

权利要求 :

1.一种Linux系统中使用闪存保存系统配置的方法,此方法是在Linux系统、文件系统和闪存设备结合实现的,其特征在于:所述的使用闪存保存系统配置的方法包括以下步骤:(1)系统配置的配置项和配置项的默认值以文本文件的方式保存在系统中,将此文件保存在一个固定位置,管理配置项时只从此文件读取数据而不会对此文件进行写操作,以保证在个别配置项损坏时进行恢复;

(2)设备启动时对系统配置进行初始化,首先检查系统当前配置和系统配置备份目录是否存在,如果不存在则创建;然后遍历系统默认配置文件中的所有配置项,用open函数打开系统当前配置目录和系统配置备份目录中的配置项文件,用此函数的返回值判断配置项文件是否存在或是否正常,如果两个目录中文件都正常且相同则继续判断下一个配置项;如果两个目录中文件都正常但不相同,则用系统当前配置目录中的配置项恢复系统配置备份目录中的配置项;如果一个目录中的文件不存在或出现异常,则用另一个目录中的文件进行恢复;如果两个目录中的文件都不存在或出现异常,在用系统默认配置文件中的默认配置恢复这两个目录中的配置项;

(3)系统运行过程中需要读取一个配置项的当前值时,只需要读取系统当前配置目录中的配置项文件;如果此文件出现异常,则读取系统配置备份目录中的配置项文件;如果这两个文件都存在问题,则读取系统默认配置文件中的默认值;

(4)系统运行过程中需要设置一个配置项的值时,需要先设置系统当前配置目录中的配置项,再设置系统配置备份目录中的配置项,这样可以保证在设置两个文件的过渡时刻发生断电时,系统初始化时可以恢复到最新配置。

2.根据权利要求1中所述的一种Linux系统中使用闪存保存系统配置的方法,其特征在于:使用不同的目录保存当前配置和配置备份,每个配置项在当前配置目录和备份配置目录中都有一个单独文件,保证单个配置项的损坏不会影响其他配置项。

3.根据权利要求1中所述的一种Linux系统中使用闪存保存系统配置的方法,其特征在于:所述的当前配置目录和备份配置目录中的配置项互为备份,当前配置异常时使用备份配置恢复,备份配置异常时使用当前配置恢复。

4.根据权利要求1中所述的一种Linux系统中使用闪存保存系统配置的方法,其特征在于:使用配置项名称与当前配置目录和备份配置目录中的文件名称一一对应,这样可以利用文件系统自身的文件查找功能来查找配置项。

5.根据权利要求1中所述的一种Linux系统中使用闪存保存系统配置的方法,其特征在于:利用文件系统自身的文件完整性检查功能检查配置项文件是否正常。

说明书 :

一种Linux系统中使用闪存保存系统配置的方法

技术领域

[0001] 本发明涉及计算机系统领域,尤其涉及一种在Linux系统中基于建立在闪存上可读写文件系统的可靠保存系统配置的方法。

背景技术

[0002] 目前以闪存作为存储介质的嵌入式系统保存系统配置的方法基本上有两种,一种是通过MTD接口直接操作闪存分区,将系统配置保存在固定的MTD分区中;另一种是将系统配置保存在可读写的文件系统中,使用已有的数据库保存系统配置。第一种方法需要自行设计配置项的结构以及查询方法,并且很难实现闪存的磨损均衡处理,尤其对于NAND类型的闪存,如果保存系统配置的分区出现坏块将导致整个系统配置损坏,另外,闪存一般是按块擦写的,如果在擦写过程中设备断电将导致系统配置需要全部恢复;第二种方法利用了闪存文件系统的磨损均衡功能,但仍面临擦写过程中断电使全部系统配置需要恢复的问题。

发明内容

[0003] 为了解决现有系统配置管理方式的不足,本发明提出了一种在Linux系统下基于建立在闪存上的可读写文件系统的可靠保存系统配置的方法。此方法主要利用了文件系统自身的文件查找、对闪存的磨损均衡处理的特性,以两个不同的目录保存系统当前配置和系统配置备份,并且将每个配置项保存到一个单独的文件来实现的,保证了单个配置项文件的损坏不会影响到其他配置项。这种方法的具体实现步骤如下:
[0004] (1)系统配置的配置项和配置项的默认值以文本文件的方式保存在系统中,将此文件保存在一个固定位置,管理配置项时只从此文件读取数据而不会对此文件进行写操作,以保证在个别配置项损坏时进行恢复。
[0005] (2)设备启动时对系统配置进行初始化,初始化的过程包括:首先检查系统当前配置和系统配置备份目录是否存在,如果不存在则创建;然后遍历系统默认配置文件中的所有配置项,用open函数打开系统当前配置目录和系统配置备份目录中的配置项文件,用此函数的返回值判断配置项文件是否存在或是否正常,如果两个目录中文件都正常且相同则继续判断下一个配置项;如果两个目录中文件都正常但不相同,则用系统当前配置目录中的配置项恢复系统配置备份目录中的配置项;如果一个目录中的文件不存在或出现异常,则用另一个目录中的文件进行恢复;如果两个目录中的文件都不存在或出现异常,在用系统默认配置文件中的默认配置恢复这两个目录中的配置项。
[0006] (3)系统运行过程中需要读取一个配置项的当前值时,只需要读取系统当前配置目录中的配置项文件;如果此文件出现异常,则读取系统配置备份目录中的配置项文件;如果这两个文件都存在问题,则读取系统默认配置文件中的默认值。
[0007] (4)系统运行过程中需要设置一个配置项的值时,需要先设置系统当前配置目录中的配置项,再设置系统配置备份目录中的配置项,这样可以保证如果在设置两个文件的过渡时刻发生断电时,系统初始化时可以恢复到最新配置。
[0008] 本发明的有益效果是:实现了利用闪存保存配置信息时,对闪存操作的磨损均衡处理,解决了坏块及闪存擦写过程中系统断电导致的系统配置损坏的问题。
[0009] 本发明的优点是:和具体闪存类型无关,NOR和NAND闪存都适用;便于移植,可以应用于YAFFS2和JFFS2等建立在闪存上的文件系统。

附图说明

[0010] 图1是本发明系统配置结构示意图;
[0011] 图2是本发明初始化系统配置的流程图。
[0012] 实施方法
[0013] 下面结合附图进一步说明本发明是如何实现的:
[0014] 实现一个配置管理函数库,通过此函数库操作默认配置文件、当前配置和备份配置。
[0015] 系统的初始化进程需要对系统配置进行初始化,初始化流程如图2所示。首先枚举默认配置文件中的配置项,通过配置项的名称打开当前配置下对应文件并进行检查,如果文件正常则对备份配置中的配置项进行检查,如果备份配置项正常则比较两个配置项的值,如果值相同则继续处理下一个配置项,如果备份配置项异常或值不同在用当前配置项覆盖备份配置项;如果当前配置项异常在检查备份配置项,如果备份配置项正常则用备份配置项恢复当前配置项;如果两个配置项均异常则根据默认配置创建配置项。
[0016] 其他进程必须等待系统配置初始化完成后才能对配置信息进行读写。对于同一个配置项,如果同时存在超过一个读写请求则通过文件读写锁来保证文件内容的完整性。