一种防止异常断电导致配置丢失的方法及系统与流程

文档序号:15850644发布日期:2018-11-07 09:50阅读:912来源:国知局
一种防止异常断电导致配置丢失的方法及系统与流程

本发明涉及控制领域,尤其涉及一种防止异常断电导致配置丢失的方法及系统。

背景技术

linux是一套免费使用和自由传播的类unix操作系统,是一个基于posix和unix的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

现有的linux系统为了提高读写磁盘的效率,一般在文件或者数据处理过程中一般先将数据放在一个内存的缓存区(buffer),在写磁盘时并不是立即将数据写到磁盘中,而是先写入这块内存的缓存区(buffer),等到适当的机会再将这些数据写入磁盘,以提高系统的运行效率,但是此时如果重启系统,就会造成数据丢失,目前已有的解决方案主要有两种:(1)异常断电导致配置文件丢失而导致系统异常并且重启不能回复的情况下只能通过恢复出厂设置来恢复系统的正常工作;(2)提前备份重要的配置文件,一旦发生异常使用简单文件传输协议(tftp)传入正常的配置文件,重启可恢复系统的正常工作。但是上述两者方法都需要手动来回复,并且恢复出厂设置之前的配置就会丢失而需要进行重新配置,手动传入之前备份的配置文件操作繁琐。

公开号为cn101477482a的专利公开了一种嵌入式linux系统中的断电时恢复闪存数据的方法,解决了闪存读写数据时突然掉电,数据就丢失或文件系统损坏的缺点,采用的技术方案是:将闪存中根文件系统定义分为固定区、修改区和备份区,通过系统文件jffs2对分区赋予不同的加载方式,将根文件系统中配置信息分配到固定区中的目录下,根文件系统中系统运行时产生的临时文件被存储在内存中,当文件系统由于意外断电造成数据丢失时,linux系统调用备份分区中的文件系统对其进行恢复默认配置,并判断当前文件系统是否被损坏,针对系统设置的重要参数的系统文件进行检查,决定是否对文件系统继续进行加载文件。本发明的有益效果是:解决了实现断电时对闪存进行数据恢复,避免闪存中的数据丢失。虽然该方法可以防止断电时闪存中的数据丢失,但是该方法是利用先对配置文件进行缓存的方式来避免闪存中数据丢失,并且备份区设置在闪存中根文件系统中,增加了系统的负担,影响系统的运行效率。



技术实现要素:

本发明的目的是针对现有技术的缺陷,用于解决linux系统的设备在启动过程中由于异常断电导致重要配置文件丢失而导致启动异常的问题,提供了一种防止异常断电导致配置丢失的方法及系统,防止linux系统的设备由于异常断电而导致配置文件的丢失。

为了实现以上目的,本发明采用以下技术方案:

一种防止异常断电导致配置丢失的方法,应用于采用linux系统为内核的终端设备中,包括步骤:

s1.启动内核inotify机制;

s2.利用所述内核inotify机制监控文件或者目录;

s3.判断所述文件或者目录是否发生变化,若是,则跳到步骤s4;

s4.将缓存中的数据写入磁盘。

进一步的,所述内核inotify机制是通过into_sync源代码包通过编译成链接生成into_sync模块集成到linux系统内核中。

进一步的,所述内核inotify机制是在对应的重要服务启动之前启动的。

进一步的,所述文件或者目录是预先设定的需要监控的重要文件或者目录。

进一步的,所述文件或者目录是否发生变化包括对所述文件或者目录是否有创建、删除、更新操作。

相应的,还提供一种防止异常断电导致配置丢失的系统,应用于采用linux系统为内核的终端设备中,包括:

启动模块,用于启动内核inotify机制;

监控模块,用于利用所述内核inotify机制监控文件或者目录;

判断模块,用于判断所述文件或者目录是否发生变化;

写入模块,用于在所述文件或者目录发生变化时将缓存中的数据写入磁盘。

进一步的,所述内核inotify机制是通过into_sync源代码包通过编译成链接生成into_sync模块集成到linux系统内核中。

进一步的,所述内核inotify机制是在对应的重要服务启动之前启动的。

进一步的,所述文件或者目录是预先设定的需要监控的重要文件或者目录。

进一步的,所述文件或者目录是否发生变化包括对所述文件或者目录是否有创建、删除、更新操作。

与现有技术相比,本发明通过在linux系统的设备内核中设置inotify机制,设备一旦发生异常断电时就可将缓存写入到磁盘中,使配置不会因为异常断电而丢失,并且整个过程无需繁琐的手动操作,自动化程度高。

附图说明

图1是实施例一提供的一种防止异常断电导致配置丢失的方法流程图;

图2是实施例二提供的一种防止异常断电导致配置丢失的系统结构图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明是以采用linux内核的终端设备为研究对象,用于优化linux内核终端设备的配置文件存储方法。本发明就是针对现有linux内核终端设备在异常断电时就会丢失配置文件的技术缺陷,提供了一种防止异常断电导致配置丢失的方法及系统,防止linux系统的设备由于异常断电而导致配置文件的丢失。

实施例一

本实施例提供一种防止异常断电导致配置丢失的方法,应用于采用linux系统为内核的终端设备中,如图1所示,其特征在于,包括步骤:

s11.启动内核inotify机制;

s12.利用所述内核inotify机制监控文件或者目录;

s13.判断所述文件或者目录是否发生变化,若是,则跳到步骤s14;

s14.将缓存中的数据写入磁盘。

可选的,所述终端设备可为手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机等以linux系统为内核的终端设备。

本实施例的防止异常断电导致配置丢失的方法的执行主体为采用linux系统为内核的终端设备。

可选的,本实施例可以应用在所述终端设备在启动过程中出现的异常断电的场景下,但不限于这些场景。

需要说明的是,以linux系统为内核的终端设备在异常断电情况下,可能就会出现linux系统的设备无法正常启动,通常是由于异常断电造成配置文件丢失,部分功能无法配置导致无法正常启动,以路由器为例,在异常断电以后,可能会损坏配网的配置文件,导致异常断电以后无法正常上网。

本实施例主要通过inotify机制来防止异常断电导致配置文件的丢失。

具体的,首先,以linux系统为内核的终端设备要启动内核中的inotify机制。

可选的,所述内核inotify机制是通过into_sync源代码包通过编译成链接生成into_sync模块集成到linux系统内核中。

具体的,所述的into_sync源代码包具体为intoify_sync。

需要说明的是,inotify是一个linux特性,它监控文件系统操作,并且及时向专门的应用程序发出相关的事件警告,比如比如删除、读、写和卸载操作等。inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多,将inotify集成到linux系统中就可以监控系统的文件系统。inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。inotify机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。

sync也是一个linux的一个同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即sync函数命令就是负责将系统缓冲区的内容写回磁盘,以确保数据同步。

本实施例就是结合inotify和sync,结合inotify监控系统文件的功能和sync将系统缓存区的内容写入磁盘的功能,首先编写into_sync源代码,然后将into_sync源代码进行编译,编译成链接生成into_sync模块,然后集成到linux系统的终端设备中。

需要说明的是,编译链接过程要把我们编写的一个源代码转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程。在本实施利用,就是通过编译链接将into_sync源代码转换成可以在linux系统的终端设备上运行的可执行的程序。

通过into_sync模块集成到linux系统的内核中,这样以linux系统为内核的终端设备就具备系统文件监控功能和将系统缓存区数据写入磁盘的功能。

在启动内核inotify机制之后就可以监控系统的文件或者目录,一般系统正常运转的情况下,系统中的文件和目录都不会发生变化,而系统发生异常时就会导致系统内的文件和目录发生变化,所以监控文件或者目录是为了判断所述文件和目录是否发生变化,以此就可判断系统是否发生异常断电的情况。如果所述文件或者目录发生变化,则系统通过inotify机制立即将缓存中的数据写入磁盘,这样就可以防止在系统异常断电时损坏配置文件而导致之后无法正常启动和使用。

可选的,所述内核inotify机制是在对应的重要服务启动之前启动的。

具体的,内核inotify机制应在对应的重要服务启动之前启动,以路由器为例,比如路由器要启动配网服务,那么路由器内核中的inotify机制就要在路由器启动配网服务之前启动,如果路由器在配网过程中发生异常断电等情况,inotify机制就可以在断电之前把路由器配网的配置文件写入系统磁盘,防止配网配置文件的丢失和损坏。

为了扩大本实施例的防止异常断电导致配置丢失的方法的适用范围,可选的,所述文件或者目录是否发生变化包括对所述文件或者目录是否有创建、删除、更新操作。

具体的,在系统发生异常断电时会对文件或者目录进行删除,在系统配置新功能时可能会产生新的配置文件,系统更新时也会对配置文件进行更新,本实施例不仅仅可以在系统异常断电时把缓存中的数据写入磁盘,在系统配置新功能或者更新时也会第一时间将缓存中的数据写入磁盘,以免数据才异常情况下丢失、损坏等。

本实施例通过在linux系统的设备内核中设置inotify机制,设备一旦发生异常断电时就可将缓存写入到磁盘中,使配置不会因为异常断电而丢失,并且整个过程无需繁琐的手动操作,自动化程度高。

实施例二

本实施例提供一种防止异常断电导致配置丢失的系统,应用于采用linux系统为内核的终端设备中,如图2所述,包括

启动模块11,用于启动内核inotify机制;

监控模块12,用于利用所述内核inotify机制监控文件或者目录;

判断模块13,用于判断所述文件或者目录是否发生变化;

写入模块14,用于在所述文件或者目录发生变化时将缓存中的数据写入磁盘。

可选的,所述终端设备可为手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机等以linux系统为内核的终端设备。

本实施例的防止异常断电导致配置丢失的方法的执行主体为采用linux系统为内核的终端设备。

可选的,本实施例可以应用在所述终端设备在启动过程中出现的异常断电的场景下,但不限于这些场景。

需要说明的是,以linux系统为内核的终端设备在异常断电情况下,可能就会出现linux系统的设备无法正常启动,通常是由于异常断电造成配置文件丢失,部分功能无法配置导致无法正常启动,以路由器为例,在异常断电以后,可能会损坏配网的配置文件,导致异常断电以后无法正常上网。

本实施例主要通过inotify机制来防止异常断电导致配置文件的丢失。

具体的,首先,以linux系统为内核的终端设备要启动内核中的inotify机制。

可选的,所述内核inotify机制是通过into_sync源代码包通过编译成链接生成into_sync模块集成到linux系统内核中。

具体的,所述的into_sync源代码包具体为intoify_sync。

需要说明的是,inotify是一个linux特性,它监控文件系统操作,并且及时向专门的应用程序发出相关的事件警告,比如比如删除、读、写和卸载操作等。inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多,将inotify集成到linux系统中就可以监控系统的文件系统。inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。inotify机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。

sync也是一个linux的一个同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即sync函数命令就是负责将系统缓冲区的内容写回磁盘,以确保数据同步。

本实施例就是结合inotify和sync,结合inotify监控系统文件的功能和sync将系统缓存区的内容写入磁盘的功能,首先编写into_sync源代码,然后将into_sync源代码进行编译,编译成链接生成into_sync模块,然后集成到linux系统的终端设备中。

需要说明的是,编译链接过程要把我们编写的一个源代码转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程。在本实施利用,就是通过编译链接将into_sync源代码转换成可以在linux系统的终端设备上运行的可执行的程序。

通过into_sync模块集成到linux系统的内核中,这样以linux系统为内核的终端设备就具备系统文件监控功能和将系统缓存区数据写入磁盘的功能。

在启动内核inotify机制之后就可以监控系统的文件或者目录,一般系统正常运转的情况下,系统中的文件和目录都不会发生变化,而系统发生异常时就会导致系统内的文件和目录发生变化,所以监控文件或者目录是为了判断所述文件和目录是否发生变化,以此就可判断系统是否发生异常断电的情况。如果所述文件或者目录发生变化,则系统通过inotify机制立即将缓存中的数据写入磁盘,这样就可以防止在系统异常断电时损坏配置文件而导致之后无法正常启动和使用。

可选的,所述内核inotify机制是在对应的重要服务启动之前启动的。

具体的,内核inotify机制应在对应的重要服务启动之前启动,以路由器为例,比如路由器要启动配网服务,那么路由器内核中的inotify机制就要在路由器启动配网服务之前启动,如果路由器在配网过程中发生异常断电等情况,inotify机制就可以在断电之前把路由器配网的配置文件写入系统磁盘,防止配网配置文件的丢失和损坏。

为了扩大本实施例的防止异常断电导致配置丢失的方法的适用范围,可选的,所述文件或者目录是否发生变化包括对所述文件或者目录是否有创建、删除、更新操作。

具体的,在系统发生异常断电时会对文件或者目录进行删除,在系统配置新功能时可能会产生新的配置文件,系统更新时也会对配置文件进行更新,本实施例不仅仅可以在系统异常断电时把缓存中的数据写入磁盘,在系统配置新功能或者更新时也会第一时间将缓存中的数据写入磁盘,以免数据才异常情况下丢失、损坏等。

本实施例通过在linux系统的设备内核中设置inotify机制,设备一旦发生异常断电时就可将缓存写入到磁盘中,使配置不会因为异常断电而丢失,并且整个过程无需繁琐的手动操作,自动化程度高。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1