CN110532032B - 一种开机文件系统检测方法以及相关设备 - Google Patents

一种开机文件系统检测方法以及相关设备 Download PDF

Info

Publication number
CN110532032B
CN110532032B CN201910703595.XA CN201910703595A CN110532032B CN 110532032 B CN110532032 B CN 110532032B CN 201910703595 A CN201910703595 A CN 201910703595A CN 110532032 B CN110532032 B CN 110532032B
Authority
CN
China
Prior art keywords
disk partition
fsck
file system
initialization
disk
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.)
Active
Application number
CN201910703595.XA
Other languages
English (en)
Other versions
CN110532032A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910703595.XA priority Critical patent/CN110532032B/zh
Publication of CN110532032A publication Critical patent/CN110532032A/zh
Priority to PCT/CN2020/106100 priority patent/WO2021018275A1/zh
Application granted granted Critical
Publication of CN110532032B publication Critical patent/CN110532032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Abstract

本申请实施例公开了一种开机文件系统检测方法,包括:通过内核态中的内核驱动检测到第一磁盘分区;通过内核驱动中的初始化函数完成对第一磁盘分区的初始化;通过初始化函数对第一磁盘分区进行文件系统检测fsck;向用户态初始化进程上报第一磁盘分区事件。本方法将磁盘分区的fsck流程提前至磁盘分区初始化阶段并行执行,不阻塞开机流程,同时避免了fsck流程每一次对磁盘的读写操作都需要经过用户态到内核态再到用户态的切换,提升fsck流程的速度,减少开机流程的耗时。

Description

一种开机文件系统检测方法以及相关设备
技术领域
本申请涉及存储技术领域,尤其涉及一种开机文件系统检测方法以及相关设备。
背景技术
终端设备具有易掉电性,终端设备在读写磁盘文件的过程中,若突然掉电,则容易导致磁盘文件损坏。因此,为了保证磁盘可用,在终端设备开机的过程中,需要对磁盘分区进行文件系统检测(file system check,FSCK),以检测磁盘分区是否损坏。
现有技术中,内核态(kernel mode)中的内核驱动检测到磁盘分区后,将会向用户态(user mode)上报磁盘分区事件,用户态中的用户空间进程(ueventd)监听到磁盘分区事件后,会生成相应的磁盘分区节点,后续用户态中的其它程序可以通过读写对应的节点读写磁盘分区。当用户态中的初始化进程(init)监听到磁盘分区节点生成后,init进程启动子进程文件系统检测(file system check,FSCK),fsck流程检测这些磁盘分区节点是否异常,若检测结果为正常,则init进程挂载磁盘分区。
在用户态下init进程启动fsck流程,fsck流程每一次对磁盘的读写操作(input/output,I/0)都需要经过用户态到内核态再到用户态的切换,增加开机流程的耗时。
发明内容
本申请实施例提供了一种开机文件系统检测方法以及相关设备,在内核态中的内核驱动检测到第一磁盘分区后,通过内核驱动中的初始化函数完成对第一磁盘分区的初始化。在内核态的初始化函数完成对第一磁盘分区的初始化后,初始化函数对第一磁盘分区进行文件系统检测fsck,完成fsck后,内核态的初始化函数向用户态初始化进程上报第一磁盘分区事件。避免了fsck流程每一次对磁盘的读写操作(input/output,I/0)都需要经过用户态到内核态再到用户态的切换,提升fsck流程的速度,减少开机流程的耗时。
本申请实施例第一方面提供了一种开机文件系统检测方法:
通过内核态中的内核驱动检测到第一磁盘分区,该第一磁盘分区可以为终端设备中任意一个磁盘分区,也可以为终端设备中任意多个磁盘分区;
通过内核驱动中的初始化函数完成对第一磁盘分区的初始化;
通过初始化函数对第一磁盘分区进行文件系统检测fsck;
向用户态初始化进程上报第一磁盘分区事件。
本申请实施例中,在内核态的初始化函数完成对第一磁盘分区的初始化后,初始化函数对第一磁盘分区进行文件系统检测fsck,完成fsck后,内核态的初始化函数向用户态初始化进程上报第一磁盘分区事件。避免了fsck流程每一次对磁盘的读写操作(input/output,I/0)都需要经过用户态到内核态再到用户态的切换,提升fsck流程的速度,减少开机流程的耗时。
结合第一方面,在第一方面实施例中,向用户态初始化进程上报第一磁盘分区事件之前,还包括:
记录第一磁盘分区的fsck的结果。
本申请实施例中,内核态的初始化函数对第一磁盘分区进行文件系统检测后,会将检测结果记录下来,以便用户态中的相关进程感知第一磁盘分区的文件系统检测结果。
结合第一方面,在第一方面实施例中,记录第一磁盘分区的fsck的结果,包括:
在超级块superblock中记录第一磁盘分区的fsck检测结果,和/或,
在第一磁盘分区中记录执行fsck的时间。
本申请实施例中,初始化函数对第一磁盘分区进行文件系统检测的过程中,会在第一磁盘分区中记录此次文件系统检测的执行时间,和/或,在超级块superblock中记录第一磁盘分区的fsck检测结果,以便用户态中的相关进程感知第一磁盘分区的文件系统检测结果,例如记录执行fsck的时间,用户态中的相关进程便可根据执行fsck的时间了解该磁盘分区的文件情况。
结合第一方面,在第一方面实施例中,通过初始化函数对第一磁盘分区进行文件系统检测fsck之前,还包括:
读取第一磁盘分区的第一页面;
根据第一页面的魔数,确定第一磁盘分区的文件系统属性,并调用与第一磁盘分区的文件系统属性对应的fsck流程。
本申请实施例中,内核态的初始化函数可以通过磁盘分区的魔数,确定该磁盘分区的文件系统属性,增加方法的实现灵活性。
结合第一方面,在第一方面实施例中,通过初始化函数对第一磁盘分区进行文件系统检测fsck,包括:
通过初始化函数中fsck流程对第一磁盘分区进行文件系统检测fsck,具体的:
fsck流程通过初始化函数中的第一函数指针簇对第一页面进行fsck,其中,第一函数指针簇中包括第一读指针以及第一写指针,第一读指针用于读取第一页面,第一写指针用于记录fsck的结果。
本申请实施例中,通过初始化函数中的第一函数指针簇对第一页面进行fsck,增加方法的实现灵活性。
结合第一方面,在第一方面实施例中,向用户态初始化进程上报第一磁盘分区事件之后,还包括:
用户态中的ueventd进程监听第一磁盘分区事件,并根据第一磁盘分区事件,建立第一节点;
通过初始化进程调用第一加载系统调用方式mount挂载第一节点,第一mount中携带fsck选项;
通过第一mount检测超级块;
确定第一磁盘分区的fsck的结果;
若fsck的结果为异常,则初始化进程修复第一磁盘分区;
通过初始化进程调用第二mount,其中第二mount中不携带fsck选项;
使用第二mount挂载第一节点。
本申请实施例中,提供了一种用户态的初始化进程感知内核态对第一磁盘分区的文件系统检测结果的方法,提升了方案的实现灵活性。
结合第一方面,在第一方面实施例中,向用户态初始化进程上报第一磁盘分区事件之后,还包括:
根据第一磁盘分区事件,建立第一节点之后,通过用户态初始化进程读取第一磁盘分区的第一页面;
若第一页面中fsck的结果为异常,则通过初始化进程对第一磁盘分区进行修复;
若第一页面中fsck检测结果为正常,则挂载第一节点。
本申请实施例中,在内核态初始化函数通过文件系统检测,检测出第一磁盘分区出现异常时,用户态初始化进程还可以修复该异常,增加方案的可行性。
第二方面提供了一种终端设备,该终端设备具有实现上述第一方面中开机文件系统检测方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面提供了一种终端设备,该终端设备包括:处理器、存储器、该处理器通过运行存储在该存储器内的软件程序、调用存储在该存储器内的数据,执行前述本申请实施例第一方面提供的各实施方式的方法。
第四方面提供了一种计算机程序产品,该计算机程序产品包括计算机程序指令,该计算机程序指令可通过处理器进行加载来实现上述第一方面及其各实现方式中的方法。
第五方面提供了一种计算机储存介质,用于储存计算机程序指令,其包含用于执行前述本申请实施例第一方面提供的各实施方式的步骤的程序。
第七方面,本申请实施例提供一种通信装置,该通信装置可以包括终端设备或者芯片等实体,通信装置包括:处理器、存储器;存储器用于存储指令;处理器用于执行存储器中的指令,使得通信装置执行如前述第一方面任一项的方法。
第八方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持网络设备实现上述方面中所涉及的功能,例如,例如发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,芯片系统还包括存储器,存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
从以上技术方案可以看出,本申请实施例具有以下优点:
在内核态中的内核驱动检测到第一磁盘分区后,通过内核驱动中的初始化函数完成对第一磁盘分区的初始化。在内核态的初始化函数完成对第一磁盘分区的初始化后,初始化函数对第一磁盘分区进行文件系统检测fsck,完成fsck后,内核态的初始化函数向用户态初始化进程上报第一磁盘分区事件。避免了fsck流程每一次对磁盘的读写操作(input/output,I/0)都需要经过用户态到内核态再到用户态的切换,提升fsck流程的速度,本方法将磁盘分区的fsck流程从用户态提前至内核态并行执行,不阻塞系统开机流程,减少开机流程的耗时。
附图说明
图1为本申请实施例提供的一种开机文件系统检测方法的实施例示意图;
图2为本申请实施例提供的一种开机文件系统检测方法的另一种实施例示意图;
图3为本申请实施例提供的一种开机文件系统检测方法的另一种实施例示意图;
图4为本申请实施例中终端设备的一种实施例示意图;
图5为本申请实施例中的终端设备的硬件结构示意图。
具体实施方式
本申请实施例提供了一种开机文件系统检测方法以及相关设备,在内核态中的内核驱动检测到第一磁盘分区后,通过内核驱动中的初始化函数完成对第一磁盘分区的初始化。在内核态的初始化函数完成对第一磁盘分区的初始化后,初始化函数对第一磁盘分区进行文件系统检测fsck,完成fsck后,内核态的初始化函数向用户态初始化进程上报第一磁盘分区事件。避免了fsck流程每一次对磁盘的读写操作(input/output,I/0)都需要经过用户态到内核态再到用户态的切换,提升fsck流程的速度,减少开机流程的耗时。
在介绍本实施例之前,首先介绍本实施例中可能出现的几个概念。应理解的是,以下的概念解释可能会因为本实施例的具体情况有所限制,但并不代表本申请仅能局限于该具体情况,以下概念的解释伴随不同实施例的具体情况可能也会存在差异。
文件系统检测:计算机中的文件系统一般会处于两种状态之一:清洁的(clean)或者脏的(dirty)。如果要在磁盘分区上挂载一个文件系统,这个文件系统必须是clean的,也就是说是结构完整的,元数据之间、元数据和数据之间是一致的。但有时文件系统的一致性可能被破坏,如系统掉电时,内存中的数据会丢失,或者由于磁盘发生故障,如磁盘坏道等,都会破坏文件系统数据的一致性。为了检查和维护不一致的文件系统,文件系统会提供文件系统检测(file system check,FSCK)来方便用户检查和修复文件系统。
本申请提出的开机文件系统检测方法,可应用于终端设备中。终端设备可以是指向用户提供语音和/或数据连通性的无线终端,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。无线终端可以经无线接入网(radio access network,RAN)与一个或多个核心网进行通信,无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。例如,个人通信业务(personalcommunication service,PCS)电话、无绳电话、会话发起协议(session initiationprotocol,SIP)话机、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)等设备。无线终端也可以称为系统、订户单元(subscriber unit)、订户站(subscriber station),移动站(mobile station)、移动台(mobile)、远程站(remote station)、接入点(access point)、远程终端(remoteterminal)、接入终端(access terminal)、用户终端(user terminal)、用户代理(useragent)、用户设备(user device)、或用户装备(user equipment,UE),具体这里不做限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例进行介绍。请参阅图1,图1为本申请实施例提供的一种开机文件系统检测方法的实施例示意图。
101、内核态中的内核驱动检测到第一磁盘分区。
本实施例中,终端设备开机启动后,首先内核态中的内核驱动检测磁盘,具体的,内核驱动检测磁盘中的第一磁盘分区,该第一磁盘分区可以为终端设备中任意一个磁盘分区,也可以为终端设备中任意多个磁盘分区。例如:第一磁盘分区为:“dev/block/mmcblk1”。
在一种可选的实现方式中:当内核驱动检测到终端设备中磁盘开头部分的分区表,该分区表中记录有整个磁盘中各个磁盘分区的分区号以及各个分区的长度,内核驱动可以通过读取该分区表检测到第一磁盘分区。
该内核驱动检测到第一磁盘分区后,执行步骤102。
102、内核驱动中的初始化函数完成对第一磁盘分区的初始化。
本实施例中,在内核驱动检测到第一磁盘分区后,终端设备调用内核驱动中的初始化函数完成对第一磁盘分区的初始化。该初始化函数可以为:add_partition()函数。
103、确定第一磁盘分区的文件系统属性。
本实施例中,在内核驱动的初始化函数完成对第一磁盘分区的初始化后,终端设备需要先确定该第一磁盘分区的文件系统属性。首先,内核驱动的初始化函数在完成第一磁盘分区的初始化之后,初始化函数启动文件系统检测(fsck)进程。然后,该文件系统检测通过第一函数指针簇对第一磁盘分区进行读写操作,用以确定第一磁盘分区的文件系统属性。
在一种可行的实施方式中,现有内核驱动中提供磁盘的块设备指针“structblock_device*bdev”,该“struct block_device*bdev”中提供函数指针簇“def_blk_aops”。内核驱动可以通过调用该函数指针簇“def_blk_aops”中的“blkdev_readpage”或“blkdev_readpages”完成对磁盘分区的读操作;通过调用该函数指针簇“def_blk_aops”中的“blkdev_writepage”或“blkdev_writepages”完成对磁盘分区的写操作。该函数指针簇也称为第一函数指针簇。需要说明的是,“def_blk_aops”仅是第一函数指针簇的一种示例,此处不对第一函数指针簇进行限定。
在另一种可行的实施方式中,还可以通过“read_mapping_page”完成对磁盘分区的读操作。还可以是块设备提供的其它函数,用于对磁盘分区的读操作或写操作,此处不作限定。
具体的,初始化函数调用的文件系统检测进程,通过第一函数指针簇读取第一磁盘分区的第一页面(page),该第一页面为第一磁盘分区的第一个页面,该第一页面的大小通常为4096字节(bytes,B)。初始化函数在读取的过程中,通过确定第一磁盘分区的魔数(magic number)的位置,确定第一磁盘分区的文件系统属性。
例如,第一磁盘分区为闪存友好文件系统(flash friendly file system,F2FS),初始化函数通过第一函数指针簇读取第一磁盘分区的第一页面。由于第一个页面中分区偏移“0x400-0x403”处,数值为“0xF2F52010”为F2FS。因此,当第一页面中分区偏移“0x400-0x403”处,读取到“0xF2F52010”时,初始化函数可以确定第一磁盘分区为F2FS。
初始化函数会根据读取结果与各种文件系统的魔数进行匹配,并根据匹配的结果确定该磁盘分区的文件系统属性。
在另一种可行的实施方式中,终端设备中规定文件系统属性为F2FS的磁盘分区才需要执行fsck。若磁盘分区为其它文件系统属性时,例如:第四代扩展文件系统(fourthextended file system,EXT4)则不执行fsck。以第一磁盘分区为例,若预先规定了F2FS执行fsck,EXT4不执行fsck。当步骤103中确定第一磁盘分区的文件系统属性为EXT4,则执行步骤106;当步骤103中确定第一磁盘分区的文件系统属性为F2FS,则执行步骤104。
104、初始化函数对第一磁盘分区进行文件系统检测。
本实施例中,初始化函数在确定第一磁盘分区的文件系统后,初始化函数通过调用的文件系统检测进程对第一磁盘分区进行文件系统检测。
具体的,文件系统检测进程通过读取第一磁盘分区中的文件系统信息,来检测第一磁盘分区中文件系统元数据是否正常。初始化函数对第一磁盘分区进行文件系统检测的过程中,会在第一磁盘分区中记录此次文件系统检测的执行时间,具体的,是通过第一函数指针簇记录的。
在一种可行的实现方式中,终端设备通过初始化函数对第一磁盘分区进行文件系统检测后,若检测的结果为异常,并且异常数目较小,例如异常数小于或等于1,此时初始化函数通过第一函数指针簇对第一磁盘分区中的异常进行修复。
105、记录第一磁盘分区的文件系统检测的结果。
本实施例中,当初始化函数对第一磁盘分区完成文件系统检测后,需要将第一磁盘分区的文件系统检测的结果记录下来。具体的可以记录与第一磁盘分区的第一页面,也就是第一磁盘分区的前4096字节内,也可以记录于磁盘中预先规定的其它位置,此处不作限定。
在一种可行的实现方式中,终端设备在结构体超级块(superblock)中记录第一磁盘分区的文件系统检测结果。具体的,在对应与第一磁盘分区的superblock中增加1个成员变量,该成员变量可以为“kernel_fsck”。当第一磁盘分区的文件系统检测结果为异常时,则将该成员变量设置为“1”;当第一磁盘分区的文件系统检测结果为正常时,则将该成员变量设置为“0”。
在一种可行的实现方式中,初始化函数对第一磁盘分区进行文件系统检测后,若检测的结果为异常,并且异常数目较小,例如异常数目小于或等于1,此时初始化函数通过第一函数指针簇对第一磁盘分区中的异常进行修复。修复后,初始化函数将超级块中的成员变量“kernel_fsck”设置为“0”,即认为修复后的第一磁盘分区为正常。
106、向用户态初始化进程上报第一磁盘分区事件。
本实施例中,在步骤105后,当内核态中的初始化函数记录第一磁盘分区的文件系统检测的结果后,内核态的内核驱动向用户态中的初始化进程(init进程)上报第一磁盘分区事件。
本申请实施例中,在内核态中的内核驱动检测到第一磁盘分区后,通过内核驱动中的初始化函数完成对第一磁盘分区的初始化。在内核态的初始化函数完成对第一磁盘分区的初始化后,初始化函数对第一磁盘分区进行文件系统检测fsck,完成fsck后,内核态的初始化函数向用户态初始化进程上报第一磁盘分区事件。避免了fsck流程每一次对磁盘的读写操作(input/output,I/0)都需要经过用户态到内核态再到用户态的切换,提升fsck流程的速度,减少开机流程的耗时。
当内核态的内核驱动向用户态的初始化进程上报第一磁盘分区事件后,用户态的初始化进程可以通过以下流程感知内核态对第一磁盘分区的文件系统检测结果。具体的,请参阅图2,图2为本申请实施例提供的一种开机文件系统检测方法的另一种实施例示意图。
201、通过用户态的初始化进程读取第一磁盘分区的第一页面。
本实施例中,用户态的ueventd进程监听到内核态的第一磁盘分区事件后,建立第一节点。终端设备通过用户态的初始化进程中init进程读取第一节点,具体的,通过读取第一节点读取第一磁盘分区的第一页面,该第一页面为第一磁盘分区的第一个页面(前4096字节)。具体的,初始化进程读取第一页面中的结构体:超级块,根据超级块中的成员变量“kernel_fsck”检测第一磁盘分区的文件系统检测的结果。
若检测的结果为异常,则执行步骤202;若检测的结果为正常,则执行步骤203。
202、若第一页面中文件系统检测的结果为异常,则通过初始化进程对第一磁盘分区进行文件系统检测。
本实施例中,内核态下初始化函数对第一磁盘分区中的元数据进行fsck,在一种情况下,初始化函数记录该fsck检测结果为异常,用户态的初始化进程init进程通过读取第一节点读取第一页面,此时读取第一页面的结果为:第一磁盘分区的文件系统检测结果异常。则用户态中的初始化进程init进程对第一磁盘分区的所有数据进行fsck。
在另一种可选的实施方式中,用户态中的初始化进程init进程对所有磁盘分区进行文件系统检测。
需要说明的是,若检测结果为异常,还可以通过初始化进程init进程对第一磁盘分区进行修复。
203、若第一页面中文件系统检测的结果为正常,则执行后续开机流程。
本实施例中,内核态下初始化函数对第一磁盘分区中的元数据进行fsck,在一种情况下,初始化函数记录该fsck检测结果为正常,用户态的初始化进程init进程通过读取第一节点读取第一页面,此时读取第一页面的结果为:第一磁盘分区的文件系统检测结果正常。则终端设备继续后续的开机流程。
本申请实施例中,提供了一种用户态的初始化进程感知内核态对第一磁盘分区的文件系统检测结果的方法,提升了方案的实现灵活性。
当内核态的内核驱动向用户态的初始化进程上报第一磁盘分区事件后,用户态的初始化进程可以通过其它流程感知内核态对第一磁盘分区的文件系统检测结果。具体的,请参阅图3,图3为本申请实施例提供的一种开机文件系统检测方法的另一种实施例示意图。
301、根据第一磁盘分区事件,建立第一节点。
本实施例中,用户态的ueventd进程监听到内核态的第一磁盘分区事件后,建立第一节点,该第一节点对应于第一磁盘分区。具体的,该第一节点可以为:“/dev/block/sdd1”。
302、通过初始化进程调用第一加载系统调用方式挂载第一节点。
本实施例中,终端设备通过初始化进程init进程调用第一加载系统调用方式(mount)挂载第一节点。mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。
该第一mount具有如下特性:第一mount中具有文件系统检测选项(fsck flag),该文件系统检测选项可以为“MS_KERNEL_FSCK”。具有文件系统检测选项的第一mount,可以检测磁盘分区中超级块的成员变量,该成员变量用于记录该磁盘分区的文件系统检测结果。例如,具有fsck选项的第一mount,可以检测第一磁盘分区中超级块的成员变量“kernel_fsck”。
303、通过第一加载系统调用方式检测第一磁盘分区的文件系统检测的结果。
本实施例中,第一加载系统调用方式检测第一磁盘分区的文件系统检测的结果,当检测结果为正常,即第一mount检测第一磁盘分区中超级块的成员变量“kernel_fsck”为“0”时,进入步骤305;当检测结果为异常,即第一mount检测第一磁盘分区中超级块的成员变量“kernel_fsck”为“1”时,进入步骤304。
304、若文件系统检测的结果为异常,则初始化进程修复第一磁盘分区。
本实施例中,若检测的结果为异常,并且异常数目较小,例如异常数目小于或等于1,则退出第一加载系统调用方式,此时初始化进程启动修复第一磁盘分区。
若修复成功,则执行步骤305。
305、使用第二加载系统调用方式挂载第一节点。
本实施例中,若检测的结果为正常,则初始化进程使用第二加载系统调用方式挂载第一节点,该第二加载系统调用方式无文件系统检测选项(fsck flag)。在初始化进程使用第二加载系统调用方式挂载第一节点后,继续初始化进程的后续流程。
本申请实施例中,提供了一种用户态的初始化进程感知内核态对第一磁盘分区的文件系统检测结果的方法,提升了方案的实现灵活性。
上述主要方法的角度对本申请实施例提供的方案进行了介绍。可以理解的是,上述终端设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对终端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块402中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
下面对本申请中的终端设备进行详细描述,请参阅图4,图4为本申请实施例中终端设备的一种实施例示意图。终端设备40包括:
检测模块401,用于通过内核态中的内核驱动检测到第一磁盘分区;
处理模块402,用于通过内核驱动中的初始化函数完成对第一磁盘分区的初始化;
检测模块401,还用于通过初始化函数对第一磁盘分区进行文件系统检测fsck;
上报模块403,用于向用户态初始化进程上报第一磁盘分区事件。
在本申请的一些实施例中,终端设备40包括:
处理模块402,还用于记录第一磁盘分区的fsck的结果。
在本申请的一些实施例中,终端设备40包括:
处理模块402,具体用于在超级块superblock中记录第一磁盘分区的fsck检测结果,和/或,
在第一磁盘分区中记录执行fsck的时间。
在本申请的一些实施例中,终端设备40包括:
处理模块402,还用于读取第一磁盘分区的第一页面;
处理模块402,还用于根据第一页面的读取结果,确定第一磁盘分区的文件系统属性,并调用与第一磁盘分区的文件系统属性对应的fsck流程。
在本申请的一些实施例中,终端设备40包括:
处理模块402,具体用于根据第一页面的魔数,确定第一磁盘分区的文件系统属性。
在本申请的一些实施例中,终端设备40包括:
检测模块401,具体用于通过初始化函数中fsck流程对第一磁盘分区进行文件系统检测fsck,具体的:
fsck流程通过初始化函数中的第一函数指针簇对第一页面进行fsck,其中,第一函数指针簇中包括第一读指针以及第一写指针,第一读指针用于读取第一页面,第一写指针用于记录fsck的结果。
在本申请的一些实施例中,终端设备40包括:
处理模块402,还用于通过用户态初始化进程读取第一磁盘分区的第一页面;
处理模块402,还用于若第一页面中fsck检测结果为异常,则通过初始化进程对第一磁盘分区进行修复;
处理模块402,还用于若第一页面中fsck检测结果为正常,则挂载第一节点。
在本申请的一些实施例中,终端设备40包括:
处理模块402,还用于根据第一磁盘分区事件,建立第一节点;
处理模块402,还用于通过初始化进程调用第一加载系统调用方式mount挂载第一节点,第一mount中携带fsck选项;
检测模块401,还用于通过第一mount检测第一磁盘分区的fsck的结果;
处理模块402,还用于若fsck的结果为异常,则初始化进程修复第一磁盘分区。
在本申请的一些实施例中,终端设备40包括:
检测模块401,还用于通过第一mount检测超级块;
处理模块402,还用于确定第一磁盘分区的fsck的结果。
在本申请的一些实施例中,终端设备40包括:
处理模块402,还用于通过初始化进程调用第二mount,其中第二mount中不携带fsck选项;
处理模块402,还用于使用第二mount挂载第一节点。
上面从模块化功能实体的角度对本申请实施例中的终端设备进行描述,下面从硬件处理的角度对本申请实施例中的终端设备进行描述。图5为本申请实施例中的终端设备的硬件结构示意图。如图5所示,该终端设备可以包括:
图5是本申请实施例中的通信装置的硬件结构一个示意图。如图5所示,该通信装置可以包括:
该终端设备包括至少一个处理器501,通信线路507,存储器503以及至少一个通信接口504。
处理器501可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路507可包括一通路,在上述组件之间传送信息。
通信接口504,使用任何收发器一类的装置,用于与其他装置或通信网络通信,如以太网等。
存储器503可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储装置,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储装置,存储器可以是独立存在,通过通信线路507与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器503用于存储执行本申请方案的计算机执行指令,并由处理器501来控制执行。处理器501用于执行存储器503中存储的计算机执行指令,从而实现本申请上述实施例提供的开机文件系统检测方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,终端设备可以包括多个处理器,例如图5中的处理器501和处理器502。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个装置、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,终端设备还可以包括输出装置505和输入装置506。输出装置505和处理器501通信,可以以多种方式来显示信息。输入装置506和处理器501通信,可以以多种方式接收用户的输入。例如,输入装置506可以是鼠标、触摸屏装置或传感装置等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种开机文件系统检测方法,其特征在于,包括:
通过内核态中的内核驱动检测到第一磁盘分区;
通过所述内核驱动中的初始化函数完成对所述第一磁盘分区的初始化;
通过所述初始化函数对所述第一磁盘分区进行文件系统检测fsck;
向用户态初始化进程上报第一磁盘分区事件。
2.根据权利要求1所述的方法,其特征在于,所述向所述用户态初始化进程上报所述第一磁盘分区事件之前,所述方法还包括:
记录所述第一磁盘分区的fsck的结果。
3.根据权利要求2所述的方法,其特征在于,所述记录所述第一磁盘分区的所述fsck的结果,包括:
在超级块superblock中记录所述第一磁盘分区的fsck检测结果,和/或,
在所述第一磁盘分区中记录执行fsck的时间。
4.根据权利要求3所述的方法,其特征在于,所述通过所述初始化函数对所述第一磁盘分区进行所述文件系统检测fsck之前,所述方法还包括:
读取所述第一磁盘分区的第一页面;
根据所述第一页面的读取结果,确定所述第一磁盘分区的文件系统属性,并调用与所述第一磁盘分区的文件系统属性对应的fsck流程。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一页面的读取结果,确定所述第一磁盘分区的文件系统属性,包括:
根据所述第一页面的魔数,确定所述第一磁盘分区的文件系统属性。
6.根据权利要求4所述的方法,其特征在于,所述通过所述初始化函数对所述第一磁盘分区进行文件系统检测fsck,包括:
通过所述初始化函数中所述fsck流程对所述第一磁盘分区进行文件系统检测fsck,具体的:
所述fsck流程通过所述初始化函数中的第一函数指针簇对所述第一页面进行fsck,其中,所述第一函数指针簇中包括第一读指针以及第一写指针,所述第一读指针用于读取所述第一页面,所述第一写指针用于记录所述fsck的结果。
7.根据权利要求6所述的方法,其特征在于,所述向用户态所述初始化进程上报所述第一磁盘分区事件之后,所述方法还包括:
根据所述第一磁盘分区事件建立第一节点,其中,所述第一节点对应所述第一磁盘分区;
通过所述初始化进程调用第一加载系统调用方式mount挂载所述第一节点,所述第一mount中携带fsck选项;
通过所述第一mount检测所述第一磁盘分区的所述fsck检测结果;
若所述fsck检测结果为异常,则所述初始化进程修复所述第一磁盘分区,并退出所述第一mount。
8.根据权利要求7所述的方法,其特征在于,所述通过所述第一mount检测所述第一磁盘分区的所述fsck检测结果,包括:
通过所述第一mount检测所述超级块;
确定所述第一磁盘分区的所述fsck检测结果。
9.根据权利要求7所述的方法,其特征在于,所述初始化进程修复所述第一磁盘分区之后,所述方法还包括:
通过所述初始化进程调用第二mount,其中所述第二mount中不携带所述fsck选项;
使用所述第二mount挂载所述第一节点。
10.根据权利要求7所述的方法,其特征在于,所述根据所述第一磁盘分区事件建立所述第一节点之后,所述方法还包括:
通过用户态所述初始化进程读取所述第一磁盘分区的所述第一页面;
若所述第一页面中所述fsck检测结果为异常,则通过所述初始化进程对所述第一磁盘分区进行修复;
若所述第一页面中所述fsck检测结果为正常,则挂载所述第一节点。
11.一种计算机设备,其特征在于,所述计算机设备包括:输入/输出(I/O)接口、处理器和存储器,
所述存储器中存储有程序指令;
所述处理器用于执行所述存储器中存储的程序指令,执行如权利要求1至10中任一所述的方法。
12.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1至10中任一项所述的方法。
CN201910703595.XA 2019-07-31 2019-07-31 一种开机文件系统检测方法以及相关设备 Active CN110532032B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910703595.XA CN110532032B (zh) 2019-07-31 2019-07-31 一种开机文件系统检测方法以及相关设备
PCT/CN2020/106100 WO2021018275A1 (zh) 2019-07-31 2020-07-31 一种开机文件系统检测方法以及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910703595.XA CN110532032B (zh) 2019-07-31 2019-07-31 一种开机文件系统检测方法以及相关设备

Publications (2)

Publication Number Publication Date
CN110532032A CN110532032A (zh) 2019-12-03
CN110532032B true CN110532032B (zh) 2021-01-05

Family

ID=68661243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910703595.XA Active CN110532032B (zh) 2019-07-31 2019-07-31 一种开机文件系统检测方法以及相关设备

Country Status (2)

Country Link
CN (1) CN110532032B (zh)
WO (1) WO2021018275A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532032B (zh) * 2019-07-31 2021-01-05 华为技术有限公司 一种开机文件系统检测方法以及相关设备
CN114490174B (zh) * 2020-10-26 2023-08-22 华为技术有限公司 文件系统检测方法、电子设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103117075A (zh) * 2012-12-27 2013-05-22 华为技术有限公司 磁盘块检查方法及装置
US8595271B1 (en) * 2010-12-15 2013-11-26 Symantec Corporation Systems and methods for performing file system checks
CN105354102A (zh) * 2015-10-14 2016-02-24 华为技术有限公司 一种文件系统维护和修复的方法和装置
CN106775451A (zh) * 2016-11-16 2017-05-31 天脉聚源(北京)传媒科技有限公司 一种处理逻辑卷的方法及装置
CN109062576A (zh) * 2018-07-18 2018-12-21 郑州云海信息技术有限公司 一种通过initramfs修复文件系统的方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765151A (en) * 1995-08-17 1998-06-09 Sun Microsystems, Inc. System and method for file system fix-on-panic for a computer operating system
CN101038551A (zh) * 2006-03-16 2007-09-19 南京大学 在移动硬盘上实现启动Linux操作系统的方法
US20130091101A1 (en) * 2011-10-05 2013-04-11 Netapp, Inc. Systems and methods for network assisted file system check
WO2015116125A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. File system analysis in user daemon
US10262023B1 (en) * 2014-09-30 2019-04-16 EMC IP Holding Company LLC Managing data inconsistencies in file systems
CN104503863B (zh) * 2014-11-07 2017-08-11 清华大学 用于虚拟容器系统容灾的内核态与用户态数据交换方法
US9692773B1 (en) * 2014-12-11 2017-06-27 Symantec Corporation Systems and methods for identifying detection-evasion behaviors of files undergoing malware analyses
US9858434B2 (en) * 2014-12-29 2018-01-02 Brainzsquare Inc. System and method for erasing a storage medium
US10409768B2 (en) * 2016-09-30 2019-09-10 EMC IP Holding Company LLC Managing data inconsistencies in files of file systems
CN108932249B (zh) * 2017-05-24 2021-02-12 华为技术有限公司 一种管理文件系统的方法及装置
CN107463652A (zh) * 2017-07-27 2017-12-12 北京小米移动软件有限公司 外接存储设备的连接控制方法及装置
CN109388436A (zh) * 2017-08-04 2019-02-26 中兴通讯股份有限公司 开机流程的控制方法、装置及存储介质
CN108920338B (zh) * 2018-06-28 2021-09-03 海信视像科技股份有限公司 一种指示文件系统状态的方法及终端
CN109086171A (zh) * 2018-08-15 2018-12-25 郑州云海信息技术有限公司 一种文件系统修复方法及装置
CN109445685B (zh) * 2018-09-26 2020-06-30 华中科技大学 一种用户态文件系统处理方法
CN110532032B (zh) * 2019-07-31 2021-01-05 华为技术有限公司 一种开机文件系统检测方法以及相关设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595271B1 (en) * 2010-12-15 2013-11-26 Symantec Corporation Systems and methods for performing file system checks
CN103117075A (zh) * 2012-12-27 2013-05-22 华为技术有限公司 磁盘块检查方法及装置
CN105354102A (zh) * 2015-10-14 2016-02-24 华为技术有限公司 一种文件系统维护和修复的方法和装置
CN106775451A (zh) * 2016-11-16 2017-05-31 天脉聚源(北京)传媒科技有限公司 一种处理逻辑卷的方法及装置
CN109062576A (zh) * 2018-07-18 2018-12-21 郑州云海信息技术有限公司 一种通过initramfs修复文件系统的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ext文件系统检测和修复工具的研究与改进;庐雪山;《计算机研究与发展》;20120522;第175-180页 *

Also Published As

Publication number Publication date
CN110532032A (zh) 2019-12-03
WO2021018275A1 (zh) 2021-02-04

Similar Documents

Publication Publication Date Title
CN112214247B (zh) 一种系统启动方法以及相关设备
CN101051279B (zh) 外围设备运行方法、外围设备及主机
CN110532032B (zh) 一种开机文件系统检测方法以及相关设备
CN112596960A (zh) 一种分布式存储服务切换方法及装置
CN105204979A (zh) 安卓日志的记录方法及移动终端
CN103927240A (zh) 应对软件崩溃的信息转储方法和装置
CN101770382A (zh) 系统启动方法及计算机系统
US20220334733A1 (en) Data restoration method and related device
EP4167080A1 (en) Memory initialisation apparatus and method, and computer system
US20150347234A1 (en) Recovery method for portable touch-control device and portable touch-control device using the same
CN103425539A (zh) 信息处理方法及装置
EP2750030A1 (en) Method, apparatus and processor for reading BIOS
CN106030544B (zh) 计算机设备内存的检测方法和计算机设备
CN115794232A (zh) 一种vpd获取方法、装置、设备及计算机可读存储介质
CN110704249A (zh) 一种保证应用一致性的方法、装置及系统
CN103793283A (zh) 一种终端故障处理方法及相关装置
CN111552655A (zh) 一种兼容PogoPin、Y-cable与USB的方法与设备
CN104750579A (zh) 制作内存镜像的方法和装置
CN217825010U (zh) 通信测试系统
CN111666184A (zh) 固态驱动器ssd硬盘测试方法、装置及电子设备
CN116483461B (zh) 云原生一体机的管理平台控制方法和装置
CN112965751B (zh) 一种用于机框式设备的主控板卡
CN108509301A (zh) 一种smbios中系统插槽信息的更新方法及更新系统
CN111953753B (zh) 通信设备连接方法、装置、计算机设备和存储介质
CN102662695B (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
GR01 Patent grant
GR01 Patent grant