一种文件系统构建方法、计算设备及存储介质转让专利

申请号 : CN202211430429.5

文献号 : CN115576903B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋文泰李鹤

申请人 : 统信软件技术有限公司

摘要 :

本发明涉及文件信息安全领域,特别涉及一种文件系统构建方法、计算设备及存储介质,方法包括:确定文件系统包括的多个层级,多个层级在文件系统中具有构建顺序;确定多个层级中第一层级是否存在;若不存在则创建第一层级,并对创建的第一层级进行设置;按照多个层级的构建顺序确定并构建下一层级,直到构建完成所有层级;根据构建的多个层级生成文件系统。本发明能够在构建文件系统时,将文件系统划分为多个层级进行构建。对每个层级分别进行设置,再将各个层级按照顺序生成文件系统,实现对文件系统的结构化设置,提高文件系统的构建效率。

权利要求 :

1.一种文件系统构建方法,适于在计算设备中执行,所述方法包括:确定所述文件系统包括的多个层级,多个层级在文件系统中具有构建顺序;

确定多个层级中第一层级是否存在;

若不存在则创建第一层级,并对创建的第一层级进行设置;

按照多个层级的构建顺序确定并构建下一层级,直到构建完成所有层级;

根据构建的多个层级生成文件系统,所述文件系统用于构建安装包;

其中,所述多个层级包括:

第一层级,所述第一层级适于构建最小基础系统;

第二层级,所述第二层级适于进行特殊配置,使文件系统适合安装包的构建场景;

第三层级,所述第三层级适于安装基础层的软件包;

第四层级,所述第四层级适于安装更高层级的软件包;

第五层级,所述第五层级适于分析各层文件,当各层文件被第四层级进行了修改时对文件进行还原。

2.如权利要求1所述的方法,其中,所述方法还包括:若所述第一层级存在,则确定所述第一层级是否完整;

若所述第一层级不完整,则回退第一层级;

创建第一层级,并对创建的第一层级进行设置。

3.如权利要求1所述的方法,其中,所述按照多个层级的构建顺序确定并构建下一层级包括:确定下一层级是否存在;

若下一层级不存在,则创建下一层级,并对创建的下一层级进行设置。

4.如权利要求1‑3中任一项所述的方法,其中,所述创建第一层级包括:确定所述第一层级的层级信息;

确定所述第一层级的层级目录;

根据所述第一层级的层级信息确定所述第一层级的下层层级列表;

根据所述第一层级的下层层级列表,将所述第一层级的层级目录挂载到目标目录。

5.如权利要求3所述的方法,其中,所述创建下一层级包括:确定所述下一层级的层级信息;

确定所述下一层级的层级目录;

根据所述下一层级的层级信息和已经构建的层级的层级信息确定所述下一层级的下层层级列表;

根据所述下一层级的下层层级列表设置层级目录设置类;

根据所述层级目录设置类将所述下一层级的层级目录挂载到目标目录。

6.如权利要求4所述的方法,其中,所述方法还包括:确定目标目录是否挂载有其他层级目录;

若挂载有其他层级目录,则卸载所述目标目录所挂载的其他层级目录,以便挂载所述第一层级的层级目录。

7.如权利要求2所述的方法,其中,所述回退第一层级包括:卸载目标目录对所述第一层级的挂载;

删除所述第一层级的层级信息和层级目录。

8.如权利要求1所述的方法,其中,所述方法还包括:响应于构建新层级的请求,确定所述新层级在所述文件系统中的层级顺序;

根据所述新层级的层级顺序确定所述文件系统中新层级的下层层级和原始上层层级;

修改所述原始上层层级的层级信息生成新上层层级;

根据所述下层层级、新层级和所述新上层层级生成文件系统。

9.一种计算设备,包括:

一个或多个处理器;

存储器;以及

一个或多个程序,其中,一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据权利要求1‑8中任一项所述的方法的指令。

10.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1‑8中任一项所述的方法。

说明书 :

一种文件系统构建方法、计算设备及存储介质

技术领域

[0001] 本发明涉及操作系统领域,特别涉及一种文件系统构建方法、计算设备及存储介质。

背景技术

[0002] 随着计算机技术的发展,人们越来越多的通过计算机处理各种工作。通过计算机处理工作时,需要用到计算机中的软件,如操作系统及各种应用程序等。对操作系统或应用程序的安装,以及对安装包的构建就变的尤为重要。
[0003] 现有技术中,在构建安装包时,需要逐步构建安装包的文件系统。文件系统也是过程最长,最容易出错的过程。在构建文件系统时,所需要的步骤较多,而一旦某一个步骤出错,则需要从头开始构建,整个构建过程效率低,容错率不高。
[0004] 为此,需要一种新的文件系统构建方法。

发明内容

[0005] 为此,本发明提供一种文件系统构建方法,以力图解决或者至少缓解上面存在的问题。
[0006] 根据本发明的第一方面,提供一种文件系统构建方法,适于在计算设备中执行,方法包括:确定文件系统包括的多个层级,多个层级在文件系统中具有构建顺序;确定多个层级中第一层级是否存在;若不存在则创建第一层级,并对创建的第一层级进行设置;按照多个层级的构建顺序确定并构建下一层级,直到构建完成所有层级;根据构建的多个层级生成文件系统。
[0007] 可选地,在根据本发明的方法中,还包括:若第一层级存在,则确定第一层级是否完整;若第一层级不完整,则回退第一层级;创建第一层级,并对创建的第一层级进行设置。
[0008] 可选地,在根据本发明的方法中,按照多个层级的构建顺序确定并构建下一层级包括:确定下一层级是否存在;若下一层级不存在,则创建下一层级,并对创建的下一层级进行设置。
[0009] 可选地,在根据本发明的方法中,创建第一层级包括:确定第一层级的层级信息;确定第一层级的层级目录;根据第一层级的层级信息确定第一层级的下层层级列表;根据第一层级的下层层级列表,将第一层级的层级目录挂载到目标目录。
[0010] 可选地,在根据本发明的方法中,创建下一层级包括:确定下一层级的层级信息;确定下一层级的层级目录;根据下一层级的层级信息和已经构建的层级的层级信息确定下一层级的下层层级列表;根据下一层级的下层层级列表设置层级目录设置类;根据层级目录设置类将下一层级的层级目录挂载到目标目录。
[0011] 可选地,在根据本发明的方法中,还包括:确定目标目录是否挂载有其他层级目录;若挂载有其他层级目录,则卸载目标目录所挂载的其他层级目录,以便挂载第一层级的层级目录。
[0012] 可选地,在根据本发明的方法中,回退第一层级包括:卸载目标目录对第一层级的挂载;删除第一层级的层级信息和层级目录。
[0013] 可选地,在根据本发明的方法中,还包括:响应于构建新层级的请求,确定新层级在文件系统中的层级顺序;根据新层级的层级顺序确定文件系统中新层级的下层层级和原始上层层级;修改原始上层层级的层级信息生成新上层层级;根据下层层级、新层级和新上层层级生成文件系统。
[0014] 根据本发明的另一方面,提供了一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中,一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据本发明的文件系统构建方法的指令。
[0015] 根据本发明的再一方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,该指令当由计算设备执行时,使得计算设备执行根据本发明的文件系统构建方法。
[0016] 本发明公开了一种文件系统构建方法,适于在计算设备中执行,方法包括:确定文件系统包括的多个层级,多个层级包括构建顺序;确定多个层级中第一层级是否存在;若不存在则创建第一层级,并对创建的第一层级进行设置;按照多个层级的构建顺序确定并构建下一层级,直到构建完成所有层级;根据构建的多个层级生成文件系统。本发明能够在构建文件系统时,将文件系统划分为多个层级进行构建。对每个层级分别进行设置,再将各个层级按照顺序生成文件系统,实现对文件系统的结构化设置,提高文件系统的构建效率。

附图说明

[0017] 为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本发明公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0018] 图1示出了根据本发明一个示范性实施例的文件系统构建方法100的示意图;
[0019] 图2示出了根据本发明一个示范性实施例的计算设备200的结构框图;
[0020] 图3示出了根据本发明一个示范性实施例的构建多个层级的示意图;
[0021] 图4示出了根据本发明一个示范性实施例的逐层构建文件系统的示意图;
[0022] 图5示出了根据本发明一个示范性实施例的回退层级的示意图;
[0023] 图6示出了根据本发明一个示范性实施例的创建层级的示意图;
[0024] 图7示出了根据本发明一个示范性实施例的文件系统的示意图;
[0025] 图8示出了根据本发明一个示范性实施例的构建新层级的示意图。

具体实施方式

[0026] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。相同的附图标记通常指代相同的部件或元素。
[0027] 图1示出了根据本发明一个示范性实施例的文件系统构建方法100的示意图。本发明的文件系统构建方法适于在计算设备中执行。
[0028] 图2示出了根据本发明一个示范性实施例的计算设备的结构框图。在基本配置中,计算设备200包括至少一个处理单元220和系统存储器210。根据一个方面,取决于计算设备的配置和类型,系统存储器210包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。根据一个方面,系统存储器210包括操作系统211。
[0029] 根据一个方面,操作系统211,例如,适合于控制计算设备200的操作。此外,示例结合图形库、其他操作系统、或任何其他应用程序而被实践,并且不限于任何特定的应用或系统。在图2中通过在虚线215内的那些组件示出了该基本配置。根据一个方面,计算设备200具有额外的特征或功能。例如,根据一个方面,计算设备200包括额外的数据存储设备(可移动的和/或不可移动的),例如磁盘、光盘、或者磁带。
[0030] 如在上文中所陈述的,根据一个方面,在系统存储器210中存储程序模块212。根据一个方面,程序模块212可包括一个或多个应用程序,本发明不限制应用程序的类型,例如应用还包括:电子邮件和联系人应用程序、文字处理应用程序、电子表格应用程序、数据库应用程序、幻灯片展示应用程序、绘画或计算机辅助应用程序、网络浏览器应用程序等。
[0031] 根据一个方面,可以在包括分立电子元件的电路、包含逻辑门的封装或集成的电子芯片、利用微处理器的电路、或者在包含电子元件或微处理器的单个芯片上实践示例。例如,可以经由其中在图2中所示出的每个或许多组件可以集成在单个集成电路上的片上系统(SOC)来实践示例。根据一个方面,这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及各种应用功能,其全部作为单个集成电路而被集成(或“烧”)到芯片基底上。当经由SOC进行操作时,可以经由在单个集成电路(芯片)上与计算设备200的其他组件集成的专用逻辑来对在本文中所描述的功能进行操作。还可以使用能够执行逻辑操作(例如AND、OR和NOT)的其他技术来实践本发明的实施例,所述其他技术包括但不限于机械、光学、流体、和量子技术。另外,可以在通用计算机内或在任何其他任何电路或系统中实践本发明的实施例。
[0032] 根据一个方面,计算设备200还可以具有一个或多个输入设备231,例如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可以包括输出设备232,例如显示器、扬声器、打印机等。前述设备是示例并且也可以使用其他设备。计算设备200可以包括允许与其他计算设备240进行通信的一个或多个通信连接233。合适的通信连接233的示例包括但不限于:RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行和/或串行端口。计算设备200可通过通信连接233与其他计算设备240通信连接。
[0033] 本发明实施方式还提供一种非暂态可读存储介质,存储有指令,所述指令用于使所述计算设备执行根据本发明实施方式的方法。本实施例的可读介质包括永久性和非永久性、可移动和非可移动介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非暂态可读存储介质。
[0034] 根据一个方面,通信介质是由计算机可读指令、数据结构、程序模块、或者经调制的数据信号(例如,载波或其他传输机制)中的其他数据实施的,并且包括任何信息传递介质。根据一个方面,术语“经调制的数据信号”描述了具有一个或多个特征集或者以将信息编码在信号中的方式改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、射频(RF)、红外线的、以及其他无线介质之类的无线介质。
[0035] 需要说明的是,尽管上述计算设备仅示出了处理单元220、系统存储器210、输入设备231、输出设备232、以及通信连接233,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0036] 回到图1,如图1所示,本发明的文件系统构建方法首先执行步骤110:确定文件系统包括的多个层级,多个层级在文件系统中具有构建顺序。
[0037] 根据本发明的一个实施例,本发明中所要构建的文件系统可具体实现为安装包的文件系统。生成的文件系统可用于构建安装包。
[0038] 根据本发明的一个实施例,安装包可具体实现为软件安装包,如一种操作系统安装包。操作系统安装包可具体实现为一种光盘镜像文件(ISO文件)。ISO文件可用于光盘、U盘等引导方式启动电脑进入安装界面安装操作系统。
[0039] 文件系统可具体实现为一种根文件系统Root File System(RootFS),放在系统的根目录之下的符合文件系统层次结构标准的各种目录和文件。RootFS包括ISO镜像文件构建过程中,准备放置在操作系统安装后根目录下的所有目录和文件,是操作系统放置在硬盘上的静态状态。
[0040] 本发明中构建的文件系统符合文件系统层次结构标准,可具体实现为Filesystem Hierarchy标准(FHS:Filesystem Hierarchy Standard)。FHS是一种Linux操作系统采用的文件组织形式,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,以及例外处理与矛盾处理。
[0041] 根据本发明的一个实施例,本发明中的文件系统可划分为多个具有构建顺序的层级。构建顺序即这些层级组成文件系统的顺序。
[0042] 根据本发明的一个实施例,文件系统可包括第一层级 第七层级。~
[0043] 图3示出了根据本发明一个示范性实施例的构建多个层级的示意图。
[0044] 如图3所示,第一层级用于构建最小基础系统,比如执行debootstrap命令。
[0045] 第二层级用于进行特殊配置,使得文件系统适合安装包如ISO镜像文件的构建场景,由于此时并没有运行完整的文件系统服务。
[0046] 第三层级用于安装基础层的软件包,如使用apt命令安装依赖所有基础层的软件包。
[0047] 第四层级用于安装更高层次的软件包,如根据预装软件包列表,具体可使用apt命令安装这些软件包。
[0048] 第五层级用于分析每层的文件并适当还原,如针对第四层级的文件进行检查,如果第四层级新增或删除了文件系统根目录的项目,则报错退出。如果在第四层级修改了第一层级 第三层级提供的文件,则需要进行还原,并记录下被修改的文件列表以供开发者分~析和纠正。这样在第四层级安装更高层次软件包时,将不会导致基础层及以下层的文件被修改。
[0049] 第六层级可用于按顺序执行钩子脚本,实现定制功能。
[0050] 第七层级可用于还原第二层级的特殊配置,清理多余文件。
[0051] 随后,执行步骤120,确定多个层级中第一层级是否存在。确定多个层级是指确定要构建的多个层级。确定多个层级中第一层级是否存在时,确定要构建的多个层级中,第一层级是否已经被构建。
[0052] 根据本发明的一个实施例,若第一层级存在,则确定第一层级是否完整;若第一层级不完整,则回退第一层级;随后创建第一层级,并对创建的第一层级进行设置。
[0053] 根据本发明的一个实施例,确定第一层级是否完整时,可通过第一层级的记载层级信息的文件进行判断。若文件记载的层级信息中记载了第一层级已经完成构建,则第一层级是完整的。若层级信息中没有记载第一层级已经完成构建,则第一层级是不完整的。
[0054] 图4示出了根据本发明一个示范性实施例的逐层构建文件系统的示意图。
[0055] 如图4所示,构建的文件系统可具体实现为ISO镜像文件的RootFS系统,在构建时逐层进行构建。具体的:构建的第一层级具体实现为第1层,以构建第1层为例进行说明:
[0056] 首先,检查第1层(即第一层级)是否存在,如果不存在则创建第1层。如果存在则继续下一步。
[0057] 随后,检查第1层是否完整,如果不完整则继续下一步,如果完整则继续构建后续几层,直到结束。
[0058] 随后,若第1层不完整,则可用户展示警告信息“该层并不完整”,以告知用户该层不完整。并询问用户是否退出,可提供选项:“回退该层”和“退出”。
[0059] 随后,判断用户是否根据“退出”选项选择退出,如果用户选择退出则退出构建程序,如果用户通过“回退该层”选择回退第1层,则继续下一步。
[0060] 随后,回退第1层。回退层的具体步骤在后续进行详细说明。
[0061] 随后,创建第1层。创建层的具体步骤在后续进行详细说明。
[0062] 随后,修改第1层,对RootFS文件系统进行修改、增加、删除文件和目录等操作。在该步骤中可实现对创建的第1层(第一层级)进行设置。
[0063] 随后,关闭第1层。具体的:把第1层设置为只读挂载,使用户尝试修改第1层的文件时,会导致修改失败,并在记录层级信息的文件InfoFile中标记第1层已经完成构建。如果在对第1层进行修改过程中,程序执行出错或者用户操作终止程序,没有做关闭第1层的操作,会认为第1层的数据不完整,再次判断该层是否完整时,会得到该层不完整的结果。
[0064] 随后,继续构建后续几层,直到完成RootFS文件系统中的所有层级的构建,每一层级的构建都与第1层的步骤结构相同。
[0065] 根据本发明的一个实施例,回退第一层级时,卸载目标目录对第一层级的挂载;删除第一层级的层级信息和层级目录。
[0066] 图5示出了根据本发明一个示范性实施例的回退层级的示意图。如图5所示:
[0067] 首先确定当前所在的层级。根据本发明的一个实施例,要回退的层级可为第一层级。随后判断当前的层级数量是否为0,即当前是否未构建任何层级,如果是则结束,否则继续下一步。
[0068] 随后,卸载目标目录挂载的层级,目标目录可具体实现为用于挂载文件系统,以及用于生成安装包的目录:MergedDir;还原MergedDir为未挂载状态;若目标目录挂载有多个层级,需要循环卸载这些层级,直到它实际上不挂载任何层级。
[0069] 随后,删除层级信息,即删除与该层级相关的记载层级信息的文件InfoFile。
[0070] 随后,删除存放层级文件的目录,具体的:循环递归删除层级的目录,直到删除所有层级的目录。当在删除层级的目录时,遇到目录不可修改的错误时,需要先将目录不可修改的属性去除,再继续删除。
[0071] 随后,将当前所在的层级从层级数量中减去后,判断判断当前的层级数量是否为0,如果是则继续下一步,否则进行设置只读挂载目标目录MergedDir。
[0072] 随后,设置目标目录MergedDir为只读,即设置该目录的权限为所有用户只读。
[0073] 随后,设置目标目录的属性为只读挂载MergedDir,具体的将当前层级所有之前的层级挂载为只读状态。
[0074] 回到图1。随后,执行步骤130,若不存在则创建第一层级,并对创建的第一层级进行设置。根据本发明的一个实施例,创建第一层级包括:确定第一层级的层级信息;确定第一层级的层级目录;根据第一层级的层级信息确定所述第一层级的下层层级列表;根据第一层级的下层层级列表,将第一层级的层级目录挂载到目标目录。
[0075] 根据本发明的一个实施例,创建第一层级时,还确定目标目录是否挂载有其他层级目录;若挂载有其他层级目录,则卸载目标目录所挂载的其他层级目录,以便挂载第一层级的层级目录。
[0076] 根据本发明的一个实施例,对层级(包括第一层级及其他层级)进行设置时,可对该层级在文件系统中的目录,进行修改、增加、删除文件和目录等操作,实现该层级所需要的功能。
[0077] 随后,执行步骤140,按照多个层级的构建顺序确定并构建下一层级,直到构建完成所有层级。
[0078] 根据本发明的一个实施例,按照多个层级的构建顺序确定并构建下一层级包括:确定下一层级是否存在;若下一层级不存在,则创建下一层级,并对创建的下一层级进行设置。
[0079] 若下一层级存在,则判断下一层级是否完整,若下一层级不完整,则回退下一层级。
[0080] 根据本发明的一个实施例,创建下一层级时:确定下一层级的层级信息;确定一层级的层级目录;根据下一层级的层级信息和已经构建的层级的层级信息确定下一层级的下层层级列表;根据下一层级的下层层级列表设置层级目录设置类;根据层级目录设置类将下一层级的层级目录挂载到目标目录。
[0081] 图6示出了根据本发明一个示范性实施例的创建层级的示意图。如图6所示,创建层级时,确定文件系统所需目录,若这些目录已经设置,则根据这些目录进行创建层级,若不存在,则预先进行设置。这些目录包括:
[0082] 文件目录,用于存放各层级的文件,根据本发明的一个实施例,可设置为:overlay/layers;
[0083] 堆叠文件目录,用于作为堆叠文件系统的工作目录;根据本发明的一个实施例,可设置为overlay/work,堆叠文件系统具体可设置为OverlayFS,将文件系统中不同目录和文件按顺序进行堆叠合并。堆叠文件系统用于将不同的文件目录按照顺序进行堆叠,下层文件被上层文件覆盖。
[0084] 层级信息目录,用于存放:用于记录层级的层级信息的文件,根据本发明的一个实施例,层级信息中用于记录层级的各种属性字段。
[0085] 随后,卸载目标目录所挂载的层级目录,设置目标目录为未挂载状态。若目标目录挂载有多个其他层级目录,则对目标目录所挂载的其他层级目录进行循环卸载,直到卸载完成目标目录所挂载的所有其他层级目录。
[0086] 随后,确定层级信息,包括当前要创建的层级的层级标识(如可标记为LayerID),根据本发明的一个实施例,还记录当前层级的下一层级的层级标识(ID,ParentLayerID)。层级信息可记录在文件InfoFile中。
[0087] 随后,确定当前层级的层级目录,若不存在,则进行创建。层级目录为用于存放该层所有文件的目录。根据本发明的一个实施例,可具体设置为overlay/layers/${LayerID},记为CurrentLayerDir。
[0088] 随后,确定当前层级的下层层级列表(LowerDirs),具体的,根据当前层级及其他各层级的记录层级信息的文件InfoFile进行确定;根据各层的LayerID和ParentLayerID,获取从当前层级的前一层级到第一层级的所有层级的目录的列表LowerDirs。其中,第一层级的下层层级列表ParentLayerID为空。如果当前层级是第一层级,则下层层级列表LowerDirs为空,如果当前层级是第二层级,则LowerDirs为{第一层级的目录},如果当前层是第三层级,则LowerDirs为{第二层级的目录,第一层级的目录},在下层层级列表中,顺序为越新的层级,越上层的层级的位置越靠前。
[0089] 随后,判断下层层级列表LowerDirs是否为空,如果非空则继续下一步,如果为空则将第一层级的层级目录挂载到目标目录,即使用选项bind将CurrentLayerDir绑定挂载到目的地MergedDir目录。
[0090] 随后,根据下一层级的下层层级列表设置层级目录设置类:根据当前层级设置upperdir,根据下层层级列表设置lowerdir,还根据堆叠文件系统的目录设置workdir。层级目录设置类可具体实现为overlay类,设置过程的代码为
[0091] lowerdir=LowerDirs,
[0092] upperdir=CurrentLayerDir,
[0093] workdir=overlay/work。
[0094] 随后,将当前层级挂载到目标目录,以便调用堆叠文件系统将第一层级到当前层级的文件按照层级顺序进行堆叠,并在目的地目录下提供访问,随后将对目的地目录绑定当前层级的绑定结果记录在当前层级的层级目录中。
[0095] 回到图1,随后,执行步骤150,根据构建的多个层级生成文件系统。
[0096] 图7示出了根据本发明一个示范性实施例的文件系统的示意图。
[0097] 本发明所构建的文件系统,在构建每个层级时,当前被构建层级可被修改,其他的下层层级为只读模式。
[0098] 如图7所示,文件系统包括第1层 第7层。如当前正在修改第7层,则只有第7层时可~读写的,下面的层都是只读的。
[0099] 若需要修改文件时,从第7层开始查找这个文件进行修改。如果这层有这个文件,则使用第7层进行修改,否则在更下层进行查找。
[0100] 根据本发明的一个实施例,本发明方法还包括:响应于构建新层级的请求,确定新层级在文件系统中的层级顺序;根据新层级的层级顺序确定文件系统中新层级的下层层级和原始上层层级;修改原始上层层级的层级信息生成新上层层级;根据下层层级、新层级和新上层层级生成文件系统。
[0101] 图8示出了根据本发明一个示范性实施例的构建新层级的示意图。如图8所示:可设置按照预设频率构建镜像文件,如每日自动构建ISO文件。具体的:先,构建1到4层,再构建5到7层。随后堆叠RootFS生成SquashFS文件,根据SquashFS文件生成ISO文件。
[0102] 当需要在ISO文件中构建新层级时,确定新层级的层级顺序,若新层级的层级顺序为第5层,则文件系统中新层级的下层层级为第1层到第4层。修改原始上层层级第5层到第7层的层级信息,生成新上层层级第6层到第8层。添加新软件包得到新层级第5层。随后,根据下层层级第1层到第4层,新层级第5层,新上层层级第6层到第8层,堆叠RootFS生成SquashFS文件,根据SquashFS文件生成ISO文件。
[0103] 本发明中对文件系统采用分层构建方式,按照每一层级的使用意图划分每个层级要做的工作。在构建文件系统过程中,如果需要反复测试构建的其中一个层级的功能,可以方便地回退到前一层层级,并且精确地回到之前层级的状态,之后就可以快速用新修改的代码重新构建这一个层级。
[0104] 根据本发明的一个实施例,一种本发明的应用场景如下:在需要限制及管控不同层次的软件包对系统的修改所造成影响时,如基础层的软件包的内容不应该被更上面层次的软件包修改,则使用分层构建的方式,每层的文件分开保存,可以支持确定是否发生了更上层次的软件包对基础层的软件包的内容的修改,以及比较出具体修改了什么文件。
[0105] 根据本发明的一个实施例,另一种本发明的应用场景如下:在需要快速构建镜像文件的场景下,比如开发者修改了几个软件包,需要把这几个软件包构建到镜像文件中进行测试,而在早些时间系统已经自动构建了一个镜像文件,则可以使用构建这个镜像文件时留下的缓存数据,复用文件系统的前几个层的构建结果,然后建立新的层级,在新的层级中加入要测试的软件包,进而实现快速构建和测试镜像文件。
[0106] 根据本发明的一个实施例,另一种本发明的应用场景如下:开发者在开发和优化第二层级所构建的功能时,可以设定只构建第一层级和第二层级,完成之后退出,构建层级的应用或程序会依次构建第一层级和第二层层级,然后结束。之后,开发者修改了构建第二层级的代码,并把第二层级的构建结果删除,即回退到只构建有第一层级的结果,然后重新构建文件系统并运行构建层级的应用或程序。由于原先构建的第一层级还在,因此检查第一层层级是否存在和完成的结果都是“是”,于是跳过构建第一层级的步骤。然后由于第二层级被开发者回退了,则检查第二层级是否存在的结果是“否”,不会跳过构建第二层级的步骤,会使用开发者修改后的代码,进行第二层级的构建,由此减少了一层层级构建消耗用时。随着复用的层级越多,可跳过的层级的构建步骤越多,能够越发显著的提升开发效率。
[0107] 根据本发明的一个实施例,一种本发明的应用场景如下:构建文件系统中的第五层级是包括步骤:针对第四层级的文件进行检查,即检查高层次的软件包对系统的基础层及以下层的软件包的修改。从设计和使用需求触发,这种修改应该越少越好,因为基础层及以下层中实现了系统的底层安全机制,利用对文件系统进行分层形成的检查机制使得更高层次的软件包没有可能在镜像文件构建阶段修改系统的安全机制,从而提升了利用镜像文件安装应用安全性。具体的,镜像文件若实现为操作系统镜像文件,则能够提升利用镜像文件提升安装操作系统的安全性。
[0108] 根据本发明的一个实施例,另一种本发明的应用场景如下:为了快速增量构建安装包,如一种ISO文件,则先为构建ISO文件设定计划任务,如每日凌晨自动构建ISO文件。每日构建ISO文件完成之后,则可以使用其为基础快速构建出包含用户需要的软件包的ISO文件。ISO文件构建系统在用户工作时间内,接收到用户快速构建ISO文件的请求之后,将复用已经存在的第一层级到第四层级的结果,以它们为基础构建新的层级,在该新层级的修改数据过程中,加入用户需要添加的软件包,然后再继续后续流程。由于复用了前第一层级到四层级的结果,将为用户节省大量构建时间,提升了用户的工作效率,并且因为前四个层级是当天构建的,能够保证所构建文件系统的具有时效性。
[0109] 本发明公开了一种文件系统构建方法,适于在计算设备中执行,方法包括:确定文件系统包括的多个层级,多个层级包括构建顺序;确定多个层级中第一层级是否存在;若不存在则创建第一层级,并对创建的第一层级进行设置;按照多个层级的构建顺序确定并构建下一层级,直到构建完成所有层级;根据构建的多个层级生成文件系统。本发明能够在构建文件系统时,将文件系统划分为多个层级进行构建。对每个层级分别进行设置,再将各个层级按照顺序生成文件系统,实现对文件系统的结构化设置,提高文件系统的构建效率。
[0110] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0111] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
[0112] 本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
[0113] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组间组合成一个模块或单元或组间,以及此外可以把它们分成多个子模块或子单元或子组间。除了这样的特征和、或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0114] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
[0115] 此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
[0116] 这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD‑ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
[0117] 在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和、或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的文件系统构建方法。
[0118] 以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
[0119] 如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0120] 尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的。