CN110058923B - 一种基于动态预取策略的Docker容器COW机制优化方法及系统 - Google Patents

一种基于动态预取策略的Docker容器COW机制优化方法及系统 Download PDF

Info

Publication number
CN110058923B
CN110058923B CN201910252490.7A CN201910252490A CN110058923B CN 110058923 B CN110058923 B CN 110058923B CN 201910252490 A CN201910252490 A CN 201910252490A CN 110058923 B CN110058923 B CN 110058923B
Authority
CN
China
Prior art keywords
copy
docker container
metadata information
container
executed
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.)
Active
Application number
CN201910252490.7A
Other languages
English (en)
Other versions
CN110058923A (zh
Inventor
石宣化
金海�
刘伟
姜焰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201910252490.7A priority Critical patent/CN110058923B/zh
Publication of CN110058923A publication Critical patent/CN110058923A/zh
Application granted granted Critical
Publication of CN110058923B publication Critical patent/CN110058923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于动态预取策略的Docker容器COW机制优化方法及系统,属于容器轻量级虚拟化领域。包括:采集各Docker容器生命周期内被执行COPY UP操作的所有镜像文件的元数据信息;根据采集到的元数据信息,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件;在新Docker容器启动后,对预测得到的将被执行COPY UP操作的镜像文件执行COPY UP操作。本发明基于同一镜像的容器内部操作大概率相同的特性,对Docker容器内部被执行COPY UP操作的镜像文件元数据信息进行记录,形成Docker镜像对应的历史信息。利用该历史信息,预测新容器运行期间最有可能被执行COPY UP操作的镜像文件,在新容器运行初期,对这些镜像文件执行预先的COPY UP操作,消除了Docker容器因COW机制产生额外开销。

Description

一种基于动态预取策略的Docker容器COW机制优化方法及 系统
技术领域
本发明属于容器轻量级虚拟化领域,更具体地,涉及一种基于动态预取策略的Docker容器COW机制优化方法及系统。
背景技术
随着容器技术不断发展,越来越多的用户采用轻量级虚拟化的容器技术来部署自己的系统与应用,以便于更快速地迭代系统和产品版本,以及快速地部署大量的服务。目前Docker项目在容器技术中占据着主要的地位。Docker使用的存储驱动主要为OverlayFS、AUFS、DeviceMapper以及BtrFS。由于性能以及Linux内核支持的问题,OverlayFS在众多存储驱动中脱颖而出。OverlayFS是一种堆叠式的文件系统,它依赖并建立的其它的底层文件系统(例如:ext4,XFS等)之上,并不主动参与磁盘的空间结构划分。OverlayFS的主要功能是提供接口,将底层不同的目录进行合并,然后给上层用户提供统一的视图。Docker容器利用了OverlayFS的这一特性,将镜像文件设置成只读并且与容器的可读写层进行合并,提供给容器用户一个整体的虚拟操作系统视图,其中,镜像文件默认在下层而容器的可读写层在上层。当用户需要对下层的镜像文件进行一些访问时(例如:以可写的方式open文件,修改文件或目录的属性/扩展属性,重命名,创建硬链接等等),都会触发OverlayFS的COPY UP操作。
在Docker的容器设计中,应用到了一个重要的存储策略COW(copy on write),即镜像文件为只读文件。当依赖该镜像文件启动的容器需要修改镜像文件时,需要先将其COPY UP到容器上层的读写层中,再进行访问。这种策略的好处是:同一镜像文件可以提供给不同的容器实例使用,极大地节省了镜像文件的存储空间。但是相对地,容器在执行COPYUP操作时,对其中运行的应用带来极大的额外开销。
目前很多研究工作中均提出了COPY UP带来额外开销问题,但是很少有研究能够真正缓解或者解决这个问题。大部分的研究者试图从COPY UP底层实现的角度,Linux系统内核中来缓解这个问题,例如合并被执行COPY UP操作的文件的同步操作,但是这会影响文件系统的执行流程,额外带来不可测的结果会导致数据拷贝正确性降低。
综上,现有研究Docker容器的COW机制优化的工作很少,而且基本上都是从底层实现的角度去优化,需要对内核进行一定程度的修改。这样的设计实现起来十分复杂,且由于对内核的修改导致设计的部署与应用十分麻烦。
发明内容
针对现有技术的缺陷,本发明的目的在于解决现有技术COPY UP操作带来额外开销、COW优化实现复杂的技术问题。
为实现上述目的,第一方面,本发明实施例提供了一种基于动态预取策略的Docker容器COW机制优化方法,所述方法包括以下步骤:
S1.采集各Docker容器生命周期内被执行COPY UP操作的所有镜像文件的元数据信息;
S2.根据采集到的元数据信息,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件;
S3.在新Docker容器启动后,对预测得到的将被执行COPY UP操作的镜像文件执行COPY UP操作。
具体地,基于同一镜像创建的容器内被执行COPY UP操作的镜像文件的元数据信息存储于同一张元数据信息表内,元数据信息表的名称为镜像ID。
具体地,所述元数据信息包括:镜像文件在元数据信息表中的顺序编号id;镜像文件的完整路径Filename;镜像文件被执行COPY UP操作次数Count,每增加一条记录时,判断当前元数据信息表中记录条数是否小于等于预设值,若是,所有记录的Count值均取值1;当元数据信息表中记录数大于预设值时,所有记录的Count值根据对应镜像文件被COPY UP次数的增加而增加;镜像文件最近被执行COPY UP操作的时间戳Timestamp,每进行一次COPYUP操作,更新Timestamp。
具体地,步骤S2包括以下子步骤:
S21.根据新Docker容器对应的镜像ID,查找新Docker容器对应的元数据信息表;
S22.根据新Docker容器对应的元数据信息表,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件。
具体地,步骤S22具体如下:
S221.判断新Docker容器对应的元数据信息表中记录条数是否不高于预设值N,若是,则进入步骤S222;否则,进入步骤S223;
S222.表中所有记录作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息;
S223.根据新Docker容器对应的元数据信息表中所有镜像文件最近被执行COPYUP操作的时间戳Timestamp,预测新Docker容器将被执行COPY UP操作的镜像文件的元数据信息,预测的镜像文件数量为预设值N。
具体地,步骤S223具体为:选取时间戳Timestamp最新的N条记录,作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息。
具体地,步骤S22具体如下:
S221.判断新Docker容器对应的元数据信息表中记录条数是否不高于预设值N,若是,则进入步骤S222;否则,进入步骤S223;
S222.表中所有记录作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息;
S223.根据新Docker容器对应的元数据信息表中所有镜像文件被执行COPY UP操作次数Count,预测新Docker容器将被执行COPY UP操作的镜像文件的元数据信息,预测次数为预设值N。
具体地,步骤S223具体如下:
(1)对新Docker容器对应的元数据信息表中所有记录的Count进行求和,得到Sum;
(2)随机生成1~Sum的随机数k;
(3)根据随机数k查找新Docker容器对应的元数据信息表,找出Count累加和大于等于k的最小记录;
(4)重复步骤(2)~(3),重复次数为预设值,得到新Docker容器将被执行COPY UP操作的所有镜像文件的完整路径。
第二方面,本发明实施例提供了一种基于动态预取策略的Docker容器COW机制优化系统,所述Docker容器COW机制优化系统采用上述第一方面所述的基于动态预取策略的Docker容器COW机制优化方法。
第三方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的基于动态预取策略的Docker容器COW机制优化方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
1.本发明基于同一镜像的容器内部操作大概率是相同的特性,对Docker容器内部被执行COPY UP操作的镜像文件元数据信息进行记录,形成Docker镜像对应的历史信息。在新容器运行初期,利用对应的历史信息,预测新容器运行期间最有可能被执行COPY UP操作的镜像文件,对这部分镜像文件执行预先的COPY UP操作。通过这种动态预取策略,将本应产生在Docker容器运行用户程序期间的额外开销,均摊到容器启动后的一段空闲时间内,从而消除了Docker容器因COW机制产生额外开销所带来的负面影响。本发明的动态预取策略是根据过往历史记录信息来预测新容器运行期间最有可能被执行COPY UP操作的镜像文件,而随系统时间运行增加,相应历史记录也会增加,相对应的预测准确性也会随历史记录增多而加大。因此,本发明预测准确性也会随系统运行时间增加而不断增大。
2.本发明的元数据信息处理,动态预测查询等流程都是在宿主机中完成,效率高且不会干扰容器的正常运行。
3.本发明提出的COW机制优化方法不需要修改内核与Docker的代码,仅需要对OverlayFS模块进行打信息采集补丁,容器启动时只需要挂载指定目录的卷,以及额外启动卷中脚本即可,使用方便。因此对于支持OverlayFS的内核以及任意版本Docker都适用。此外本系统采用的方法对操作系统类型的依赖极低,因此可以在其他类型的操作系统中采用同样的优化方法。
附图说明
图1为现有技术中Docker架构示意图;
图2为现有技术中OverlayFS存储架构示意图;
图3为本发明实施例提供的一种基于动态预取策略的Docker容器COW机制优化方法流程图;
图4为本发明实施例提供的Docker镜像的多层结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。
Client:客户端,通过接口与Server进程通信实现容器的构建、运行和发布。用户通过Docker Client与Docker Daemon进行通信,利用命令行发送创建镜像、运行容器之类的请求。
Host:宿主机,一个物理或者虚拟的机器用于执行Docker守护进程和容器。
Registry:仓库,用来保存镜像,分为私有镜像仓库(private Registry)和公共镜像仓库。公共镜像仓库是开放给用户使用、允许用户管理镜像的Registry服务,例如,Docker Hub。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。除了使用公开服务外,用户还可以在本地搭建私有DockerRegistry。Docker官方提供了Docker Registry镜像,可以直接使用作为私有Registry服务。当用户创建了自己的镜像之后就可以使用Push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上Pull下来就可以了。
Docker Machine:是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、Digital Ocean、Microsoft Azure。
Daemon:守护进程,是运行在操作系统之上的后台进程,负责接收处理Docker客户端发送的请求和管理所有的Docker容器,该守护进程在后台启动了一个API Server,Server负责接受Docker Client发送的请求,然后通过Docker Daemon内部的路由与分发调度,找到相应的Handler来执行请求。Docker客户端和Daemon可以运行在同一个系统上,也可以使用Docker客户端去连接一个远程的Docker Daemon程。Docker客户端和Daemon之间通过RESTful、Stock或网络接口进行通信。
Container:容器,具体的运行应用程序的一个进程,它里面包含应用程序的各种依赖(Bins/Libs),是容器服务的交付实体。容器是从镜像创建的运行实例。它可以被创建、启动、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器和镜像的唯一区别在于,容器的最上面那一层是可读可写的。每个容器内运行一个应用,不同的容器相互隔离,容器之间可以建立通信机制。
Images:镜像,用于创建Docker容器的模板(只读),一个镜像只可以创建一种类型的容器。根据不同配置的镜像来创建不同的容器使用。镜像和容器的关系可以理解为面向对象中类和实例对象的关系。
当镜像中的一个已经存在的镜像文件被修改,Dokcer使用存储驱动进行一次copy-on-write(COW)操作。具体如下:先将只读的镜像文件拷贝到上层的读写层,再在读写层进行修改。容器的这种存储结构是通过其存储驱动实现的。目前主流使用的存储驱动有OverlayFS等联合文件系统。
Docker启动过程:
1.Docker client调用Docker daemon,请求启动一个容器;
2.Docker daemon会向host os(即linux)请求创建容器;
3.linux会创建一个空的容器;
4.Docker daemon请检查本机是否存在Docker镜像文件,如果有,则加载到容器中,否则,到默认的Docker镜像注册机构(即:docker hub网站)去联网下载,下载回来后,再加载到容器中;
5.将镜像文件加载到容器中。
如图2所示,OverlayFS在linux主机上只有两层,一个目录在下层,用来保存镜像(docker),另外一个目录在上层,用来存储容器信息。在OverlayFS中,底层的目录叫做lowerdir,顶层的目录称之为upperdir,对外提供统一的文件系统为merged。
当需要修改一个文件时,使用COW将文件从只读的Lower复制到可写的Upper进行修改,结果也保存在Upper层。在Docker中,底下的只读层就是image,可写层就是Container。
如图3所示,本发明提出一种基于动态预取策略的Docker容器COW机制优化方法,所述方法包括以下步骤:
S1.采集各Docker容器生命周期内被执行COPY UP操作的所有镜像文件的元数据信息;
S2.根据采集到的元数据信息,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件;
S3.在新Docker容器启动后,对预测得到的将被执行COPY UP操作的镜像文件执行COPY UP操作。
步骤S1.采集各Docker容器生命周期内被执行COPY UP操作的所有镜像文件的元数据信息。
Docker容器生命周期为该容器创建和销毁之间的时间段。
由于对镜像文件的访问大多时候不会触发COPY UP操作,例如,对镜像文件的读取操作,而COPY UP操作是基于OverlayFS实现的。因此,通过对Docker底层存储文件系统(OverlayFS)进行插桩,可有效提取进行过COPY UP操作的所有镜像文件的完整路径。
如图4所示,Docker镜像包括若干个叠加的镜像层,每个镜像层里包含若干个镜像文件。提取每个镜像文件的元数据,所述元数据主要是描述数据属性(property)的信息,用来支持如指示文件名,文件绝对路径等。
一个镜像可被用来创建多个容器,基于同一镜像创建的容器内被执行COPY UP操作的镜像文件的元数据信息存储于同一张元数据信息表内。所有元数据信息表均存储在宿主机内。表1为元数据信息表,一张元数据信息表对应一个镜像,表的名称为镜像ID。每统计到一个新的被执行过COPY UP操作的镜像文件,元数据信息表就增加一条记录,该记录对应新的被执行过COPY UP操作的镜像文件的元数据信息。
表1
id Filename Count Timestamp
id:镜像文件在数据表中的顺序编号;
Filename:镜像文件的完整路径;
Count:镜像文件被执行COPY UP操作次数,每增加一条记录时,判断当前元数据信息表中记录条数是否小于等于预设值,若是,所有记录的Count值均取值1;当元数据信息表中记录数大于预设值时,所有记录的Count值根据对应镜像文件被COPY UP次数的增加而增加;
Timestamp:镜像文件最近被执行COPY UP操作的时间戳,每进行一次COPY UP操作,更新Timestamp。
步骤S2.根据采集到的元数据信息,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件。
S201.根据新Docker容器对应的镜像ID,查找新Docker容器对应的元数据信息表。
该过程由容器内部发起查询请求,并在宿主机内部内处理查询请求。
S202.根据新Docker容器对应的元数据信息表,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件。
该过程发生在宿主机内部,新Docker容器将被执行COPY UP操作的镜像文件的元数据信息即为查询结果,将其返回容器内部。
实施例1
首先,判断新Docker容器对应的元数据信息表中记录条数是否不高于预设值N,若是,则表中所有记录作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息;否则,根据新Docker容器对应的元数据信息表中所有镜像文件最近被执行COPY UP操作的时间戳Timestamp,预测新Docker容器将被执行COPY UP操作的镜像文件的元数据信息,预测的镜像文件数量为预设值N。
选取时间戳Timestamp最新的N条记录,作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息。预设值N优选100。
实施例2
首先,判断新Docker容器对应的元数据信息表中记录条数是否不高于预设值N,若是,则表中所有记录作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息;否则,根据新Docker容器对应的元数据信息表中所有镜像文件被执行COPY UP操作次数Count,预测新Docker容器将被执行COPY UP操作的镜像文件的元数据信息,预测次数为预设值N。预设值N优选100。
所述根据新Docker容器对应的元数据信息表中所有镜像文件被执行COPY UP操作次数Count,预测新Docker容器将被执行COPY UP操作的镜像文件的元数据信息,具体如下:
(1)对新Docker容器对应的元数据信息表中所有记录的Count进行求和,得到Sum;
(2)随机生成1~Sum的随机数k;
(3)根据随机数k查找新Docker容器对应的元数据信息表,找出Count累加和大于等于k的最小记录;
(4)重复步骤(2)~(3),重复次数为预设值,得到新Docker容器将被执行COPY UP操作的所有镜像文件的完整路径。
Count属性的大小决定了该记录被选中的概率,该属性越大,被选中的概率也就越大。
步骤S3.在新Docker容器启动后,对预测得到的将被执行COPY UP操作的镜像文件执行COPY UP操作。
以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种基于动态预取策略的Docker容器COW机制优化方法,其特征在于,所述方法包括以下步骤:
S1.采集各Docker容器生命周期内被执行COPY UP操作的所有镜像文件的元数据信息,所述COPY UP操作是将镜像文件复制到容器的读写层,所述镜像文件在下层且容器的读写层在上层;
S2.根据采集到的元数据信息,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件;
S3.在新Docker容器启动后,对预测得到的将被执行COPY UP操作的镜像文件执行COPYUP操作。
2.如权利要求1所述的Docker容器COW机制优化方法,其特征在于,基于同一镜像创建的容器内被执行COPY UP操作的镜像文件的元数据信息存储于同一张元数据信息表内,元数据信息表的名称为镜像ID。
3.如权利要求1所述的Docker容器COW机制优化方法,其特征在于,所述元数据信息包括:镜像文件在元数据信息表中的顺序编号id;镜像文件的完整路径Filename;镜像文件被执行COPY UP操作次数Count,每增加一条记录时,判断当前元数据信息表中记录条数是否小于等于预设值,若是,所有记录的Count值均取值1;当元数据信息表中记录数大于预设值时,所有记录的Count值根据对应镜像文件被COPY UP次数的增加而增加;镜像文件最近被执行COPY UP操作的时间戳Timestamp,每进行一次COPY UP操作,更新Timestamp。
4.如权利要求3所述的Docker容器COW机制优化方法,其特征在于,步骤S2包括以下子步骤:
S21.根据新Docker容器对应的镜像ID,查找新Docker容器对应的元数据信息表;
S22.根据新Docker容器对应的元数据信息表,动态预测新Docker容器运行期间将被执行COPY UP操作的镜像文件。
5.如权利要求4所述的Docker容器COW机制优化方法,其特征在于,步骤S22具体如下:
S221.判断新Docker容器对应的元数据信息表中记录条数是否不高于预设值N,若是,则进入步骤S222;否则,进入步骤S223;
S222.表中所有记录作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息;
S223.根据新Docker容器对应的元数据信息表中所有镜像文件最近被执行COPY UP操作的时间戳Timestamp,预测新Docker容器将被执行COPY UP操作的镜像文件的元数据信息,预测的镜像文件数量为预设值N。
6.如权利要求5所述的Docker容器COW机制优化方法,其特征在于,步骤S223具体为:选取时间戳Timestamp最新的N条记录,作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息。
7.如权利要求4所述的Docker容器COW机制优化方法,其特征在于,步骤S22具体如下:
S221.判断新Docker容器对应的元数据信息表中记录条数是否不高于预设值N,若是,则进入步骤S222;否则,进入步骤S223;
S222.表中所有记录作为新Docker容器将被执行COPY UP操作的镜像文件的元数据信息;
S223.根据新Docker容器对应的元数据信息表中所有镜像文件被执行COPY UP操作次数Count,预测新Docker容器将被执行COPYUP操作的镜像文件的元数据信息,预测次数为预设值N。
8.如权利要求7所述的Docker容器COW机制优化方法,其特征在于,步骤S223具体如下:
(1)对新Docker容器对应的元数据信息表中所有记录的Count进行求和,得到Sum;
(2)随机生成1~Sum的随机数k;
(3)根据随机数k查找新Docker容器对应的元数据信息表,找出Count累加和大于等于k的最小记录;
(4)重复步骤(2)~(3),重复次数为预设值,得到新Docker容器将被执行COPY UP操作的所有镜像文件的完整路径。
9.一种基于动态预取策略的Docker容器COW机制优化系统,其特征在于,所述Docker容器COW机制优化系统采用如权利要求1至8任一项所述的基于动态预取策略的Docker容器COW机制优化方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的基于动态预取策略的Docker容器COW机制优化方法。
CN201910252490.7A 2019-03-29 2019-03-29 一种基于动态预取策略的Docker容器COW机制优化方法及系统 Active CN110058923B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910252490.7A CN110058923B (zh) 2019-03-29 2019-03-29 一种基于动态预取策略的Docker容器COW机制优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910252490.7A CN110058923B (zh) 2019-03-29 2019-03-29 一种基于动态预取策略的Docker容器COW机制优化方法及系统

Publications (2)

Publication Number Publication Date
CN110058923A CN110058923A (zh) 2019-07-26
CN110058923B true CN110058923B (zh) 2021-03-26

Family

ID=67318012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910252490.7A Active CN110058923B (zh) 2019-03-29 2019-03-29 一种基于动态预取策略的Docker容器COW机制优化方法及系统

Country Status (1)

Country Link
CN (1) CN110058923B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221625B (zh) * 2019-12-31 2023-08-04 北京水滴科技集团有限公司 文件检测方法、装置及设备
WO2022206722A1 (zh) * 2021-04-01 2022-10-06 华为云计算技术有限公司 容器应用的启动方法、镜像管理方法及相关设备
US11451615B1 (en) 2021-08-23 2022-09-20 Red Hat, Inc. Probabilistic per-file images preloading

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944101A (zh) * 2010-07-14 2011-01-12 北京北大众志微系统科技有限责任公司 一种文件预取动态定量指示方法及装置
CN106066896A (zh) * 2016-07-15 2016-11-02 中国人民解放军理工大学 一种应用感知的大数据重复删除存储系统及方法
CN107045455A (zh) * 2017-06-19 2017-08-15 华中科技大学 一种基于负载预测的Docker Swarm集群资源调度优化方法
CN107562806A (zh) * 2017-08-08 2018-01-09 上海交通大学 混合内存文件系统的自适应感知加速方法及系统
CN107729020A (zh) * 2017-10-11 2018-02-23 北京航空航天大学 一种实现大规模容器快速部署的方法
CN108369622A (zh) * 2015-12-18 2018-08-03 亚马逊技术股份有限公司 软件容器注册表服务
CN108806773A (zh) * 2018-05-21 2018-11-13 上海熙业信息科技有限公司 医学影像云存储平台设计方法
CN108829494A (zh) * 2018-06-25 2018-11-16 杭州谐云科技有限公司 基于负载预测的容器云平台智能资源优化方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346189B2 (en) * 2016-12-05 2019-07-09 Red Hat, Inc. Co-locating containers based on source to improve compute density
US10338966B2 (en) * 2017-04-20 2019-07-02 Red Hat, Inc. Instantiating containers with a unified data volume

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944101A (zh) * 2010-07-14 2011-01-12 北京北大众志微系统科技有限责任公司 一种文件预取动态定量指示方法及装置
CN108369622A (zh) * 2015-12-18 2018-08-03 亚马逊技术股份有限公司 软件容器注册表服务
CN106066896A (zh) * 2016-07-15 2016-11-02 中国人民解放军理工大学 一种应用感知的大数据重复删除存储系统及方法
CN107045455A (zh) * 2017-06-19 2017-08-15 华中科技大学 一种基于负载预测的Docker Swarm集群资源调度优化方法
CN107562806A (zh) * 2017-08-08 2018-01-09 上海交通大学 混合内存文件系统的自适应感知加速方法及系统
CN107729020A (zh) * 2017-10-11 2018-02-23 北京航空航天大学 一种实现大规模容器快速部署的方法
CN108806773A (zh) * 2018-05-21 2018-11-13 上海熙业信息科技有限公司 医学影像云存储平台设计方法
CN108829494A (zh) * 2018-06-25 2018-11-16 杭州谐云科技有限公司 基于负载预测的容器云平台智能资源优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Docker OverlayFS 驱动;Kumu;《https://blog.opskumu.com/docker-overlayfs.html#org6da853a》;20180905;第1-6页 *
Performance Improvement of File Operations on OverlayFS for Containers;Naoki Mizusawa 等;《2018 IEEE International Conference on Smart Computing (SMARTCOMP)》;20180601;第297-302页 *

Also Published As

Publication number Publication date
CN110058923A (zh) 2019-07-26

Similar Documents

Publication Publication Date Title
CN112534396B (zh) 数据库系统中的日记表
US11467967B2 (en) Managing a distributed cache in a cloud-based distributed computing environment
US8762547B2 (en) Shared memory implementations for session data within a multi-tiered enterprise network
US9432240B2 (en) Flexible failover configuration
US7761435B2 (en) External persistence of session state information
US8024566B2 (en) Persistent storage implementations for session data within a multi-tiered enterprise network
US9805054B2 (en) Managing a global namespace for a distributed filesystem
US7853698B2 (en) Internal persistence of session state information
US8495621B2 (en) Catalog-based software component management
US20180157674A1 (en) Distributed nfs metadata server
CN110058923B (zh) 一种基于动态预取策略的Docker容器COW机制优化方法及系统
US20060248199A1 (en) Shared closure persistence of session state information
US10185736B2 (en) Replicable differential store data structure
Shukla et al. Schema-agnostic indexing with Azure DocumentDB
US11507566B2 (en) Managing objects in shared caches using multiple chains
US9626390B2 (en) Shadow system start during upgrade of an original system
US20230342353A1 (en) Targeted sweep method for key-value data storage
JP2009251853A (ja) メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
CN111078817A (zh) 一种基于Redis和PostgreSQL的瓦片地图服务集群系统和方法
CN117120998A (zh) 用于读取树数据结构中保存的数据的方法和装置
CN114610680A (zh) 分布式文件系统元数据管理方法、装置、设备及存储介质
CN113095778A (zh) 通过多个邮箱在通信应用中进行海量数据管理的架构
US20070299890A1 (en) System and method for archiving relational database data
US20220417325A1 (en) System and method for content management with intelligent data store access across distributed stores
US11514080B1 (en) Cross domain transactions

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
GR01 Patent grant
GR01 Patent grant