CN113568787A - 一种掉电保护方法、计算设备及存储介质 - Google Patents

一种掉电保护方法、计算设备及存储介质 Download PDF

Info

Publication number
CN113568787A
CN113568787A CN202111111665.6A CN202111111665A CN113568787A CN 113568787 A CN113568787 A CN 113568787A CN 202111111665 A CN202111111665 A CN 202111111665A CN 113568787 A CN113568787 A CN 113568787A
Authority
CN
China
Prior art keywords
directory
partition
file system
root
mounting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111111665.6A
Other languages
English (en)
Inventor
潘学荣
翁英杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202111111665.6A priority Critical patent/CN113568787A/zh
Publication of CN113568787A publication Critical patent/CN113568787A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种掉电保护方法、计算设备及存储介质,其中方法包括步骤:建立根分区的新挂载点来绑定挂载根分区,并建立堆叠分区的挂载点来挂载堆叠分区;在所述根分区的新挂载点建立下层目录,在所述堆叠分区的挂载点建立上层目录;对所述上层目录中的数据进行清理;基于清理后的上层目录和所述下层目录合并形成堆叠文件系统;以及挂载所述堆叠文件系统,并将所述堆叠文件系统作为新的根文件系统来引导所述计算设备的操作系统启动。根据本发明的掉电保护方法,能确保在异常掉电后操作系统正常启动,并且可以保证一个或多个目录下的数据在下次重启后保留。

Description

一种掉电保护方法、计算设备及存储介质
技术领域
本发明涉及计算机及操作系统技术领域,特别涉及一种掉电保护方法、计算设备及存储介质。
背景技术
操作系统(例如Linux系统)在遭遇异常掉电后,其系统文件可能会损坏,从而导致操作系统无法正常启动。
针对因异常掉电而无法正常启动操作系统的问题,现有技术中,大多采用堆叠文件系统或者调整文件系统挂载方式的方法来减缓异常掉电对文件系统的影响。其中堆叠文件系统的方法主要利用OverlayFS、AUFS等堆叠文件系统的统一挂载和独立读写权限设置实现读写分离,保护根分区不会被真正写入数据。现有技术中通过Overlayfs方案实现的读写分离和掉电保护方法,通常使用tmpfs作为上层目录,写入的位置是在内存中,但是,这些写入的内容待下次系统重启后,包括用户数据在内的全部内容均不会保留。
为此,需要一种掉电保护方法,以解决上述技术方案中存在的问题。
发明内容
为此,本发明提供一种掉电保护方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种掉电保护方法,在计算设备中执行,包括步骤:建立根分区的新挂载点来绑定挂载根分区,并建立堆叠分区的挂载点来挂载堆叠分区;在所述根分区的新挂载点建立下层目录,在所述堆叠分区的挂载点建立上层目录;对所述上层目录中的数据进行清理;基于清理后的上层目录和所述下层目录合并形成堆叠文件系统;以及挂载所述堆叠文件系统,并将所述堆叠文件系统作为新的根文件系统来引导所述计算设备的操作系统启动。
可选地,在根据本发明的掉电保护方法中,对所述上层目录中的数据进行清理的步骤包括:获取持久化目录列表,遍历所述持久化目录列表中包含的一个或多个持久化目录;将所述上层目录下除所述一个或多个持久化目录之外的数据删除,以保留所述一个或多个持久化目录。
可选地,在根据本发明的掉电保护方法中,所述一个或多个持久化目录包括用户目录,以便保留所述用户目录下的用户数据。
可选地,在根据本发明的掉电保护方法中,将所述上层目录下除所述一个或多个持久化目录之外的数据删除的步骤包括:通过for val in $list 命令循环遍历所述持久化目录列表中的list变量,将读取到的值作为find命令的筛选值,以实现对不包含在所述持久化目录列表中的数据进行删除。
可选地,在根据本发明的掉电保护方法中,将所述堆叠文件系统作为新的根文件系统来引导操作系统启动的步骤包括:运行所述堆叠文件系统中的第一个系统进程,以便启动操作系统。
可选地,在根据本发明的掉电保护方法中,在建立堆叠分区的挂载点之前,包括步骤:建立堆叠分区,以便通过所述堆叠分区存储操作系统运行过程中产生的数据。
可选地,在根据本发明的掉电保护方法中,在建立根分区的新挂载点来绑定挂载根分区之前,包括步骤:对所述操作系统的内核进行解压,并在内存中运行解压后的内核。
可选地,在根据本发明的掉电保护方法中,绑定挂载根分区的步骤包括:将所述根分区的原挂载点绑定挂载到所述新挂载点上。
可选地,在根据本发明的掉电保护方法中,在堆叠分区的挂载点建立上层目录包括:在堆叠分区的挂载点建立上层目录和工作目录,所述工作目录适于存放临时文件和间接文件。
可选地,在根据本发明的掉电保护方法中,所述堆叠文件系统包括:下层目录,适于以只读的方式挂载所述根分区;上层目录,适于以可读写的方式挂载所述堆叠分区;合并目录,适于将所述上层目录和下层目录进行合并后挂载,以实现挂载所述堆叠文件系统。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的掉电保护方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,提供了一种掉电保护方法,在启动操作系统时,通过修改原有的根文件系统的挂载方式,建立根分区的新挂载点,并建立堆叠分区的挂载点,通过在根分区的新挂载点建立用于形成堆叠文件系统的下层目录,在堆叠分区的挂载点建立用于形成堆叠文件系统的上层目录,并且,在基于上层目录和下层目录合并形成堆叠文件系统之前,通过对上层目录中数据进行清理,可以将因异常掉电而保存在堆叠分区中的损坏性操作数据进行清理,并且,在清理时可以保留用户需求的数据。这样,不仅能够避免操作系统重新启动时出现错误,确保在异常掉电后操作系统正常启动,实现掉电保护的效果,而且,能够实现对用户需求的目录进行持久化保留。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的掉电保护方法200的流程图;以及
图3示出了根据本发明一个实施例的堆叠文件系统(新的根文件系统)的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是示例计算设备100的示意框图。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还可以包括储存接口总线134。储存接口总线134实现了从储存设备132(例如,可移除储存器136和不可移除储存器138)经由总线/接口控制器130到基本配置102的通信。操作系统120、应用122以及数据124的至少一部分可以存储在可移除储存器136和/或不可移除储存器138上,并且在计算设备100上电或者要执行应用122时,经由储存接口总线134而加载到系统存储器106中,并由一个或者多个处理器104来执行。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图像处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然, 计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、数码照相机、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。甚至可以被实现为服务器,如文件服务器、数据库服务器、应用程序服务器和WEB服务器等。本发明的实施例对此均不做限制。
在根据本发明的实施例中,计算设备100被配置为执行根据本发明的掉电保护方法200。其中,计算设备100中包含执行根据本发明的掉电保护方法200的多条程序指令,使得本发明的掉电保护方法200可以在计算设备中执行。
图2示出了根据本发明一个实施例的掉电保护方法200的流程图。应当指出,在本发明的具体实施例中,仅以Linux操作系统为例来对本发明的掉电保护方法进行详细说明,但本发明的掉电保护策略并不限于Linux操作系统。
应当指出,在计算设备中的操作系统启动时,通过执行根据本发明的掉电保护方法200,能避免因异常掉电而影响系统数据、导致操作系统启动失败的问题,确保操作系统在掉电后能够正常启动,从而实现对操作系统的掉电保护功能,并且在此基础上实现一个或多个目录下的数据在系统重启后可以保留。
根据本发明的一个实施例,在启动操作系统时,在启动装载阶段通过传递给内核一个参数,来引导文件系统挂载程序,通过运行该文件系统挂载程序可以实现本发明的掉电保护方法200。在一种实现方式中,文件系统挂载程序可以命名为overlay.sh,并可以放置在root分区的/sbin/目录下。传递给内核的参数例如为init =/sbin/overlay.sh。
如图2所示,方法200始于步骤S210。
需要说明的是,在启动操作系统时,首先对操作系统的内核进行解压,并在内存中运行解压后的内核。随后会挂载根文件系统所在的磁盘分区(即根分区),应当指出,根据本发明的技术方案,修改了原有的根文件系统的挂载方式。具体地,在步骤S210中,通过建立根分区的新挂载点来绑定挂载根分区,并建立堆叠分区的挂载点来挂载堆叠分区。这里,需要说明的是,根分区(即root分区)是预先划分好的磁盘分区,并且是通过绑定挂载到建立的新挂载点上。本发明并不是基于原有的挂载点来挂载根分区,而是新建立了新挂载点,基于新挂载点来绑定挂载根分区。此时,原挂载点(通常为“/”)依然存在,此时的根文件系统存在两个挂载点,分别为原挂载点和新挂载点。
并且,在建立堆叠分区的挂载点之前,预先创建堆叠分区(即overlay分区)。这里,在创建堆叠分区之前,在磁盘上已经预先划分好了堆叠分区(overlay分区)和根分区(root分区),因此,通过定义和设置相应的分区即可实现创建堆叠分区。例如,可以定义root分区为/dev/sda3磁盘分区,定义overlay分区为/dev/sda4磁盘分区。
在一种实现方式中,通过命令 mkdir /mnt/lower来建立root分区的新挂载点,来作为root分区绑定挂载的挂载点,以便将root分区挂载到新挂载点/mnt/lower上。同理,通过命令mkdir /mnt/overlay来建立堆叠分区(overlay分区)的挂载点,作为overlay分区的挂载点,以便将overlay分区挂载到overlay分区的挂载点/mnt/overlay上。其中,/mnt可通过命令mount -t tmpfs inittemp /mnt的方式来挂载。
在一种实现方式中,通过将根分区的原挂载点绑定挂载到新挂载点/mnt/lower上,便可以实现基于新的挂载点来绑定挂载根分区。这里,原挂载点通常为“/”。
随后,在步骤S220中,在根分区的新挂载点(/mnt/lower)上建立下层目录(即,用于形成堆叠文件系统的下层目录)。换言之,将根分区的新挂载点作为堆叠文件系统的下层目录,以便将根分区挂载在堆叠文件系统的下层目录。并且,在堆叠分区的挂载点(/mnt/overlay)上建立上层目录(即,用于形成堆叠文件系统的上层目录)。换言之,将堆叠分区的挂载点作为堆叠文件系统的上层目录,以便将堆叠分区挂载在堆叠文件系统的上层目录。
在一种实现方式中,堆叠文件系统例如可以通过OverlayFS来实现。进一步而言,在堆叠分区的挂载点/mnt/overlay上建立上层目录,实际上包括建立用于形成OverlayFS堆叠文件系统的上层目录upperdir、工作目录workdir。其中,workdir表示在堆叠文件系统挂载后用于存放临时文件和间接文件的工作目录。此外,堆叠文件系统还包括合并目录mergedir。
在一种实现方式中,可以通过以下命令来实现在堆叠分区的挂载点建立upperdir、workdir和mergedir目录:
mkdir /mnt/overlay/upper
mkdir /mnt/overlay/work
mkdir /mnt/newroot
这里,将/mnt/newroot作为合并目录mergedir的挂载点,该挂载点也即是最终形成的堆叠文件系统的挂载点。
随后,在步骤S230中,对上层目录中的数据进行清理。
随后,在步骤S240中,基于清理后的上层目录和所述下层目录合并形成堆叠文件系统。这里,也即是,基于清理后的上层目录挂载的堆叠分区、下层目录挂载的根分区来合并形成了堆叠文件系统。
最后,在步骤S250中,挂载堆叠文件系统,并将堆叠文件系统作为新的根文件系统来引导计算设备100中的操作系统启动。
应当指出,根据本发明的实施例,在启动操作系统时,并不是挂载原有的根文件系统,而是通过执行掉电保护方法200来构建堆叠文件系统作为新的根文件系统。 其中,在构建堆叠文件系统过程中,是通过分别建立堆叠文件系统所需的上层目录、下层目录,并通过合并目录实现将上层目录、下层目录合并形成堆叠文件系统进行挂载。
根据本发明的一个实施例,堆叠文件系统例如可以通过 OverlayFS来实现,基于OverlayFS的挂载机制来实现对新的根文件系统的挂载。需要说明的是, OverlayFS是一种面向Linux的文件系统服务,基于OverlayFS能实现面向其他文件系统的联合挂载,OverlayFS依赖并建立在其他文件系统之上。OverlayFS堆叠文件系统包括一个或多个下层目录(lowerdir)、上层目录(upperdir)、合并目录(mergedir)。其中,下层目录适于以只读的方式挂载文件目录,上层目录适于以可读写的方式挂载文件目录。合并目录适于将上层目录和下层目录中的文件目录进行合并后挂载到挂载点,以实现堆叠文件系统的挂载。这里,基于OverlayFS机制,最终向用户呈现的堆叠文件系统是合并目录,也就是说,用户所看到的堆叠文件系统的根目录下的内容是挂载时所指定的文件目录的合集。
图3示出了根据本发明一个实施例的堆叠文件系统(新的根文件系统)的结构示意图。
如图3所示,在本发明的实施例中,通过在根分区的新挂载点/mnt/lower上建立下层目录lowerdir、在堆叠分区的挂载点/mnt/overlay上建立上层目录upperdir和工作目录workdir,并通过合并目录mergedir将下层目录、上层目录和工作目录中的文件目录进行合并后挂载到挂载点/mnt/newroot,以实现堆叠文件系统(新的根文件系统)的挂载。
根据本发明构建的包括上层目录(upperdir)、下层目录(lowerdir)、合并目录(mergedir)的OverlayFS堆叠文件系统,其中,将根分区挂载到堆叠文件系统的下层目录,并将堆叠分区挂载到堆叠文件系统的上层目录,从而形成一个堆叠文件系统结构的新的根文件系统,基于该新的根文件系统来引导操作系统启动。还应当指出的是,堆叠分区(overlay)下实际上包括两个目录分别为upperdir 和workdir。这里,是以堆叠分区下的upperdir目录作为OverlayFS堆叠文件系统的上层目录。构建的合并目录(mergedir)需要lowerdir、upperdir、workdir,最终呈现给用户的是lowerdir与upperdir合并后的结果。
应当指出,本发明中的新的根文件系统是挂载到/mnt/newroot,并不是挂载在内存文件系统,新的根文件系统中的上层目录、下层目录挂载的均是磁盘分区。根据堆叠文件系统中的上层目录的可读写模式,堆叠分区以可读写的方式挂载到/mnt/overlay挂载点,从而堆叠分区的权限为可读写;根据下层目录的只读模式,根分区以只读方式绑定挂载到/mnt/lower挂载点,从而根分区的权限为只读。这样,在基于堆叠文件系统作为新的根文件系统挂载之后,如果发生异常掉电,那么操作系统在运行过程中产生的数据均会写入到上层目录对应的磁盘分区(即堆叠分区)上,从而可能导致操作系统在下次启动时出现错误。
针对该问题,在本发明的实施例中,在基于上层目录和下层目录合并形成堆叠文件系统之前,通过执行步骤S230来对上层目录中的数据进行清理。本发明通过对上层目录中数据进行清理,可以实现将因掉电而在操作系统中产生的保存在堆叠分区中的损坏性操作数据进行清理,这样能够避免在上电后操作系统重新启动时出现错误,实现掉电保护的效果。
在一个实施例中,在对上层目录进行清理时,可以针对影响操作系统启动的系统数据进行清理,保留用户数据。具体地,本发明可以预先建立一个持久化目录列表并保存在根文件系统(对应于挂载在下层目录的根分区)中,持久化目录列表包含需要持久化保留的一个或多个目录,换言之,该持久化目录列表中包含的一个或多个持久化目录。
具体地,可以根据以下方法来对上层目录中的数据进行清理:
从根文件系统中获取持久化目录列表,遍历持久化目录列表中包含的一个或多个持久化目录,即需要保留的一个或多个目录。将上层目录下除一个或多个持久化目录之外的数据进行删除,以保留一个或多个持久化目录。这样,实现了持久化保留用户需求的目录的效果。
在一个实施例中,一个或多个持久化目录包括用户目录,用户目录下可以包含一个或多个存储有用户数据的文件,从而在对上层目录中的数据进行清理后,可以保留用户目录下的用户数据。
需要说明的是,在基于上层目录和下层目录合并形成堆叠文件系统之前,通过对上层目录中数据进行清理,可以将因掉电而在操作系统中产生的保存在堆叠分区中的损坏性操作数据进行清理,并且,在清理时可以保留用户需求的数据。这样,不仅能够避免操作系统重新启动时出现错误,实现掉电保护的效果,而且,能够实现一个或多个持久化目录下的数据在系统重启后可以保留,以便对用户需求的目录进行持久化保留。
在一种实现方式中,预先建立的持久化目录列表例如为文本文件overlay_keep.list,可以通过以下命令来读取持久化目录列表:
list=$(cat /mnt/lower/etc/overlay_keep.list)
另外,通过执行for val in $list 命令循环遍历持久化目录列表中的list变量,将读取到的值作为find命令的筛选值,以实现对不包含在持久化目录列表中的数据进行删除,从而达到保留用户需求的目录文件、清空其余目录文件的效果。for val in $list 命令具体如下:
for val in $list; do
echo "$val"
if [ -z "$regexval" ]; then
regexval=$regexval"^/mnt/overlay/upper$val\(/.*\)"
else
regexval=$regexval"\|^/mnt/overlay/upper$val\(/.*\)"
fi
done
find /mnt/overlay/ -mindepth 1 ! -regex "$regexval" –delete。
在本发明的一个实施例中,在步骤S250中,挂载OverlayFS堆叠文件系统可以通过以下命令来实现:mount -t overlay -o lowerdir=/mnt/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work overlayfs-root /mnt/newroot。
在以上命令中,lowerdir表示下层目录,upperdir表示上层目录,workdir表示文件系统挂载后用于存放临时文件和间接文件的工作目录。命令结尾的/mnt/newroot表示最终的堆叠文件系统的挂载点目录。最终挂载后的堆叠文件系统作为新的根文件系统,基于新的根文件系统来启动操作系统。新的根文件系统是操作系统实际运行时的文件系统。
在一种实现方式中,挂载堆叠文件系统作为新的根文件系统、放弃原有的根文件系统,在Linux操作系统中可以通过以下命令来实现:
cd /mnt/newroot
pivot . mnt
根据上述命令,通过cd命令可以进入目录(/mnt/newroot),即,进入堆叠文件系统的合并目录,其中包含下层目录lowerdir的原根文件系统(即挂载在下层目录的根分区),这样能保证操作系统运行。
需要说明的是,通过pivot命令可以将原根文件系统放置到newroot目录的mnt目录下,并使得当前目录成为新的根文件系统。在上述pivot命令中,“.”表示当前目录,当前目录也即是/mnt/newroot目录(mergedir的挂载点,也即堆叠文件系统的挂载点)。这样,通过pivot命令,便实现将通过mergedir合并挂载在/mnt/newroot目录的堆叠文件系统作为Linux操作系统使用的新的根文件系统,并将原根文件系统放置到newroot /mnt目录下。
在挂载堆叠文件系统之后,通过运行堆叠文件系统中的第一个系统进程,来启动操作系统。在一种实现方式中,第一个系统进程为systemd的/sbin/init程序,运行堆叠文件系统的第一个系统进程可以通过以下命令实现:exec /sbin/init。这里,systemd 是一个Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序。/sbin/init程序是在内核加载完毕后主动呼叫的第一个进程,该进程最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设定、语言、文件系统格式及其他服务的启动等。Systemd和/sbin/init在Linux系统都是默认支持的。
综上,根据本发明的掉电保护方法,在启动操作系统时,通过修改原有的根文件系统的挂载方式,建立根分区的新挂载点,并建立堆叠分区的挂载点,通过在根分区的新挂载点建立用于形成堆叠文件系统的下层目录,在堆叠分区的挂载点建立用于形成堆叠文件系统的上层目录,并且,在基于上层目录和下层目录合并形成堆叠文件系统之前,通过对上层目录中数据进行清理,可以将因异常掉电而保存在堆叠分区中的损坏性操作数据进行清理,并且,在清理时可以保留用户需求的数据。这样,不仅能够避免操作系统重新启动时出现错误,确保在异常掉电后操作系统正常启动,实现掉电保护的效果,而且,能够实现对用户需求的目录进行持久化保留。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的掉电保护方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种掉电保护方法,在计算设备中执行,包括步骤:
建立根分区的新挂载点来绑定挂载根分区,并建立堆叠分区的挂载点来挂载堆叠分区;
在所述根分区的新挂载点建立下层目录,在所述堆叠分区的挂载点建立上层目录;
对所述上层目录中的数据进行清理;
基于清理后的上层目录和所述下层目录合并形成堆叠文件系统;以及
挂载所述堆叠文件系统,并将所述堆叠文件系统作为新的根文件系统来引导所述计算设备的操作系统启动。
2.如权利要求1所述的方法,其中,对所述上层目录中的数据进行清理的步骤包括:
获取持久化目录列表,遍历所述持久化目录列表中包含的一个或多个持久化目录;
将所述上层目录下除所述一个或多个持久化目录之外的数据删除,以保留所述一个或多个持久化目录。
3.如权利要求2所述的方法,其中,所述一个或多个持久化目录包括用户目录,以便保留所述用户目录下的用户数据。
4.如权利要求1-3中任一项所述的方法,其中,将所述堆叠文件系统作为新的根文件系统来引导操作系统启动的步骤包括:
运行所述堆叠文件系统中的第一个系统进程,以便启动操作系统。
5.如权利要求1-3中任一项所述的方法,其中,在建立堆叠分区的挂载点之前,包括步骤:
建立堆叠分区,以便通过所述堆叠分区存储操作系统运行过程中产生的数据。
6.如权利要求1-3中任一项所述的方法,其中,绑定挂载根分区的步骤包括:
将所述根分区的原挂载点绑定挂载到所述新挂载点上。
7.如权利要求1-3中任一项所述的方法,其中,在堆叠分区的挂载点建立上层目录包括:
在堆叠分区的挂载点建立上层目录和工作目录,所述工作目录适于存放临时文件和间接文件。
8.如权利要求1-3中任一项所述的方法,其中,所述堆叠文件系统包括:
下层目录,适于以只读的方式挂载所述根分区;
上层目录,适于以可读写的方式挂载所述堆叠分区;
合并目录,适于将所述上层目录和下层目录进行合并后挂载,以实现挂载所述堆叠文件系统。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述方法。
CN202111111665.6A 2021-09-23 2021-09-23 一种掉电保护方法、计算设备及存储介质 Pending CN113568787A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111111665.6A CN113568787A (zh) 2021-09-23 2021-09-23 一种掉电保护方法、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111111665.6A CN113568787A (zh) 2021-09-23 2021-09-23 一种掉电保护方法、计算设备及存储介质

Publications (1)

Publication Number Publication Date
CN113568787A true CN113568787A (zh) 2021-10-29

Family

ID=78174138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111111665.6A Pending CN113568787A (zh) 2021-09-23 2021-09-23 一种掉电保护方法、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN113568787A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114237811A (zh) * 2021-11-09 2022-03-25 南京信易达计算技术有限公司 一种瘦身客户端服务器虚拟化方法及虚拟瘦身客户端服务器
CN115878204A (zh) * 2023-01-20 2023-03-31 北京国科环宇科技股份有限公司 一种操作系统的处理方法、装置、计算机设备和介质
CN116909998A (zh) * 2023-09-12 2023-10-20 海马云(天津)信息技术有限公司 overlay文件系统下文件的处理方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050010747A1 (en) * 2003-07-07 2005-01-13 Gilliam Jerry A. Method and system for filesystem mount redirection
CN107479922A (zh) * 2017-08-04 2017-12-15 深圳市中兴物联科技有限公司 一种闪存数据管理方法、装置及计算机可读存储介质
CN110221940A (zh) * 2019-06-12 2019-09-10 湖南麒麟信安科技有限公司 基于堆叠文件系统的掉电恢复方法、系统及介质
CN110727545A (zh) * 2018-07-17 2020-01-24 中标软件有限公司 基于联合文件系统的掉电保护方法
CN112988464A (zh) * 2021-03-23 2021-06-18 武汉深之度科技有限公司 一种断电保护方法及计算设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050010747A1 (en) * 2003-07-07 2005-01-13 Gilliam Jerry A. Method and system for filesystem mount redirection
CN107479922A (zh) * 2017-08-04 2017-12-15 深圳市中兴物联科技有限公司 一种闪存数据管理方法、装置及计算机可读存储介质
CN110727545A (zh) * 2018-07-17 2020-01-24 中标软件有限公司 基于联合文件系统的掉电保护方法
CN110221940A (zh) * 2019-06-12 2019-09-10 湖南麒麟信安科技有限公司 基于堆叠文件系统的掉电恢复方法、系统及介质
CN112988464A (zh) * 2021-03-23 2021-06-18 武汉深之度科技有限公司 一种断电保护方法及计算设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114237811A (zh) * 2021-11-09 2022-03-25 南京信易达计算技术有限公司 一种瘦身客户端服务器虚拟化方法及虚拟瘦身客户端服务器
CN115878204A (zh) * 2023-01-20 2023-03-31 北京国科环宇科技股份有限公司 一种操作系统的处理方法、装置、计算机设备和介质
CN116909998A (zh) * 2023-09-12 2023-10-20 海马云(天津)信息技术有限公司 overlay文件系统下文件的处理方法和装置
CN116909998B (zh) * 2023-09-12 2023-12-12 海马云(天津)信息技术有限公司 overlay文件系统下文件的处理方法和装置

Similar Documents

Publication Publication Date Title
CN113568787A (zh) 一种掉电保护方法、计算设备及存储介质
CN112988252B (zh) 一种操作系统启动方法及计算设备
US10296423B2 (en) System and method for live virtual incremental restoring of data from cloud storage
US7913252B2 (en) Portable platform for executing software applications in a virtual environment
US7017004B1 (en) System and method for updating contents of a flash ROM
CN112988464A (zh) 一种断电保护方法及计算设备
US10592354B2 (en) Configurable recovery states
CN114398318B (zh) 用户空间文件系统的文件操作方法及用户空间文件系统
CN113076170B (zh) 一种远程协助方法、系统、装置、计算设备及存储介质
US10185573B2 (en) Caching based operating system installation
CN114610337A (zh) 一种多系统安装方法、计算设备及存储介质
CN114003258A (zh) 一种软件升级方法、计算设备及可读存储介质
CN114691226A (zh) 一种多操作系统切换运行方法、计算设备及存储介质
CN110471744B (zh) 密码修改方法、装置、设备和计算机可读存储介质
WO2022222351A1 (zh) 一种操作系统安装方法及计算设备
US11249767B2 (en) Boot assist zero overhead flash extended file system
CN112989427B (zh) 一种文件保护方法、计算设备及存储介质
CN113791873B (zh) 一种虚拟机创建方法、计算设备及存储介质
CN115617488A (zh) 操作系统迁移方法、装置、计算设备及存储介质
CN112231761A (zh) 一种设备挂载方法、计算设备及可读存储介质
CN113742140B (zh) 一种文件备份方法、装置及计算设备
US20160266960A1 (en) Information processing apparatus and kernel dump method
CN114510395A (zh) 一种应用程序监控方法、装置及计算设备
CN114020531A (zh) 一种操作系统还原方法、还原装置及计算设备
CN116483777A (zh) 一种文件存储管理方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination