CN115586872A - 一种容器镜像管理方法、装置、设备及存储介质 - Google Patents
一种容器镜像管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115586872A CN115586872A CN202211412172.0A CN202211412172A CN115586872A CN 115586872 A CN115586872 A CN 115586872A CN 202211412172 A CN202211412172 A CN 202211412172A CN 115586872 A CN115586872 A CN 115586872A
- Authority
- CN
- China
- Prior art keywords
- container
- file
- virtual disk
- target
- disk file
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种容器镜像管理方法、装置、设备及存储介质,涉及云计算技术领域。该方法包括:根据容器的容器信息创建虚拟磁盘文件;获取目标容器镜像文件并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;将目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。通过本申请的技术方案,可以提升镜像读写效率,提升容器的高可用性。
Description
技术领域
本发明涉及云计算技术领域,特别涉及一种容器镜像管理方法、装置、设备及存储介质。
背景技术
随着当前云计算技术的发展,kubernetes(简称K8s)及相关容器技术得到了广泛的使用,对于容器镜像的存储,开源社区提供了多种实现方式,例如OverlayFS、devmapper等方式。但是这些镜像管理方式在某些场景下对用户场景并不完善适用,例如在容器镜像存放在ocfs2等集群文件系统时,OverlayFS管理方式会存在大量的小文件及目录,当在ocfs2文件系统上存放时会产生大量的加锁操作,导致容器启动缓慢、镜像文件/目录读写性能偏低;而devmapper方式需要底层基于裸设备创建,并不适用于在文件系统上存储容器镜像。
综上,如何避免在ocfs2等集群文件系统上存放容器镜像时产生大量加锁操作是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种容器镜像管理方法、装置、设备及存储介质,能够避免在ocfs2等集群文件系统上存放容器镜像时产生大量加锁操作。其具体方案如下:
第一方面,本申请公开了一种容器镜像管理方法,包括:
根据容器的容器信息创建虚拟磁盘文件;
获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;
将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;
根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
可选的,所述根据容器的容器信息创建虚拟磁盘文件,包括:
获取容器的根目录空间大小信息;
根据所述根目录空间大小信息通过预设磁盘创建指令创建相应大小的RAW格式虚拟磁盘文件。
可选的,所述根据容器的容器信息创建虚拟磁盘文件之后,还包括:
将所述虚拟磁盘文件进行格式化,并在格式化后的虚拟磁盘文件上创建文件系统。
可选的,所述将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件,包括:
将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统,以得到第一虚拟磁盘文件;
将所述文件系统进行卸载,然后对所述第一虚拟磁盘文件通过reflink方式创建快照,以得到第二虚拟磁盘文件;
判断所述第二磁盘文件中的数据是否为所述目标镜像文件中所有层的数据,如果是则将所述第二磁盘文件确定为所述目标虚拟磁盘文件;如果否则将所述第二磁盘文件作为当前的虚拟磁盘文件,然后重复执行所述将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统的步骤,直到所述第二磁盘文件中的数据包括所述目标镜像文件中所有层的数据时,将所述第二磁盘文件确定为所述目标虚拟磁盘文件。
可选的,所述根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录,包括:
若所述容器类型为传统的docker容器或runc容器,则将所述目标虚拟磁盘文件以loop方式进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
可选的,所述根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录,包括:
若所述容器类型为基于轻量虚拟化的kata容器,则将所述目标虚拟磁盘文件通过virio-blk或virtio-scsi的方式添加至所述kata容器,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
可选的,所述根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录,包括:
当所述容器启动后,根据所述目标容器镜像文件查找对应的目标虚拟磁盘文件,并对所述目标虚拟磁盘文件通过reflink方式创建快照,以得到临时快照文件;
根据所述容器的容器类型将所述临时快照文件进行挂载,以便将所述临时快照文件作为所述目标容器的根目录。
第二方面,本申请公开了一种容器镜像管理装置,包括:
虚拟磁盘文件创建模块,用于根据容器的容器信息创建虚拟磁盘文件;
目标容器镜像文件获取模块,用于获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;
目标虚拟磁盘文件确定模块,用于将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;
目标虚拟磁盘文件挂载模块,用于根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
第三方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如前所述的容器镜像管理方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如前所述的容器镜像管理方法。
本申请提供了一种容器镜像管理方法,首先根据容器的容器信息创建虚拟磁盘文件;然后获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。可见,通过创建虚拟磁盘文件作为容器镜像的载体,然后对要使用的目标容器镜像各层的压缩文件解压到虚拟磁盘文件中,将容器镜像转存至虚拟磁盘文件,后续容器根目录的下文件及目录创建、读写都在虚拟磁盘文件中进行;另外,基于reflink对传统的容器镜像存储方式进行改进,最终形成容器的根目录。相较于传统的容器镜像存储方式,可以避免在ocfs2文件系统上使用传统的overlay镜像管理方式由于文件/目录操作导致频繁加锁的问题,提升了容器镜像文件读写的效率,并且可以利用集群文件系统的多个节点并发访问的特性提升容器的高可用性。
此外,本申请提供的一种容器镜像管理装置、设备及存储介质,与上述容器镜像管理方法对应,效果同上。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种容器镜像管理方法流程图;
图2为本申请公开的一种容器镜像管理方法示意图;
图3为本申请公开的一种具体的容器镜像管理方法流程图;
图4为本申请公开的一种容器镜像管理装置结构示意图;
图5为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,现有技术中提供的容器镜像管理方式在ocfs2等集群文件系统并不适用,如OverlayFS管理方式会存在大量的小文件及目录,当在ocfs2文件系统上存放时会产生大量的加锁操作,导致镜像文件读写性能偏低;而devmapper方式需要底层基于裸设备创建,并不适用于在文件系统上存储容器镜像。
为此,本申请提供了一种容器镜像管理方案,能够避免在ocfs2等集群文件系统上存放容器镜像时产生大量加锁操作。
本发明实施例公开了一种容器镜像管理方法,参见图1所示,该方法包括:
步骤S11:根据容器的容器信息创建虚拟磁盘文件。
本申请实施例中,将虚拟磁盘文件作为容器镜像的载体,因此,需要根据容器的容器信息创建相应的虚拟磁盘文件。具体的,获取容器的根目录空间大小信息;根据所述根目录空间大小信息通过预设磁盘创建指令创建相应大小的RAW格式虚拟磁盘文件。
本申请实施例中,首先设置默认的容器根目录空间大小,例如大小50G,然后使用qemu-img命令创建相应大小的raw格式虚拟磁盘文件,假设其名称为image_layer0.raw。
步骤S12:获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件。
本申请实施例中,在创建虚拟磁盘文件之后,将所述虚拟磁盘文件进行格式化,并在格式化后的虚拟磁盘文件上创建文件系统,如ocfs2文件系统,以便于后续向虚拟磁盘文件对应的文件系统上写入数据。需要指出的是,当目标容器镜像文件对应的虚拟磁盘文件在ocfs2等集群文件系统上存储时,由于ocfs2等文件系统可以同时被多个主机节点访问,可以由此进一步开发容器的高可用功能。
本申请实施例中,确定要使用的容器镜像文件,将其作为目标容器镜像文件并对其进行解析,获取目标容器镜像文件中各层的压缩文件。例如,假设某容器镜像文件分为两层,layer0和layer1,其中layer0为容器镜像的最底层,可以是容器的基础系统;layer1为layer0的上一层,主要存放用户的应用或相关可执行文件。
步骤S13:将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件。
本申请实施例中,将创建的虚拟磁盘文件以loop方式挂载,然后将容器镜像当前层的压缩文件解压到文件系统中相应的挂载点,然后将虚拟磁盘对应的文件系统卸载,对虚拟磁盘文件通过reflink方式打快照,生成新的镜像文件。
可以理解的是,reflink是文件系统提供的一种文件快速拷贝方式,相对于传统的文件硬链接,新拷贝的文件与原文件之间不再共享元数据,而是对应不同的inode,但是文件数据在新文件创建时与原文件是共享的,只是在新文件的数据发生变化时才通过cow(Copy-On-Write)方式将数据写入新的位置。基于reflink技术可以实现文件的快照功能。需要指出的是,当在一个已有目录上安装一个文件系统时,安装的文件系统上的文件就变成了挂载点的子目录和文件。如果挂载点目录已经包含文件或子目录,它们不会丢失,但是不再可用,直至安装的文件系统被卸载,方可再次使用。因此,当前层的压缩文件解压到文件系统中相应的挂载点后,将虚拟磁盘对应的文件系统卸载后再通过reflink方式打快照,生成新的虚拟磁盘文件,该新的镜像文件中包括了目标容器镜像文件当前层的数据。
本申请实施例中,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出包含有之前各层数据的目标虚拟磁盘文件,最终形成容器的根目录。
步骤S14:根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
本申请实施例中,当容器启动后,根据容器镜像查找到对应的目标虚拟磁盘文件,并基于相应的目标虚拟磁盘文件创建临时的reflink快照文件,如果有多个容器使用相同的容器镜像,则基于同一虚拟磁盘文件创建多个reflink快照提供给容器使用。如此一来,当容器使用此目标虚拟磁盘文件时,通过reflink生成原目标虚拟磁盘文件的一个临时快照可以提供给多个容器使用。
本申请实施例中,对于传统的docker或runc容器,将此快照通过loop方式挂载作为容器的根目录;而对于kata等基于轻量虚拟化的容器,则将此快照文件通过virtio-blk或virtio-scsi方式添加给kata容器,在kata容器内部识别为一块磁盘,将此磁盘挂载后作为容器的根目录。
如图2所示为实现容器镜像管理的示意图,通过qemu-img命令创建raw格式虚拟磁盘文件,并将虚拟磁盘文件格式化挂载,将容器镜像各层压缩文件逐层解压到虚拟磁盘文件对应的挂载目录中,并针对每一层镜像文件建立一个新的reflink虚拟磁盘文件快照。在虚拟磁盘文件image_layerN.raw中包含有之前各层的数据。当容器运行需要使用容器镜像时,查找容器镜像对应的虚拟磁盘文件image_layerN.raw,并基于image_layerN.raw通过reflink创建临时的虚拟磁盘文件image_container0_uuid.raw。如果容器运行时为基于轻量级虚拟化的kata运行时,则将image_container0_uuid.raw通过virio-blk或者virtio-scsi方式添加给kata容器,在kata容器中作为系统盘进行挂载,或通过loop mount的方式将虚拟磁盘文件提供给传统的docker/runc容器使用。
本申请提供了一种容器镜像管理方法,首先根据容器的容器信息创建虚拟磁盘文件;然后获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。可见,通过创建虚拟磁盘文件作为容器镜像的载体,然后对要使用的目标容器镜像各层的压缩文件解压到虚拟磁盘文件中,将容器镜像转存至虚拟磁盘文件,后续容器根目录的下文件及目录创建、读写都在虚拟磁盘文件中进行;另外,基于reflink对传统的容器镜像存储方式进行改进,最终形成容器的根目录。相较于传统的容器镜像存储方式,可以避免在ocfs2文件系统上使用传统的overlay镜像管理方式由于文件/目录操作导致频繁加锁的问题,提升了容器镜像文件读写的效率,并且可以利用集群文件系统的多个节点并发访问的特性提升容器的高可用性。
本申请实施例公开了一种具体的容器镜像管理方法,参见图3所示,该方法包括:
步骤S21:根据容器的容器信息创建虚拟磁盘文件。
其中,关于上述步骤S21更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
步骤S22:将所述虚拟磁盘文件进行格式化,并在格式化后的虚拟磁盘文件上创建文件系统。
本申请实施例中,通过创建raw虚拟磁盘文件作为容器镜像的载体,然后将虚拟磁盘文件进行格式化,将容器镜像各层的压缩文件解压到在raw虚拟磁盘文件中创建的文件系统上,最终形成容器的根目录。
步骤S23:获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件。
其中,关于上述步骤S23更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
步骤S24:将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统,以得到第一虚拟磁盘文件。
本申请实施例中,通过qemu-img命令创建raw格式虚拟磁盘文件,并将虚拟磁盘文件格式化挂载,将容器镜像各层压缩文件逐层解压到虚拟磁盘文件对应的挂载目录中,并针对每一层镜像文件建立一个新的reflink虚拟磁盘文件快照。例如,假设使用qemu-img命令创建与容器根目录空间相应大小的raw格式虚拟磁盘文件,假设其名称为image_layer0.raw;若某容器镜像文件分为两层,layer0和layer1,将创建的虚拟磁盘文件以loop方式挂载后,将容器镜像layer0的压缩文件解压到文件系统中,以得到第一虚拟磁盘文件。
步骤S25:将所述文件系统进行卸载,然后对所述第一虚拟磁盘文件通过reflink方式创建快照,以得到第二虚拟磁盘文件。
本申请实施例中,得到第一虚拟磁盘文件后,将虚拟磁盘对应的文件系统卸载,对虚拟磁盘文件image_layer0.raw通过reflink方式打快照,生成新的镜像文件image_layer1.raw,也即,第二虚拟磁盘文件。
步骤S26:判断所述第二磁盘文件中的数据是否为所述目标镜像文件中所有层的数据,如果是则将所述第二磁盘文件确定为所述目标虚拟磁盘文件;如果否则将所述第二磁盘文件作为当前的虚拟磁盘文件,然后重复执行所述将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统的步骤,直到所述第二磁盘文件中的数据包括所述目标镜像文件中所有层的数据时,将所述第二磁盘文件确定为所述目标虚拟磁盘文件。
本申请实施例中,由于假设镜像文件有两层,所以image_layer1.raw,也即,第二虚拟磁盘文件当前包含了layer0的数据。将image_layer1.raw使用loop方式进行挂载,然后将容器镜像layer1压缩文件解压到相应得挂载点,解压拷贝完毕后将镜像文件image_layer1.raw卸载。可以理解的是,上面假定原容器镜像文件只有两层,如果容器镜像存在多层,则需要对上一步得到的虚拟磁盘文件image_layer1.raw进一步通过reflink创建快照,并将后续的容器镜像层解压拷贝进来。最终容器镜像层layerN对应虚拟磁盘文件image_layerN.raw,在虚拟磁盘文件image_layerN.raw中包含有之前各层的数据。
步骤S27:根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
其中,关于上述步骤S27更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请提供了一种容器镜像管理方法,首先根据容器的容器信息创建虚拟磁盘文件;将所述虚拟磁盘文件进行格式化,并在格式化后的虚拟磁盘文件上创建文件系统;然后获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统,以得到第一虚拟磁盘文件;将所述文件系统进行卸载,然后对所述第一虚拟磁盘文件通过reflink方式创建快照,以得到第二虚拟磁盘文件;判断所述第二磁盘文件中的数据是否为所述目标镜像文件中所有层的数据,如果是则将所述第二磁盘文件确定为所述目标虚拟磁盘文件;如果否则将所述第二磁盘文件作为当前的虚拟磁盘文件,然后重复执行所述将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统的步骤,直到所述第二磁盘文件中的数据包括所述目标镜像文件中所有层的数据时,将所述第二磁盘文件确定为所述目标虚拟磁盘文件;根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。可见,通过创建虚拟磁盘文件作为容器镜像的载体,然后对要使用的目标容器镜像各层的压缩文件解压到虚拟磁盘文件中,将容器镜像转存至虚拟磁盘文件,后续容器根目录的下文件及目录创建、读写都在虚拟磁盘文件中进行;另外,基于reflink对传统的容器镜像存储方式进行改进,最终形成容器的根目录。相较于传统的容器镜像存储方式,可以避免在ocfs2文件系统上使用传统的overlay镜像管理方式由于文件/目录操作导致频繁加锁的问题,提升了容器镜像文件读写的效率,并且可以利用集群文件系统的多个节点并发访问的特性提升容器的高可用性。
相应的,本申请实施例还公开了一种容器镜像管理装置,参见图4所示,该装置包括:
虚拟磁盘文件创建模块11,用于根据容器的容器信息创建虚拟磁盘文件;
目标容器镜像文件获取模块12,用于获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;
目标虚拟磁盘文件确定模块13,用于将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;
目标虚拟磁盘文件挂载模块14,用于根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,通过本实施例的上述方案,首先根据容器的容器信息创建虚拟磁盘文件;然后获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。可见,通过创建虚拟磁盘文件作为容器镜像的载体,然后对要使用的目标容器镜像各层的压缩文件解压到虚拟磁盘文件中,将容器镜像转存至虚拟磁盘文件,后续容器根目录的下文件及目录创建、读写都在虚拟磁盘文件中进行;另外,基于reflink对传统的容器镜像存储方式进行改进,最终形成容器的根目录。相较于传统的容器镜像存储方式,可以避免在ocfs2文件系统上使用传统的overlay镜像管理方式由于文件/目录操作导致频繁加锁的问题,提升了容器镜像文件读写的效率,并且可以利用集群文件系统的多个节点并发访问的特性提升容器的高可用性。
进一步的,本申请实施例还公开了一种电子设备,图5是根据一示例性实施例示出的电子设备20结构图,图中内容不能认为是对本申请的使用范围的任何限制。
图5为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的容器镜像管理方法中的相关步骤。另外,本实施例中的电子设备20具体可以为服务器。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,数据223可以包括各种各样的数据。存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的容器镜像管理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存取存储器(Random Access Memory,RAM)、内存、只读存储器(Read-Only Memory,ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、磁碟或者光盘或技术领域内所公知的任意其他形式的存储介质。其中,所述计算机程序被处理器执行时实现前述容器镜像管理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的容器镜像管理或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种容器镜像管理方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种容器镜像管理方法,其特征在于,包括:
根据容器的容器信息创建虚拟磁盘文件;
获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;
将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;
根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
2.根据权利要求1所述的容器镜像管理方法,其特征在于,所述根据容器的容器信息创建虚拟磁盘文件,包括:
获取容器的根目录空间大小信息;
根据所述根目录空间大小信息通过预设磁盘创建指令创建相应大小的RAW格式虚拟磁盘文件。
3.根据权利要求1所述的容器镜像管理方法,其特征在于,所述根据容器的容器信息创建虚拟磁盘文件之后,还包括:
将所述虚拟磁盘文件进行格式化,并在格式化后的虚拟磁盘文件上创建文件系统。
4.根据权利要求3所述的容器镜像管理方法,其特征在于,所述将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件,包括:
将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统,以得到第一虚拟磁盘文件;
将所述文件系统进行卸载,然后对所述第一虚拟磁盘文件通过reflink方式创建快照,以得到第二虚拟磁盘文件;
判断所述第二磁盘文件中的数据是否为所述目标镜像文件中所有层的数据,如果是则将所述第二磁盘文件确定为所述目标虚拟磁盘文件;如果否则将所述第二磁盘文件作为当前的虚拟磁盘文件,然后重复执行所述将所述虚拟磁盘文件以loop方式进行挂载,并将所述目标容器镜像文件中当前层的压缩文件解压缩至所述文件系统的步骤,直到所述第二磁盘文件中的数据包括所述目标镜像文件中所有层的数据时,将所述第二磁盘文件确定为所述目标虚拟磁盘文件。
5.根据权利要求1所述的容器镜像管理方法,其特征在于,所述根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录,包括:
若所述容器类型为传统的docker容器或runc容器,则将所述目标虚拟磁盘文件以loop方式进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
6.根据权利要求1所述的容器镜像管理方法,其特征在于,所述根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录,包括:
若所述容器类型为基于轻量虚拟化的kata容器,则将所述目标虚拟磁盘文件通过virio-blk或virtio-scsi的方式添加至所述kata容器,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
7.根据权利要求1至6任一项所述的容器镜像管理方法,其特征在于,所述根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录,包括:
当所述容器启动后,根据所述目标容器镜像文件查找对应的目标虚拟磁盘文件,并对所述目标虚拟磁盘文件通过reflink方式创建快照,以得到临时快照文件;
根据所述容器的容器类型将所述临时快照文件进行挂载,以便将所述临时快照文件作为所述目标容器的根目录。
8.一种容器镜像管理装置,其特征在于,包括:
虚拟磁盘文件创建模块,用于根据容器的容器信息创建虚拟磁盘文件;
目标容器镜像文件获取模块,用于获取目标容器镜像文件,并对所述目标容器镜像文件进行解析,以获取所述目标容器镜像文件中各层的压缩文件;
目标虚拟磁盘文件确定模块,用于将所述目标容器镜像文件中当前层的压缩文件解压缩至所述虚拟磁盘文件并进行相应的处理,然后对处理后得到的虚拟磁盘文件通过reflink方式创建快照,当所述目标容器镜像文件中各层的压缩文件全部解压缩后,确定出目标虚拟磁盘文件;
目标虚拟磁盘文件挂载模块,用于根据所述容器的容器类型将所述目标虚拟磁盘文件进行挂载,以便将所述目标虚拟磁盘文件作为所述目标容器的根目录。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的容器镜像管理方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的容器镜像管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211412172.0A CN115586872A (zh) | 2022-11-11 | 2022-11-11 | 一种容器镜像管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211412172.0A CN115586872A (zh) | 2022-11-11 | 2022-11-11 | 一种容器镜像管理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115586872A true CN115586872A (zh) | 2023-01-10 |
Family
ID=84782989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211412172.0A Pending CN115586872A (zh) | 2022-11-11 | 2022-11-11 | 一种容器镜像管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115586872A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049896A (zh) * | 2023-03-29 | 2023-05-02 | 中孚安全技术有限公司 | 一种linux系统下实现数据隔离的方法、系统、设备及介质 |
-
2022
- 2022-11-11 CN CN202211412172.0A patent/CN115586872A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049896A (zh) * | 2023-03-29 | 2023-05-02 | 中孚安全技术有限公司 | 一种linux系统下实现数据隔离的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741046B2 (en) | Method and apparatus for creating system disk snapshot of virtual machine | |
US8078577B2 (en) | Method of bi-directional synchronization of user data | |
US20130138616A1 (en) | Synchronizing updates across cluster filesystems | |
EP3369010A1 (en) | Reducing resource consumption associated with storage and operation of containers | |
US8977662B1 (en) | Storing data objects from a flat namespace in a hierarchical directory structured file system | |
US9020994B1 (en) | Client-based migrating of data from content-addressed storage to file-based storage | |
US11175846B2 (en) | Data co-location in a hierarchical storage management (HSM) system | |
US20220283902A1 (en) | Writing data blocks directly to object storage | |
CN105227672A (zh) | 数据存储及访问的方法和系统 | |
CN102255866A (zh) | 一种数据下载方法及装置 | |
US20100287205A1 (en) | Operating system / electronic device and method for storing or reading a file | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN115586872A (zh) | 一种容器镜像管理方法、装置、设备及存储介质 | |
US11989159B2 (en) | Hybrid snapshot of a global namespace | |
CN114138558A (zh) | 一种对象存储方法、装置、电子设备和存储介质 | |
US20240184745A1 (en) | File-level snapshot access service | |
CN109710454A (zh) | 一种云主机快照方法及装置 | |
US9740596B1 (en) | Method of accelerated test automation through unified test workflows | |
US7167867B1 (en) | Self-describing file system | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US20230409438A1 (en) | Creating file recipes for copy overwrite workloads in deduplication file systems | |
CN116225782A (zh) | 处理快照的方法及系统 | |
CN114860378A (zh) | 一种文件系统迁移方法、装置、系统及其介质 | |
CN112262378A (zh) | 脱水文件的层级的水合 | |
US9529812B1 (en) | Timestamp handling for partitioned directories |
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 |