CN102707990A - 基于容器的处理方法、装置和*** - Google Patents
基于容器的处理方法、装置和*** Download PDFInfo
- Publication number
- CN102707990A CN102707990A CN2012101485195A CN201210148519A CN102707990A CN 102707990 A CN102707990 A CN 102707990A CN 2012101485195 A CN2012101485195 A CN 2012101485195A CN 201210148519 A CN201210148519 A CN 201210148519A CN 102707990 A CN102707990 A CN 102707990A
- Authority
- CN
- China
- Prior art keywords
- control group
- file
- group file
- container
- filename
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/113—Details of archiving
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- 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
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种基于容器的处理方法、装置和***。该方法包括:在备份该容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过;根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名;根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找第一控制组文件的存储位置,并且从第一控制组文件的存储位置提取修改后的第一控制组文件的内容;备份第一控制组文件的文件名和该修改后的第一控制组文件的内容。本发明无需遍历全部控制组文件就能够获知容器的状态,从而减小了***开销。
Description
技术领域
本发明涉及计算机领域,更具体地,涉及基于容器的处理方法、装置和***。
背景技术
在计算机***中,容器(container)可以作为一种轻量级的虚拟机,即容器是一种操作***层次上的资源的虚拟化,用以隔离进程和资源。借助于容器,计算机***的操作***可以让应用程序如同在独立的机器上运行一样。它有效地将由单个操作***管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。常见的容器技术包括SolarisZones、BSD Jails和Linux操作***上的容器等等。
在Linux内核(Kernel)中,通常可以使用控制组(cgroup)文件***来管理容器。控制组用于对一组进程进行行为控制,从而可限制控制组中的进程及其子进程所使用的***资源。相应地,在使用容器之前,需要挂载(mount)控制组文件***,例如,创建(create)控制组目录“/cgroup”,并且在该目录下生成控制组文件,用于限制进程所使用的***资源。
在容器的运行过程中,可能需要对容器状态及进程状态进行备份/恢复(checkpoint/restart,C/R),这就需要知道某一时刻的控制组的状态(例如,容器的资源限制状态)。通常的方案是遍历控制组目录下的所有控制组文件来获取并且保存控制组的状态。控制组目录“/cgroup”下通常保存有几十个控制组文件,因此,遍历机制的***开销比较大,而且***开销随着文件数目的增加而线性增长。
发明内容
本发明实施例提供了一种基于容器的处理方法、装置和***,能够减小***开销。
一方面,提供了一种基于容器的处理方法,包括:在需要备份该容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与至少一个控制组文件相对应的至少一个标志位,至少一个标志位用于分别指示至少一个控制组文件的内容是否被修改;根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名;根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的第一控制组文件中提取修改后的第一控制组文件的内容;备份第一控制组文件的文件名和该修改后的第一控制组文件的内容。
另一方面,提供了一种基于容器的处理装置,包括:确定模块,用于在需要备份该容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与至少一个控制组文件相对应的至少一个标志位,至少一个标志位用于分别指示至少一个控制组文件的内容是否被修改;获取模块,用于根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名;查找模块,用于根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的第一控制组文件的内容;备份模块,用于备份第一控制组文件的文件名和该修改后的第一控制组文件的内容。
另一方面,一种计算机***,包括:总线;与该总线相连的处理器,所述处理器之上运行有一个或多个容器;与该总线相连的存储器;其中,该处理器通过该总线,调用该存储器中存储的代码,以用于:在需要备份所述一个或多个容器中的容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与至少一个控制组文件相对应的至少一个标志位,至少一个标志位用于分别指示至少一个控制组文件的内容是否被修改;根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名;根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的第一控制组文件的内容;备份第一控制组文件的文件名和该修改后的第一控制组文件的内容。
本发明实施例中,在需要备份所述容器的状态时,根据标志文件中的第一标志位确定所述容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中所述至少一组控制组文件用于对所述容器中的一组进程的运行进行控制,所述标志文件包括与所述至少一个控制组文件相对应的至少一个标志位,所述至少一个标志位用于分别指示所述至少一个控制组文件的内容是否被修改;根据所述至少一个标志位与所述至少一个控制组文件的文件名之间的对应关系获取与所述第一标志位相对应的所述第一控制组文件的文件名;根据所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名对应的所述第一控制组文件的存储位置,并且从所述第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的所述第一控制组文件的内容;备份所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容。可见,本发明实施例可以通过标志文件中的标志位来确定与容器相对应的多个控制组文件中的哪些控制组文件的内容被修改,因此,无需遍历全部控制组文件就能够获知容器的状态,并且可以只根据标志位查找被修改控制组文件的存储位置并备份被修改的控制组文件的内容,从而减小了***开销。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明的实施例的基于容器的处理方法的示意性流程图。
图2是根据本发明的实施例的控制组文件***的截屏。
图3是根据本发明的实施例的哈希查找表的示意图。
图4是根据本发明的实施例的基于容器的处理过程的示意图。
图5是根据本发明的另一实施例的基于容器的处理过程的示意图。
图6是根据本发明的一个实施例的基于容器的处理***的结构性示意图。
图7是根据本发明的另一实施例的基于容器的处理***的结构性示意图。
图8示出了根据本发明实施例的计算机***的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在基于容器的处理***中,备份/恢复指在某一时刻将容器的状态(例如,控制组的状态)及控制组中的进程的执行状态进行保存与恢复。在容器的状态及进程的执行状态恢复之后,进程可以从保存时刻的执行状态开始继续执行,并维持保存时刻的各种行为控制。容器的状态可以包括容器的资源限制状态、容器的安全信息以及容器所在的主机名等等。
实现应用程序的执行状态的实时保存与恢复的前提是,应用程序在虚拟的容器中运行,也就是说,使用独立的命名空间实现轻量级的虚拟化。可以为容器中的应用程序创建控制组,并且通过控制组机制对应用程序进行资源限制。在为容器创建控制组时,会产生与容器相对应的控制组目录。当需要对容器中应用程序进行资源限制时,需打开控制组目录下表征指定资源的控制组文件,并且在打开的控制组文件中写入允许进程使用资源的大小,即可达到限制资源的目的。因此,与容器相对应的控制组目录下的各个文件中的值表明了在容器中的应用程序的运行所使用的各种资源的限定值。另外,在创建控制组文件时,控制组文件中的值为默认值。
在对容器状态及进程状态的备份/恢复过程中,通过保存与容器对应的控制组目录下各个控制组文件中的值来实现容器的资源限制状态。
常规的备份/恢复容器的状态的方案为,在备份阶段,遍历与容器对应的控制组目录下的所有控制组文件,记录所有控制组文件中的值并保存到容器状态文件中。备份完成之后,可以删除上述容器以及与该容器相对应的控制组目录。在恢复阶段可以建立新的容器以及与该容器相对应的控制组目录,以保存的容器状态文件作为输入,读取容器状态文件中保存的所有值,并且再次遍历所有新的控制组目录下所有控制组文件,并且将保存在容器状态文件中的值写到这些控制组文件中,以恢复备份阶段的资源限制状态。这里,新的控制组文件是指在恢复容器的状态时为新的容器的进程创建的新的控制组目录和新的控制组文件,新的控制组文件包含默认值。
按照上述方法,在容器状态的备份与恢复期间,需要两次打开对应的控制组目录下几十个控制组文件并进行读操作和写操作,但这些控制组文件每次被创建时初始值都相同,且往往只有少数几个相对创建时有所改动或完全没有改动,因此,常规方案明显降低了备份与恢复的效率。随着控制组机制的完善,控制组目录下的文件将逐渐增多,遍历机制的***开销随文件数的增加而线性增长,因此,可扩展性较差。
因此,本发明提出的目的还在于缩短容器状态备份与恢复所需的时间,降低备份与恢复过程的***开销。
图1是根据本发明的实施例的基于容器的处理方法的示意性流程图。图1的方法包括如下内容。
110,在需要备份该容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与至少一个控制组文件相对应的至少一个标志位,至少一个标志位用于分别指示至少一个控制组文件的内容是否被修改;
120,根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名;
130,根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的第一控制组文件的内容;
140,备份第一控制组文件的文件名和上述修改后的第一控制组文件的内容。
例如,上述至少一个控制组文件和标志文件可以存储在与容器相对应的控制组文件***的目录(以下称为控制组目录)下。上述至少一个控制组文件可以用于对该容器中的运行的一组进程进行行为控制,例如,可以限制上述进程及其子进程所使用的***资源。上述至少一个控制组文件的内容可以是进程能够使用的***资源的限定值,例如,CPU时间、内存大小以及带宽等等。例如,上述一组进程为至少一个进程。
当上述至少一个控制组文件中的某个控制组文件的内容被修改时,可以相应地修改与该控制组文件相对应的标志位,例如,可以将相应的标志位置位,以便记录哪个控制组文件被修改。这样,可以通过标志位的值或者标志位是否被修改来确定与该标志位相对应的控制组文件是否被修改,例如,该标志位为1表示与该标志位相对应的控制组文件被修改过,该标志位为0表示与该标志位相对应的控制组文件未被修改过,从而可以快速获知控制组或容器的状态(例如,***资源限定值的大小)。
在具体应用中,该标志位的修改可能在容器启动时通过读取设置的配置文件修改控制组文件而引起,或在容器运行过程中由于用户手动修改控制组文件而引起,根据本发明的实施例对此并不限定。
在需要备份该容器的状态时,可以读取上述标志文件,根据该标志文件中被修改的第一标志位确定第一控制组文件的文件名,根据第一控制组文件的文件名在上述至少一个控制组文件中查找与第一标志位相对应的第一控制组文件,并且将修改后的第一控制组文件的内容备份在容器状态文件中。
例如,可以在进程的目录下(例如,进程的源文件所在的目录下)存储上述容器状态文件,用于记录控制组文件的修改情况。在备份容器的状态的阶段,可以从控制组目录下读取上述标志文件,根据被修改过的标志位知道哪些(哪个)控制组文件被修改过,并且根据该控制组文件的文件名在控制组目录下查找该控制组文件,例如,查找该控制组文件的存储位置。根据本发明的实施例并不限制查找控制组文件的方法,例如,可以采用遍历法、二分法或哈希(hash)查找法等等。在查找到该控制组文件后,可以打开该控制组文件,读取该控制组文件的内容(例如CPU时间、内存大小等等),并且将该内容写入到容器状态文件中,以便恢复容器的状态时使用。
应理解,上述至少一个标志位与至少一个控制组文件的文件名之间的对应关系可以在建立标志文件时获得并保存,例如,可以通过用来遍历控制组目录下的控制组文件的函数获得上述至少一个标志位与至少一个控制组文件的文件名之间的对应关系,即标志位的顺序与遍历控制组文件的顺序一致。根据本发明的实施例并不限于此,也可以在备份容器的状态时利用该函数获得。
还应理解,可以在需要时备份容器的状态,也可以根据预先设定的周期备份容器的状态,本发明的实施例对备份容器的状态的时机不作限制。
根据本发明的实施例可以通过标志文件中的标志位来确定哪些控制组文件中的内容被修改过,因此,无需遍历全部控制组文件就能够获知控制组及容器的状态,并且可以只根据标志位查找被修改控制组文件的存储位置并备份被修改的控制组文件的内容,从而减小了***开销。
可选地,作为另一实施例,该方法还包括:为至少一个控制组文件的文件路径建立第一哈希查找表,其中第一哈希查找表用于表示至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系,其中在130中,可以根据第一控制组文件的文件名在第一哈希查找表中查找与所述第一控制组文件的文件名对应的第一控制组文件的存储位置;在140中,可以将第一控制组文件的文件名和该修改后的第一控制组文件的内容备份在容器状态文件中。换句话说,可以为上述至少一个控制组文件的文件路径建立第一哈希查找表,其中可以根据第一控制组文件的文件名通过第一哈希查找表在上述至少一个控制组文件中查找与第一标志位相对应的第一控制组文件。
例如,在备份容器的状态的阶段,需要根据被修改的控制组文件的文件名在控制组目录下查找该控制组文件。为了加快控制组文件的查找速度,可以为控制组文件的路径建立哈希查找表,以根据哈希查找表直接找到该控制组文件的存储位置,从而提高控制组文件的查找和访问效率。
例如,可以根据该控制组文件的文件名以及第一哈希查找表所使用的哈希函数计算索引值,并且根据该索引值查找第一哈希查找表来确定该控制组文件的存储位置。由于根据本发明的实施例可以根据计算出的索引值直接找到该控制组文件的存储位置,因此,避免了在备份容器的状态阶段遍历控制组目录下的全部控制组文件来查找该控制组文件。
例如,根据本发明的实施例可以检查上述至少一个标志位,并且在确定上述至少一个标志位的值不为0(意味着与上述至少一个标志位对应的控制组文件被修改过)的情况下,将与该容器对应的控制组目录下所有文件的路径建立哈希查找表。如果上述至少一个标志位的值均为0,意味着没有控制组文件被修改过,则没有必要备份容器的状态,因此也没有必要建立哈希查找表。
另外,在备份完成之后,可以删除上述容器以及与该容器相对应的控制组目录。
可选地,作为另一实施例,该方法还包括:在需要恢复该容器的状态时,获取备份的第一控制组文件的文件名和上述修改后的第一控制组文件的内容;根据待恢复的至少一个控制组文件的文件名与上述待恢复的至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名相对应的待恢复的第一控制组文件的存储位置;将备份的上述修改后的第一控制组文件的内容写入到上述待恢复的第一控制组文件的存储位置处存储的上述待恢复的第一控制组文件中。换句话说,可以在需要恢复该容器的状态时,读取上述容器状态文件以获取第一控制组文件的文件名和修改后的第一控制组文件的内容;存储至少一个新的控制组文件和新的标志文件,上述至少一组新的控制组文件用于对新的容器的一组进程的运行进行控制;根据第一控制组文件的文件名在上述至少一个新的控制组文件中查找新的第一控制组文件,并且将上述修改后的第一控制组文件的内容写入到上述新的第一控制组文件中。
例如,在需要恢复容器的状态的阶段,可以为新的容器建立新的控制组目录、新的控制组文件以及新的标志文件。然后,可以从容器状态文件中读取保存的控制组文件的文件名和修改后的内容,并且根据该控制组文件的文件名在新的控制组目录下查找新的控制组文件。根据本发明的实施例并不限制查找控制组文件的方法,例如,可以采用遍历法、二分法或哈希查找法等等。在查找到新的控制组文件后,可以打开新的控制组文件,并且将上述容器状态文件中保存的修改后的内容写入到新的控制组文件中,从而完成了容器状态的恢复过程。其中新的容器以及与该新的容器相对应的控制组目录可以在恢复容器的状态时创建。
还应理解,可以在需要时恢复容器的状态,本发明的实施例对恢复容器的状态的时机不作限制。
可选地,作为另一实施例,该方法还包括:为上述待恢复的至少一个控制组文件的文件路径建立第二哈希查找表,其中第二哈希查找表用于表示上述待恢复的至少一个控制组文件的文件名与上述待恢复的(或者新的)至少一个控制组文件的存储位置的对应关系,其中上述根据待恢复的至少一个控制组文件的文件名与上述待恢复的至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名相对应的上述待恢复的第一控制组文件的存储位置,包括:根据第一控制组文件的文件名在第二哈希查找表中查找与第一控制组文件的文件名对应的上述待恢复的第一控制组文件的存储位置。
换句话说,可以为上述至少一个控制组文件的文件路径建立第二哈希查找表,其中可以根据第一控制组文件的文件名通过第二哈希查找表在上述至少一个控制组文件中查找第一控制组文件。
例如,可以根据该控制组文件的文件名和第二哈希查找表所使用的哈希函数计算索引值,并且根据该索引值和第二哈希查找表确定该控制组文件的存储位置。由于根据本发明的实施例可以根据计算出的索引值直接找到该控制组文件的存储位置,因此,避免了在恢复容器的状态阶段遍历控制组目录下的全部控制组文件来查找该控制组文件。
可选地,作为另一实施例,图1的方法还包括:在恢复该容器的状态时,创建新的容器;生成与该新的容器相对应的控制组目录;在与该新的容器相对应的控制组目录下生成上述待恢复的至少一个控制组文件和待恢复的标志文件;建立上述待恢复的至少一个控制组文件的文件名与上述待恢复的标志文件中的至少一个标志位之间的一一对应关系。
例如,为了备份该容器的状态,需要创建新的容器,并且在该新的容器的控制组目录下生成相应的控制组文件和标志文件,新的控制组文件和标志文件可以包括初始值。另外,还可以在创建控制组目录时采用数组的方式建立新控制组文件与新标志位的一一对应关系。
可选地,作为另一实施例,图1的方法还包括:在修改至少一个控制组文件中的第一控制组文件的内容的情况下,修改该标志文件中与第一控制组文件相对应的第一标志位,并且可以在该标志文件的至少一个标志位被修改的情况下,确定需要备份该容器的状态,或者在接收到备份所述容器的状态的指令或预先设定的备份所述容器状态的周期期满时,检测所述标志文件的至少一个标志位是否被修改(如果标志位的初始值为0,即检测标志文件中的标志位是否全为0),并且在检测到所述标志文件的至少一个标志位被修改的情况下,确定需要备份所述容器的状态的操作。
例如,当某个控制组文件被修改时,与该控制组文件相对应的标志位也相应地被修改,并且触发备份容器的状态的操作。可选地,也可以在标志位被修改时暂时不备份容器的状态,而是在用户发出备份指令或者预先设定的周期期满时,才读取上述标志文件,然后确定该标志文件中是否有标志位被修改过,如果被修改过才触发执行备份容器状态的操作。如果上述标志文件的标志位全部未被修改过(说明控制组文件未做任何修改),则直接跳过容器状态的备份和恢复过程,这也降低了不必要的***开销。
根据本发明的实施例,在修改至少一个控制组文件中的第一控制组文件的内容时,可以在该容器启动时根据预先设置的配置文件修改上述至少一个控制组文件中的第一控制组文件的内容。
可选地,作为另一实施例,在修改至少一个控制组文件中的第一控制组文件的内容时,可以在该容器的运行过程中,根据用户的需要修改上述至少一个控制组文件中的第一控制组文件的内容。
根据本发明的实施例,上述至少一个控制组文件的内容为该容器中的一组进程在运行时所使用的资源的限定值。
上述至少一个控制组文件用来共同控制该组进程所使用的资源的限定值,例如,与CPU相关的控制组文件可以限定该组进程在运行时所使用的CPU时间或者CPU时间利用率,例如,当CPU时间为20%时,可以在该控制组文件中保存数值20%,以限定该组进程在运行时所使用的CPU时间总共为20%。再如,与内存相关的控制组文件可以限定该组进程在运行时所占用的内存的大小。
可选地,作为另一实施例,图1的方法还包括:在使用所述容器对所述一组进程的运行进行控制之前,创建上述容器;生成与该容器相对应的控制组目录;在与所述容器相对应的控制组目录下生成上述至少一个控制组文件和该标志文件;建立上述至少一个控制组文件的文件名与该标志文件中的上述至少一个标志位的一一对应关系。
例如,在创建上述容器时,可以在该容器的控制组目录下生成相应的控制组文件和标志文件,控制组文件和标志文件可以包括初始值。另外,可以在创建控制组目录时采用数组的方式建立控制组文件与标志位的一一对应关系。
可选地,作为另一实施例,图1的方法还包括:在创建该容器时,将该标志文件中的上述至少一个标志位设置为初始化值,其中,在修改该标志文件中与第一控制组文件相对应的第一标志位时,可以将与第一控制组文件相对应的第一标志位对初始化值进行置位。
如果在创建容器时将上述标志位初始化为零,则可以根据标志位的值是否为1来确定与该标志位相对应的控制组文件是否被修改过。
应理解,当容器的状态被恢复之后,下一次备份/恢复的过程与上述过程类似。
根据本发明的实施例可以通过建立用于指示容器状态是否被修改过的标志位的方式来表示控制组文件的修改情况,避免了不必要的控制组目录遍历。另外,可以为控制组文件路径建立哈希查找表,提高了文件的查找和访问效率,并且该效率不随控制组目录下文件数目的扩展而降低。与常规方案相比,本发明的实施例提高了容器状态的备份/恢复过程的效率,同时增加了备份/恢复方法的可扩展性。
图2是根据本发明的实施例的控制组文件***的截屏。
根据本发明的实施例的控制组文件***可以包含多个子***。例如,blkio子***用于限制设备(例如:磁盘,光盘以及usb等等)的输入输出控制,可以包括blkio.sectors、blkio.time、blkio.weight等控制组文件。cpu子***用于使用调度程序为控制组任务(task)提供对cpu的访问。cpuacct子***用于产生控制组任务的cpu资源报告,可以包括cpuacct.stat、cpuacct.usage和cpuacct.usage_percpu等文件。cpuset子***用于为控制组任务分配单独的cpu和内存,可以包括cpuset.cpus和cpuset.mems等文件。devices用于允许或拒绝控制组任务对设备的访问,可以包括devices.allow和devices.list等文件。freezer用于暂停和恢复控制组任务,可以包括freezer.state文件。memory用于设置每个控制组的内存限制以及产生内存资源报告,可以包括memory.failcnt和memory.force_empty等文件。cgroup子***可以包括event_control和cgroup.procs等文件。net_cls标记每个网络包以供控制组方便使用,可以包括net_cls.classid等文件。
根据本发明的实施例可以在创建控制组文件***时在上述控制组文件***中添加文件名为cont_flag的文件。该cont_flag文件可以包括与上述控制组文件相对应的标志位,例如,在该cont_flag文件中保存一个二进制序列,每个二进制位记录指示相应的控制组文件的内容是否被修改过,例如,某个二进制位为1表示修改过该控制组文件,该二进制位为0表示未修改过该控制组文件,或者相反。
图3是根据本发明的实施例的哈希查找表的示意图。图4是根据本发明的实施例的基于容器的处理过程的示意图。图4的方法是图1的方法的一个例子。
基于容器的处理过程可以经历容器的创建、容器的运行、容器状态的备份以及容器状态的恢复等阶段。本实施例假设在容器1(container_1)中创建应用程序,并且在创建容器时配置容器container_1绑定到编号为0的CPU(cpu0)上运行。根据本发明的实施例并不限于此,例如,也可以创建更多的容器,并且可以对进程使用的其它***资源进行限定。根据本发明的实施例可以修改控制组文件***的写函数,以在修改(或者写)控制组文件的同时将标志文件cont_flag中与该控制组文件相对应的标志位置位。该标志位用以表示相应的控制组文件的内容是否被修改过。
405,创建容器,并且生成与该容器相对应的控制组目录。
具体而言,在创建container_1时,在/cgroup目录下生成容器的控制组目录/cgroup/container_1,该container_1目录下也可以存储如图2所述的多个控制组文件,这些控制组文件包含默认值。在创建控制组目录/cgroup/container_1时,与常规方法不同的是,本发明的实施例可以在控制组目录/cgroup/container_1下存储标志文件cont_flag,用于存放cont_flag标志位,以表示container_1下的相应控制组文件的内容是否被修改过,例如,某个标志位为1,表明与该标志位相对应的控制组文件被修改过。
410,建立控制组文件与cont_flag标志位的对应关系。
例如,在创建容器过程中,可以同时创建标志文件cont_flag中的标志位与上述控制组文件的文件名的对应关系,例如,在创建控制组文件的过程中,采用数组的形式建立标志位与控制组文件的对应关系。
415,对cont_flag标志位进行初始化。
例如,可以对cont_flag标志文件中的cont_flag标志位进行初始化,使它们的值全部为0。cont_flag标志位为零表示与该标志位对应的控制组文件没有被修改。
420,读取配置文件,并且根据配置文件修改控制组文件的内容。
例如,可以在容器启动时,读取配置文件,该配置文件例如可以包含预先设置的***资源的限定值,例如,包含各个控制组文件的文件名以及相应的***资源的限定值,并且可以使用写函数将这些***资源的限定值写入到相应的控制组文件中。特别地,为了配置container_1绑定在cpu0上运行,可以将cpuset.cpus文件中的值限定为0时。例如,可以首先打开container_1目录下的cpuset.cpus文件,在该cpuset.cpus文件中写入数值0,最后保存并关闭cpuset.cpus文件。
425,在修改该控制组文件的内容的情况下,修改与该控制组文件相对应的cont_flag标志位。
当某个控制组文件被修改时,与该控制组文件相对应的标志位会被置位,并且保存在标志文件cont_flag中。例如,写函数可以在将数据0写入该cpuset.cpus文件之后,将cont_flag文件中与cpuset.cpus文件对应的cont_flag标志位自动置位,例如,在该标志位所在的位置写入数值1,表示该标志位对应的cpuset.cpus文件被修改过。
430,从控制组目录下的标志文件cont_flag中读取cont_flag标志位的值。
在容器状态的备份阶段,为了获知是否有控制组文件的内容被修改过或者哪些控制组文件的内容被修改过,可以首先打开控制组目录/cgroup/container_1下的标志文件cont_flag,并且从标志文件cont_flag中读取cont_flag标志位的值。
435,确定cont_flag标志位的值是否为0?如果标志位的值为0,说明控制组文件未被修改过,则跳过容器状态的备份阶段,否则执行步骤440。
例如,如果读取到的cont_flag标志位的值全部为0,则说明所有cont_flag标志位没有改变,这意味着所有控制组文件均未被修改过,因此,没有必要进行容器状态的备份。如果控制组文件没有任何修改,则可以将直接跳过控制组文件的备份过程,这也降低了不必要的***开销。
440,为控制组的文件路径建立哈希查找表。
如果cont_flag标志位并非全部为0,说明有控制组文件被修改,则为container_1下的所有控制组文件(如图3所示)的路径建立哈希查找表,以便快速查找某个控制组文件,例如,根据被修改为1的标志位可以确定被修改的文件的文件名为cpuset.cpus,然后再根据该文件名在上述控制组目录下查找与该标志位相对应的cpuset.cpus文件。
为了快速查找到修改过的控制组文件,根据本发明的实施例可以为全部控制组文件的路径建立哈希查找表,并且可以采用链地址法来避免相同关键字的值引起的冲突。
根据本发明的实施例假设控制组文件***中总共包含10个待索引的文件,例如,blkio.sectors、blkio.time、blkio.weight、cgroup.event_control、cgroup.procs、cpuacct.stat、cpuacct.usage、cpuacct.usage_percpu、cpuset.cpus、cpuset.mems。
在建立哈希查找表时,可以先确定这些文件名的关键字(key)。例如,通过哈希函数将控制组文件的文件名最后三个字母的ASCII码相加的值作为每个控制组文件的关键字,将这些关键字除以13取余数作为索引值(indexvalue),因此该哈希查找表的索引值为0到12,共13个值。与上述控制组文件相对应的索引值计算结果如下:
111+114+115=340%13=2
105+109+1=1=315%13=3
103+104+116=323%13=11
114+111+108=333%13=8
111+99+115=325%13=0
116+97+116=329%13=4
97+103+101=328%13=2
99+112+117=328%13=3
112+117+115=355%13=4
101+109+115=325%13=0
上述10个控制组文件在哈希查找表中的位置排列如图3所示。
445,通过哈希查找表查找被修改的控制组文件,并且保存被修改的控制组文件的内容。
例如,在查找某个控制组文件时,可以先根据上面的哈希函数计算出该控制组文件的索引值,然后根据该索引值找到图3的哈希查找表中对应的索引列,从而找到相应的存储地址。例如,控制组文件cpuset.cpus的索引值为4,位于索引=4的索引列。然后,将该控制组文件的文件名与该列的链表中每个节点的文件名进行比较。如果比较结果相同,则表明找到该文件。每个节点中除了控制组文件的文件名之外,还存储了与该控制组文件唯一对应的指针(file*),用于确定该控制组文件的实际存储位置。
例如,本实施例可以从哈希查找表中找到cpuset.cpus文件,并且将cpuset.cpus文件中的当前内容保存到上述容器状态文件中,例如,可以采用列表的形式,一个字段保存控制组文件的文件名,另一字段保存与该控制组文件的文件名相对应的内容。该容器状态文件可以存储到容器中运行的进程所在的文件目录下,根据本发明的实施例并不限于此,该容器状态文件也可以存储其它文件目录下。
另外,在备份容器的状态的阶段之后,可以删除容器以及与该容器相对应的控制组目录。
450,在容器状态的恢复阶段,可以建立与新的容器对应的新的控制组目录。
例如,为了恢复容器的状态,可以创建新的容器,并且在创建新的容器时,为新的容器建立新的控制组目录,该新的控制组目录下包含新的控制组文件(即待恢复的控制组文件)和新的标志文件(即待恢复的标志文件),例如,新的控制组目录下包含新的cpuset.cpus文件,该新的cpuset.cpus文件包含的内容为默认值。
可选地,可以根据是否有备份来确定是否需要进行恢复。
可选地,作为另一实施例,可以通过判断cont_flag标志位的值是否为0确定是否需要进行恢复。
应理解,新的容器的状态的备份/恢复过程与上述容器的备份/恢复过程相同,这里不再赘述。
460,从容器状态文件中读取修改过的控制组文件的文件名和内容。
例如,可以打开容器状态文件,并且读取保存的控制组文件的文件名和内容。例如,在容器状态文件中读取cpuset.cpus文件的文件名“cpuset.cpus文件”以及该cpuset.cpus文件中的值0。
465,为上述新的控制组文件的文件路径建立哈希查找表。
恢复容器状态阶段建立哈希查找表的过程与440中描述的备份容器状态阶段建立哈希查找表的过程类似,在此不再赘述。
470,根据哈希查找表恢复被修改的控制组文件的内容。
例如,在建立好哈希查找表后,可以根据cpuset.cpus文件的文件名cpuset.cpus通过哈希查找表在新的控制组目录下查找新的cpuset.cpus文件,打开新的cpuset.cpus文件,并且将读取到的cpuset.cpus的内容(即420的配置文件中的限定值0)写入到该新的cpuset.cpus文件中,从而将容器恢复到备份前的状态,即新的容器的状态与备份前的原有容器的状态相同。
另外,用户可以对上述标志位手动清零,或者由***在容器状态恢复完成后自动对上述标志位清零。
综上,一方面本发明的实施例优化了已有方案的遍历机制,通过建立标志位的方式标识控制组文件的修改情况,避免了不必要的控制组目录的遍历。
另外,在备份/恢复容器的状态阶段,为控制组文件路径建立哈希查找表索引,提高了文件的查找和访问效率,并且该效率不随控制组目录下文件数目的扩展而降低。
与已有方案相比,本发明提高了容器状态备份/恢复过程的效率,同时增加了备份/恢复方法的可扩展性。
图5是根据本发明的另一实施例的基于容器的处理过程的示意图。图5的方法是图1的方法的另一个例子。与图4不同的是,在容器创建过程中不对进程占用的***资源进行限制,而是由用户在容器的运行过程中对进程占用的***资源进行限制。图5的505至515、525至535、550至560与图4的405至415、425至435、450至460类似,在此不再赘述。
505,创建容器,并且生成与该容器相对应的控制组目录。
510,建立控制组文件与cont_flag标志位的对应关系。
515,对cont_flag标志位进行初始化。
520,根据用户的需要修改控制组文件的内容。
例如,在容器运行过程中,由用户手动修改控制组文件。当用户希望容器绑定到cpu0运行,用户可以手动向控制组目录下的cpuse.cpus文件中写入0值,从而将容器绑定在cpu0上运行。
525,在修改该控制组文件的内容的情况下,修改与该控制组文件相对应的cont_flag标志位。
530,从控制组目录下的标志文件cont_flag中读取cont_flag标志位的值。
535,确定cont_flag标志位的值是否为0?如果标志位的值为0,说明控制组文件未被修改过,则跳过容器状态的备份阶段,否则执行步骤440。
545,查找被修改的控制组文件,并且保存被修改的控制组文件的内容。
例如,如果cont_flag标志位并非全部为0,说明有控制组文件被修改,则可先采用常规查找方法(例如,遍历或二分法等等)查找控制组目录下的cpuse.cpus文件,并且将cpuset.cpus文件中的当前内容保存到容器状态文件中,该容器状态文件可以存储到容器中运行的进程所在的文件目录下。当然,本发明的实施例也可以采用图4中的哈希查找表的方法进行控制组文件的查找。
另外,在备份容器的状态之后,可以删除容器以及与该容器相对应的控制组目录。
550,在容器状态的恢复阶段,建立与新的容器对应的新的控制组目录。
560,从容器状态文件中读取修改的控制组文件的文件名和内容。
570,恢复被修改的控制组文件的内容。
例如,可先采用常规查找方法(例如,遍历或二分法等等)查找新的控制组目录下的新的cpuse.cpus文件,例如,可以根据cpuset.cpus文件的文件名cpuset.cpus在新的控制组目录下查找新的cpuset.cpus文件,打开新的cpuset.cpus文件,并且将读取到的cpuset.cpus文件的内容(即用户在520中写入的0值)写入到该新的cpuset.cpus文件中,从而将容器恢复到备份前的状态,即新的容器的状态与备份前的原有容器的状态相同。当然,本发明的实施例也可以采用图4中的哈希查找表的方法进行控制组文件的查找。
图6是根据本发明的实施例的基于容器的处理装置600的结构性示意图。图6的处理装置包括:确定模块610、获取模块620、查找模块630和备份模块640。
确定模块610用于在需要备份该容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与至少一个控制组文件相对应的至少一个标志位,至少一个标志位用于分别指示至少一个控制组文件的内容是否被修改。
获取模块620用于根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名。
查找模块630用于根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的第一控制组文件的内容。
备份模块640用于备份第一控制组文件的文件名和该修改后的第一控制组文件的内容。
可见,根据本发明的实施例的基于容器的处理装置可以通过标志文件中的标志位来确定哪些控制组文件的内容被修改,因此,无需遍历全部控制组文件就能够获知控制组及容器的状态,并且可以只根据标志位查找被修改控制组文件的存储位置并备份被修改的控制组文件的内容,从而减小了***开销。
图7是根据本发明的另一实施例的基于容器的处理***的结构性示意图。图7的处理装置包括:确定模块710、获取模块720、查找模块730和备份模块740。图7的确定模块710、获取模块720、查找模块730和备份模块740与图6的确定模块610、获取模块620、查找模块630和备份模块640类似,在此不再赘述。
可选地,作为另一实施例,处理装置700还包括:第一建立模块750。第一建立模块750用于为至少一个控制组文件的文件路径建立第一哈希查找表,其中第一哈希查找表用于表示至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系。
相应的,查找模块730具体用于根据第一控制组文件的文件名在第一哈希查找表中查找与第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的第一控制组文件中提取修改后的第一控制组文件的内容。
相应的,备份模块740具体用于将第一控制组文件的文件名和该修改后的第一控制组文件的内容备份在容器状态文件中。
可选地,作为另一实施例,获取模块720还用于在需要恢复该容器的状态时,获取备份的第一控制组文件的文件名和该修改后的第一控制组文件的内容;应当理解的是,在一种实现方式下,获取模块720从容器状态文件中获取备份的第一控制组文件的文件名和该修改后的第一控制组文件的内容。
相应的,查找模块730还用于根据待恢复的至少一个控制组文件的文件名与上述待恢复的至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名相对应的待恢复的第一控制组文件的存储位置。
相应的,处理装置700还包括:恢复模块760。恢复模块760用于将备份的上述修改后的第一控制组文件的内容写入到上述待恢复的第一控制组文件的存储位置处存储的上述待恢复的第一控制组文件中。
可选地,作为另一实施例,第二建立模块770,用于为上述待恢复的至少一个控制组文件的文件路径建立第二哈希查找表,其中第二哈希查找表用于表示上述待恢复的至少一个控制组文件的文件名与上述待恢复的至少一个控制组文件的存储位置的对应关系。
相应的,查找模块730具体用于根据第一控制组文件的文件名在第二哈希查找表中查找与第一控制组文件的文件名对应的上述待恢复的第一控制组文件的存储位置。
可选地,作为另一实施例,处理装置700还包括:第一创建模块780,用于在需要恢复该容器的状态时,创建新的容器,生成与该新的容器相对应的控制组目录,在与该新的容器相对应的控制组目录下生成上述待恢复的至少一个控制组文件和待恢复的标志文件,并且建立上述待恢复的至少一个控制组文件的文件名与上述待恢复的标志文件中的至少一个标志位之间的一一对应关系。
可选地,作为另一实施例,处理装置700还包括:修改模块790,用于在修改至少一个控制组文件中的第一控制组文件的内容的情况下,修改该标志文件中与第一控制组文件相对应的第一标志位。
相应的,确定模块710具体用于在该标志文件的至少一个标志位被修改的情况下,确定需要备份该容器的状态,或者在接收到备份该容器的状态的指令或预先设定的备份该容器状态的周期期满时,检测该标志文件的至少一个标志位是否被修改,并且在检测到该标志文件的至少一个标志位被修改的情况下,确定需要备份该容器的状态,并根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中上述至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与上述至少一个控制组文件相对应的至少一个标志位,上述至少一个标志位用于分别指示上述至少一个控制组文件的内容是否被修改。
根据本发明的实施例,修改模块790具体用于在该容器启动时,根据预先设置的配置文件修改至少一个控制组文件中的第一控制组文件的内容。
可选地,作为另一实施例,修改模块790具体用于在该容器的运行过程中,根据用户的需要修改至少一个控制组文件中的第一控制组文件的内容。
可选地,作为另一实施例,修改模块790还用于该容器被创建时,将该标志文件中的至少一个标志位设置为初始化值,其中修改模块790具体用于在修改上述至少一个控制组文件中的第一控制组文件的内容的情况下,将该标志文件中与第一控制组文件相对应的第一标志位对初始化值进行置位。
根据本发明的实施例,至少一个控制组文件的内容包括该容器中的一组进程在运行时所使用的资源的限定值。
可选地,作为另一实施例,处理装置700还包括:第二创建模块795。第二创建模块795用于在使用该容器对上述一组进程的运行进行控制之前,创建该容器,生成与该容器相对应的控制组目录,在与该容器相对应的控制组目录下生成至少一个控制组文件和该标志文件,并且建立至少一个控制组文件的文件名与该标志文件中的至少一个标志位之间的一一对应关系。
图8示出了根据本发明实施例的计算机***800的示意性框图。如图8所示,该计算机***包括:总线810;与该总线810相连的处理器820(处理器820可以是一个或多个,图8中以一个处理器示意),处理器820之上运行有一个或多个容器(例如,容器1、容器2、…、容器n);与该总线810相连的存储器830;其中,该处理器820通过该总线810,调用该存储器830中存储的代码,以用于:在需要备份上述一个或多个容器中的容器的状态时,根据标志文件中的第一标志位确定该容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中至少一组控制组文件用于对该容器中的一组进程的运行进行控制,该标志文件包括与至少一个控制组文件相对应的至少一个标志位,至少一个标志位用于分别指示至少一个控制组文件的内容是否被修改;根据至少一个标志位与至少一个控制组文件的文件名之间的对应关系获取与第一标志位相对应的第一控制组文件的文件名;根据至少一个控制组文件的文件名与至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名对应的第一控制组文件的存储位置,并且从第一控制组文件的存储位置处存储的第一控制组文件中提取修改后的第一控制组文件的内容;备份第一控制组文件的文件名和该修改后的第一控制组文件的内容。另外,该计算机***还可以包括:用户接口840,用于在该容器的运行过程中为用户提供修改上述至少一个控制组文件中的第一控制组文件的内容的接口,例如,输入/输出(Input/Output,I/O)接口。
根据本发明的实施例的计算机***可以通过标志文件中的标志位来确定哪些控制组文件的内容被修改,因此,无需遍历全部控制组文件就能够获知控制组及容器的状态,并且可以只根据标志位查找被修改控制组文件的存储位置并备份被修改的控制组文件的内容,从而减小了***开销。
可选地,作为另一实施例,处理器820还用于在需要恢复该容器的状态时,获取备份的第一控制组文件的文件名和该修改后的第一控制组文件的内容,处理器820具体用于根据待恢复的至少一个控制组文件的文件名与上述待恢复的至少一个控制组文件的存储位置的对应关系查找与第一控制组文件的文件名相对应的待恢复的第一控制组文件的存储位置,并且处理器820还用于将备份的上述修改后的第一控制组文件的内容写入到上述待恢复的第一控制组文件中。
可选地,作为另一实施例,处理器820还用于在修改至少一个控制组文件中的第一控制组文件的内容的情况下,修改该标志文件中与第一控制组文件相对应的第一标志位。
根据本发明的实施例可以通过建立容器状态的标志位的方式来表示控制组文件的修改情况,避免了不必要的控制组目录遍历。另外,可以为控制组文件路径建立哈希查找表,提高了文件的查找和访问效率,并且该效率不随控制组目录下文件数目的扩展而降低。同已有方案相比,本发明的实施例提高了容器状态的备份/恢复过程的效率,同时增加了备份/恢复方法的可扩展性。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (22)
1.一种基于容器的处理方法,其特征在于,包括:
在需要备份所述容器的状态时,根据标志文件中的第一标志位确定所述容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中所述至少一组控制组文件用于对所述容器中的一组进程的运行进行控制,所述标志文件包括与所述至少一个控制组文件相对应的至少一个标志位,所述至少一个标志位用于分别指示所述至少一个控制组文件的内容是否被修改;
根据所述至少一个标志位与所述至少一个控制组文件的文件名之间的对应关系获取与所述第一标志位相对应的所述第一控制组文件的文件名;
根据所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名对应的所述第一控制组文件的存储位置,并且从所述第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的所述第一控制组文件的内容;
备份所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容。
2.根据权利要求1所述的处理方法,其特征在于,还包括:
为所述至少一个控制组文件的文件路径建立第一哈希查找表,其中所述第一哈希查找表用于表示所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系,
其中所述根据所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系查找所述第一控制组文件的存储位置,包括:
根据所述第一控制组文件的文件名在所述第一哈希查找表中查找与所述第一控制组文件的文件名对应的所述第一控制组文件的存储位置。
3.根据权利要求1或2所述的处理方法,其特征在于,还包括:
在需要恢复所述容器的状态时,获取备份的所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容;
根据待恢复的至少一个控制组文件的文件名与所述待恢复的至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名相对应的待恢复的第一控制组文件的存储位置;
将备份的所述修改后的所述第一控制组文件的内容写入到所述待恢复的第一控制组文件的存储位置处存储的所述待恢复的第一控制组文件中。
4.根据权利要求3所述的处理方法,其特征在于,还包括:
为所述待恢复的至少一个控制组文件的文件路径建立第二哈希查找表,其中所述第二哈希查找表用于表示所述待恢复的至少一个控制组文件的文件名与所述待恢复的至少一个控制组文件的存储位置的对应关系,
其中所述根据待恢复的至少一个控制组文件的文件名与所述待恢复的至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名相对应的所述待恢复的第一控制组文件的存储位置,包括:
根据所述第一控制组文件的文件名在所述第二哈希查找表中查找与所述第一控制组文件的文件名对应的所述待恢复的第一控制组文件的存储位置。
5.根据权利要求3或4所述的处理方法,其特征在于,还包括:
在需要恢复所述容器的状态时,创建新的容器;
生成与所述新的容器相对应的控制组目录;
在与所述新的容器相对应的控制组目录下生成所述待恢复的至少一个控制组文件和待恢复的标志文件;
建立所述待恢复的至少一个控制组文件的文件名与所述待恢复的标志文件中的至少一个标志位之间的一一对应关系。
6.根据权利要求1至5中的任一项所述的处理方法,其特征在于,还包括:
在修改所述至少一个控制组文件中的第一控制组文件的内容的情况下,修改所述标志文件中与所述第一控制组文件相对应的所述第一标志位;
以及,在所述标志文件的至少一个标志位被修改的情况下,确定需要备份所述容器的状态,或者在接收到备份所述容器的状态的指令或预先设定的备份所述容器状态的周期期满时,检测所述标志文件的至少一个标志位是否被修改,并且在检测到所述标志文件的至少一个标志位被修改的情况下,确定需要备份所述容器的状态。
7.根据权利要求6所述的处理方法,其特征在于,所述修改所述至少一个控制组文件中的第一控制组文件的内容,包括:
在所述容器启动时,根据预先设置的配置文件修改所述至少一个控制组文件中的第一控制组文件的内容;或者
在所述容器的运行过程中,根据用户的需要修改所述至少一个控制组文件中的第一控制组文件的内容。
8.根据权利要求6或7所述的处理方法,其特征在于,还包括:
在创建所述容器时,将所述标志文件中的所述至少一个标志位设置为初始化值;
其中所述修改所述标志文件中与所述第一控制组文件相对应的所述第一标志位,包括:
将与所述第一控制组文件相对应的第一标志位对初始化值进行置位。
9.根据权利要求1至8中的任一项所述的处理方法,其特征在于,所述至少一个控制组文件的内容包括所述容器中的一组进程在运行时所使用的资源的限定值。
10.根据权利要求1至9中的任一项所述的处理方法,其特征在于,还包括:
在使用所述容器对所述一组进程的运行进行控制之前,创建所述容器;
生成与所述容器相对应的控制组目录;
在所述与所述容器相对应的控制组目录下生成所述至少一个控制组文件和所述标志文件;
建立所述至少一个控制组文件的文件名与所述标志文件中的所述至少一个标志位之间的一一对应关系。
11.一种基于容器的处理装置,其特征在于,包括:
确定模块,用于在需要备份所述容器的状态时,根据标志文件中的第一标志位确定所述容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中所述至少一组控制组文件用于对所述容器中的一组进程的运行进行控制,所述标志文件包括与所述至少一个控制组文件相对应的至少一个标志位,所述至少一个标志位用于分别指示所述至少一个控制组文件的内容是否被修改;
获取模块,用于根据所述至少一个标志位与所述至少一个控制组文件的文件名之间的对应关系获取与所述第一标志位相对应的所述第一控制组文件的文件名;
查找模块,用于根据所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名对应的所述第一控制组文件的存储位置,并且从所述第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的所述第一控制组文件的内容;
备份模块,用于备份所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容。
12.根据权利要求11所述的装置,其特征在于,还包括:
第一建立模块,用于为所述至少一个控制组文件的文件路径建立第一哈希查找表,其中所述第一哈希查找表用于表示所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系;
其中,所述查找模块具体用于根据所述第一控制组文件的文件名在所述第一哈希查找表中查找与所述第一控制组文件的文件名对应的所述第一控制组文件的存储位置,并且从所述第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的所述第一控制组文件的内容;
所述备份模块具体用于将所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容备份在容器状态文件中。
13.根据权利要求11或12所述的装置,其特征在于,所述获取模块还用于在需要恢复所述容器的状态时,获取备份的所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容;
所述查找模块还用于根据待恢复的至少一个控制组文件的文件名与所述待恢复的至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名相对应的待恢复的第一控制组文件的存储位置;
所述处理装置还包括:
恢复模块,用于将备份的所述修改后的所述第一控制组文件的内容写入到所述待恢复的第一控制组文件的存储位置处存储的所述待恢复的第一控制组文件中。
14.根据权利要求13所述的装置,其特征在于,还包括:
第二建立模块,用于为所述待恢复的至少一个控制组文件的文件路径建立第二哈希查找表,其中所述第二哈希查找表用于表示所述待恢复的至少一个控制组文件的文件名与所述待恢复的至少一个控制组文件的存储位置的对应关系;
其中,所述查找模块具体用于根据所述第一控制组文件的文件名在所述第二哈希查找表中查找与所述第一控制组文件的文件名对应的所述待恢复的第一控制组文件的存储位置。
15.根据权利要求13或14中所述的装置,其特征在于,还包括:
第一创建模块,用于在需要恢复所述容器的状态时,创建新的容器,生成与所述新的容器相对应的控制组目录,在与所述新的容器相对应的控制组目录下生成所述待恢复的至少一个控制组文件和待恢复的标志文件,并且建立所述待恢复的至少一个控制组文件的文件名与所述待恢复的标志文件中的至少一个标志位之间的一一对应关系。
16.根据权利要求11至15中的任一项所述的装置,其特征在于,还包括:
修改模块,用于在修改所述至少一个控制组文件中的第一控制组文件的内容的情况下,修改所述标志文件中与所述第一控制组文件相对应的所述第一标志位;
其中,所述确定模块具体用于在所述标志文件的至少一个标志位被修改的情况下,确定需要备份所述容器的状态,或者在接收到备份所述容器的状态的指令或预先设定的备份所述容器状态的周期期满时,检测所述标志文件的至少一个标志位是否被修改,如果检测到所述标志文件的至少一个标志位被修改,则确定需要备份所述容器的状态,并根据标志文件中的第一标志位确定所述容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中所述至少一组控制组文件用于对所述容器中的一组进程的运行进行控制,所述标志文件包括与所述至少一个控制组文件相对应的至少一个标志位,所述至少一个标志位用于分别指示所述至少一个控制组文件的内容是否被修改。
17.根据权利要求16所述的装置,其特征在于,所述修改模块具体用于在所述容器启动时,根据预先设置的配置文件修改所述至少一个控制组文件中的第一控制组文件的内容;或者所述修改模块具体用于在所述容器的运行过程中,根据用户的需要修改所述至少一个控制组文件中的第一控制组文件的内容。
18.根据权利要求16或17所述的装置,其特征在于,所述修改模块还用于所述容器被创建时,将所述标志文件中的所述至少一个标志位设置为初始化值,以及,具体用于在修改所述至少一个控制组文件中的第一控制组文件的内容的情况下,将所述标志文件中与所述第一控制组文件相对应的第一标志位对初始化值进行置位。
19.根据权利要求11至18中的任一项所述的装置,其特征在于,还包括:第二创建模块,用于在使用所述容器对所述一组进程的运行进行控制之前,创建所述容器,生成与所述容器相对应的控制组目录,在所述与所述容器相对应的控制组目录下生成所述至少一个控制组文件和所述标志文件,并且建立所述至少一个控制组文件的文件名与所述标志文件中的所述至少一个标志位之间的一一对应关系。
20.一种计算机***,其特征在于,包括:
总线;
与所述总线相连的处理器,所述处理器之上运行有一个或多个容器;
与所述总线相连的存储器;
其中,所述处理器通过所述总线,调用所述存储器中存储的代码,以用于:
在需要备份所述一个或多个容器中的容器的状态时,根据标志文件中的第一标志位确定所述容器的至少一个控制组文件中的第一控制组文件的内容被修改过,其中所述至少一组控制组文件用于对所述容器中的一组进程的运行进行控制,所述标志文件包括与所述至少一个控制组文件相对应的至少一个标志位,所述至少一个标志位用于分别指示所述至少一个控制组文件的内容是否被修改;
根据所述至少一个标志位与所述至少一个控制组文件的文件名之间的对应关系获取与所述第一标志位相对应的所述第一控制组文件的文件名;
根据所述至少一个控制组文件的文件名与所述至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名对应的所述第一控制组文件的存储位置,并且从所述第一控制组文件的存储位置处存储的所述第一控制组文件中提取修改后的所述第一控制组文件的内容;
备份所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容。
21.根据权利要求20所述的计算机***,其特征在于,所述处理器还用于在需要恢复所述容器的状态时,获取备份的所述第一控制组文件的文件名和所述修改后的所述第一控制组文件的内容,根据待恢复的至少一个控制组文件的文件名与所述待恢复的至少一个控制组文件的存储位置的对应关系查找与所述第一控制组文件的文件名相对应的待恢复的第一控制组文件的存储位置,并且将备份的所述修改后的所述第一控制组文件的内容写入到所述待恢复的第一控制组文件中。
22.根据权利要求20或21所述的计算机***,其特征在于,所述处理器还用于在修改所述至少一个控制组文件中的第一控制组文件的内容的情况下,修改所述标志文件中与所述第一控制组文件相对应的所述第一标志位。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210148519.5A CN102707990B (zh) | 2012-05-14 | 2012-05-14 | 基于容器的处理方法和装置 |
EP12876600.3A EP2840495B1 (en) | 2012-05-14 | 2012-09-19 | Container-based processing method and apparatus |
PCT/CN2012/081583 WO2013170561A1 (zh) | 2012-05-14 | 2012-09-19 | 基于容器的处理方法、装置和*** |
US14/542,009 US9870288B2 (en) | 2012-05-14 | 2014-11-14 | Container-based processing method, apparatus, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210148519.5A CN102707990B (zh) | 2012-05-14 | 2012-05-14 | 基于容器的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102707990A true CN102707990A (zh) | 2012-10-03 |
CN102707990B CN102707990B (zh) | 2015-04-08 |
Family
ID=46900807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210148519.5A Active CN102707990B (zh) | 2012-05-14 | 2012-05-14 | 基于容器的处理方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9870288B2 (zh) |
EP (1) | EP2840495B1 (zh) |
CN (1) | CN102707990B (zh) |
WO (1) | WO2013170561A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049546A (zh) * | 2012-12-27 | 2013-04-17 | 华为技术有限公司 | 一种管理、访问***日志的方法和装置 |
CN103491134A (zh) * | 2013-08-30 | 2014-01-01 | 华为技术有限公司 | 一种监控容器的方法、装置与代理服务*** |
CN103971064A (zh) * | 2014-05-14 | 2014-08-06 | 中标软件有限公司 | Linux ***的用户权限控制方法 |
CN106209741A (zh) * | 2015-05-06 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 一种虚拟主机及隔离方法、资源访问请求处理方法及装置 |
CN106407101A (zh) * | 2015-07-31 | 2017-02-15 | 三亚中兴软件有限责任公司 | 基于lxc的持续集成方法及装置 |
CN106941493A (zh) * | 2017-03-30 | 2017-07-11 | 北京奇艺世纪科技有限公司 | 一种网络安全态势感知结果输出方法及装置 |
CN107832455A (zh) * | 2017-11-24 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种存储对象的数据获取方法、***、设备及存储介质 |
CN118035042A (zh) * | 2024-04-03 | 2024-05-14 | 阿里云计算有限公司 | 应用程序性能分析方法、装置、电子设备及存储介质 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9785643B1 (en) * | 2013-09-06 | 2017-10-10 | Veritas Technologies Llc | Systems and methods for reclaiming storage space in deduplicating data systems |
US20160048580A1 (en) * | 2014-08-14 | 2016-02-18 | Verizon Patent And Licensing Inc. | Method and system for providing delegated classification and learning services |
US9772792B1 (en) | 2015-06-26 | 2017-09-26 | EMC IP Holding Company LLC | Coordinated resource allocation between container groups and storage groups |
US10372676B2 (en) * | 2015-07-30 | 2019-08-06 | Netapp Inc. | Stale data detection |
US9667725B1 (en) | 2015-08-06 | 2017-05-30 | EMC IP Holding Company LLC | Provisioning isolated storage resource portions for respective containers in multi-tenant environments |
US10146936B1 (en) | 2015-11-12 | 2018-12-04 | EMC IP Holding Company LLC | Intrusion detection for storage resources provisioned to containers in multi-tenant environments |
US9983909B1 (en) | 2016-03-15 | 2018-05-29 | EMC IP Holding Company LLC | Converged infrastructure platform comprising middleware preconfigured to support containerized workloads |
US10326744B1 (en) | 2016-03-21 | 2019-06-18 | EMC IP Holding Company LLC | Security layer for containers in multi-tenant environments |
US10013213B2 (en) | 2016-04-22 | 2018-07-03 | EMC IP Holding Company LLC | Container migration utilizing state storage of partitioned storage volume |
US10216587B2 (en) * | 2016-10-21 | 2019-02-26 | International Business Machines Corporation | Scalable fault tolerant support in a containerized environment |
US10284557B1 (en) | 2016-11-17 | 2019-05-07 | EMC IP Holding Company LLC | Secure data proxy for cloud computing environments |
US10884816B2 (en) * | 2017-03-28 | 2021-01-05 | International Business Machines Corporation | Managing system resources in containers and virtual machines in a coexisting environment |
US11128437B1 (en) | 2017-03-30 | 2021-09-21 | EMC IP Holding Company LLC | Distributed ledger for peer-to-peer cloud resource sharing |
US11063745B1 (en) | 2018-02-13 | 2021-07-13 | EMC IP Holding Company LLC | Distributed ledger for multi-cloud service automation |
US10705914B2 (en) * | 2018-05-29 | 2020-07-07 | EMC IP Holding Company LLC | Group-based container checkpoint generation |
US11200330B2 (en) | 2018-08-01 | 2021-12-14 | Red Hat, Inc. | Secure storage access through rate limitation |
US11223572B2 (en) * | 2019-11-22 | 2022-01-11 | Sap Se | Multi-tenant resource allocation using control groups in cloud-based computing environment |
CN111245826A (zh) * | 2020-01-09 | 2020-06-05 | 重庆邮电大学 | 一种5g信令分析方法及*** |
CN114710477B (zh) * | 2022-03-23 | 2024-04-30 | 中国工商银行股份有限公司 | 执行命令的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046803A (zh) * | 2006-03-28 | 2007-10-03 | 大唐移动通信设备有限公司 | 文件***的安全管理方法及装置 |
CN101251814A (zh) * | 2008-02-04 | 2008-08-27 | 浙江大学 | 一种在操作***中实现可信恢复***的方法 |
WO2011042306A1 (en) * | 2009-10-07 | 2011-04-14 | F-Secure Corporation | Computer security methods and apparatuses |
CN102439564A (zh) * | 2011-10-24 | 2012-05-02 | 华为技术有限公司 | 在Linux容器中启动应用程序的方法和*** |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440739A (en) * | 1992-06-11 | 1995-08-08 | Beck Systems, Inc. | Method of maintaining updated set-up configurations in workgroups on a network |
US5586322A (en) * | 1992-06-11 | 1996-12-17 | Beck; Robert E. | Workgroup organized network manager with workstation comparison system |
JP2781345B2 (ja) * | 1993-09-20 | 1998-07-30 | 松下電器産業株式会社 | 情報再生装置 |
US5831617A (en) * | 1995-11-27 | 1998-11-03 | Bhukhanwala; Saumil A. | Browsing and manipulating objects using movie like icons |
US6205543B1 (en) * | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
US6460054B1 (en) * | 1999-12-16 | 2002-10-01 | Adaptec, Inc. | System and method for data storage archive bit update after snapshot backup |
EP1178407A3 (en) * | 2000-06-02 | 2007-12-12 | Compaq Computer Corporation | Architecture for parallel distributed table driven I/O mapping |
US20030220929A1 (en) * | 2002-01-22 | 2003-11-27 | Columbia Data Products, Inc. | Managing finite data storage utilizing preservation weights |
US20030217077A1 (en) * | 2002-05-16 | 2003-11-20 | Schwartz Jeffrey D. | Methods and apparatus for storing updatable user data using a cluster of application servers |
US8949395B2 (en) * | 2004-06-01 | 2015-02-03 | Inmage Systems, Inc. | Systems and methods of event driven recovery management |
US7975102B1 (en) * | 2007-08-06 | 2011-07-05 | Netapp, Inc. | Technique to avoid cascaded hot spotting |
US8321867B1 (en) * | 2008-01-24 | 2012-11-27 | Network Appliance, Inc. | Request processing for stateless conformance engine |
US8131765B2 (en) * | 2008-10-14 | 2012-03-06 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system and method for caching writes by multiple clients to a virtualized common disk image |
US8706836B2 (en) * | 2008-12-15 | 2014-04-22 | Shara Susznnah Vincent | Live streaming media and data communication hub |
EP2478456A2 (en) * | 2009-09-14 | 2012-07-25 | II4SM - International Institute For The Safety Of Medicines Ltd. | Semantic interoperability system for medicinal information |
US8495317B2 (en) * | 2010-02-22 | 2013-07-23 | Ca, Inc. | System and method for improving performance of data container backups |
US8266109B1 (en) * | 2010-03-09 | 2012-09-11 | Symantec Corporation | Performance of scanning containers for archiving |
US8504870B2 (en) * | 2010-09-30 | 2013-08-06 | Emc Corporation | Optimized recovery |
US8954690B2 (en) * | 2011-02-12 | 2015-02-10 | Andy Vincent Lawrence | Systems and methods for managing unstructured data |
US9891939B2 (en) * | 2011-03-03 | 2018-02-13 | Microsoft Technology Licensing, Llc | Application compatibility with library operating systems |
EP2816467B1 (en) * | 2012-03-15 | 2016-05-11 | Huawei Technologies Co., Ltd. | Method and device for checkpoint and restart of container state |
-
2012
- 2012-05-14 CN CN201210148519.5A patent/CN102707990B/zh active Active
- 2012-09-19 EP EP12876600.3A patent/EP2840495B1/en active Active
- 2012-09-19 WO PCT/CN2012/081583 patent/WO2013170561A1/zh active Application Filing
-
2014
- 2014-11-14 US US14/542,009 patent/US9870288B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046803A (zh) * | 2006-03-28 | 2007-10-03 | 大唐移动通信设备有限公司 | 文件***的安全管理方法及装置 |
CN101251814A (zh) * | 2008-02-04 | 2008-08-27 | 浙江大学 | 一种在操作***中实现可信恢复***的方法 |
WO2011042306A1 (en) * | 2009-10-07 | 2011-04-14 | F-Secure Corporation | Computer security methods and apparatuses |
CN102439564A (zh) * | 2011-10-24 | 2012-05-02 | 华为技术有限公司 | 在Linux容器中启动应用程序的方法和*** |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049546B (zh) * | 2012-12-27 | 2016-01-13 | 华为技术有限公司 | 一种管理、访问***日志的方法和装置 |
CN103049546A (zh) * | 2012-12-27 | 2013-04-17 | 华为技术有限公司 | 一种管理、访问***日志的方法和装置 |
CN103491134B (zh) * | 2013-08-30 | 2016-12-28 | 华为技术有限公司 | 一种监控容器的方法、装置与代理服务*** |
CN103491134A (zh) * | 2013-08-30 | 2014-01-01 | 华为技术有限公司 | 一种监控容器的方法、装置与代理服务*** |
CN103971064A (zh) * | 2014-05-14 | 2014-08-06 | 中标软件有限公司 | Linux ***的用户权限控制方法 |
CN103971064B (zh) * | 2014-05-14 | 2016-09-21 | 中标软件有限公司 | Linux ***的用户权限控制方法 |
CN106209741A (zh) * | 2015-05-06 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 一种虚拟主机及隔离方法、资源访问请求处理方法及装置 |
CN106209741B (zh) * | 2015-05-06 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 一种虚拟主机及隔离方法、资源访问请求处理方法及装置 |
CN106407101A (zh) * | 2015-07-31 | 2017-02-15 | 三亚中兴软件有限责任公司 | 基于lxc的持续集成方法及装置 |
CN106941493A (zh) * | 2017-03-30 | 2017-07-11 | 北京奇艺世纪科技有限公司 | 一种网络安全态势感知结果输出方法及装置 |
CN107832455A (zh) * | 2017-11-24 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种存储对象的数据获取方法、***、设备及存储介质 |
CN107832455B (zh) * | 2017-11-24 | 2021-09-17 | 郑州云海信息技术有限公司 | 一种存储对象的数据获取方法、***、设备及存储介质 |
CN118035042A (zh) * | 2024-04-03 | 2024-05-14 | 阿里云计算有限公司 | 应用程序性能分析方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9870288B2 (en) | 2018-01-16 |
US20150074058A1 (en) | 2015-03-12 |
WO2013170561A1 (zh) | 2013-11-21 |
EP2840495B1 (en) | 2016-04-13 |
EP2840495A1 (en) | 2015-02-25 |
CN102707990B (zh) | 2015-04-08 |
EP2840495A4 (en) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102707990A (zh) | 基于容器的处理方法、装置和*** | |
US10175894B1 (en) | Method for populating a cache index on a deduplicated storage system | |
US9372854B2 (en) | Load balancing backup jobs in a virtualized storage system having a plurality of physical nodes | |
CN103970585B (zh) | 创建虚拟机的方法及装置 | |
EP2521966B1 (en) | Systems and methods for removing unreferenced data segments from deduplicated data systems | |
EP2318927B1 (en) | Systems and methods for tracking changes to a volume | |
US8984027B1 (en) | Systems and methods for migrating files to tiered storage systems | |
US10802923B2 (en) | Method and apparatus for incremental backup based on file paths and a prefix tree | |
CN103902623A (zh) | 用于在存储***上存取文件的方法和*** | |
CN103473277A (zh) | 文件***的快照方法和装置 | |
CN105260270A (zh) | 一种Flash存储空间的动态恢复方法及装置 | |
US8549243B2 (en) | Regeneration of deleted data | |
CN103577336A (zh) | 一种存储数据处理方法及装置 | |
CN105359108A (zh) | 带有自适应纠删码生成的存储*** | |
CN113918385B (zh) | 虚拟机在线增量备份恢复的方法、装置、电子设备及介质 | |
CN102750317A (zh) | 数据持久化处理方法、装置及数据库*** | |
CN104461685A (zh) | 虚拟机处理方法和虚拟计算机*** | |
CN105045850A (zh) | 云存储日志文件***中垃圾数据回收方法 | |
US20180373456A1 (en) | Metadata Load Distribution Management | |
KR20110136639A (ko) | 스냅샷 이미지의 동기화 장치 및 방법 | |
CN103559139A (zh) | 一种数据存储方法及装置 | |
CN103389942A (zh) | 控制装置、存储装置及存储控制方法 | |
CN104750432A (zh) | 一种数据存储方法及装置 | |
US10503717B1 (en) | Method for locating data on a deduplicated storage system using a SSD cache index | |
CN103559224A (zh) | 一种对元数据对象进行散列的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |