文件挂载方法、装置、存储介质及电子装置与流程

文档序号:27615252发布日期:2021-11-29 13:05阅读:82来源:国知局
文件挂载方法、装置、存储介质及电子装置与流程

1.本发明实施例涉及通信领域,具体而言,涉及一种文件挂载方法、装置、存储介质及电子装置。


背景技术:

2.ipc在行业各个场景中广泛应用,随着成本要求越来越高,flash空间也要求越来越小。
3.在相关技术中,主流的低成本方案中都采用8m nor flash来存储。flash空间往往被分成boot区,内核区,rootfs只读区,用户数据区,其中,设备flash空间划分示意图可参见附图1。用户数据区用于保存用户配置信息(如wifi信息、分辨率等配置信息),在小容量nor flash中,往往采用jffs2文件系统来挂载。
4.jffs2文件系统会预留若干个扇区做垃圾回收和负载均衡,在小容量nor flash设备中,留给用户数据区的空间很有限,可能只有几个物理块。这种情况下,如果jffs2文件系统的扇区粒度(每个扇区所占的空间一般默认为64k)较大的话,就会由于预留空间过大致使flash空间的利用率大大降低,后续随着用户数据的增加还可能导致空间不足等问题。
5.由此可知,相关技术中存在由于预留空间过大致使导致flash空间的利用率低、随着用户数据的增加导致空间不足的问题。
6.针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。


技术实现要素:

7.本发明实施例提供了一种文件挂载方法、装置、存储介质及电子装置,以至少解决相关技术中存在的由于预留空间过大致使导致flash空间的利用率低、随着用户数据的增加导致空间不足的问题。
8.根据本发明的一个实施例,提供了一种文件挂载方法,包括:确定目标文件系统的第一扇区的格式,其中,所述目标文件系统为目标软件的用户数据区的文件系统;在所述第一扇区的格式为第一格式的情况下,对所述目标软件的内核进行升级处理,以将所述第一扇区的格式更新为第二格式;确定所述用户数据区的第二扇区的容量;在所述第二扇区的容量为第一容量的情况下,将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内。
9.根据本发明的另一个实施例,提供了一种文件挂载装置,包括:第一确定模块,用于确定目标文件系统的第一扇区的格式,其中,所述目标文件系统为目标软件的用户数据区的文件系统;升级模块,用于在所述第一扇区的格式为第一格式的情况下,对所述目标软件的内核进行升级处理,以将所述第一扇区的格式更新为第二格式;第二确定模块,用于确定所述用户数据区的第二扇区的容量;挂载模块,用于在所述第二扇区的容量为第一容量的情况下,将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内。
10.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
11.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
12.通过本发明,确定目标软件的用户数据区的目标文件系统的第一扇区的格式,在第一扇区的格式为第一格式的情况下,对目标软件的内核进行升级处理,以将第一扇区的格式更新为第二格式,确定用户数据区的第二扇区的容量,在第二扇区的容量为第一容量的情况下,将用户数据区中存储的原始文件按照第二格式挂载在用户数据区内。由于可以通过对目标软件进行升级处理将目标软件的用户数据区的目标文件系统的第一扇区格式更新为第二格式,并在用户数据区的第二扇区的容量时第一容量的情况将用户数据区存储的原始文件按照第二格式挂载在用户数据区内,使目标文件系统的第一扇区的格式与用户数据区的容量相对应,因此,可以解决相关技术中存在的由于预留空间过大致使导致flash空间的利用率低、随着用户数据的增加导致空间不足的问题,提高了flash空间利用率,防止了随着用户数据的增加导致空间不足的问题。
附图说明
13.图1是相关技术中设备flash空间划分示意图;
14.图2是本发明实施例的一种文件挂载方法的移动终端的硬件结构框图;
15.图3是根据本发明实施例的文件挂载方法的流程图;
16.图4是根据本发明示例性实施例的扇区大小从64k格式切换到4k格式前后flash分区划分情况示意图;
17.图5是根据本发明示例性实施例的大于4k小于64k的文件在flash上的数据分布示意图;
18.图6是根据本发明具体实施例的文件挂载方法流程图;
19.图7是根据本发明实施例的文件挂载装置的结构框图。
具体实施方式
20.下文中将参考附图并结合实施例来详细说明本发明的实施例。
21.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
22.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图2是本发明实施例的一种文件挂载方法的移动终端的硬件结构框图。如图2所示,移动终端可以包括一个或多个(图2中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图2中所示更多或者更少的组
件,或者具有与图2所示不同的配置。
23.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的文件挂载方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
24.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
25.在本实施例中提供了一种文件挂载方法,图3是根据本发明实施例的文件挂载方法的流程图,如图3所示,该流程包括如下步骤:
26.步骤s302,确定目标文件系统的第一扇区的格式,其中,所述目标文件系统为目标软件的用户数据区的文件系统;
27.步骤s304,在所述第一扇区的格式为第一格式的情况下,对所述目标软件的内核进行升级处理,以将所述第一扇区的格式更新为第二格式;
28.步骤s306,确定所述用户数据区的第二扇区的容量;
29.步骤s308,在所述第二扇区的容量为第一容量的情况下,将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内。
30.在上述实施例中,目标文件系统可以是jffs2文件系统,第一格式可以为64k格式等,第二格式可以为4k格式等。在目标文件系统的第一扇区的格式为64k格式时,可以通过升级内核来改变位于用户数据区的jffs2文件系统扇区大小。对于nor flash一般jffs2文件系统默认的扇区大小为64k,一般最低可以调整为4k(flash最小擦除单元,与flash型号有关)。jffs2文件系统扇区大小是通过修改内核flash驱动程序实现的,内核升级后,再次挂载用户数据区时jffs2文件系统扇区大小则变成了4k。由于boot区、分区表内核区和rootfs使用的都是flash上裸的数据,没有文件系统的参与,所以扇区大小由64k切到4k之后不会影响到上述分区;而用户数据区使用了jffs2文件系统扇区大小改变后会导致其数据组织方式发生变化,因此,需在用户数据分区挂载之前对用户数据区做一次文件恢复操作。其中,扇区大小从64k格式切换到4k格式前后flash分区划分情况示意图可参见附图4。
31.jfss2文件系统单个数据块最大不能超过其扇区大小,当扇区大小为64k时,则单个数据块大小应介于0至64k之间;当扇区大小为4k时,则单个数据块大小应介于0至4k之间。在扇区为64k的jffs2文件系统中,对于大于4k小于64k的文件在flash上的数据分布有两种情况,一种是作为一个独立的数据块单独保存,另一种是分散成多个数据块进行保存,大于4k小于64k的文件在flash上的数据分布示意图可参见附图5。对于格式2,若文件a的所有数据块均小于4k,则文件系统从64k切换到4k时,直接按照扇区大小为4k的格式挂载用户分区不会出现数据丢失;对于格式1和格式2中出现了大于4k的数据块的情况,直接按照扇
区大小为4k的格式挂载用户分区,则存在数据丢失的风险。所以,用户分区扇区大小从64k切换至4k后需要对用户文件做一次恢复操作。即将用户数据区中存储的原始文件按照第二格式挂载在用户数据区内。
32.可选地,上述步骤的执行主体可以是处理器,但不限于此。
33.通过本发明,确定目标软件的用户数据区的目标文件系统的第一扇区的格式,在第一扇区的格式为第一格式的情况下,对目标软件的内核进行升级处理,以将第一扇区的格式更新为第二格式,确定用户数据区的第二扇区的容量,在第二扇区的容量为第一容量的情况下,将用户数据区中存储的原始文件按照第二格式挂载在用户数据区内。由于可以通过对目标软件进行升级处理将目标软件的用户数据区的目标文件系统的第一扇区格式更新为第二格式,并在用户数据区的第二扇区的容量时第一容量的情况将用户数据区存储的原始文件按照第二格式挂载在用户数据区内,使目标文件系统的第一扇区的格式与用户数据区的容量相对应,因此,可以解决相关技术中存在的由于预留空间过大致使导致flash空间的利用率低、随着用户数据的增加导致空间不足的问题,提高了flash空间利用率,防止了随着用户数据的增加导致空间不足的问题。
34.在一个示例性实施例中,确定所述用户数据区的第二扇区的容量包括:确定所述目标文件系统的预留扇区的第二容量;基于所述第二容量确定所述第二扇区的容量。在本实施例中,在用户数据区挂载之前需要对其升级之前的扇区大小进行检查,根据扇区大小决定是否需要进行数据恢复。例如,当第二格式为4k格式时,在将目标文件系统的第一扇区的格式更新为第二格式后,如果直接以4k的格式挂载用户分区可能会有数据丢失的风险,所以升级后在分区挂载之前需要判断升级前jffs2扇区的大小。可以利用jffs2文件系统的特性,根据预留扇区的大小确定用户数据区扇区大小。若扇区大小不是64k,则可以按照正常的分区挂载流程挂载用户数据区;若扇区大小是64k,则执行64k切4k后的用户数据区文件恢复流程。
35.在一个示例性实施例中,在将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内之前,所述方法还包括:提取所述用户数据区在所述目标软件所在的设备中的闪存中存储的原始数据;将所述原始数据保存为临时镜像文件;将所述临时镜像文件按照所述第二格式挂载到所述设备的内存的临时目录中;基于所述临时目录提取所述原始文件。在本实施例中,数据恢复时,可以将用户数据区在flash上的原始数据提取为临时的镜像文件,当第一格式为64k格式,第二格式为4k格式时,可以以64k的扇区大小作为jffs2文件系统挂载到临时目录。在进入用户数据区文件恢复流程后,可以首先将用户数据分区在flash上的原始数据提取出来保存为临时镜像文件,该镜像文件按照扇区大小为64k的格式作为jffs2文件系统进行挂载。
36.在一个示例性实施例中,在将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内之后,所述方法还包括:卸载临时镜像,删除所述临时镜像文件以及所述临时目录。在本实施例中,在原始文件挂载完成后,可以卸载临时镜像,并删除临时镜像文件和临时目录。
37.在一个示例性实施例中,将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内包括:将所述用户数据区按照所述第二格式进行格式化;将所述原始文件复制到按照所述第二格式进行格式化后的所述用户数据区。在本实施例中,将用
户数据区中存储的原始文件按照第二格式挂载在用户数据区内时,可以将用户数据分区以4k的扇区大小重新格式化为jffs2文件系统并挂载;将临时镜像挂目录里的文件直接copy到重新格式化并挂载的用户分区,这样所有文件将在新的用户分区被重新组织起来而避免数据丢失。
38.在一个示例性实施例中,对所述目标软件的内核进行升级处理,以将所述第一扇区的格式更新为第二格式包括:获取所述目标软件的升级文件包,其中,所述升级文件包中定义的扇区格式为所述第二格式;基于所述升级文件包进行所述升级处理,以将所述第一扇区的格式更新为所述第二格式。在本实施例中,在小旧的软件用户数据区的jffs2文件系统的扇区大小为64k,要将jffs2扇区大由64k切换至4k需升级内核,在对内核升级时,可以获取目标软件的升级文件后,其中,升级文件包中定义了扇区格式为第二格式,如4k格式,根据文件升级包对目标软件进行升级处理。
39.在一个示例性实施例中,在对所述目标软件的内核进行升级操作之后,所述方法还包括:重新启动所述目标软件。在本实施例中,软件升级完毕后可以复位重启,重启后加载新的内核,此后用户数据区作为jffs2文件系统进行挂载时扇区大小从64k变成了4k。
40.下面结合具体实施方式对文件挂载方法进行说明:
41.图6是根据本发明具体实施例的文件挂载方法流程图,如图6所示,该流程包括:
42.步骤s602,旧的软件用户数据区的jffs2文件系统的扇区大小为64k,要将jffs2扇区大小由64k切换至4k需升级内核,进入软件升级阶段。
43.步骤s604,下载新的软件包,升级boot、分区表、内核、rootfs等分区。
44.步骤s606,软件升级完毕后复位重启,重启后加载新的内核,此后用户数据区作为jffs2文件系统进行挂载时扇区大小从64k变成了4k;
45.步骤s608,此时如果直接以4k的格式挂载用户分区可能会有数据丢失的风险,所以升级后在分区挂载之前需要判断升级前jffs2扇区的大小。此处利用jffs2文件系统的特性,根据预留扇区的大小确定用户数据区扇区大小。判断用户数据区扇区大小是否为64k,若判断结果为否,则执行步骤s610,若判断结果为是,则执行步骤s612。
46.步骤s610,扇区大小不是64k,则按照正常的分区挂载流程挂载用户数据区。
47.步骤s612,扇区大小是64k,则执行64k切4k后的用户数据区文件恢复流程:进入用户数据区文件恢复流程后,首先将用户数据分区在flash上的原始数据提取出来保存为临时镜像文件。
48.步骤s614,该镜像文件按照扇区大小为64k的格式作为jffs2文件系统进行挂载;
49.步骤s616,将用户数据分区以4k的扇区大小重新格式化为jffs2文件系统并挂载;
50.步骤s618,将临时镜像挂目录里的文件直接copy到重新格式化并挂载的用户分区,这样所有文件将在新的用户分区被重新组织起来而避免数据丢失。
51.步骤s620,卸载临时镜像,删除临时镜像文件及临时目录。
52.在前述实施例中,本方案可用在原设计方案jffs2文件系统扇区粒度(单个扇区占用flash空间大小)过大,致使flash空间利用率过低的场景。升级后通过降低jffs2文件系统扇区粒度,增加了flash空间的利用率,并通过检查预留扇区的大小确定原用户分区的扇区格式,对用户数据做了恢复操作,确保了扇区大小切换后用户数据区文件不丢失。
53.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施
例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
54.在本实施例中还提供了一种文件挂载装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
55.图7是根据本发明实施例的文件挂载装置的结构框图,如图7所示,该装置包括:
56.第一确定模块72,用于确定目标文件系统的第一扇区的格式,其中,所述目标文件系统为目标软件的用户数据区的文件系统;
57.升级模块74,用于在所述第一扇区的格式为第一格式的情况下,对所述目标软件的内核进行升级处理,以将所述第一扇区的格式更新为第二格式;
58.第二确定模块76,用于确定所述用户数据区的第二扇区的容量;
59.挂载模块78,用于在所述第二扇区的容量为第一容量的情况下,将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内。
60.在一个示例性实施例中,第二确定模块76可以通过如下方式实现确定所述用户数据区的第二扇区的容量:确定所述目标文件系统的预留扇区的第二容量;基于所述第二容量确定所述第二扇区的容量。
61.在一个示例性实施例中,所述装置可以用于在将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内之前,提取所述用户数据区在所述目标软件所在的设备中的闪存中存储的原始数据;将所述原始数据保存为临时镜像文件;将所述临时镜像文件按照所述第二格式挂载到所述设备的内存的临时目录中;基于所述临时目录提取所述原始文件。
62.在一个示例性实施例中,所述装置可以用于在将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内之后,卸载临时镜像,删除所述临时镜像文件以及所述临时目录。
63.在一个示例性实施例中,挂载模块78可以通过如下方式实现将所述用户数据区中存储的原始文件按照所述第二格式挂载在所述用户数据区内:将所述用户数据区按照所述第二格式进行格式化;将所述原始文件复制到按照所述第二格式进行格式化后的所述用户数据区。
64.在一个示例性实施例中,升级模块74可以通过如下方式实现对所述目标软件的内核进行升级处理,以将所述第一扇区的格式更新为第二格式:获取所述目标软件的升级文件包,其中,所述升级文件包中定义的扇区格式为所述第二格式;基于所述升级文件包进行所述升级处理,以将所述第一扇区的格式更新为所述第二格式。
65.在一个示例性实施例中,所述装置用于在对所述目标软件的内核进行升级操作之后,重新启动所述目标软件。
66.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通
过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
67.本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
68.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read

only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
69.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
70.在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
71.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
72.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
73.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1