CN109542493A - 一种镜像升级方法及设备 - Google Patents
一种镜像升级方法及设备 Download PDFInfo
- Publication number
- CN109542493A CN109542493A CN201710868013.4A CN201710868013A CN109542493A CN 109542493 A CN109542493 A CN 109542493A CN 201710868013 A CN201710868013 A CN 201710868013A CN 109542493 A CN109542493 A CN 109542493A
- Authority
- CN
- China
- Prior art keywords
- file
- sublayer
- layer
- container
- image planes
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及一种镜像升级方法,该方法包括:接收容器的增量镜像文件;增量镜像文件包括:新增的文件,修改的文件以及被删除文件的信息;其中,被删除文件的信息包括:每个被删除的文件名以及被删除的文件的存储路径;根据增量镜像文件更新原始镜像层,得到更新后的镜像层,其中,在更新后的镜像层中将被删除文件的状态设置为隐藏状态;叠加更新后的镜像层中的文件与容器数据层中的文件,在视图层形成更新后的统一视图供容器使用;其中,更新后的统一视图不包括被设置为隐藏状态的被删除文件。
Description
技术领域
本发明涉及容器技术领域,尤其涉及一种镜像升级方法及设备。
背景技术
随着容器技术越来越成熟,容器技术在各个领域运用的越来越普遍。在物联网中,为了功耗,成本的考虑,物联网设备的硬件资源比较少,所以作为轻量级的虚拟化技术,容器技术非常适合物联网设备。Docker、Linux容器(Linux container,LXC)等容器技术相比,Linux容器更轻便,更适合应用于物联网。
通俗来说,容器是一个精简版的Linux操作系统,镜像是加载到这个容器的软件,当需要增强容器的功能时,需要升级该容器对应的镜像。目前,Docker提供了一种镜像管理的方法,结合DockerHub,可以很方便的实现Docker容器的镜像的管理以及镜像的增量升级,但是Docker容器的镜像管理方法并不适合物联网设备。LXC当前不支持镜像的增量升级,升级Linux容器镜像,需要全部下载一个完整的镜像到设备,这样既浪费带宽,又浪费设备上的磁盘资源,升级也非常耗时,效率低下。
发明内容
本发明用于解决现有技术中Linux容器不支持镜像的增量升级导致的镜像升级时浪费带宽和磁盘资源,升级效率低下的问题。
本发明实施例第一方面提供了一种镜像升级方法,该方法应用于容器,容器包括视图层、容器数据层和原始镜像层,原始镜像层包括第一子层至第n子层;视图层、容器数据层、第一子层至第n子层依次位于容器中,n≥1;该方法包括:接收容器的增量镜像文件;增量镜像文件包括:新增的文件,修改的文件以及被删除文件的信息;其中,被删除文件的信息包括:每个被删除的文件名以及被删除的文件的存储路径;根据增量镜像文件更新原始镜像层,得到更新后的镜像层;其中,在更新后的镜像层中将被删除文件的状态设置为隐藏状态;叠加更新后的镜像层中的文件与容器数据层中的文件,在视图层形成更新后的统一视图供容器使用;其中,更新后的统一视图不包括被设置为隐藏状态的被删除文件。
在所述第一方面的第一种实施方式中,更新原始镜像层包括:将增量镜像文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第m子层文件作为新第m+1子层文件形成更新后的镜像层的第m+1子层,1≤m≤n。
在所述第一方面的第二种实施方式中,更新原始镜像层包括:将增量镜像文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第m子层文件作为新第m+1子层文件形成更新后的镜像层的第m+1子层,将原始镜像层的第n-1子层文件和原始镜像层的第n子层文件合并作为新第n子层文件形成更新后的镜像层的第n子层,1≤m≤n-2。
基于所述第二种实施方式,在所述第一方面的第三种实施方式中,将原始镜像层的第n-1子层文件和原始镜像层的第n子层文件合并作为新第n子层文件形成更新后的镜像层的第n子层包括:比较原始镜像层的第n-1子层文件和原始镜像层的第n子层文件,当原始镜像层的第n-1子层存在第一文件且原始镜像层的第n子层中存在第一文件的同名文件时,删除原始镜像层的第n子层中的第一文件的同名文件,合并原始镜像层的第n-1子层文件和原始镜像层的第n子层的剩余文件,得到新的第n子层文件形成更新后的镜像层的第n子层。
基于所述第二种实施方式,在所述第一方面的第四种实施方式中,将原始镜像层的第n-1子层文件和原始镜像层的第n子层文件合并作为新第n子层文件形成更新后的镜像层的第n子层包括:当原始镜像层的第n-1子层文件包括隐藏状态描述文件时,删除隐藏状态描述文件,并从原始镜像层的第n子层中删除隐藏状态描述文件中的文件名对应的文件,合并原始镜像层的第n-1子层文件和原始镜像层的第n子层的剩余文件,得到新的第n子层文件形成更新后的镜像层的第n子层。
基于所述第一方面及第一方面的任意一种实现方式,当从更新后的镜像层的任一子层中删除指定文件时,将指定文件的状态设置为隐藏状态,使得指定文件对于容器数据层和视图层不可见,其中指定文件为任意文件。
基于所述第一方面及第一方面的任意一种实现方式,该方法还包括:确定更新后的镜像层中的目标文件,目标文件的优先级高于容器数据层中目标文件的同名文件的优先级;在叠加更新后的镜像层中的文件与容器数据层中的文件时,将容器数据层中的目标文件的同名文件的状态设置为隐藏状态,并在更新后的统一视图中呈现目标文件。
基于所述第一方面及第一方面的任意一种实现方式,该方法还包括:删除更新后的镜像层的第一子层;将更新后的镜像层的第m子层文件作为回退后的镜像层的第m-1子层文件形成回退后的镜像层的第m-1子层,2≤m≤n;叠加回退后的镜像层中的文件与容器数据层中的文件,在视图层形成回退后的统一视图供容器使用;其中,回退后的统一视图与原始镜像层的文件和容器数据层的文件叠加后得到的统一视图相同。
本发明实施例第一方面提供的一种镜像升级方法实现了容器镜像层的分层管理,在容器镜像升级时,只需下载容器的增量部分,节省了下载时间及网络宽带,节约了设备上保存容器镜像的磁盘空间,并且在机制上保证了容器数据升级后不会丢失。解决了现有技术中Linux容器不支持镜像的增量升级导致的镜像升级时浪费带宽和磁盘资源,升级效率低下的问题。
本发明实施例第二方面提供了一种设备,该设备包括存储器和处理器,存储器用于存储容器,处理器用于执行第一方面及第一方面的各实现方式中的方法。
本发明实施例第三方面提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行第一方面及第一方面的各实现方式中的方法。
本发明实施例第四方面提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面及第一方面的各实现方式中的方法。
附图说明
图1为一种Linux容器的文件系统结构示意图;
图2为本发明实施例提供的一种镜像层文件设置隐藏状态的Linux容器的文件系统结构示意图;
图3为本发明实施例提供的一种镜像层文件设置优先级属性的Linux容器的文件系统结构示意图;
图4为本发明实施例提供的一种Linux容器镜像升级方法流程图;
图5为本发明实施例提供的一种Linux容器镜像升级示意图;
图6为本发明实施例提供的一种Linux容器镜像升级示意图;
图7为本发明实施例提供的一种Linux容器镜像回退示意图;
图8为本发明实施例一提供的一种Linux容器镜像层新增文件方法示意图;
图9为本发明实施例二提供的一种Linux容器镜像层修改文件方法示意图;
图10为本发明实施例一提供的一种Linux容器镜像层删除文件方法示意图;
图11为本发明实施例提供的一种设备结构示意图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图对本发明实施例具体实施方式做进一步的详细描述。
Linux容器包括:视图层、容器数据层和镜像层;镜像层包括n个子层;视图层、容器数据层、第一子层至第n子层依次位于容器中,n大于等于1。容器数据层可以读写,镜像层只读,视图层为容器数据层与镜像层叠加后形成的统一视图,又称为合并点(merged point)。在本发明实施例提供的Linux容器中,镜像层包括n个子层,以n为3为例,则n个子层包括:第一子层、第二子层和第三子层。视图层、容器数据层、第一子层、第二子层和第三子层依次位于容器中。其中,本发明实施例中所提到的容器的结构,实际是指容器的文件系统的结构。所述文件系统可以为根文件系统(英文:root file system,简称:rootfs)。所述统一视图用于向容器呈现叠加后的属于所述容器的文件。
Linux容器升级时,根据OverlayFS2叠加原则进行叠加,将容器数据层和镜像层所有文件进行叠加,在视图层形成统一的视图供容器使用。OverlayFS使用两个目录,把一个目录置放于另一个之上,并且对外提供单个统一的视角。这两个目录通常被称作层,这个分层的技术被称作union mount。术语上,下层的目录叫做lowerdir,上层的叫做upperdir。对外展示的统一视图称作merged。OverlayFS2增加了多个lowerdir。在本发明实施例中镜像层对应lowerdir,容器数据层对应upperdir,视图层对应merged,镜像层包括n个子层对应n个lowerdir。OverlayFS2遵循三个原则:一、上下合并,merged目录里面是上下层目录中文件的并集;二、同名遮盖,当上层目录中含有下层目录的同名文件时,上层文件覆盖下层文件,merged目录里面呈现上层目录中的文件,其中,同名文件是名称相同但存储路径不同的多个文件,例如,上层目录中有文件A,下层目录有也有文件A,则上层目录中的文件A和下层目录中的文件A互为同名文件,同名文件的内容可以不相同;三、写时拷贝,在叠加后的文件系统(merged目录)中,创建文件都是创建在上层目录。修改文件时,如果该文件是来自上层目录则直接修改该文件,如果该文件来自下层目录,则先将该文件拷贝到上层目录再修改该文件。删除文件时如果该文件来自上层目录则直接删除,如果该文件来自下层目录则隐藏该文件,让该文件在merged目录里面看不到。
图1为一种Linux容器的文件系统结构示意图,该Linux容器包括视图层,容器数据层和镜像层,该镜像层包括三个子层。文件1在第三子层中,第三子层之上无文件1的同名文件,文件1直接在视图层中显示。文件2在第二子层中,并且文件2的一个同名文件位于第三子层中,根据同名遮盖原则,第二子层中的文件2覆盖第三子层中的文件2,在视图层中只显示第二子层中的文件2。同理,文件3在第三子层中,并且文件3的一个同名文件位于第一子层中,则视图层中只显示第一子层中的文件3。文件4在容器数据层中,直接在视图层中显示。文件5在第三子层中,并且,文件5在容器数据层中被设置为隐藏状态(附图中用“文件名+rm”表示),视图层中不显示文件5,但是文件5未被真正删除,第三子层中的文件5实际上还是存在的。该文件系统中的所有文件按照overlayfs2的叠加原则进行叠加后在视图层形成统一的视图,供容器使用。如图1所示,经过叠加后,容器可以使用的文件包括第三子层中的文件1,第二子层中的文件2,第一子层中的文件3和容器数据层中的文件4,不包括被设置为隐藏状态的第三子层中的文件5。其中,被设置为隐藏状态的文件不会被呈现在统一视图中。
图2为本发明实施例提供的一种镜像层文件设置隐藏状态的Linux容器的文件系统结构示意图。图1中的Linux容器的文件系统结构只能在容器数据层设置镜像层文件的隐藏状态,容器数据层隐藏状态描述文件隐藏镜像层中的文件。图2中,可以在镜像层中设置镜像层中文件的隐藏状态,即允许为需要隐藏的镜像层文件添加状态信息,该状态信息用于指示该镜像层文件的状态为隐藏状态。镜像层文件的默认状态为公开状态,不需要额外设置。当镜像升级删除文件时,由于镜像层文件为只读文件,不能将原有文件进行直接删除,需要设置该文件的隐藏状态来达到与删除文件同样的效果。镜像层中的第一子层文件可以隐藏第二子层和第三子层文件,第二子层文件可以隐藏第三子层文件,而不是真正的删除文件。在一个具体的例子中,如图2所示,文件2在第二子层中被设置为隐藏状态,但是并没有实际删除文件2,只是容器数据层和视图层中看不到该文件2,视图层中不显示第三子层中的文件2,同理,文件3在第一子层中被设置为隐藏状态,但第三子层中的文件3并没有被实际删除,通过overlayfs2叠加后,文件3在视图层不显示。
为了在镜像层中为镜像层文件设置隐藏状态,可选地,可以在镜像层的第1到第n-1个子层中分别设置隐藏状态描述文件,所述隐藏状态描述文件用于记录被设置为隐藏状态的文件的文件名和该文件的存储路径。
在本发明实施例中,如果需要将镜像层的第n-1子层与第n子层合并,且第n-1子层存在隐藏状态描述文件,则在合并过程中,需要删除该隐藏状态描述文件以及第n层中该隐藏状态描述文件中记录为文件名对应的文件。例如,当需要将图2中的第二子层文件合并到第三子层中时,原第二子层中的隐藏状态描述文件(记录了文件2的隐藏状态)以及原第三子层中的文件2被真正删除。
本申请中,不仅可以在镜像层中隐藏镜像层文件,还可以为镜像层文件添加优先级属性,设置该镜像层文件的优先级高于容器数据层文件的优先级。
图3为本发明实施例提供的一种镜像层文件设置优先级属性的Linux容器的文件系统的结构示意图,现有技术中容器数据层中的文件覆盖镜像层中的同名文件。然而,如果在镜像升级过程中对镜像层中的文件进行了更新,而容器数据层中存在更新后镜像层文件的同名文件,容器数据层中的同名文件为更新前的文件,那么,用容器数据层中的同名文件覆盖镜像层中的更新后的文件,会导致更新失败。为了避免上述问题,本发明实施例提供Linux容器的文件系统为镜像层文件设置优先级属性,以记录该镜像层文件的优先级,使更新后的镜像层文件的优先级高于容器数据层中该镜像层文件的同名文件优先级,这样,当更新后的镜像层文件与容器数据层文件叠加时,更新后的镜像层文件覆盖容器数据层中的同名文件。
在一个具体地例子中,如图3所示,容器数据层、第二子层和第三子层中存在名称为文件1的同名文件,第二子层中的文件1是对第三子层文件1的更新,根据同名遮盖原则第二子层的文件1覆盖第三子层的文件1。为了使第二子层中的文件1能够覆盖容器数据层中的文件1,设置第二子层中的被更新的文件1的优先级高于容器数据层中的文件1(用▲表示),则根据overlayfs2叠加原则叠加后,视图层显示第二子层中的文件1,这样可以在视图层成功显示更新过的文件1。类似的,容器数据层和第三子层中存在名称为文件4的同名文件,而第三子层中的文件4未进行过更新,则不对第三子层中的文件4的设置优先级属性,通过overlayfs2叠加容器数据层和镜像层后,视图层显示容器数据层中的文件4。
图4为本发明实施例提供的一种Linux容器镜像升级方法流程图,应用于图2或图3所示的容器,该容器设置为停止状态时开始进行镜像升级,该方法由容器所在的主机或者主机上的hypervisor执行,该容器包括视图层、容器数据层和原始镜像层,所述原始镜像层包括第一子层至第n子层;所述视图层、所述容器数据层、所述第一子层至第n子层依次位于所述容器中,n≥1。该方法包括:
步骤401:接收容器的增量镜像文件;增量镜像文件包括:新增的文件,修改的文件以及被删除文件的信息;其中,被删除文件的信息包括:每个被删除的文件名以及被删除的文件的存储路径。
其中,增量镜像文件是由镜像文件提供商生成的。
步骤402:根据增量镜像文件更新原始镜像层,得到更新后的镜像层;其中,在更新后的镜像层中将被删除文件的状态设置为隐藏状态。
其中,在更新后的镜像层中将被删除的文件设置为隐藏状态是通过在镜像子层中设置隐藏状态描述文件实现的。
步骤403:叠加更新后的镜像层中的文件与容器数据层中的文件,在视图层形成更新后的统一视图供容器使用;其中,更新后的统一视图不包括被设置为隐藏状态的被删除文件。
在一个实现方式中,更新原始镜像层包括:将增量镜像文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第m子层文件作为新第m+1子层文件形成更新后的镜像层的第m+1子层,1≤m≤n。
在另一个实现方式中,更新原始镜像层包括:将增量镜像文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第m子层文件作为新第m+1子层文件形成更新后的镜像层的第m+1子层,将原始镜像层的第n-1子层文件和原始镜像层的第n子层文件合并作为新第n子层文件形成更新后的镜像层的第n子层,1≤m≤n-2。
无论是上述哪种方式,如果增量镜像文件包括被删除文件的信息,则需要在由增量镜像文件生成的新的第一子层中建立隐藏状态描述文件,所述隐藏状态描述文件用于记录所述被删除的文件以及所述被删除的文件的存储路径。
Linux容器在发布之初,容器的原始镜像层只包括一个子层,将增量镜像文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第一子层文件作为新第二子层文件形成更新后的镜像层的第二子层,完成一次镜像更新。在本发明实施例提供的一个具体的例子中,将增量镜像文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第一子层文件作为新第二子层文件形成更新后的镜像层的第二子层,将原始镜像层的第二子层文件和原始镜像层的第三子层文件合并作为新第三子层文件形成更新后的镜像层的第三子层,形成如图6所示的由三个子层镜像层构成的更新后的Linux容器的文件系统结构。根据应用情况Linux容器可进行多次升级,为了节约容器占用空间,镜像层中子层的数目一般不超过5层,当镜像层中子层数目为多层时,可以应用上述两种方式进行镜像层更新。当镜像层中子层数目过多时,可以将倒数第一子层(第n层)删除,并删除倒数第二子层(第n-1层)中的隐藏状态描述文件,以减少容器占用的空间。
经过镜像升级的容器还可以回退到之前的镜像,在该容器设置为停止状态时开始进行镜像回退,该方法由容器所在的主机或者主机上的hypervisor执行,该方法包括:删除更新后的镜像层的第一子层;将更新后的镜像层的第m子层文件作为回退后的镜像层的第m-1子层文件形成回退后的镜像层的第m-1子层,2≤m≤n;叠加回退后的镜像层中的文件与容器数据层中的文件,在视图层形成回退后的统一视图供容器使用;其中,回退后的统一视图与原始镜像层的文件和容器数据层的文件叠加后得到的统一视图相同。
在本发明实施例提供的一个具体的例子中,如图7所示,更新后的容器镜像层包括第一子层、第二子层、第三子层,删除更新后的镜像层的第一子层;将更新后的镜像层的第二子层文件作为回退后的镜像层的第一子层文件形成回退后的镜像层的第一子层,将更新后的镜像层的第三子层文件作为回退后的镜像层的第二子层文件形成回退后的镜像层的第二子层;叠加回退后的镜像层中的文件与容器数据层中的文件,在视图层形成回退后的统一视图供容器使用。
容器的镜像升级有三种情况:对已有镜像新增、修改和删除,本发明实施例提供的Linux容器镜像升级对应处理的最小单位就是文件,增量镜像就包括:新增的文件,修改的文件以及被删除文件的信息;其中,所述被删除文件的信息包括:每个被删除的文件名以及所述被删除的文件的存储路径。下面对照三种情况对如图3所示的容器的镜像升级进行详细描述。
图8为本发明实施例一提供的一种Linux容器镜像层新增文件方法示意图,假设原始镜像层为图3所示的镜像层,增量镜像文件包括一个新增的文件6,则将文件6作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第一子层的文件3作为新第二子层文件形成更新后的镜像层的第二子层,原始镜像层的第二子层存在文件1,且原始镜像层的第三子层中存在文件1的同名文件,删除原始镜像层的第三子层中的文件1,同时,原始镜像层的第二子层中存在第三子层中文件2的隐藏状态描述文件2-rm,删除隐藏状态描述文件2-rm,并从原始镜像层的第三子层中删除隐藏状态描述文件2-rm对应的文件2,合并原始镜像层的第二子层文件1和原始镜像层的第三子层的文件3、文件4和文件5,得到新的第三子层文件,形成更新后的镜像层的第三子层,更新后的镜像层的第三子层中包括文件1、文件3、文件4和文件5。
根据overlayfs2文件叠加原则,更新镜像层的容器中,第三子层中存在文件1且为更新过的文件,容器数据层中存在同名文件1且为未经过更新的文件,设置第三子层的文件1优先级高于容器数据层的文件1的优先级,第三子层的文件1在视图层显示。第二子层和第三子层中存在同名文件3,根据同名遮盖原则,第三子层的文件3对于视图层不可见,第二镜像层的文件3在视图层中显示。第三子层中存在文件4且为未经过更新的文件,容器数据层中存在同名文件4,容器数据层中的文件4的优先级高于第三子层中的文件4的优先级,容器数据层中的文件4在视图层中显示。由于容器数据层存在记录第三子层中文件5隐藏状态的文件5-rm,第三子层中的文件5在视图层中不显示。通过叠加在视图层中形成包括第三子层的文件1、第二子层的文件3、容器数据层的文件4和第一子层的文件6的统一视图供容器使用。
图9为本发明实施例二提供的一种Linux容器镜像层修改文件方法示意图,假设原始镜像层为图3所示的镜像层,增量镜像文件包括一个对原有第二子层的文件1修改的文件并命名为文件1,将文件1作为新第一子层文件形成更新后的镜像层的第一子层,由于增量镜像文件中的文件1为更新后的文件,设置增量镜像文件中的文件1的优先级高于容器数据层中文件1的优先级(用▲表示),将原始镜像层的第一子层的文件3作为新第二子层文件形成更新后的镜像层的第二子层,原始镜像层的第二子层存在文件1,且原始镜像层的第三子层中存在文件1的同名文件,删除原始镜像层的第三子层中的文件1,同时,原始镜像层的第二子层中存在第三子层中文件2的隐藏状态描述文件2-rm,删除隐藏状态描述文件2-rm,并从原始镜像层的第三子层中删除隐藏状态描述文件2-rm对应的文件2,合并原始镜像层的第二子层文件1和原始镜像层的第三子层的文件3、文件4和文件5,得到新的第三子层文件,形成更新后的镜像层的第三子层,更新后的镜像层的第三子层中包括文件1、文件3、文件4和文件5。
根据overlayfs2文件叠加原则,更新镜像层的容器中,第一子层中存在文件1,第三子层中存在同名文件1,根据同名遮盖原则,第一子层的文件1覆盖第三子层的文件1,由于第一子层的文件1为本次更新的文件,容器数据层中存在同名文件1且为未经过更新的文件,设置第一子层的文件1优先级高于容器数据层的文件1的优先级,第一子层的文件1在视图层显示。第二子层和第三子层中存在同名文件3,根据同名遮盖原则,第三子层的文件3对于视图层不可见,第二镜像层的文件3在视图层中显示。第三子层中存在文件4且为未经过更新的文件,容器数据层中存在同名文件4,容器数据层中的文件4的优先级高于第三子层中的文件4的优先级,容器数据层中的文件4在视图层中显示。由于容器数据层存在记录第三子层中文件5隐藏状态的文件5-rm,第三子层中的文件5在视图层中不显示。通过叠加在视图层中形成包括第一子层的文件1、第二子层的文件3和容器数据层的文件4的统一视图供容器使用。
图10为本发明实施例三提供的一种Linux容器镜像层删除文件方法示意图,假设原始镜像层为图3所示的镜像层,增量镜像文件包括被删除文件的信息:原始镜像层中第一子层的文件3。则在由增量镜像文件生成的第一子层中生成隐藏状态描述文件,用于记录文件3的名称以及存储路径(即文件3真正的存储路径,通过该存储路径,可以找到文件3),该隐藏状态描述文件作为新第一子层文件形成更新后的镜像层的第一子层,将原始镜像层的第一子层的文件3作为新第二子层文件形成更新后的镜像层的第二子层,原始镜像层的第二子层存在文件1,且原始镜像层的第三子层中存在文件1的同名文件,删除原始镜像层的第三子层中的文件1,同时,原始镜像层的第二子层中存在第三子层中文件2的隐藏状态描述文件2-rm,删除隐藏状态描述文件2-rm,并从原始镜像层的第三子层中删除隐藏状态描述文件2-rm对应的文件2,合并原始镜像层的第二子层文件1和原始镜像层的第三子层的文件3、文件4和文件5,得到新的第三子层文件,形成更新后的镜像层的第三子层,更新后的镜像层的第三子层中包括文件1、文件3、文件4和文件5。
根据overlayfs2文件叠加原则,更新镜像层的容器中,第三子层中存在文件1且为更新过的文件,容器数据层中存在同名文件1且为未经过更新的文件,设置第三子层的文件1优先级高于容器数据层的文件1的优先级(用▲表示),第三子层的文件1在视图层显示。第二子层和第三子层中存在同名文件3,根据同名遮盖原则,第三子层的文件3对于视图层不可见,同时,第一子层中包括用于记录原始镜像层第一子层中文件3隐藏属性的文件,第二镜像层的文件3对于视图层不可见。第三子层中存在文件4且为未经过更新的文件,容器数据层中存在同名文件4,容器数据层中的文件4的优先级高于第三子层中的文件4的优先级,容器数据层中的文件4在视图层中显示。由于容器数据层存在记录第三子层中文件5隐藏状态的文件5-rm,第三子层中的文件5在视图层中不显示。通过叠加在视图层中形成包括第三子层的文件1和容器数据层的文件4的统一视图供容器使用。
上述图8、图9、图10形成的升级后的Linux容器。此后,可以通过删除更新后的镜像层的第一子层;将更新后的镜像层的第二子层文件作为回退后的镜像层的第一子层文件形成回退后的镜像层的第一子层;将更新后的镜像层的第三子层文件作为回退后的镜像层的第二子层文件形成回退后的镜像层的第二子层,叠加回退后的镜像层中的文件与容器数据层中的文件,在视图层形成与图3所示相同的统一视图供容器使用。本发明实施例提供的Linux容器镜像层可进行多次升级和多次回退。
图11为本发明实施例提供的一种设备结构示意图,该设备包括:处理器和存储器。存储器可通过总线与处理器连接。存储器可以是非易失存储器,例如硬盘驱动器和闪存,存储器中存储有软件程序和设备驱动程序。软件程序能够执行本发明实施例提供的上述方法的各种功能;设备驱动程序可以是网络和接口驱动程序。处理器用于执行软件程序,该软件程序被执行时,能够实现本发明实施例提供的方法。
需要说明的是,本发明实施例还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时,能够实现本发明实施例提供的方法。
本发明实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机上运行时,使得处理器执行上述方法。
本发明实施例提供的一种镜像升级方法及设备实现了容器镜像层的分层管理,在容器镜像升级时,只需下载容器的增量部分,节省了下载时间及网络宽带,节约了设备上保存容器镜像的磁盘空间,并且在机制上保证了容器数据升级后不会丢失。解决了现有技术中Linux容器不支持镜像的增量升级导致的镜像升级时浪费带宽和磁盘资源,升级效率低下的问题。
上述实施例提供的镜像升级的方法不只局限于overlayfs2应用场景下的Linux容器,在资源有限的设备中,变更升级文件的场景及所有需要底层变更影响上层的叠加文件系统场景中都可应用。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种镜像升级方法,其特征在于,所述方法应用于容器,所述容器包括视图层、容器数据层和原始镜像层,所述原始镜像层包括第一子层至第n子层;所述视图层、所述容器数据层、所述第一子层至第n子层依次位于所述容器中,n≥1;所述方法包括:
接收所述容器的增量镜像文件;所述增量镜像文件包括:新增的文件,修改的文件以及被删除文件的信息;其中,所述被删除文件的信息包括:每个被删除的文件名以及所述被删除的文件的存储路径;
根据所述增量镜像文件更新所述原始镜像层,得到更新后的镜像层;其中,在所述更新后的镜像层中将所述被删除文件的状态设置为隐藏状态;
叠加所述更新后的镜像层中的文件与所述容器数据层中的文件,在视图层形成更新后的统一视图供所述容器使用;其中,所述更新后的统一视图不包括所述被设置为隐藏状态的被删除文件。
2.根据权利要求1所述的方法,其特征在于,所述更新所述原始镜像层包括:将所述增量镜像文件作为新第一子层文件形成所述更新后的镜像层的第一子层,将所述原始镜像层的第m子层文件作为新第m+1子层文件形成所述更新后的镜像层的第m+1子层,1≤m≤n。
3.根据权利要求1所述的方法,其特征在于,所述更新所述原始镜像层包括:将所述增量镜像文件作为新第一子层文件形成所述更新后的镜像层的第一子层,将所述原始镜像层的第m子层文件作为新第m+1子层文件形成所述更新后的镜像层的第m+1子层,将所述原始镜像层的第n-1子层文件和所述原始镜像层的第n子层文件合并作为新第n子层文件形成所述更新后的镜像层的第n子层,1≤m≤n-2。
4.根据权利要求3所述的方法,其特征在于,所述将所述原始镜像层的第n-1子层文件和所述原始镜像层的第n子层文件合并作为新第n子层文件形成所述更新后的镜像层的第n子层包括:比较所述原始镜像层的第n-1子层文件和所述原始镜像层的第n子层文件,当所述原始镜像层的第n-1子层存在第一文件且所述原始镜像层的第n子层中存在所述第一文件的同名文件时,删除所述原始镜像层的第n子层中的所述第一文件的同名文件,合并所述原始镜像层的第n-1子层文件和所述原始镜像层的第n子层的剩余文件,得到所述新的第n子层文件形成所述更新后的镜像层的第n子层。
5.根据权利要求3所述的方法,其特征在于,所述将所述原始镜像层的第n-1子层文件和所述原始镜像层的第n子层文件合并作为新第n子层文件形成所述更新后的镜像层的第n子层包括:当所述原始镜像层的第n-1子层文件包括隐藏状态描述文件时,删除所述隐藏状态描述文件,并从所述原始镜像层的第n子层中删除所述隐藏状态描述文件中的文件名对应的文件,合并所述原始镜像层的第n-1子层文件和所述原始镜像层的第n子层的剩余文件,得到所述新的第n子层文件形成所述更新后的镜像层的第n子层。
6.根据权利要求1-5中任意一项所述的方法,其特征在于,当从所述更新后的镜像层的任一子层中删除指定文件时,将所述指定文件的状态设置为隐藏状态,使得所述指定文件对于所述容器数据层和所述视图层不可见,其中所述指定文件为任意文件。
7.根据权利要求1-6中任意一项所述的方法,其特征在于,所述方法还包括:
确定所述更新后的镜像层中的目标文件,所述目标文件的优先级高于所述容器数据层中所述目标文件的同名文件的优先级;
在叠加所述更新后的镜像层中的文件与所述容器数据层中的文件时,将所述容器数据层中的所述目标文件的同名文件的状态设置为隐藏状态,并在所述更新后的统一视图中呈现所述目标文件。
8.根据权利要求1-7中任意一项所述的方法,其特征在于,所述方法还包括:
删除所述更新后的镜像层的第一子层;
将所述更新后的镜像层的第m子层文件作为回退后的镜像层的第m-1子层文件形成回退后的镜像层的第m-1子层,2≤m≤n;
叠加所述回退后的镜像层中的文件与所述容器数据层中的文件,在视图层形成回退后的统一视图供所述容器使用;其中,所述回退后的统一视图与所述原始镜像层的文件和所述容器数据层的文件叠加后得到的统一视图相同。
9.一种设备,包括存储器和处理器,其特征在于,所述存储器用于存储容器,所述处理器用于执行如权利要求1-8所述的方法。
10.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1-8任一权利要求所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8任一权利要求所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710868013.4A CN109542493A (zh) | 2017-09-22 | 2017-09-22 | 一种镜像升级方法及设备 |
PCT/CN2018/102728 WO2019056931A1 (zh) | 2017-09-22 | 2018-08-28 | 一种镜像升级方法及设备 |
EP18859214.1A EP3678019B1 (en) | 2017-09-22 | 2018-08-28 | Mirror image upgrading method and device |
US16/824,391 US11249745B2 (en) | 2017-09-22 | 2020-03-19 | Image upgrade method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710868013.4A CN109542493A (zh) | 2017-09-22 | 2017-09-22 | 一种镜像升级方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109542493A true CN109542493A (zh) | 2019-03-29 |
Family
ID=65811066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710868013.4A Pending CN109542493A (zh) | 2017-09-22 | 2017-09-22 | 一种镜像升级方法及设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11249745B2 (zh) |
EP (1) | EP3678019B1 (zh) |
CN (1) | CN109542493A (zh) |
WO (1) | WO2019056931A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008703A (zh) * | 2019-04-08 | 2019-07-12 | 四川大学 | 一种容器内恶意软件静态检测系统及方法 |
WO2021163838A1 (en) * | 2020-02-17 | 2021-08-26 | Arris Enterprises Llc | Method and system for rollback validation based on wireless connectivity |
CN113342378A (zh) * | 2021-06-25 | 2021-09-03 | 山东浪潮通软信息科技有限公司 | 一种基于文件系统更新的镜像生成方法、设备及介质 |
CN113553091A (zh) * | 2021-07-28 | 2021-10-26 | 恒安嘉新(北京)科技股份公司 | 增量镜像数据包的自动生成方法、装置、设备及存储介质 |
WO2022111097A1 (zh) * | 2020-11-26 | 2022-06-02 | 北京沃东天骏信息技术有限公司 | 一种文件更新方法及装置、设备、存储介质 |
CN114721699A (zh) * | 2022-05-19 | 2022-07-08 | 龙芯中科技术股份有限公司 | 一种镜像升级方法、装置、电子设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542493A (zh) * | 2017-09-22 | 2019-03-29 | 华为技术有限公司 | 一种镜像升级方法及设备 |
US11429596B2 (en) | 2020-04-20 | 2022-08-30 | International Business Machines Corporation | Update for configuration file |
CN112383606B (zh) * | 2020-11-09 | 2023-12-19 | 福建亿榕信息技术有限公司 | 一种桌面容器镜像增量p2p分发方法及设备 |
CN113326805B (zh) * | 2021-06-24 | 2024-04-05 | 杭州海康威视数字技术股份有限公司 | 一种人体封面更新方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193807A (zh) * | 2010-03-19 | 2011-09-21 | 联想(北京)有限公司 | 一种镜像文件升级的方法、服务器及计算机网络系统 |
CN103092648A (zh) * | 2013-01-07 | 2013-05-08 | 华为终端有限公司 | 一种镜像升级方法、系统及用户设备和个人计算机 |
CN106227579A (zh) * | 2016-07-12 | 2016-12-14 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN106528224A (zh) * | 2016-11-03 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
CN107015995A (zh) * | 2016-01-28 | 2017-08-04 | 华为技术有限公司 | 一种镜像文件的修改方法和装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814478B2 (en) * | 2005-11-09 | 2010-10-12 | Texas Instruments Norway As | Methods and apparatus for use in updating application programs in memory of a network device |
CN101271425A (zh) * | 2007-03-23 | 2008-09-24 | 国际商业机器公司 | 基于磁盘映像概要的应用程序服务器预配置系统和方法 |
US8386733B1 (en) * | 2008-02-15 | 2013-02-26 | Symantec Corporation | Method and apparatus for performing file-level restoration from a block-based backup file stored on a sequential storage device |
EP2467778A4 (en) * | 2009-08-17 | 2013-01-16 | Virtual Computer Inc | LAYERED VIRTUAL FILES SYSTEM |
WO2014115186A1 (ja) * | 2013-01-24 | 2014-07-31 | 富士通株式会社 | 携帯情報端末、制御方法、制御プログラム |
CN105404521B (zh) * | 2014-05-30 | 2017-05-31 | 广州市动景计算机科技有限公司 | 一种增量升级方法及相关装置 |
CN104361556B (zh) * | 2014-10-22 | 2017-11-28 | 华为技术有限公司 | 一种图像合成方法和图像芯片以及图像设备 |
EP3211859B1 (en) * | 2015-12-31 | 2018-11-14 | Huawei Technologies Co., Ltd. | Mirror deployment method and device thereof |
US10540147B2 (en) * | 2016-02-26 | 2020-01-21 | Red Hat, Inc. | Add-on image for a platform-as-a-service system |
US10324696B2 (en) * | 2016-03-28 | 2019-06-18 | International Business Machines Corporation | Dynamic container deployment with parallel conditional layers |
US10255054B2 (en) * | 2016-04-13 | 2019-04-09 | International Business Machines Corporation | Enforcing security policies for software containers |
US10496987B2 (en) * | 2016-09-13 | 2019-12-03 | Verizon Patent And Licensing Inc. | Containerization of network services |
US20180088926A1 (en) * | 2016-09-27 | 2018-03-29 | Ca, Inc. | Container image management using layer deltas |
US10303657B2 (en) * | 2016-09-30 | 2019-05-28 | International Business Machines Corporation | Docker layer deduplication with layer referencing |
US10169209B2 (en) * | 2016-11-04 | 2019-01-01 | Red Hat, Inc. | Container images by composition |
US10152387B1 (en) * | 2016-12-23 | 2018-12-11 | EMC IP Holding Company LLC | Instant start of virtual machine from archive copy on backup media |
US20180285210A1 (en) * | 2017-03-28 | 2018-10-04 | Commvault Systems, Inc. | Container image generation process |
US10120671B1 (en) * | 2017-08-08 | 2018-11-06 | International Business Machines Corporation | Multi-level image extraction |
CN109542493A (zh) * | 2017-09-22 | 2019-03-29 | 华为技术有限公司 | 一种镜像升级方法及设备 |
-
2017
- 2017-09-22 CN CN201710868013.4A patent/CN109542493A/zh active Pending
-
2018
- 2018-08-28 EP EP18859214.1A patent/EP3678019B1/en active Active
- 2018-08-28 WO PCT/CN2018/102728 patent/WO2019056931A1/zh unknown
-
2020
- 2020-03-19 US US16/824,391 patent/US11249745B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193807A (zh) * | 2010-03-19 | 2011-09-21 | 联想(北京)有限公司 | 一种镜像文件升级的方法、服务器及计算机网络系统 |
CN103092648A (zh) * | 2013-01-07 | 2013-05-08 | 华为终端有限公司 | 一种镜像升级方法、系统及用户设备和个人计算机 |
CN107015995A (zh) * | 2016-01-28 | 2017-08-04 | 华为技术有限公司 | 一种镜像文件的修改方法和装置 |
CN106227579A (zh) * | 2016-07-12 | 2016-12-14 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN106528224A (zh) * | 2016-11-03 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
Non-Patent Citations (2)
Title |
---|
YJYZILIAOSHARE: "Docker-从入门到实践", 《HTTPS://WWW.DOCIN.COM/P-1922857962.HTML》 * |
李金榜 等: "《循序渐进学Docker》", 30 November 2016 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008703A (zh) * | 2019-04-08 | 2019-07-12 | 四川大学 | 一种容器内恶意软件静态检测系统及方法 |
CN110008703B (zh) * | 2019-04-08 | 2020-01-24 | 四川大学 | 一种容器内恶意软件静态检测系统及方法 |
WO2021163838A1 (en) * | 2020-02-17 | 2021-08-26 | Arris Enterprises Llc | Method and system for rollback validation based on wireless connectivity |
WO2022111097A1 (zh) * | 2020-11-26 | 2022-06-02 | 北京沃东天骏信息技术有限公司 | 一种文件更新方法及装置、设备、存储介质 |
CN113342378A (zh) * | 2021-06-25 | 2021-09-03 | 山东浪潮通软信息科技有限公司 | 一种基于文件系统更新的镜像生成方法、设备及介质 |
CN113342378B (zh) * | 2021-06-25 | 2022-08-02 | 浪潮通用软件有限公司 | 一种基于文件系统更新的镜像生成方法、设备及介质 |
CN113553091A (zh) * | 2021-07-28 | 2021-10-26 | 恒安嘉新(北京)科技股份公司 | 增量镜像数据包的自动生成方法、装置、设备及存储介质 |
CN114721699A (zh) * | 2022-05-19 | 2022-07-08 | 龙芯中科技术股份有限公司 | 一种镜像升级方法、装置、电子设备及存储介质 |
CN114721699B (zh) * | 2022-05-19 | 2022-08-26 | 龙芯中科技术股份有限公司 | 一种镜像升级方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3678019A4 (en) | 2020-11-11 |
US20200218529A1 (en) | 2020-07-09 |
EP3678019B1 (en) | 2022-07-27 |
US11249745B2 (en) | 2022-02-15 |
WO2019056931A1 (zh) | 2019-03-28 |
EP3678019A1 (en) | 2020-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542493A (zh) | 一种镜像升级方法及设备 | |
CN109117425B (zh) | 用于数字资产同步的方法、系统和介质 | |
US10606800B1 (en) | Policy-based layered filesystem management | |
US8024383B2 (en) | Fat directory structure for use in transaction safe file | |
CN102591592B (zh) | 虚拟化环境中的数据去重复 | |
US10025806B2 (en) | Fast file clone using copy-on-write B-tree | |
US11537652B2 (en) | Sharing filesystems between containers | |
US8924664B2 (en) | Logical object deletion | |
US8712960B2 (en) | Method and system for parallelizing data copy in a distributed file system | |
CN109906433A (zh) | 针对容器的存储隔离 | |
US9766835B2 (en) | Migration of data to sequential access medium | |
US10929350B2 (en) | Enhanced techniques for copying cloud stored files | |
US20170004046A1 (en) | Splitting a clone having snapshots from a parent | |
CN107463467A (zh) | 一种可快速还原虚拟化平台的方法及系统 | |
CN114003258A (zh) | 一种软件升级方法、计算设备及可读存储介质 | |
EP2996025B1 (en) | Data migration tool with intermediate incremental copies | |
US8285680B2 (en) | Individual object restore | |
JP2014219750A (ja) | 仮想ライブラリコントローラ及び制御方法 | |
US20230409438A1 (en) | Creating file recipes for copy overwrite workloads in deduplication file systems | |
Fisk | Mastering Ceph: Infrastructure storage solutions with the latest Ceph release | |
US11803303B1 (en) | Intelligent layer control of redundant content in container images | |
JP3771826B2 (ja) | 書籍型データ差分追加更新装置,そのプログラムの記録媒体およびそのプログラム |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190329 |