一种文件系统断电保护方法、模组、可读存储介质及电子设备与流程

专利2022-06-30  94


本发明涉及操作系统技术领域,特别是涉及一种文件系统断电保护方法、模组、可读存储介质及电子设备。



背景技术:

操作系统(如linux系统)在遭遇异常掉电后,其系统文件可能会损坏,导致操作系统无法正常启动。

由于linux系统采用ext等日志文件系统,系统根分区文件系统的一致性可能遭到破坏,且无法自动修复,系统启动时会中止在文件系统检查的环节,无法完成正常启动。目前多采用堆叠文件系统或者调整文件系统挂载方式的方法来减缓异常掉电对文件系统的影响。其中堆叠文件系统的方法主要利用overlayfs,aufs等堆叠文件系统的统一挂载和独立读写权限设置实现读写分离,保护根分区不被真正写入,但是由于基于文件粒度的读写,使得这种方法的性能和空间利用率不高。基于文件系统挂载方式优化的方法,主要是调整文件系统以journal的方式挂载,在将数据和元数据提交给文件系统之前将其写入日志,尽可能确保数据、元数据等内容的一致性,然而,这种方法对文件系统读写性能折损较大。此外,目前的文件系统掉电保护方法大都聚焦于如何确保一致性,而较少地关注增量数据的写入,所以使用场景有一定局限性,成功率较低。



技术实现要素:

本发明的一个目的在于提出一种成功率高的文件系统断电保护方法。

一种文件系统断电保护方法,应用于操作系统中,包括以下步骤:

当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区;

将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式;

通过写时复制将所述原始根分区的数据流定向至所述增量分区。

本发明的有益效果是:将数据流定向至增量分区中,在进入操作系统后,修改文件时,原始根分区上的数据不会有任何变化,即使断电修改后的文件所涉及的块数据均存储在增量分区上,有效防止了原始根分区的文件损坏,几乎不存在出错,成功率极高。

另外,根据本发明提供的文件系统断电保护方法,还可以具有如下附加的技术特征:

进一步地,所述原始分区通过dmsetup命令设置为只读快照。

进一步地,所述通过写时复制将所述原始根分区的数据流定向至所述增量分区的步骤之后还包括:

当捕捉到所述操作系统关闭时,判断是否为正常关闭,若是,则将所述增量分区的数据合并至所述原始根分区中。

进一步地,所述当捕捉到所述操作系统关闭时,判断是否为正常关闭的步骤包括:

当所述操作系统关闭时,判断所述操作系统关闭之前是否接到关机请求;

若是,则判断所述操作系统为正常关闭。

进一步地,所述判断所述操作系统为正常关闭之后的步骤还包括:

当所述关机请求被执行后,持续捕捉所述操作系统的根文件是否卸载完成;

若是,则向所述操作系统发出数据合并请求。

进一步地,所述将所述增量分区的数据合并至所述原始根分区中之后的步骤还包括:

若所述操作系统在所述数据合并的过程中断电,生成所述数据合并的状态记录,并修改所述状态记录为未完成;

当所述操作系统接通电源时,获取所述状态记录,判断所述状态记录是否为未完成;

若是,则获取所述原始根分区与所述增量分区中的相同数据,删除所述原始根分区中所述相同数据以外的数据,将所述增量分区中所述相同数据以外的数据合并至所述原始根分区中。

本发明的另一个目的在于提出一种文件系统断电保护模组,包括:

分区设定模块,用于当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区;

分区合成模块,将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式;

数据流定向模块,通过写时复制将所述原始根分区的数据流定向至所述增量分区。

本发明还提供一种可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述的方法。

本发明还提供一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明第一实施例的文件系统断电保护方法的结构框图;

图2是本发明第一实施例的文件系统断电保护方法的流程示意图;

图3是本发明第二实施例的文件系统断电保护方法的结构框图;

图4是本发明第三实施例的文件系统断电保护模组的结构框图。

具体实施方式

为使本发明的目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

需要说明的是,当元件被称为“固设于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”、“上”、“下”以及类似的表述只是为了说明的目的,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

请参阅图1和图2,本发明第一实施例提出一种文件系统断电保护方法,应用于操作系统中,本实施例中操作系统为linux系统,包括以下步骤。

s1.当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区。

在本实施例中,采用通过dmsetup命令将原始跟分区设置为只读快照,设置成只读快照后,对系统文件的读写都会到数据分区中,不会直接影响系统文件。

另外,建立增量分区可理解为在硬盘上建立一个虚拟卷,即在原始根分区的同一个硬盘内建立一个虚拟卷,该卷是透明的,上层不感知,一般在系统安装时自动预留。

s2.将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式。

在本实施例中,采用devicemapper的快照技术建立只读快照,并利用devicemapper的工具将原始根分区和增量分区聚合成新的根分区并设置为读写模式挂载。

s3.通过写时复制(copy-on-write)将所述原始根分区的数据流定向至所述增量分区。

需要说明的是,由于数据流定向至增量分区中,在进入操作系统后,修改文件时,原始根分区上的数据不会有任何变化,即使断电修改后的文件所涉及的块数据均存储在增量分区上,有效防止了原始根分区的文件损坏,几乎不存在出错,成功率极高。

请参阅图3,本发明第二实施例提出一种文件系统断电保护方法,本实施例与第一实施例基本一致,不同之处如下。

在步骤s3之后还包括:

s4.当捕捉到所述操作系统关闭时,判断是否为正常关闭,若是,则将所述增量分区的数据合并至所述原始根分区中。

具体的,所述当捕捉到所述操作系统关闭时,判断是否为正常关闭的步骤包括:

当所述操作系统关闭时,判断所述操作系统关闭之前是否接到关机请求;

若是,则判断所述操作系统为正常关闭。

可以理解的是,正常关机为通过操作系统界面上的关机按钮进行关机,此时会接收到关机请求,若操作系统未接收到关机请求而关闭,可认为其为非正常关闭,如突然断电。

另外,所述判断所述操作系统为正常关闭之后的步骤还包括:

当所述关机请求被执行后,持续捕捉所述操作系统的根文件是否卸载完成;

若是,则向所述操作系统发出数据合并请求。

需要说明的是,一般关机操作触发后,系统会调用关机指令来完成关机过程,数据合并就是在关机指令被执行的过程中。当根文件卸载完成时,可认为之后根文件不会再发生改变,则在后续的关机过程中即可执行数据合并。

更进一步地,所述将所述增量分区的数据合并至所述原始根分区中之后的步骤还包括:

若所述操作系统在所述数据合并的过程中断电,生成所述数据合并的状态记录,并修改所述状态记录为未完成;

当所述操作系统接通电源时,获取所述状态记录,判断所述状态记录是否为未完成;

若是,则获取所述原始根分区与所述增量分区中的相同数据,删除所述原始根分区中所述相同数据以外的数据,将所述增量分区中所述相同数据以外的数据合并至所述原始根分区中。

应当指出的是,系统每次会记录数据合并的状态,而且在开机时会检查,如果因为断电导致关机时同步未完成,那么在开机时能够检查出来,并继续完成同步。

对于现有的电脑,其上设有内置电源,电脑断电时不会立马关机,而是在1-2秒之后关机,这段时间内可执行生成状态记录。

请参阅图4,本发明的另一个目的在于提出一种文件系统断电保护模组,包括:

分区设定模块,用于当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区;

分区合成模块,将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式;

数据流定向模块,通过写时复制将所述原始根分区的数据流定向至所述增量分区。

本发明第四实施例还提供一种可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现权利第二实施例所述的方法。

本发明第五实施例还提供一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第二实施例所述的方法。该电子设备可以为电脑、生产装置或平板电脑。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。


技术特征:

1.一种文件系统断电保护方法,应用于操作系统中,其特征在于,包括以下步骤:

当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区;

将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式;

通过写时复制将所述原始根分区的数据流定向至所述增量分区。

2.根据权利要求1所述的文件系统断电保护方法,其特征在于,所述原始分区通过dmsetup命令设置为只读快照。

3.根据权利要求1所述的文件系统断电保护方法,其特征在于,所述通过写时复制将所述原始根分区的数据流定向至所述增量分区的步骤之后还包括:

当捕捉到所述操作系统关闭时,判断是否为正常关闭,若是,则将所述增量分区的数据合并至所述原始根分区中。

4.根据权利要求3所述的文件系统断电保护方法,其特征在于,所述当捕捉到所述操作系统关闭时,判断是否为正常关闭的步骤包括:

当所述操作系统关闭时,判断所述操作系统关闭之前是否接到关机请求;

若是,则判断所述操作系统为正常关闭。

5.根据权利要求4所述的文件系统断电保护方法,其特征在于,所述判断所述操作系统为正常关闭之后的步骤还包括:

当所述关机请求被执行后,持续捕捉所述操作系统的根文件是否卸载完成;

若是,则向所述操作系统发出数据合并请求。

6.根据权利要求3所述的文件系统断电保护方法,其特征在于,所述将所述增量分区的数据合并至所述原始根分区中之后的步骤还包括:

若所述操作系统在所述数据合并的过程中断电,生成所述数据合并的状态记录,并修改所述状态记录为未完成;

当所述操作系统接通电源时,获取所述状态记录,判断所述状态记录是否为未完成;

若是,则获取所述原始根分区与所述增量分区中的相同数据,删除所述原始根分区中所述相同数据以外的数据,将所述增量分区中所述相同数据以外的数据合并至所述原始根分区中。

7.一种文件系统断电保护模组,其特征在于,包括:

分区设定模块,用于当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区;

分区合成模块,将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式;

数据流定向模块,通过写时复制将所述原始根分区的数据流定向至所述增量分区。

8.一种可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1至7任意一项所述的方法。

9.一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任意一项所述的方法。

技术总结
本发明公开了一种文件系统断电保护方法,该文件系统断电保护方法应用于操作系统中,包括以下步骤:当所述操作系统启动时,设定所述操作系统的的原始根分区为只读快照,并建立虚拟的增量分区;将所述原始根分区和所述增量分区合成为根分区,并将所述根分区设定为读写模式;通过写时复制将所述原始根分区的数据流定向至所述增量分区。将数据流定向至增量分区中,在进入操作系统后,修改文件时,原始根分区上的数据不会有任何变化,即使断电修改后的文件所涉及的块数据均存储在增量分区上,有效防止了原始根分区的文件损坏,几乎不存在出错,成功率极高。本发明还公开了采用上述方法的模组、可读存储介质及电子设备。

技术研发人员:沈良好;王非;刘微;刘军;孔金珠
受保护的技术使用者:天津麒麟信息技术有限公司
技术研发日:2020.01.07
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-58591.html

最新回复(0)