发明内容
综上,本申请实施例提供一种overlay文件系统下文件的处理方法和装置、电子设备及存储介质,能够节省cpu资源消耗并减少磁盘空间占用。
第一方面,本申请实施例提供了一种overlay文件系统下文件的处理方法,应用于实例系统,包括:
在应用以写模式打开目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则返回lower目录下的目标文件的标识给应用,并打开lower目录下的目标文件,其中,将应用安装包目录或应用安装包目录的挂载目录作为lower目录,将本地空目录作为upper目录,将upper目录和lower目录堆叠到本地的应用数据目录;
在应用读目标文件时,判断目标文件是否存在第一标识,若目标文件不存在第一标识,则不对当前要读的目标文件的标识进行替换,以使应用根据当前要读的目标文件的标识对目标文件进行读操作,其中,所述第一标识表示目标文件已复制到upper目录下;和/或
在应用写目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则关闭lower目录下的目标文件,将lower目录下的目标文件复制到upper目录下,将当前要写的目标文件的标识替换为upper目录下的目标文件的标识,并对目标文件设置第一标识,以使应用对upper目录下的目标文件进行写操作。
第二方面,本申请实施例还提供了一种overlay文件系统下文件的处理装置,应用于实例系统,包括:
第一判断模块,用于在应用以写模式打开目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则返回lower目录下的目标文件的标识给应用,并打开lower目录下的目标文件,其中,将应用安装包目录或应用安装包目录的挂载目录作为lower目录,将本地空目录作为upper目录,将upper目录和lower目录堆叠到本地的应用数据目录;
第二判断模块,用于在应用读目标文件时,判断目标文件是否存在第一标识,若目标文件不存在第一标识,则不对当前要读的目标文件的标识进行替换,以使应用根据当前要读的目标文件的标识对目标文件进行读操作,其中,所述第一标识表示目标文件已复制到upper目录下;和/或
第三判断模块,用于在应用写目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则关闭lower目录下的目标文件,将lower目录下的目标文件复制到upper目录下,将当前要写的目标文件的标识替换为upper目录下的目标文件的标识,并对目标文件设置第一标识,以使应用对upper目录下的目标文件进行写操作。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的overlay文件系统下文件的处理方法的步骤。
第四方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面所述的overlay文件系统下文件的处理方法的步骤。
综上,本申请实施例提供的overlay文件系统下文件的处理和装置、电子设备及存储介质,通过修改操作系统的处理逻辑,在应用以写模式打开文件时,不再复制lower目录下的文件到upper目录,而是将复制时机推迟到应用实际写文件时,这样应用仅以写模式打开文件,以及以写模式打开文件后只读文件的情况下系统就不会复制lower目录下的文件到upper目录,从而能够节省cpu资源消耗并减少应用所运行的实例系统的磁盘空间占用,特别在应用安装包通过NFS文件系统挂载到实例系统中的情况下能够减少文件复制,从而能够极大减少网络带宽的压力。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
参照图1所示,为本申请实施例提供的一种overlay文件系统下文件的处理方法,应用于实例系统,包括:
S10、在应用以写模式打开目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则返回lower目录下的目标文件的标识给应用,并打开lower目录下的目标文件,其中,将应用安装包目录或应用安装包目录的挂载目录作为lower目录,将本地空目录作为upper目录,将upper目录和lower目录堆叠到本地的应用数据目录;
本实施例中,需要说明的是,某种操作系统(例如安卓操作系统)加上运行该操作系统所需的必要硬件(例如处理器、存储器等),可以视为一个实例系统,实例系统中可以运行各种应用(应用指能够在实例系统的操作系统中运行的软件或程序)。将若干个实例系统按照一定的架构方式(例如分布式)集中管理,可以形成云系统。通常云系统由运营商负责日常运营,为用户提供云服务。用户可以在云系统的实例系统上运行某个应用,对于游戏等需要较高硬件配置支持的应用,用户选择在云系统的实例系统而不是本地设备上运行非常普遍。当应用运行在实例系统中时,可以将应用的安装包存储在实例系统本地,并将应用安装包目录作为lower目录,将实例系统本地的空目录作为upper目录,将upper目录和lower目录堆叠到实例系统本地的应用数据目录,之后应用运行过程中操作应用数据目录中的目标文件时实际操作的是upper目录和lower目录下的目标文件。而为了节省实例系统的存储空间占用实现免安装运行应用,可以将应用安装包存储在存储服务器中,并将应用安装包通过NFS文件系统(Network File System,即网络文件系统)挂载到实例系统中,之后以应用安装包目录的挂载目录(通过NFS文件系统将应用安装包目录挂载到实例系统本地的挂载目录)作为lower目录,将实例系统本地的空目录作为upper目录,将upper目录和lower目录堆叠到实例系统本地的应用数据目录,之后应用运行过程中操作应用数据目录中的目标文件时实际操作的是upper目录和lower目录下的目标文件。这两种情况下,相关技术中,当应用以写模式打开应用数据目录中的目标文件时,会判断upper目录下是否存在目标文件,若存在,则返回upper目录下的目标文件的标识(比如upper目录下的目标文件的句柄)给应用,以使应用后续根据标识对upper目录下的目标文件进行读/写操作,并打开upper目录下的目标文件;否则,若不存在,则将lower目录下的目标文件复制到upper目录下,返回upper目录下的目标文件的标识给应用,以使应用后续根据标识对upper目录下的目标文件进行读/写操作,并打开upper目录下的目标文件。但是应用可能仅仅打开目标文件,打开后并未对目标文件进行读/写操作,或者打开文件后,只对目标文件进行读操作,并未对目标文件进行写操作,此时不需要复制lower目录下的目标文件复制到upper目录下,但系统却复制lower目录下的目标文件复制到upper目录下,如此会消耗大量cpu资源进行文件复制并且占用实例系统上的大量磁盘空间,特别在应用安装包通过NFS文件系统挂载到实例系统中的情况下复制文件会极大增加网络带宽的压力。针对于此,本实施例中修改系统的处理逻辑,在应用以写模式打开目标文件时,若判断获知upper目录下不存在目标文件,不再执行复制动作,而是直接返回应用lower目录下的目标文件的标识(比如lower目录下的目标文件的句柄),并打开lower目录下的目标文件。后续应用读/写目标文件时,根据lower目录下的目标文件的标识对lower目录下的目标文件进行读/写。
S11、在应用读目标文件时,判断目标文件是否存在第一标识,若目标文件不存在第一标识,则不对当前要读的目标文件的标识进行替换,以使应用根据当前要读的目标文件的标识对目标文件进行读操作,其中,所述第一标识表示目标文件已复制到upper目录下;和/或
本实施例中,需要说明的是,应用每次读目标文件时,根据目标文件是否存在第一标识分情况进行处理:
(1)如果目标文件不存在第一标识,则不对当前要读的目标文件的标识进行替换,此时应用根据当前要读的目标文件的标识对目标文件进行读操作:如果当前要读的目标文件的标识是lower目录下的目标文件的标识,则应用对lower目录下的目标文件进行读操作;而如果当前要读的目标文件的标识是upper目录下的目标文件的标识,则应用对upper目录下的目标文件进行读操作;
(2)如果目标文件存在第一标识,则判断当前要读的目标文件的标识是否是upper目录下的目标文件的标识:若当前要读的目标文件的标识是upper目录下的目标文件的标识,则不对当前要读的目标文件的标识进行替换,以使应用根据当前要读的目标文件的标识对目标文件进行读操作;否则若当前要读的目标文件的标识不是upper目录下的目标文件的标识,则关闭lower目录下的目标文件,并将当前要读的目标文件的标识替换为upper目录下的目标文件的标识,以使应用对upper目录下的目标文件进行读操作。
S12、在应用写目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则关闭lower目录下的目标文件,将lower目录下的目标文件复制到upper目录下,将当前要写的目标文件的标识替换为upper目录下的目标文件的标识,并对目标文件设置第一标识,以使应用对upper目录下的目标文件进行写操作。
本实施例中,需要说明的是,应用每次写目标文件时,根据upper目录下是否存在目标文件分情况进行处理:
(1)若upper目录下不存在目标文件,则关闭lower目录下的目标文件,将lower目录下的目标文件复制到upper目录下,将当前要写的目标文件的标识替换为upper目录下的目标文件的标识,并对目标文件设置第一标识(第一标识可以是预设的数字或字符等)。此种情况下系统才将lower目录下的目标文件复制到upper目录下。应用根据upper目录下的目标文件的标识对upper目录下的目标文件进行写操作。
(2)若upper目录下存在目标文件,则不对当前要写的目标文件的标识进行替换,此时当前要写的目标文件的标识是upper目录下的目标文件的标识,应用对upper目录下的目标文件进行写操作。
需要说明的是,目标文件的标识可以是目标文件的句柄,应用根据目标文件的句柄选择读/写upper目录下的目标文件或者lower目录下的目标文件。
本申请实施例提供的overlay文件系统下文件的处理方法,通过修改操作系统的处理逻辑,在应用以写模式打开文件时,不再复制lower目录下的文件到upper目录,而是将复制时机推迟到应用实际写文件时,这样应用仅以写模式打开文件,以及以写模式打开文件后只读文件的情况下系统就不会复制lower目录下的文件到upper目录,从而能够节省cpu资源消耗并减少应用所运行的实例系统的磁盘空间占用,特别在应用安装包通过NFS文件系统挂载到实例系统中的情况下能够减少文件复制,从而能够极大减少网络带宽的压力。
参照图2所示,为本申请实施例提供的一种overlay文件系统下文件的处理装置,应用于实例系统,包括:
第一判断模块20,用于在应用以写模式打开目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则返回lower目录下的目标文件的标识给应用,并打开lower目录下的目标文件,其中,将应用安装包目录或应用安装包目录的挂载目录作为lower目录,将本地空目录作为upper目录,将upper目录和lower目录堆叠到本地的应用数据目录;
第二判断模块21,用于在应用读目标文件时,判断目标文件是否存在第一标识,若目标文件不存在第一标识,则不对当前要读的目标文件的标识进行替换,以使应用根据当前要读的目标文件的标识对目标文件进行读操作,其中,所述第一标识表示目标文件已复制到upper目录下;和/或
第三判断模块22,用于在应用写目标文件时,判断upper目录下是否存在目标文件,若upper目录下不存在目标文件,则关闭lower目录下的目标文件,将lower目录下的目标文件复制到upper目录下,将当前要写的目标文件的标识替换为upper目录下的目标文件的标识,并对目标文件设置第一标识,以使应用对upper目录下的目标文件进行写操作。
本申请实施例提供的overlay文件系统下文件的处理装置,通过修改操作系统的处理逻辑,在应用以写模式打开文件时,不再复制lower目录下的文件到upper目录,而是将复制时机推迟到应用实际写文件时,这样应用仅以写模式打开文件,以及以写模式打开文件后只读文件的情况下系统就不会复制lower目录下的文件到upper目录,从而能够节省cpu资源消耗并减少应用所运行的实例系统的磁盘空间占用,特别在应用安装包通过NFS文件系统挂载到实例系统中的情况下能够减少文件复制,从而能够极大减少网络带宽的压力。
在前述装置实施例的基础上,第二判断模块,还可以用于:
若目标文件存在第一标识,则判断当前要读的目标文件的标识是否是upper目录下的目标文件的标识;
若当前要读的目标文件的标识是upper目录下的目标文件的标识,则不对当前要读的目标文件的标识进行替换,以使应用根据当前要读的目标文件的标识对目标文件进行读操作;或者
若当前要读的目标文件的标识不是upper目录下的目标文件的标识,则关闭lower目录下的目标文件,并将当前要读的目标文件的标识替换为upper目录下的目标文件的标识,以使应用对upper目录下的目标文件进行读操作。
在前述装置实施例的基础上,第二判断模块,还可以用于:
在应用写目标文件时,若判断获知upper目录下存在目标文件,则不对当前要写的目标文件的标识进行替换,以使应用对upper目录下的目标文件进行写操作。
在前述装置实施例的基础上,第二判断模块,还可以用于:
在应用以写模式打开目标文件时,若判断获知upper目录下存在目标文件,则返回upper目录下的目标文件的标识给应用,并打开upper目录下的目标文件。
本申请实施例提供的overlay文件系统下文件的处理装置,其实现过程与本申请实施例提供的overlay文件系统下文件的处理方法一致,所能达到的效果也与本申请实施例提供的overlay文件系统下文件的处理方法相同,在此不再赘述。
如图3所示,本申请实施例提供的一种电子设备,包括:处理器30、存储器31和总线32,所述存储器31存储有所述处理器30可执行的机器可读指令,当电子设备运行时,所述处理器30与所述存储器31之间通过总线32通信,所述处理器30执行所述机器可读指令,以执行如上述overlay文件系统下文件的处理方法的步骤。
具体地,上述存储器31和处理器30能够为通用的存储器和处理器,这里不做具体限定,当处理器30运行存储器31存储的计算机程序时,能够执行上述overlay文件系统下文件的处理方法。
对应于上述overlay文件系统下文件的处理方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述overlay文件系统下文件的处理方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。