CN107608757B - 一种基于容器的隔离处理方法及相关设备 - Google Patents
一种基于容器的隔离处理方法及相关设备 Download PDFInfo
- Publication number
- CN107608757B CN107608757B CN201710760721.6A CN201710760721A CN107608757B CN 107608757 B CN107608757 B CN 107608757B CN 201710760721 A CN201710760721 A CN 201710760721A CN 107608757 B CN107608757 B CN 107608757B
- Authority
- CN
- China
- Prior art keywords
- container
- target
- instance
- virtualized
- container instance
- 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
Links
Images
Abstract
本申请实施例公开了一种基于容器的隔离处理方法及相关设备。本申请实施例方法包括:接收用于隔离的操作指令,操作指令包含目标容器的标识,目标容器为多个容器中的至少一个;根据目标容器的标识确定目标容器的目标容器实例;获取目标容器实例的检查点文件;将用于运行目标容器实例的执行引擎由容器执行引擎切换至虚拟化容器执行引擎;根据检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,目标虚拟化容器实例运行于虚拟化容器执行引擎。本申请实施例还提供了一种主机设备,用于在容器实例运行的过程中,动态提升容器的隔离能力。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种基于容器的隔离处理方法及相关设备。
背景技术
容器技术是将应用程序打包到单独的容器之中,进行封装的技术,容器技术将每个应用程序隔离开,打断了程序之间的依赖和连接关系,也就是说,一个庞大的服务系统在容器技术的支持下,可以由许多不同的应用程序所寄居的容器组合而成。容器技术有效地将由单个操作系统管理的资源划分到隔离的组中,以更好地在隔离的组之间平衡有冲突的资源使用需求,属于操作系统级的虚拟化技术,由于其轻量级的特性,被广泛应用。然而,由于容器技术采用操作系统隔离技术,例如Namespace,CGroup等,但是其故障隔离并不成熟。
其中,Namespace即命名空间,用于构建独立的容器运行环境,Namespace区分的是网络、挂载目录等程序运行信息,通过Namespace将运行在同一个真是系统下的程序进行隔离,是不同的Namespace中的程序是相互不可见的,从而达到隔离的效果。CGroup为控制群组(Control Groups),CGroups的目标对对系统资源进行管理,在Namespace的支持下,可以将程序隔离成不同的容器,或者说是应用群组,而CGroups可以用于对这些容器所使用的CPU、内存、IO等资源进行控制,通过CGroup,可以准确的为每一个被Namespace隔离的容器配置物理主机中真是的计算机资源,但是,通过Namespace和CGroups实现隔离均是静态的隔离,也就是说,是在应用程序运行之前就已经将该应用程序进行隔离,如果,用户的需求发送变化,需要增强应用程序的隔离,则无法实现,例如,在同一个主机设备中容器A发生故障,在容器B运行的过程中,用户希望增强对容器中应用程序(容器实例)的隔离来增强对容器B中的应用程序的保护,在此种情况下,通过现有容器技术则无法实现,如何动态提升容器的隔离能力亟待解决。
发明内容
本申请实施例提供了一种基于容器的隔离处理方法及相关设备,用于在容器实例运行的过程中,动态提升容器的隔离能力。
第一方面,本申请实施例提供了一种基于容器的隔离处理方法,该基于容器的隔离处理方法应用于主机设备,该主机设备上运行有多个容器,该多个容器中的每个容器对应一个容器实例,具体的,该基于容器的隔离处理方法包括:主机设备接收客户端发送的用于隔离的操作指令,该操作指令包含目标容器的标识,该目标容器为该多个容器中的至少一个;根据该目标容器的标识确定目标容器实例,该目标容器实例为需要动态提升隔离性能的容器实例;获取该目标容器实例的检查点文件,检查点是用于指示该目标容器实例运行时的状态数据,而检查点文件是检查点以文件的形式进行保存的数据,因此检查点文件保存了目标容器实例运行时的状态数据,获取检查点文件的目的在于,记录了目标容器运行时的状态数据,可以根据该检查点文件再将目标实例运行时的数据进行恢复;将用于运行该目标容器实例的执行引擎由容器执行引擎切换至虚拟化容器执行引擎,然后,将该状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,从而将该目标容器实例转换成目标虚拟化容器实例,该目标虚拟化容器实例运行于虚拟化容器执行引擎。本申请实施例中,可以根据用户需求,动态增强容器故障隔离能力,同时并不会影响目标容器中的应用程序,实现了容器中的业务无感知的情况下,扩大了容器故障隔离的适用场景,以提升对目标容器实例的隔离保护。
在一种可能的实现方式中,该主机设备包括容器管理引擎和虚拟化容器管理引擎;其中,该容器管理引擎用于对容器实例的生命周期中状态信息的管理,例如,对容器实例的创建、启动、删除等;该虚拟化容器管理引擎用于负责虚拟化容器实例的生命周期中状态信息的管理,例如,对虚拟化容器实例的创建、启动、删除等;在根据该检查点文件将目标容器实例的数据迁移至虚拟化容器之前,该方法还可以包括:容器管理引擎向虚拟化容器管理引擎注册,将容器管理引擎记录的该目标容器的标识传递给虚拟化容器管理引擎,以使该虚拟化容器管理引擎管理该目标虚拟化容器实例;本申请实施例中,主机设备上可能运行有多个容器实例及多个虚拟化容器实例,在目标容器实例进行转换的过程中,其他的容器实例和虚拟化容器实例均在运行,所以需要保证目标容器实例的转换对其它容器实例无影响,因此在本申请中实施例中在同一主机设备(如虚拟机或者物理主机)上,运行两个管理引擎,两个管理引擎切换管理目标容器实例,从而使得目标容器实例的转换目标虚拟化容器实例的过程中,对多个容器中的其他容器的运行没有影响,对多个虚拟化容器实例中的其他虚拟化容器实例的运行也没有影响。
在一种可能的实现方式中,获取该目标容器实例的检查点文件具体还可以包括:冻结该目标容器实例,在程序运行的适当时刻设置检查点,保存进程当时的运行状态,将该检查点的数据以检查点文件的形式保存至内存文件系统;从该内存文件系统获取该目标容器实例的检查点文件;本申请实施例中,通过检查点文件保存目标容器实例的运行时的状态数据的优点在于:保存的运行时的状态数据完整,在虚拟化容器上恢复的概率大,成功率较高;检查点技术保存数据及恢复数据的时长短,速度快,可以实现应用程序无感知的情况下,将目标容器实例转变成虚拟化容器实例来提升系统的隔离特性。
在一种可能的实现方式中,在根据该检查点文件将目标容器实例的数据迁移至虚拟化容器的步骤中还可以具体包括:根据该检查点文件恢复该目标容器实例运行时的数据,并启动计数器,该计数器用于记录该检查点文件恢复的次数;若该目标容器实例运行时的数据恢复失败且所述计数器记录的数值小于预设值,则重复根据该检测点文件恢复该目标容器实例运行时的数据的步骤,;当该目标容器实例运行时的数据恢复成功时,将该目标容器实例运行时的数据迁移至该虚拟化容器。本申请实施例中预先设定一个预设值,并启动计数器,目标容器实例运行时的数据恢复失败且所述计数器记录的数值小于预设值的情况下,可以重复执行恢复该目标容器实例运行时的数据的步骤,以恢复该目标容器实例运行时的数据,增加恢复该目标容器实例运行时的数据的概率。
在一种可能的实现方式中,在根据该检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例的步骤中还可以具体包括:根据该检查点文件恢复该目标容器实例运行时的状态数据;将该状态数据复制到该虚拟化容器,以得到该目标虚拟化容器实例;然后,删除该目标容器实例和该检查点文件,以节省存储资源。
第二方面,本申请实施例还提供了一种主机设备具有实现上述方法中实际中主机设备所执行的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,主机设备的结构中包括存储器和处理器。其中存储器用于存储计算机可执行程序代码,并与处理器耦合。该程序代码包括指令,当该处理器执行该指令时,该指令使该主机执行上述方法中所涉及的信息或者指令。
第四方面,本申请实施例提供了一种计算机存储介质,用于储存上述主机设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
附图说明
图1为本申请实施例中容器的架构示意图;
图2为本申请实施例中虚拟化容器的架构示意图;
图3为本申请实施例中系统架构图;
图4为本申请实施例中一种基于容器的隔离处理方法的步骤流程示意图;
图5为本申请实施例中一种基于容器的隔离处理方法的原理示意图;
图6为本申请实施例中双容器管理引擎的原理示意图;
图7为本申请实施例中主机设备的一个实施例的结构示意图;
图8为本申请实施例中主机设备的另一个实施例的结构示意图;
图9为本申请实施例中主机设备的另一个实施例的结构示意图;
图10为本申请实施例中主机设备的另一个实施例的结构示意图;
图11为本申请实施例中主机设备的另一个实施例的结构示意图。
具体实施方式
本申请实施例提供了一种基于容器的隔离处理方法及设备,用于在容器实例运行的过程中,动态提升容器的隔离能力。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了方便对本申请实施例的理解,首先对本申请实施例中涉及的词语进行解释说明:
容器实例:应用程序部署在容器中后运行的容器。
容器:通过结合轻量级应用程序隔离和基于映像的部署方法,将应用程序及其运行所需要的其它二进制文件打包在一起,从而为应用程序提供了一个独立的操作系统环境。请结合图1所示,图1为容器的架构示意图。容器的架构包括容器,容器执行引擎,容器镜像(Container Image),容器共享底层的物理机器资源,容器中没有独立的操作系统内核,容器使用宿主机的操作系统内核。其中,容器用于封装应用程序,为应用程序提供了一个运行时环境;容器执行引擎(RunC)为运行容器实例提供配置文件;容器镜像,镜像是一个只读的静态模板,保存了容器需要的环境和应用的执行代码。
虚拟化容器:基于硬件虚拟化技术的容器。
虚拟化容器实例:应用程序部署在虚拟化容器中后运行的虚拟化容器。
虚拟化容器请结合图2进行理解,图2为虚拟化容器的架构示意图。虚拟化架构包括虚拟化容器,虚拟化容器执行引擎(runV),容器镜像(container image),Hypervisor中间层、备内核(Guest kernel)。其中,runV为开放容器促进组织(open containerintiative,缩写:OCI)确定的基于虚拟化技术的容器运行时的引擎,虚拟化容器执行引擎(runV)为运行虚拟化容器实例提供配置文件;虚拟化容器用于封装应用程序,为应用程序提供了一个运行时环境;虚拟化容器又称容器虚拟机,是一种基于Hypervisor的虚拟化的容器,融合了容器和虚拟机的优点,可以在hypervisor上,不安装完整操作系统,直接运行容器镜像的执行引擎。Hypervisor的优点在于,hypervisor的进程是由另一个备内核(guest kernel)调度,系统调用由另一个备内核(guest kernel)处理,而并非宿主机的内核(kernel)。这样,增强了隔离性,hypervisor发生漏洞,对宿主机和其它虚拟机的威胁的概率是远低于容器漏洞的。因此虚拟化容器可以增强容器故障隔离。隔离容器的内存空间,隔离性接近于虚拟机(virtual machine,缩写:VM)。虚拟化容器具有虚拟机的故障隔离特性,该故障隔离特性包括资源故障、静默故障与拜占庭故障。虚拟化容器的故障隔离特性强于容器的故障隔离特性。
容器管理引擎:负责容器实例的生命周期中状态信息的管理,例如,创建、启动、删除等。
虚拟化容器管理引擎:负责虚拟化容器实例的生命周期中状态信息的管理,例如,创建、启动、删除等。
检查点(checkpoint):检查点技术可以将容器中所有的进程暂时冻结,并将容器完整的状态存储到磁盘上,用于恢复程序执行所需的计算状态数据。
检查点文件:检查点数据以文件的形式存储在稳定的存储介质中,这个文件称之为检查点文件。
传统的容器隔离方法均是一种静态的应用程序的隔离,也就是在应用程序运行之前,将应用程序封装于容器中,通过容器将应用程序静态隔离,并不能实现动态的隔离。基于传统方法中基于容器的隔离方法均为静态隔离技术,本申请实施例中提供了一种动态隔离的方法,也就是在容器实例运行的过程中,提升系统的隔离能力。例如,在一种场景中,若主机中运行了多个容器,每个容器中部署了一个应用程序,也就是在主机中可以运行多个容器实例及多个虚拟化容器实例。在一种场景中,容器实例A产生故障,该容器实例A的故障可能通过容器漏洞影响到宿主机,此时,在容器实例B运行的过程中,用户想要增强容器实例B的隔离特性,以保护容器实例B免受容器实例A或者宿主机的影响,以隔离故障。
基于传统容器隔离方法中存在的问题,本申请实施例中提供了一种可以动态提升容器隔离能力的方法,由于虚拟化容器的隔离特性比容器的隔离特性要好,因此,在动态的提升隔离能力的方法中,可以通过检查点保存容器实例运行时的数据,待容器执行引擎切换到虚拟化容器执行引擎后,再根据检查点文件将容器实例的数据进行恢复。该容器实例转换成虚拟化容器实例,实现应用程序无感知的容器实例转换。通过虚拟化容器来提升对应用程序的隔离,保证该应用程序的安全。请结合图3进行理解,图3为本申请实施例中系统架构图,该系统架构中包括客户端301和服务端(物理主机)302,客户端301接收用户输入的用于隔离的操作指令,该操作指令包含目标容器的标识,该操作指令用于提升目标容器实例的隔离性能,然后,该客户端将该操作指令发送至服务端302,服务端302获取该目标容器实例的检查点文件,该检查点文件为检查点是以文件的形式进行保存的数据;服务端302根据该检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到虚拟化容器实例,该虚拟化容器实例运行于虚拟化容器执行引擎。在本申请实施例中,通过检查点保存目标容器实例运行时的数据,并不会停止容器中的进程,由于通过检查点保存目标容器实例,恢复该目标容器实例的数据的速度非常快,可以将目标容器实例运行时的数据快速的迁移到虚拟化容器中,从而时容器实例转变成虚拟化容器实例,来实现应用程序无感知的转换,由于虚拟化容器的隔离性优于容器的隔离性,因此本申请实施例中提供的基于容器的隔离处理方法可以动态的提升系统的隔离能力,以保护应用程序免受故障影响。
请参阅图4和图5进行理解,图4为本申请实施例中提供的一种基于容器的隔离处理方法的步骤流程示意图。图5为本申请实施例中一种基于容器的隔离处理方法的原理示意图。本申请实施例中提供的方法应用于主机设备,该主机设备可以为物理主机也可以为虚拟机,本实施例中该主机设备以物理主机为例进行说明。该物理主机中运行有多个容器实例,容器实例管理引擎和虚拟化容器管理引擎,容器实例管理引擎用于管理容器实例的生命周期中的状态信息,虚拟化容器管理引擎用于管理虚拟化容器实例的生命周期中的状态信息,下面以服务端(物理主机)侧进行示例性说明该基于容器的隔离处理方法的步骤流程。
步骤401、接收用于隔离的操作指令,该操作指令包含目标容器的标识。
客户端接收用户输入的CLI的操作指令,该CLI操作指令包含目标容器的标识,该目标容器的标识为容器的ID,该容器的ID可以为一个字符串,该标识也可以为该目标容器的名称,该标识用于全局内唯一标识该目标容器,一个容器内部署一个应用程序,部署了应用程序的容器为容器实例,因此该标识也对应该目标容器对应的目标容器实例。
在一个应用场景中,用户需要在应用程序运行的过程中动态提升对应用程序的隔离能力,客户端接收用户输入的用于提升该应用程序隔离能力的操作指令,该操作指令包括目标容器的标识,该客户端将该操作指令发送给服务端(物理主机),物理主机接收到客户端发送的操作指令,以使物理主机通过该标识从运行的多个容器实例中确定目标容器实例,该目标容器实例是需要动态提升隔离性能的容器实例。
步骤402、准备虚拟化容器运行时所需的备内核与内核镜像文件。
由于虚拟化容器运行需要备内核(Guest kernel)调度,hypervisor的进程也是由Guest kernel调度,因此需要预先准备该虚拟化容器运行时所需的备内核及该备内核镜像文件。需要说明的是,在同一个物理主机中,该虚拟化容器运行时所需的内核已经存在,则不需要执行该步骤,该步骤402为可选步骤,可以不执行,而直接执行步骤403。
步骤402与步骤401没有时序上的限制,步骤402也可以在步骤401之前执行,也就是说在物理主机再没有接收到操作指令之前,也可以预先准确虚拟化容器运行时所需的内核及内核镜像文件。
步骤403、根据该目标容器的标识从多个容器实例中确定该目标容器的目标容器实例,该多个容器中的每个容器对应一个容器实例。
在一个应用场景中,物理主机上运行有多个容器,每个容器内部署一个应用程序,每个容器可以被一个用户使用,可以理解的是,通过容器的标识可以标识容器实例,请结合下表1理解容器和容器实例的对应关系;
表1
容器标识 | 容器 | 容器实例 |
A | 容器A中部署第一应用程序 | 第一容器实例 |
B | 容器B中部署第二应用程序 | 第二容器实例 |
C | 容器C中部署第三应用程序 | 第三容器实例 |
从上述表1可以看出,由于容器中部署有应用程序,因此容器标识也可以标识该容器对应的应用程序,例如,容器标识A对应第一容器实例,容器标识B对应第二容器实例,容器标识C对应第三容器实例。
若操作指令中包含的容器标识为B,则物理主机根据该容器标识B从3个容器实例中确定该目标容器实例为第二容器实例。需要说明的是,上述表1中的容器标识及容器实例只是为了方便说明而举的例子,并不造成对本申请的限定性说明。
步骤404、获取该目标容器实例的检查点文件,该检查点文件为检查点以文件的形式进行保存的数据,该检查点用于指示该目标容器实例运行时的状态数据。
在目标容器实例运行的过程中,冻结目标容器实例,在程序运行的适当时刻设置检查点,保存进程当时的运行状态,检查点技术可以实现在目标实例运行的过程中,应用程序无感知的被提升隔离性能。本申请实施例中,通过在目标容器实例上设置检查点而在虚拟化实例上进行恢复,可以目标容器实例转换成虚拟化容器实例。检查点保存目标容器实例的运行时的状态数据的优点在于:1、保存的运行时的状态数据完整,在虚拟化容器上恢复的概率大,成功率较高。可以理解的是,将该检查点以文件的形式保存在稳定的存储介质上,该存储介质可以为内存文件系统,该文件就是检查点文件。检查点文件应该包含进程上下文中决定程序运行正确性的内容,如进程地址空间内容、与进程有关的寄存器、操作系统(包括文件系统)的状态以及进程间通信状态等。2、检查点技术保存数据及恢复数据的时长短,速度快,可以实现目标容器中的应用程序无感知的情况下,将目标容器实例转变成虚拟化容器实例来提升系统的隔离特性。可以理解的是,一般应用程序在运行过程中,被中断超过一个阈值,应用程序才会有感知,而检查点技术保存数据和恢复数据的时长会小于该阈值,因此,应用程序在无感知的情况下,该目标容器实例转变成虚拟化容器实例,即动态提升了系统的隔离特性,而且不会影响用户体验。
然后,需要恢复目标容器实例的运行时的状态数据时,从该内存文件系统获取该目标容器实例的检查点文件。
步骤405、将用于运行该目标容器实例的执行引擎由容器执行引擎切换至虚拟化容器执行引擎。
将用于运行该目标容器实例的执行引擎(runC)切换至虚拟化容器执行引擎(runV),可以理解的是,将该目标容器实例的运行环境由runC切换至runV,目的是可以使得目标容器实例的运行状态数据根据检查点文件恢复之后,将目标容器实例的状态数据迁移至虚拟化容器,目标容器实例的状态数据可以运行于虚拟化容器实例执行引擎,从而将该目标容器实例转变成目标虚拟化容器实例。
步骤406、将容器管理引擎记录的目标容器的标识传递给虚拟化容器管理引擎,该虚拟化容器管理引擎用于虚拟化容器实例生命周期中状态信息的管理,以使该虚拟化容器管理引擎管理该目标容器的标识对应的目标虚拟化容器实例。
请结合图6进行理解,图6为双容器管理引擎的原理示意图。在一个应用场景中,物理主机上可能运行有多个容器实例及多个虚拟化容器实例,在目标容器实例进行转换的过程中,其他的容器实例和虚拟化容器实例均在运行,所以需要保证目标容器实例的转换对其它容器实例无影响,因此在本申请中实施例中在同一主机(虚拟机或者物理主机)上,运行两个管理引擎,这两个管理引擎分别是容器管理引擎和虚拟化容器管理引擎,两个管理引擎切换管理目标容器实例,从而使得目标容器实例的转换目标虚拟化容器实例的过程中,对多个容器中的其他容器的运行没有影响,对多个虚拟化容器实例中的其他虚拟化容器实例的运行也没有影响。
容器管理引擎向虚拟化容器管理引擎注册,容器管理引擎向虚拟化容器管理引擎发送注册信息,该注册信息包括目标容器实例对应的标识。可以理解的是,容器管理引擎将目标容器的标识传递给虚拟化容器管理引擎,容器管理引擎通知虚拟化容器管理引擎该标识对应的容器实例的生命周期的状态由虚拟化容器管理引擎接管,当虚拟化容器管理引擎接收到容器管理引擎发送的注册信息后,虚拟化容器管理引擎会记录待迁移的目标容器实例,然后配置该目标容器实例转换成虚拟化容器实例所需的相关参数,该相关参数包括时钟、CPU信息、内存页面等等。
需要说明的是,步骤405与步骤406并没有时序上的限制,步骤406也可以在步骤405之前。
步骤407、根据该检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,该目标虚拟化容器实例运行于虚拟化容器执行引擎。
在一种实现方式中,根据检查点文件恢复目标容器实例运行时的数据,并将该目标实例的状态数据复制到该虚拟化容器,然后得到虚拟化容器实例,从而使得目标容器实例转换成目标虚拟化容器实例。并删除该目标容器中的应用程序的相关数据,清除该检查点文件,以节省存储资源。
在另一种实现方式中,步骤a:根据该检查点文件恢复该目标容器实例运行时的数据。启动计数器,初始化该计数器,例如,计数器i=0,该计数器用于记录该检查点文件恢复的次数。
步骤a1:若根据检查点文件恢复目标容器实例运行时的数据恢复成功,将该数据迁移至虚拟化容器。
步骤a2:可以预先设定一个恢复次数的预设值,例如该预设值为5,若根据检查点文件恢复目标容器实例运行时的数据恢复失败且该计数器记录的数值小于预设值,则重复执行步骤a,并更新计数器;例如,若第一次目标容器实例运行时的数据恢复失败,则计数器i=0+1,i=1;重复执行步骤a,若第二次目标容器实例运行时的数据恢复失败,则计数器i=1+1,i=2;依次类推,此处不赘述。
待该目标容器实例运行时的数据恢复成功后,将该目标容器实例运行时的数据迁移至该虚拟化容器。
若计数器记录的次数达到5次,则不重复执行步骤a,则判定该检查点文件恢复失败。
即目标容器实例转换为目标虚拟化容器实例转换失败,则将容器实例运行时引擎从虚拟化容器执行引擎切换至容器执行引擎,并通知虚拟化管理引擎取消转换,解冻目标容器实例。需要说明的是,该预设值可以根据经验值进行设置,此处对于预设值的举例并不造成对本申请的限定性说明。
本申请实施例中,基于OCI标准规范描述的容器镜像,容器实例转换成虚拟化容器实例后,容器镜像无须作任何修改。因此虚拟化容器镜像可以使用容器实例镜像。
本申请实施例中,主机接收用于隔离的操作指令,该操作指令包含目标容器的标识;多个容器中的每个容器对应一个容器实例;可以根据该标识从多个容器实例中确定该目标容器的目标容器实例,该目标容器实例为需要动态提升隔离性能的容器实例,通过目标容器实例的检查点文件来保存目标容器实例运行时的状态数据,根据该检查点文件再将目标实例运行时的数据进行恢复,将该状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,从而该目标容器实例转换成目标虚拟化容器实例,该目标虚拟化容器实例运行于虚拟化容器执行引擎。本申请实施例中,可以根据用户需求,动态增强容器故障隔离能力,同时并不会影响容器中的应用程序,实现了容器中的业务无感知的情况下,扩大了容器故障隔离的适用场景,能够防止容器各种故障类型的扩散,避免容器故障对主机或者主机上其它容器实例的影响;并且本申请实施例中提供的方法与现有容器静态故障隔离方法相比,能使容器实例与虚拟化容器实例共存,目标容器实例动态转变为虚拟化容器实例时,不影响主机中的其他容器实例与虚拟化容器实例的运行。
上面对本申请实施例中一种基于容器的隔离处理方法进行了说明,下面对方法应用的主机设备进行说明,请参阅图7所示,图7为本申请实施例中主机设备700的一个实施例的结构示意图。该主机设备包括:
接收模块701,用于接收用于隔离的操作指令,该操作指令包含目标容器的标识,该目标容器为该多个容器中的至少一个;
确定模块702,用于根据该接收模块701接收的该标识从多个容器实例中确定该目标容器的目标容器实例;
获取模块703,用于获取该目标容器实例的检查点文件,该检查点文件为检查点以文件的形式进行保存的数据,该检查点用于指示该目标容器实例运行时的状态数据;
该执行引擎切换模块705,用于将用于运行该目标容器实例的运行时引擎由容器执行引擎切换至虚拟化容器执行引擎;
数据迁移模块704,用于根据该获取模块703获取的该检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,该目标虚拟化容器实例运行于虚拟化容器执行引擎。
请参阅图8所示,在图7对应的主机设备的实施例的基础上,本申请实施例提供了主机设备800的另一个实施例,包括:注册模块706;
注册模块706,用于将容器管理引擎记录的目标容器的标识传递给虚拟化容器管理引擎,虚拟化容器管理引擎用于虚拟化容器实例生命周期中状态信息的管理,以使虚拟化容器管理引擎管理目标虚拟化容器实例。
请参阅图9所示,在图7对应的主机设备的实施例的基础上,本申请实施例提供了主机设备900的另一个实施例,获取模块703还包括冻结单元7031,设置单元7032,保存单元7033和获取单元7034;
冻结单元7031,用于冻结目标容器实例;
设置单元7032,用于冻结单元7031冻结的目标容器实例设置检查点;
保存单元7033,用于将设置单元7032设置的检查点的数据以检查点文件的形式保存至内存文件系统;
获取单元7034,用于从保存单元7033保存的内存文件系统获取目标容器实例的检查点文件。
可选的,数据迁移模块704,还具体用于根据检查点文件恢复目标容器实例运行时的数据,并启动计数器,计数器用于记录检查点文件恢复的次数;
若目标容器实例运行时的数据恢复失败且所述计数器记录的数值小于预设值,则重复根据检测点文件恢复目标容器实例运行时的数据的步骤;
当目标容器实例运行时的数据恢复成功时,将目标容器实例运行时的数据迁移至虚拟化容器。
可选的,数据迁移模块704,还具体用于根据检查点文件恢复目标容器实例运行时的状态数据;将状态数据复制到虚拟化容器,以得到目标虚拟化容器实例;删除目标容器实例和检查点文件。
进一步的,图7至图9中的主机设备是以功能模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,图7至图9中的主机设备可以采用图10所示的形式。
如图10所示对本实施例所提供的主机设备的具体结构进行说明,其中,图10为本申请所提供的主机设备的一种实施例的结构示意图,主机设备中可以运行有多个容器实例和虚拟化容器实例主机设备包括至少一个处理器1001,通信总线1002,存储器1003以及至少一个网络接口1004。
处理器1001可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线1002可包括一通路,在上述组件之间传送信息。
网络接口1004,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
本申请实施例中,网络接口1004,用于接收用于隔离的操作指令,该操作指令包含目标容器的标识。
存储器1003可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1003用于存储执行本申请方案的应用程序代码,并由处理器1001来控制执行。处理器1001用于执行存储器1003中存储的应用程序代码,从而实现该主机设备1000的逻辑功能,以执行上述实施例所示的与直播方法相关联的功能。
在具体实现中,作为一种实施例,处理器1001可以包括一个或多个CPU,例如图10中的CPU0和CPU1。
在具体实现中,作为一种实施例,主机设备可以包括多个处理器,例如图10中的处理器1001和处理器1008。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,主机设备1000还可以包括输出设备1005和输入设备1006。输出设备1005和处理器1001通信,可以以多种方式来显示信息。
本申请实施例中,处理器还用于使得主机设备执行上述图4对应的方法实施例中的方法步骤。
该主机设备在容器实例转换为虚拟化容器实例场景下的表现形式如图11所示,该主机设备包括硬件层和运行在硬件层之上的多个容器1101,以及多个虚拟化容器1102。
具体的,软件层:通过软件在公共硬件资源上运行有容器管理引擎及虚拟化容器管理引擎,容器管理引擎1106用于管理容器实例的生命周期中的状态信息,虚拟化容器管理引擎1107用于管理虚拟化容器实例的生命周期中的状态信息。当容器实例转换为虚拟化容器实例,虚拟化容器实例运行于虚拟化执行引擎。
硬件层:虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如包括处理器1104(例如CPU)和存储器1105,还可以包括网卡1103、高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。
本申请实施例还提供了一种计算机存储介质,用于储存实现上述方法实施例所示的基于容器的隔离处理方法,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现本申请实施例提供的对容器实例的动态隔离。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看该附图、公开内容、以及所附权利要求书,可理解并实现该公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过Internet或其它有线或无线电信系统。
本申请是参照本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
Claims (10)
1.一种基于容器的隔离处理方法,其特征在于,应用于主机设备,所述主机设备上运行有多个容器,所述多个容器中的每个容器对应一个容器实例,所述方法包括:
接收用于隔离的操作指令,所述操作指令包含目标容器的标识,所述目标容器为所述多个容器中的至少一个;
根据所述目标容器的标识确定所述目标容器的目标容器实例;
获取所述目标容器实例的检查点文件,所述检查点文件为检查点以文件的形式进行保存的数据,所述检查点用于指示所述目标容器实例运行时的状态数据;
将用于运行所述目标容器实例的执行引擎由容器执行引擎切换至虚拟化容器执行引擎;
根据所述检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,所述目标虚拟化容器实例运行于虚拟化容器执行引擎;
所述主机设备包括容器管理引擎和虚拟化容器管理引擎;所述根据所述检查点文件将目标容器实例的数据迁移至虚拟化容器之前,所述方法还包括:
将所述容器管理引擎记录的所述目标容器的标识传递给所述虚拟化容器管理引擎,以使所述虚拟化容器管理引擎管理所述目标虚拟化容器实例。
2.根据权利要求1所述的基于容器的隔离处理方法,其特征在于,所述获取所述目标容器实例的检查点文件,包括:
冻结所述目标容器实例;
对冻结的所述目标容器实例设置检查点;
将所述检查点的数据以检查点文件的形式保存至内存文件系统;
从所述内存文件系统获取所述目标容器实例的检查点文件。
3.根据权利要求1或2所述的基于容器的隔离处理方法,其特征在于,所述根据所述检查点文件将目标容器实例的数据迁移至虚拟化容器,包括:
根据所述检查点文件恢复所述目标容器实例运行时的数据,并启动计数器,所述计数器用于记录所述检查点文件恢复的次数;
若所述目标容器实例运行时的数据恢复失败且所述计数器记录的数值小于预设值,则重复根据所述检查点文件恢复所述目标容器实例运行时的数据的步骤;
当所述目标容器实例运行时的数据恢复成功时,将所述目标容器实例运行时的数据迁移至所述虚拟化容器。
4.根据权利要求1或2所述的基于容器的隔离处理方法,其特征在于,所述根据所述检查点文件将目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,包括:
根据所述检查点文件恢复所述目标容器实例运行时的状态数据;
将所述状态数据复制到所述虚拟化容器;
删除所述目标容器实例和所述检查点文件,以得到所述目标虚拟化容器实例。
5.一种主机设备,其特征在于,所述主机设备上运行有多个容器,所述多个容器中的每个容器对应一个容器实例,所述主机设备包括:
接收模块,用于接收用于隔离的操作指令,所述操作指令包含目标容器的标识,所述目标容器为所述多个容器中的至少一个;
确定模块,用于根据所述接收模块接收的所述目标容器的标识从多个容器实例中确定所述目标容器的目标容器实例;
获取模块,用于获取所述目标容器实例的检查点文件,所述检查点文件为检查点以文件的形式进行保存的数据,所述检查点用于指示所述目标容器实例运行时的状态数据;
执行引擎切换模块,用于将用于运行所述目标容器实例的执行引擎由容器执行引擎切换至虚拟化容器执行引擎;
数据迁移模块,用于根据所述获取模块获取的所述检查点文件将所述目标容器实例的状态数据迁移至虚拟化容器,以得到目标虚拟化容器实例,所述目标虚拟化容器实例运行于所述虚拟化容器执行引擎;
所述主机设备包括容器管理引擎和虚拟化容器管理引擎,所述主机设备还包括注册模块;
所述注册模块,用于将容器管理引擎记录的目标容器的标识传递给虚拟化容器管理引擎,以使所述虚拟化容器管理引擎管理所述目标虚拟化容器实例。
6.根据权利要求5所述的主机设备,其特征在于,所述获取模块,还包括冻结单元,设置单元,保存单元和获取单元;
所述冻结单元,用于冻结所述目标容器实例;
所述设置单元,用于所述冻结单元冻结的所述目标容器实例设置检查点;
所述保存单元,用于将所述设置单元设置的所述检查点的数据以检查点文件的形式保存至内存文件系统;
所述获取单元,用于从所述保存单元保存的所述内存文件系统获取所述目标容器实例的检查点文件。
7.根据权利要求5或6所述的主机设备,其特征在于,
所述数据迁移模块,还用于根据所述检查点文件恢复所述目标容器实例运行时的数据,并启动计数器,所述计数器用于记录所述检查点文件恢复的次数;
若所述目标容器实例运行时的数据恢复失败且所述计数器记录的数值小于预设值,则重复根据所述检查点文件恢复所述目标容器实例运行时的数据的步骤;
当所述目标容器实例运行时的数据恢复成功时,将所述目标容器实例运行时的数据迁移至所述虚拟化容器。
8.根据权利要求5或6所述的主机设备,其特征在于,
所述数据迁移模块,还用于根据所述检查点文件恢复所述目标容器实例运行时的状态数据;
将所述状态数据复制到所述虚拟化容器;
删除所述目标容器实例和所述检查点文件,以得到所述目标虚拟化容器实例。
9.一种主机设备,其特征在于,包括:
存储器,用于存储计算机可执行程序代码;
处理器,与所述存储器和收发器耦合;
其中所述程序代码包括指令,当所述处理器执行所述指令时,所述指令使所述主机设备执行如权利要求1至4任一项所述的基于容器的隔离处理方法。
10.一种存储介质,其特征在于,计算机可读存储介质中存储有指令,所述指令用于执行如权利要求1至4任一项所述的基于容器的隔离处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710760721.6A CN107608757B (zh) | 2017-08-29 | 2017-08-29 | 一种基于容器的隔离处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710760721.6A CN107608757B (zh) | 2017-08-29 | 2017-08-29 | 一种基于容器的隔离处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107608757A CN107608757A (zh) | 2018-01-19 |
CN107608757B true CN107608757B (zh) | 2021-01-08 |
Family
ID=61056375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710760721.6A Active CN107608757B (zh) | 2017-08-29 | 2017-08-29 | 一种基于容器的隔离处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107608757B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124596A (zh) * | 2018-11-01 | 2020-05-08 | 千寻位置网络有限公司 | 基于容器的发布管理方法及其系统 |
CN109783533B (zh) * | 2018-12-13 | 2023-06-02 | 平安科技(深圳)有限公司 | 数据采集方法、装置、计算机设备及存储介质 |
CN109766174B (zh) * | 2018-12-24 | 2021-04-16 | 杭州数梦工场科技有限公司 | 资源调度方法、资源调度装置和计算机可读存储介质 |
CN111835544B (zh) * | 2019-04-19 | 2022-10-25 | 厦门网宿有限公司 | 一种基于用户态协议栈的虚拟路由器的监控方法及系统 |
US11175939B2 (en) * | 2019-05-09 | 2021-11-16 | International Business Machines Corporation | Dynamically changing containerized workload isolation in response to detection of a triggering factor |
CN110532059B (zh) * | 2019-08-09 | 2022-06-07 | 济南浪潮数据技术有限公司 | K8s集群管理软件的配额管理方法及装置 |
CN110955510B (zh) * | 2019-12-11 | 2021-03-02 | 腾讯科技(上海)有限公司 | 一种隔离处理方法以及相关装置 |
CN113301004B (zh) * | 2020-06-17 | 2023-05-09 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、通信方法和单网卡虚拟机 |
CN113032189A (zh) * | 2021-03-22 | 2021-06-25 | 中国工商银行股份有限公司 | 一种故障域切换方法、装置和设备 |
CN113220417B (zh) * | 2021-05-06 | 2022-10-04 | 西安电子科技大学 | 限制Docker容器行为的安全防护方法 |
CN113239347B (zh) * | 2021-06-18 | 2022-06-28 | 上海交通大学 | 一种适用于tee安全应用实例的启动方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2249242A (en) * | 1990-08-17 | 1992-04-29 | Hitachi Ltd | Transmission method and circuit of virtual container using asynchronous transfer mode |
CN102150105A (zh) * | 2008-09-09 | 2011-08-10 | 凯思网络公司 | 虚拟容器的部署和管理 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850432B2 (en) * | 2012-05-30 | 2014-09-30 | Red Hat, Inc. | Controlling utilization in a multi-tenant platform-as-a-service (PaaS) environment in a cloud computing system |
CN105190545B (zh) * | 2014-01-27 | 2018-12-14 | 华为技术有限公司 | 虚拟化方法和装置及计算机设备 |
US9954936B2 (en) * | 2015-03-02 | 2018-04-24 | International Business Machines Corporation | Migrating legacy applications to a multi-tenant computing environment |
US9575797B2 (en) * | 2015-03-20 | 2017-02-21 | International Business Machines Corporation | Virtual machine migration between hypervisor virtual machines and containers |
US10367914B2 (en) * | 2016-01-12 | 2019-07-30 | Cisco Technology, Inc. | Attaching service level agreements to application containers and enabling service assurance |
CN106155778A (zh) * | 2016-07-07 | 2016-11-23 | 中国科学院声学研究所 | 一种应用容器的启动方法及系统 |
-
2017
- 2017-08-29 CN CN201710760721.6A patent/CN107608757B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2249242A (en) * | 1990-08-17 | 1992-04-29 | Hitachi Ltd | Transmission method and circuit of virtual container using asynchronous transfer mode |
CN102150105A (zh) * | 2008-09-09 | 2011-08-10 | 凯思网络公司 | 虚拟容器的部署和管理 |
Non-Patent Citations (3)
Title |
---|
Migrating from Virtualization to Dockerization in the Cloud: Simulation and Evaluation of Distributed Systems;Nitin Naik;《2016 IEEE 10th International Symposium on the Maintenance and Evolution of Service-Oriented and Cloud-Based Environments (MESOCA)》;20161212;全文 * |
云计算虚拟化技术的发展趋势;武志学;《计算机应用》;20170410;第37卷(第4期);全文 * |
基于Docker技术的容器隔离性研究;刘思尧;《软件》;20150430;第36卷(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107608757A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608757B (zh) | 一种基于容器的隔离处理方法及相关设备 | |
EP3561669B1 (en) | Containerized application deployment | |
US11416342B2 (en) | Automatically configuring boot sequence of container systems for disaster recovery | |
US10860444B2 (en) | Seamless mobility for kubernetes based stateful pods using moving target defense | |
US10908999B2 (en) | Network block device based continuous replication for Kubernetes container management systems | |
US9870288B2 (en) | Container-based processing method, apparatus, and system | |
US9766945B2 (en) | Virtual resource scheduling for containers with migration | |
US8448219B2 (en) | Securely hosting workloads in virtual computing environments | |
CN107636612B (zh) | 应用迁移装置、方法与存储介质 | |
US9329889B2 (en) | Rapid creation and reconfiguration of virtual machines on hosts | |
US11403146B2 (en) | Method, apparatus, and server for managing image across cloud servers | |
US10353739B2 (en) | Virtual resource scheduling for containers without migration | |
AU2014204468B2 (en) | Virtual machine deployment and management engine | |
US9395973B2 (en) | Virtual machine deployment method, recording medium, and information processing apparatus | |
US9817592B1 (en) | Using an intermediate virtual disk format for virtual disk conversion | |
US9645841B2 (en) | Dynamic virtual machine storage usage monitoring, provisioning, and migration | |
US20190012184A1 (en) | System and method for deploying cloud based computing environment agnostic applications | |
US10585690B2 (en) | Online promote disk using mirror driver | |
US11809275B2 (en) | FaaS in-memory checkpoint restore | |
US9436489B2 (en) | Virtual machine data replication with shared resources | |
CN113326098B (zh) | 支持kvm虚拟化与容器虚拟化的云管平台 | |
WO2016041202A1 (zh) | 一种基于云环境系统的部署方法和装置 | |
CN112988460B (zh) | 一种虚拟机的数据备份方法及装置 | |
US20240126582A1 (en) | Disaster recovery of containerized workloads | |
US20220398126A1 (en) | Dynamically assigning applications to workspaces based on context |
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 |