嵌入式Linux系统掉电保护方法、装置与计算机设备与流程

文档序号:33713612发布日期:2023-04-01 02:19阅读:503来源:国知局
嵌入式Linux系统掉电保护方法、装置与计算机设备与流程
嵌入式linux系统掉电保护方法、装置与计算机设备
技术领域
1.本技术涉及嵌入式计算机系统数据安全技术领域,尤其涉及一种嵌入式linux系统掉电保护方法、装置与设备。


背景技术:

2.对于大部分工业应用计算机设备,在关闭设备时是直接切断设备电源,而不是像家用计算机一样先执行软件关机再切断电源。或者在运行过程中因为异常掉电、瞬时欠压等原因异常关闭设备。对于运行在工业计算机设备中的嵌入式linux系统,直接切断设备电源时如果正在写数据,可能会损坏文件系统,如果关键文件损坏,设备将无法启动运行。目前大部分掉电保护机制都使用了备用电池、大电容、欠压检测电路等硬件手段,这些方法不仅需要额外硬件成本,同时使系统硬件更加复杂。


技术实现要素:

3.为了解决上述技术问题,本技术提供了一种嵌入式linux系统掉电保护方法、装置与计算机设备,实现无需备用电池、无需欠压检测电路、无需大电容储能的情况下,通过纯软件手段来实现对嵌入式linux系统的掉电保护。同时支持重要配置数据的运行时安全写入,即使配置文件写入过程中发生异常掉电也能保证完整性、安全性、原子性。本方法无需将根文件系统整体放入内存文件系统,因此适用于根文件系统比较大的linux系统。
4.第一方面,本技术提供了一种嵌入式linux系统掉电保护方法,所述方法包括以下步骤:
5.步骤s1:将非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区,并进行初始化;
6.步骤s2:将系统分区和内存文件系统联合挂载到根路径;
7.步骤s3:检查并修复数据分区、挂载数据分区;
8.步骤s4:建立配置分区索引表、修复配置分区、构建用户空间文件系统,挂载所述用户空间文件系统;
9.步骤s5:检查并修复第一应用分区或者第二应用分区,挂载第一应用分区和第二应用分区。
10.在上述方案中,将linux系统的非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区;将系统分区使用overlayfs联合挂载到根路径,系统分区为只读层,内存文件系统为读写层,既实现了根路径可读写,又保护了系统分区;将配置分区使用掉电安全的文件系统挂载,应用冗余和校验措施,牺牲空间和效率,换取运行时配置文件写入的掉电安全,保证增删改查配置数据的原子性,使用用户空间文件系统提供友好的用户接口;两个应用分区互为冗余备份,备份应用分区可用于软件升级,即使升级意外中断也不影响设备运行。
11.在一个具体的可实施方案中,所述步骤s2包括:
12.步骤s21:构建一个系统分区挂载程序,伪装成系统init程序,其中,所述init程序的路径至少包括/sbin/init;
13.步骤s22:在上述系统分区挂载程序中采用overlayfs实现系统分区和内存文件系统联合挂载到一个临时路径,其中,所述联合挂载的只读层为系统分区,读写层为内存文件系统;
14.步骤s23:调用pivot_root指令将所述临时路径切换为根路径;
15.步骤s24:调用mount指令使用remount,ro参数将系统分区切换为只读;
16.步骤s25:执行真实的系统init程序。
17.在一个具体的可实施方案中,所述步骤s3包括:
18.步骤s31:调用fsck指令使用-y参数检查并尝试修复数据分区;
19.步骤s32:根据fsck返回值判断是否存在无法修复的异常,如有则格式化数据分区;
20.步骤s33:调用mount指令挂载数据分区。
21.在一个具体的可实施方案中,所述配置分区包括文件系统元数据、page bitmap、多个存储键值对的page、冗余的page bitmap、冗余的文件系统元数据区域,其中,
22.所述page bitmap区域的每个扇区包括496字节的bitmap和16字节校验值,校验值用于检查bitmap的完整性,所述bitmap用于标记page是否被占用,每个page对应一个bit;
23.所述page由头部、头部校验和数据区域构成,其中,所述头部区域由键、预留段、数据长度、数据校验构成,头部区域的键与linux系统中的文件路径相对应,头部校验用于检查头部自身的完整性,数据校验用于检查数据的完整性。
24.在一个具体的可实施方案中,所述步骤s4包括:
25.步骤s41:以o_direct和o_sync模式打开配置分区对应的块设备;
26.步骤s42:快速扫描配置分区,建立文件索引,其中,所述快速扫描使用文件系统元数据定位page位置,使用pagebitmap判断page是否有效;
27.步骤s43:通过page的校验机制检查数据的完整性,发现异常时使用冗余数据进行修复;
28.步骤s44:构造并挂载一个用户空间文件系统,其中,所述用户空间文件系统是用户空间访问配置分区的窗口。
29.在一个具体的可实施方案中,所述步骤s5包括:
30.步骤s51:将第一应用分区和第二应用分区标记为默认应用分区或者备份应用分区,其中,所述标记操作的依据为配置分区的配置文件;
31.步骤s52:检查备份应用分区是否存在无法修复的异常,如有则使用默认应用分区的数据修复备份应用分区;
32.步骤s53:以读写模式挂载备份应用分区;
33.步骤s54:以只读模式挂载默认应用分区。
34.第二方面,本技术实施例提供了一种嵌入式linux系统掉电保护装置,所述装置包括:
35.分区管理模块,用于将非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区,并进行初始化;
36.系统分区挂载模块,将系统分区和内存文件系统联合挂载到根路径;
37.数据分区挂载模块,用于检查并修复数据分区、挂载数据分区;
38.配置分区管理模块,用于建立配置分区索引表、修复配置分区、构建用户空间文件系统,挂载所述用户空间文件系统;
39.应用分区挂载模块,用于检查并修复第一应用分区或者第二应用分区,挂载第一应用分区和第二应用分区。
40.在上述方案中,将linux系统的非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区;将系统分区使用overlayfs联合挂载到根路径,系统分区为只读层,内存文件系统为读写层,既实现了根路径可读写,又保护了系统分区;将配置分区使用掉电安全的文件系统挂载,应用冗余和校验措施,牺牲空间和效率,换取运行时配置文件写入的掉电安全,保证增删改查配置数据的原子性,使用用户空间文件系统提供友好的用户接口;两个应用分区互为冗余备份,备份应用分区可用于软件升级,即使升级意外中断也不影响设备运行。
41.第三方面,本技术实施例提供了一种计算机设备,所述计算机设备包括处理器和非易失性存储器,所述非易失性存储器存储有计算机程序,所述计算机程序在所述处理器上执行时实现第一方面任一项实施例所述的方法。
附图说明
42.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。
43.图1为本技术实施例提供的方法的整体流程;
44.图2为本技术实施例的非易失性存储介质分区情况,以及各分区的文件系统类型、挂载方式、挂载路径;
45.图3为本技术实施例的配置分区文件系统总体架构;
46.图4为本技术实施例的配置分区文件系统pagebitmap区域构成;
47.图5为本技术实施例的配置分区文件系统page构成。
具体实施方式
48.为方便理解本技术实施例提供的方法,首先介绍一下涉及到的名词:
49.linux:一种操作系统内核的名称,基于该内核的操作系统一般统称为linux操作系统。
50.根路径:linux操作系统下一切皆为文件,文件都对应一个路径,根路径是所有路径的根。
51.aufs:全称是advanced multi-layered unification filesytem,主要功能是把多个目录结合成一个目录,对外使用。
52.overlayfs:linux内核自带的的一种文件系统,主要功能是把多个目录结合成一个目录,对外使用。
53.ext4:第四代扩展文件系统(英语:fourth extended filesystem),是linux系统
下最常用的文件系统,是一个具备日志功能的文件系统。
54.tmpfs:临时文件系统,是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似像,但不完全相同。和ramdisk一样,tmpfs可以使用ram,但它也可以使用swap分区来存储,而且传统的ramdisk是个块设备,要用mkfs来格式化它,才能真正地使用它。而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以使用了。tmpfs是最好的基于内存的文件系统。
55.挂载:由操作系统使一个存储设备上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。
56.sdk:软件开发工具包是为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
57.bitmap:一种数据结构,代表了有限域中的稠集(dense set),每一个元素至少出现一次,没有其他的数据和元素相关联。在索引,数据压缩等方面有广泛应用。
58.init:linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核会在过去曾使用过init的几个地方查找它,它的正确位置(对linux系统来说)是/sbin/init。
59.vfs:(virtual file system)的作用就是采用标准的unix系统调用读写位于不同物理介质上的不同文件系统,为各类文件系统提供了统一的应用编程接口。vfs是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。
60.用户空间文件系统:(filesystem in userspace,简称fuse)是操作系统中的概念,指完全在用户态实现的文件系统。目前linux通过内核模块对此进行支持。
61.emmc:embedded multi media card,嵌入式多媒体卡。
62.fsck:file system check,linux系统中的一个工具,用来检查和维护文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查和尝试修复。
63.md5:(md5 message-digest algorithm),一种信息摘要算法,可以产生出一个128位(16字节)的散列值,用于确保信息的完整一致。
64.ddr:double data rate sdram,双倍速率同步动态刷新随机访问存储器,一般称为内存条。
65.为了对本技术的技术方案有更进一步的了解,下面结合附图详细说明本技术的技术方案的一种具体实施案例,该案例所涉及的硬件平台信息如下:
66.处理器:6核armv8.2
67.存储:16gb emmc、8gbddr
68.操作系统:ubuntu 18.04.5lts
69.内核版本:linux4.19.140
70.参考图1,该具体实施案例包括以下步骤:
71.步骤s1:将非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区,并进行初始化。
72.如图2所示,将linux系统非易失性存储介质emmc划分为5个区域,分别是系统分区、配置分区、第一应用分区、第二应用分区、数据分区,对上述分区进行格式化操作,并填
充初始文件。
73.系统分区的文件系统类型为ext4,初始文件主要有内核镜像、设备树、根文件系统、sdk库文件等,上述文件关系到设备能否启动,因此需要重点保护。
74.配置分区的文件系统类型为自定义的文件系统,初始文件主要有操作系统配置文件和应用软件配置文件,配置文件需要运行时更新,因此配置分区必须以可读写方式挂载,并做到写入时掉电安全。
75.第一应用分区和第二应用分区的文件系统类型为ext4,初始文件主要有业务软件可执行文件、算法软件可执行文件、动态库文件、算法模型数据文件。
76.数据分区的文件系统类型为ext4,存储日志文件、临时文件等设备运行过程中产生的数据,无需初始文件。
77.步骤s2:将系统分区和内存文件系统联合挂载到根路径;
78.具体的,该步骤包括以下步骤:
79.步骤s21:构建一个系统分区挂载程序伪装成系统的init程序,其中,所述init程序的路径至少包括/sbin/init。
80.步骤s22:在上述系统分区挂载程序中采用overlayfs实现系统分区和内存文件系统tmpfs联合挂载到一个临时路径,其中,系统分区作为overlayfs的只读层,内存文件系统tmpfs作为overlayfs的读写层,既实现了根路径可读写,又做到了系统分区只读保护。
81.步骤s23:调用pivot_root指令将所述临时路径切换为根路径;
82.步骤s24:调用mount指令使用remount,ro参数将系统分区切换为只读,从而在操作系统层面禁止任何数据写入系统分区,杜绝掉电时损坏。
83.步骤s25:执行真实的系统init程。init程序是linux系统操作中不可缺少的程序之一,它是由内核启动的第一个用户级进程,其路径一般为/sbin/init。
84.步骤s3:检查并修复数据分区、挂载数据分区。
85.具体的,包括以下步骤:
86.步骤s31:调用fsck指令使用-y参数检查并尝试修复数据分区。
87.步骤s32:根据fsck返回值判断是否存在无法修复的异常,如有则格式化数据分区。
88.步骤s33:步骤s33:调用mount指令挂载所述数据分区。
89.具体的,在步骤s32中检查和修复完成后,将数据分区挂载到用户目录的data子目录。
90.数据分区存储设备运行过程中产生的数据,包括日志文件、临时文件等。这些文件即使丢失也不会影响设备正常运行,因此,当检查到数据分区存在不可修复的异常时,可以直接格式化数据分区。
91.由于后续的步骤会产生操作日志,这些日志需要存储到数据分区,因此数据分区要先于配置分区和应用分区挂载。
92.步骤s4:建立配置分区索引表、修复配置分区、构建用户空间文件系统,挂载所述用户空间文件系统。
93.具体的,在具体挂载时,将分区索引表、修复配置分区、构建用户空间文件系统挂载到用户目录的config子目录。
94.参考图3,所示配置分区包括为至少以下区域:文件系统元数据、pagebitmap、多个存储键值对的page、冗余的page bitmap、冗余的文件系统元数据,为方便用户程序访问配置分区,与linux用户空间文件系统结合,用户程序可以像读写普通文件一样读写配置分区的文件。
95.参考图4,在pagebitmap区域,每个磁盘扇区的512字节包括496字节的bitmap和16字节校验数据,使用md5校验值检查bitmap的完整性。所述bitmap用于标记page是否被占用,每个page对应一个bit。
96.参考图5,每个page由133字节的头部、16字节的头部校验和不定长的数据区域构成,其中头部区域由键、预留段、数据长度、数据校验构成。头部区域的键与linux系统中的文件路径相对应,数据长度的最大值在文件系统格式化时确定。头部校验用于检查头部自身的完整性,数据校验用于检查数据的完整性,均使用md5值校验。
97.同一个的文件被重复保存在3个page中,如果某个page在写入时发生掉电,当该文件被访问时,检查到该文件的重复一致性存在异常,就会使用冗余的page来恢复异常的page。通过数据校验和冗余备份机制,牺牲空间和效率确保增、删、改、查操作的原子性,做到即使配置文件写入过程中发生掉电,再次上电后,配置文件也能自动回滚到修改前的完整状态。
98.具体来说,包括以下步骤:
99.步骤s41:以o_direct和o_sync模式打开配置分区对应的块设备;
100.步骤s42:快速扫描配置分区,建立文件系统索引,其中,所述快速扫描使用文件系统元数据定位page位置,使用page bitmap判断page是否有效;
101.步骤s43:通过page的校验机制检查数据的完整性,发现异常时使用冗余数据进行修复;
102.步骤s44:构造一个用户空间文件系统,挂载到用户目录的config子目录,其中,所述用户空间文件系统是用户空间访问配置分区的窗口。
103.步骤s5:检查并修复第一应用分区或者第二应用分区,挂载第一应用分区和第二应用分区。
104.具体的,包括以下步骤:
105.步骤s51:将第一应用分区和第二应用分区标记为默认应用分区或者备份应用分区,其中,所述标记操作的依据为配置分区的配置文件;
106.具体的,根据配置分区的配置文件app-block-device中的配置项,将第一应用分区和第二应用分区确定为默认应用分区或者备份应用分区。
107.步骤s52:检查备份应用分区是否存在无法修复的异常,如有则使用默认应用分区的数据修复备份应用分区;
108.步骤s53:以读写模式挂载备份应用分区;
109.步骤s54:以只读模式挂载默认应用分区。
110.具体的,检查并修复备份应用分区,将默认应用分区挂载到用户目录的app子目录,将备份应用分区挂载到用户目录的app-backup子目录。
111.默认应用分区以只读方式挂载,禁止任何数据写入,杜绝掉电时损坏,因此无需进行检测和修复;备份应用分区以读写方式挂载,用于应用软件升级,升级过程由于掉电或者
网络原因异常中止时,在系统再次启动时,如果检测到备份应用分区存在不可修复的异常或者数据完整性存在问题,则使用默认应用分区恢复备份应用分区。
112.通过上述描述可看出,本技术实施例提供的方法将linux系统的非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区;将系统分区使用overlayfs联合挂载到根路径,系统分区为只读层,内存文件系统为读写层,既实现了根路径可读写,又保护了系统分区;将配置分区使用掉电安全的文件系统挂载,应用冗余和校验措施,牺牲空间和效率,换取运行时配置文件写入的掉电安全,保证增删改查配置数据的原子性,使用用户空间文件系统提供友好的用户接口;两个应用分区互为冗余备份,备份应用分区可用于软件升级,即使升级意外中断也不影响设备运行。
113.与上述方法实施例相对应,本技术还提供一种嵌入式linux系统掉电保护装置,所述装置包括:
114.分区管理模块,用于将非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区,并进行初始化;
115.系统分区挂载模块,将系统分区和内存文件系统联合挂载到根路径;
116.数据分区挂载模块,用于检查并修复数据分区、挂载数据分区;
117.配置分区管理模块,用于建立配置分区索引表、修复配置分区、构建用户空间文件系统,挂载所述用户空间文件系统;
118.应用分区挂载模块,用于检查并修复第一应用分区或者第二应用分区,挂载第一应用分区和第二应用分区。
119.上述各个模块的具体功能可参考方法中的相关描述,在此不再一一赘述。
120.通过上述描述可看出,本技术提供的装置将linux系统的非易失性存储介质划分为系统分区、配置分区、第一应用分区、第二应用分区、数据分区;将系统分区使用overlayfs联合挂载到根路径,系统分区为只读层,内存文件系统为读写层,既实现了根路径可读写,又保护了系统分区;将配置分区使用掉电安全的文件系统挂载,应用冗余和校验措施,牺牲空间和效率,换取运行时配置文件写入的掉电安全,保证增删改查配置数据的原子性,使用用户空间文件系统提供友好的用户接口;两个应用分区互为冗余备份,备份应用分区可用于软件升级,即使升级意外中断也不影响设备运行。
121.此外,还提供了一种计算机设备,所述计算机设备包括处理器和非易失性存储器,所述非易失性存储器存储有计算机程序,所述计算机程序在所述处理器上执行时实现上述嵌入式linux系统掉电保护方法。
122.本说明书的一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本技术的保护范围之内。
123.以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1