镜像仓库垃圾清理方法和装置与流程

文档序号:25295411发布日期:2021-06-04 10:42阅读:109来源:国知局
镜像仓库垃圾清理方法和装置与流程

1.本发明涉及计算机技术领域,尤其涉及一种镜像仓库垃圾清理方法和装置。


背景技术:

2.在镜像仓库运行一段时间或者镜像仓库存储资源紧张时,需要对镜像仓库进行垃圾清理,即删除位于镜像仓库内的镜像层文件,以释放存储空间,缓解镜像仓库服务器压力。
3.因为对镜像仓库的写操作如新增镜像,可能会使待删除镜像层文件变为不可删除的镜像层文件,所以目前对镜像仓库进行垃圾清理时,通过配置镜像仓库为只读模式或者直接停止镜像仓库服务,防止待删除镜像层文件变为不可删除的镜像层文件。
4.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
5.一般依赖镜像仓库的业务每秒都可能有写操作,而目前镜像仓库垃圾清理的方式,会导致与镜像仓库相关的业务中断。


技术实现要素:

6.有鉴于此,本发明实施例提供一种镜像仓库垃圾清理方法和装置,能够在镜像仓库业务不中断的情况下进行镜像仓库垃圾清理。
7.为实现上述目的,根据本发明实施例的一个方面,提供了一种镜像仓库垃圾清理方法,包括:
8.在接收到镜像垃圾清理指令后,对所述镜像仓库执行至少两次遍历操作;
9.确定每一次所述遍历操作对应的待删除镜像层文件集合;
10.根据每一次所述遍历操作对应的所述待删除镜像层文件集合,计算集合交集;
11.根据所述集合交集,对所述镜像仓库进行垃圾清理。
12.优选地,所述遍历操作,包括:遍历所述镜像仓库中的所有镜像的元数据,为所述所有镜像标记依赖文件集合。
13.优选地,所述确定每一次所述遍历操作对应的待删除镜像层文件集合,包括:
14.针对每一个所述遍历操作,执行:
15.确定所述遍历操作所遍历的所述镜像仓库当前存储的所有镜像层文件;
16.根据所述当前存储的所有镜像层文件和所述依赖文件集合,确定所述遍历操作对应的待删除镜像层文件集合。
17.优选地,镜像仓库垃圾清理方法,进一步包括:
18.为所述遍历操作设置遍历参数,使所述遍历操作的次数等于所述遍历参数。
19.优选地,所述计算集合交集,包括:
20.循环执行下述步骤,直至所述遍历参数变为零;
21.计算当前遍历操作对应的待删除镜像层文件集合与所述当前遍历操作对应的上一次遍历操作所对应的目标待删除镜像层文件集合之间的交集;
22.将当前遍历参数减1;
23.判断所述当前遍历参数是否为零,
24.如果否,则将所述交集作为所述当前遍历操作对应的目标待删除镜像层文件集合;将所述当前遍历操作为上一次遍历操作,并将下一次遍历操作作为当前遍历操作。
25.优选地,相邻两次遍历操作的时间间隔不小于12h。
26.优选地,所述遍历参数不小于3。
27.优选地,所述对所述镜像仓库进行垃圾清理,包括:
28.针对所述镜像仓库中的每一个存储层,执行:
29.删除所述存储层中与所述集合交集相关的待删除镜像层文件,以使所述集合交集为空集。
30.根据本发明实施例的第二方面,提供了一种镜像仓库垃圾清理装置,包括:遍历单元、差量计算单元以及清理单元,其中,
31.所述遍历单元,用于在接收到镜像垃圾清理指令后,对所述镜像仓库执行至少两次遍历操作;
32.所述差量计算单元,用于确定每一次所述遍历单元执行的所述遍历操作对应的待删除镜像层文件集合,根据每一次所述遍历操作对应的所述待删除镜像层文件集合,计算集合交集;
33.所述清理单元,用于根据所述差量计算单元计算出的所述集合交集,对所述镜像仓库进行垃圾清理。
34.上述发明中的一个实施例具有如下优点或有益效果:通过对所述镜像仓库执行至少两次遍历操作,在业务不中断过程中,一旦业务运行,与业务相关的层文件就不在待删除镜像层文件集合内,因此,至少两次遍历操作得到的待删除镜像层文件集合可能存在差异,通过计算集合交集,可尽可能的从待删除镜像层文件集合中去掉不可被删除层文件,因此,根据集合交集,对镜像仓库进行垃圾清理,可避免清理掉运行业务所需的层文件,因此,能够在业务不中断的情况下进行镜像仓库垃圾清理。
35.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
36.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
37.图1是根据本发明实施例的镜像仓库垃圾清理方法的主要流程的示意图;
38.图2是根据本发明实施例的镜像仓库垃圾清理方法的部分流程的示意图;
39.图3是根据本发明实施例的镜像仓库垃圾清理方法的部分流程的示意图;
40.图4是根据本发明实施例的镜像仓库的结构示意图;
41.图5是根据本发明实施例的镜像仓库垃圾清理装置的主要单元的示意图;
42.图6是本发明实施例可以应用于其中的示例性系统架构图;
43.图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
44.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
45.需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。
46.镜像是应用的打包,其需要部署到容器引擎上面使用,则下述使用镜像可以为从镜像仓库下载镜像、上传镜像到镜像仓库等。一般来说,私有镜像仓库是服务于公司或企业内部使用的镜像仓库。镜像仓库可会提供一个删除/上传镜像的页面或者api,供使用者对镜像仓库里面的镜像对应操作。该镜像仓库可以由管理服务器和多个存储服务器组成。该管理服务器用来管理多个存储服务器,多个存储服务器用来分布式存储镜像元数据和镜像层文件。
47.比如,用户制作一个名称为jdk的镜像,然后,要把这个jdk镜像上传到镜像仓库,此时进行的是上传操作。可通过命令“docker push<镜像仓库名>”来操作。在敲打了这个命令以后,本地docker将镜像上传到远端的镜像仓库上的步骤可包括:将jdk镜像依赖的层文件上传到镜像仓库,将jdk镜像的元数据上传到镜像仓库,元数据记录了jdk镜像的依赖层文件和配置信息如依赖层文件的存储位置等。
48.又比如,当需要在本地终端或者应用服务器上运行该jdk的应用,则从镜像仓库把这个jdk镜像下载下来,然后使用本地终端或者应用服务器上的容器引擎来启动这个jdk镜像。其中从镜像仓库下载jdk镜像文件这个操作可使用命令“docker pull<镜像仓库名>/jdk”来实现的。在执行这个docker pull命令后,下载镜像可包括步骤:将jdk镜像的元数据下载到本地,由元数据来获取此镜像的依赖层信息;根据得到的依赖层信息,将jdk镜像的依赖层文件下载到本地。在下载完成后,本地就已经有一个jdk镜像了,然后使用容器引擎启动这个jdk镜像,就会有对应的jdk镜像运行实例,也就是容器运行,称为jdk容器。这个运行的jdk容器,就是通过jdk镜像部署的最终状态。
49.因此,镜像仓库一般是存储镜像元数据和镜像的实际文件(即镜像层文件)的存储器。在镜像仓库中,该镜像元数据和镜像层文件一般是分开存储的。其中,镜像层文件是分层存储的。一个镜像的元数据记录了该镜像所依赖的镜像层文件信息。不同镜像可能存在相同的镜像层文件。
50.针对由管理服务器和多个存储服务器组成的镜像仓库来说,管理服务器总体管理这些存储服务器。该管理服务器和多个镜像仓库存储服务器可为实体服务器,也可为云服务器等虚拟服务器。
51.镜像的元数据与镜像层文件之间的关系:镜像的元数据记录了镜像层文件的信息,比如:针对镜像imagea和imageb,其中,镜像imagea的元数据可为:imagea:{a,b,c}(即镜像imagea对应的层文件信息)以及a,b,c的存储位置等;镜像imageb的元数据可为:imageb:{a,b,d}(即镜像imageb对应的层文件信息)以及a,b,d的存储位置等。
52.删除一个镜像一般是对镜像的元数据做删除,而对镜像的镜像层文件数据不做删除。因为如果删除镜像层文件数据,可能导致有共同依赖该镜像层文件的其它镜像不可用。
而随着镜像层文件的增多,可能存在大量的不会再被使用的已经停服的镜像的镜像层文件占据镜像仓库,造成镜像仓库存储空间的浪费,所以,对镜像层文件的删除依赖镜像仓库垃圾清理(garbage collection,gc)。
53.针对现有的镜像仓库垃圾清理的方式来说,在进行镜像仓库垃圾清理过程中,如果允许用户操作镜像比如上传文件到镜像仓库,而与用户操作镜像相关的层文件可能并没有被标记,所以,gc会把这个镜像的层文件删除,导致这个镜像的元数据存在,但是实际镜像层文件丢了。对外表现为,可以查到这个镜像,但是,无法下载该镜像到本地终端/应用服务器。另外,镜像仓库的镜像存储量可达十万级别,镜像文件存储量可达百tb级别,业务每秒都可能有镜像下载/上传操作。停服或者将镜像仓库设置为只读模式,将严重影响业务。因此,在镜像仓库不停服时,实现镜像仓库垃圾清理方法则显得尤为重要。
54.如图1所示,本发明实施例提供一种镜像仓库垃圾清理方法,该镜像仓库垃圾清理方法可包括如下步骤:
55.s101:在接收到镜像垃圾清理指令后,对所述镜像仓库执行至少两次遍历操作;
56.s102:确定每一次所述遍历操作对应的待删除镜像层文件集合;
57.s103:根据每一次所述遍历操作对应的所述待删除镜像层文件集合,计算集合交集;
58.s104:根据所述集合交集,对所述镜像仓库进行垃圾清理。
59.由于至少两次遍历操作中每一次遍历操作的时间不同,那么,处于使用状态的镜像也会存在差异。经过该至少两次遍历操作后,能够将镜像仓库中所有可能被使用的镜像对应的镜像层文件标记出来。那么,基于至少两次遍历操作,计算出的集合交集确定出的未被使用过的镜像层文件被认定为属于镜像仓库垃圾清理需要清除的镜像层文件,即大概率属于不会被调用的镜像层文件。
60.上述计算集合交集的具体实施方式可为:计算至少两次所述遍历操作对应的所述待删除镜像层文件集合之间的交集。
61.即:
62.k=α1∩α2∩

∩α
n
63.其中,k表征集合交集/至少两次遍历操作对应的所述待删除镜像层文件集合之间的交集;α1表征第1次遍历操作对应的待删除镜像层文件集合;α2表征第2次遍历操作对应的待删除镜像层文件集合;α
n
表征第n次遍历操作对应的待删除镜像层文件集合;其中,n为不小于2的正整数。比如:镜像仓库中存储有imagea、imageb、imagec、imaged、imagee等,其中,imagea的层文件集合{a,b,c},imageb的层文件集合{b,c,d},imagec的层文件集合{a,b,e,f},imaged的层文件集合{b,e,f,g},imagee的层文件集合{b,e,f,g,h},在第一次遍历操作时,只有imagea和imageb处于使用状态,则α1={e,f,g,h};在第二次遍历操作时,只有imagea和imagec处于使用状态,则α2={d,g,h};在第三次遍历操作时,只有imagea和imaged处于使用状态,则α3={d,h};则经过这三次遍历操作后,k={h}。又比如,第一次遍历操作得到的待删除镜像层文件集合为{d,e,f},第二次遍历操作得到的待删除镜像层文件集合为{e,f},第三次遍历操作得到的待删除镜像层文件集合为{e,f},则三次交集为{e,f},在每相邻两次遍历操作间隔时间足够长,而且循环参数比较大,交集得到的为这一段时间冷门不用的层文件,可以直接删除。
64.因此,在图1示出的实施例所提供的技术方案中,通过对所述镜像仓库执行至少两次遍历操作,在镜像仓库的业务不中断过程中,一旦镜像被使用(镜像被下载或者被上传),与业务相关的镜像层文件就不再属于待删除镜像层文件集合内,因此,至少两次遍历操作得到的待删除镜像层文件集合可能存在差异,通过计算集合交集,可尽可能的从待删除镜像层文件集合中去掉不可被删除层文件。根据集合交集,对镜像仓库进行垃圾清理,可避免清理掉所需的镜像层文件,因此,能够在镜像仓库的业务不中断的情况下进行镜像仓库垃圾清理。
65.上述镜像仓库的业务不中断是指镜像仓库的各个镜像可随时的被下载、删除、还可随时的向镜像仓库上传镜像等。
66.在本发明一个实施例中,遍历操作,包括:遍历所述镜像仓库中的所有镜像的元数据,为所述所有镜像标记依赖文件集合。一般来说,镜像的元数据记录有镜像层文件的信息,比如,针对两个镜像imagea和imageb来说,其中:imagea的元数据为:{a,b,c},即记录imagea的层文件信息为:imagea的层文件包括有目录tmp/下的层文件a、目录tmp/下的层文件b、目录tmp/下的层文件c;imageb的元数据为:{a,b,d},即记录imageb的层文件信息为:imageb的层文件包括有目录tmp/下的层文件a、目录tmp/下的层文件b、目录tmp/下的层文件d。则在本实施例中,若针对imageb的层文件进行垃圾清理,可为imagea标记依赖文件集合为{a,b,c}。则该次遍历操作对应的待删除镜像层文件集合{d},以保证imagea能够正常使用。
67.在本发明一个实施例中,如图2所示,上述确定每一次遍历操作对应的待删除镜像层文件集合可具体包括如下步骤:
68.针对每一次遍历操作,执行:
69.s201:确定所述遍历操作所遍历的所述镜像仓库当前存储的所有镜像层文件;
70.s202:根据所述当前存储的所有镜像层文件和所述依赖文件集合,确定所述遍历操作对应的待删除镜像层文件集合。
71.该当前存储的所有镜像层文件可通过遍历镜像仓库的目录获得。
72.依赖文件集合是指正常运行的镜像所依赖的镜像层文件的集合。该镜像所依赖的镜像层文件的集合通过遍历所有镜像元数据获得。由于镜像元数据可记载有镜像的使用状态,处于使用状态的镜像所对应的层文件即构成了依赖文件集合。
73.s202的具体实现方式可为,从所有镜像层文件中去除依赖文件集合中包含的镜像层文件,即得到待删除镜像层文件集合。比如,所有层文件包括目录tmp/下的镜像层文件a、b、c、d、e、f以及g,经过第一次遍历操作,得到依赖文件集合包括:imagea的{a,b,c}、imagec的{a,b,e,f},则该第一次遍历操作得到待删除镜像层文件集合即为{d,g};经过第二次遍历操作,得到依赖文件集合包括:imagec的{a,b,e,f}和imaged的{a,b,f,g},则该第二次遍历操作得到待删除镜像层文件集合即为{c,d}。
74.在本发明一个实施例中,为所述遍历操作设置遍历参数,使所述遍历操作的次数等于所述遍历参数。一方面能够使遍历操作能够自动停止,另一方面通过设置遍历参数可以尽可能的减少误删层文件的可能性。通过测试发现,该遍历参数不小于3时,实现了反复确认层文件是否不会被再使用。可避免误删层文件,保证清理的完整性和合理性的同时,能够比较快速的完成镜像仓库垃圾清理。
75.在本发明一个实施例中,如图3所示,计算至少两次所述遍历操作对应的所述待删除镜像层文件集合之间的交集的步骤可具体包括:
76.s301:预先设置遍历参数;
77.比如:在该步骤中设置的遍历参数为3。
78.s302:确定当前遍历操作对应的待删除镜像层文件集合;
79.s303:计算当前遍历操作对应的待删除镜像层文件集合与所述当前遍历操作对应的上一次遍历操作所对应的目标待删除镜像层文件集合之间的交集;
80.值得说明的是,当当前遍历操作为第一次遍历操作时,该第一次遍历操作对应的上一次遍历操作所对应的目标待删除镜像层文件集合为空集。
81.s304:将当前遍历参数减1;
82.s305:判断所述当前遍历参数是否为零,如果是,则执行s306;否则,执行s307;
83.s306:结束当前流程;
84.s307:将所述交集作为所述当前遍历操作对应的目标待删除镜像层文件集合;将所述当前遍历操作为上一次遍历操作,并将下一次遍历操作作为当前遍历操作,并执行s303。
85.即通过循环执行上述步骤s303至s307,直至所述遍历参数变为零,以计算至少两次所述遍历操作对应的所述待删除镜像层文件集合之间的交集。通过上述过程,在每一次循环中仅针对两个集合计算交集,可节省资源消耗。
86.在本发明一个实施例中,执行相邻两次所述遍历操作的时间间隔不小于12h。优选地,执行相邻两次所述遍历操作的时间间隔不小于7天。该间隔时间内几乎在使用的镜像都可至少被使用一次,使两次遍历操作的差异比较明显。而在遍历操作中即可获知,而间隔时间过短,可能有的镜像因为在这个间隔时间内未被使用过而被误删。通过测试发现,本发明实施例提供的时间间隔可大大降低层文件误删的可能性,同时能够保证已经完全停服的镜像对应的层文件被清理干净,而不影响其他为停服的镜像的正常使用。
87.在本发明一个实施例中,对所述镜像仓库进行垃圾清理的具体实施方式可包括:针对所述镜像仓库中的每一个存储层,执行:删除所述存储层中与所述交集相关的待删除镜像层文件,以使所述交集为空集。即按照存储层,分层删除待删除镜像层文件,比如:如图4所示,该镜像仓库400包括有存储层1、2、3、4、5、

,其中,存储层1存储有层文件a、b、c、d、

,存储层2存储有层文件e、f、g、h、

,存储层3存储有层文件i、j、k、l、m、

,存储层4存储有层文件n、p、z、u、

,存储层5存储有层文件s、y、q、r、

,而不同存储层存储的层文件完全不相同。则在通过上述各个步骤得到的集合交集/至少两次所述遍历操作对应的所述待删除镜像层文件集合之间的交集为{h,j,m,n,z,y}后,可先从存储层1开始,存储层1并不包含与交集相关的待删除镜像层文件,则跳到存储层2,删除存储层2存储的层文件h,继续跳到存储层3,删除存储层3存储的层文件j、m,跳到存储层4,删除存储层4存储的层文件n、z,跳到存储层5,删除存储层5存储的层文件y,以避免待删除镜像层文件被漏删。上述这些存储层可分布在镜像仓库的不同的存储服务器上,而镜像仓库的一个存储服务器可包含有多个存储层。
88.如图5所示,本发明实施例提供一种镜像仓库垃圾清理装置500,该镜像仓库垃圾清理装置500包括:遍历单元501、差量计算单元502以及清理单元503,其中,
89.所述遍历单元501,用于在接收到镜像垃圾清理指令后,对所述镜像仓库执行至少两次遍历操作;
90.所述差量计算单元502,用于确定每一次所述遍历单元501执行的所述遍历操作对应的待删除镜像层文件集合,根据每一次所述遍历操作对应的所述待删除镜像层文件集合,计算集合交集;
91.所述清理单元503,用于根据所述差量计算单元502计算出的所述集合交集,对所述镜像仓库进行垃圾清理。
92.在本发明一个实施例中,所述遍历单元501执行的遍历操作,包括:遍历所述镜像仓库中的所有镜像的元数据,为所述所有镜像标记依赖文件集合。
93.在本发明一个实施例中,所述差量计算单元502,用于针对每一个所述遍历操作,执行:确定所述遍历操作所遍历的所述镜像仓库当前存储的所有镜像层文件;根据所述当前存储的所有镜像层文件和所述依赖文件集合,确定所述遍历操作对应的待删除镜像层文件集合。
94.在本发明一个实施例中,所述遍历单元501,进一步用于为所述遍历操作设置遍历参数,使所述遍历操作的次数等于所述遍历参数。
95.在本发明一个实施例中,所述差量计算单元502,用于循环执行下述步骤,直至所述遍历参数变为零;
96.计算当前遍历操作对应的待删除镜像层文件集合与所述当前遍历操作对应的上一次遍历操作所对应的目标待删除镜像层文件集合之间的交集;
97.将当前遍历参数减1;
98.判断所述当前遍历参数是否为零,
99.如果否,则将所述交集作为所述当前遍历操作对应的目标待删除镜像层文件集合;将所述当前遍历操作为上一次遍历操作,并将下一次遍历操作作为当前遍历操作。
100.在本发明一个实施例中,所述遍历单元501执行相邻两次所述遍历操作的时间间隔不小于12h。
101.在本发明一个实施例中,遍历参数不小于3。
102.在本发明一个实施例中,所述清理单元503,用于针对所述镜像仓库中的每一个存储层,执行:删除所述存储层中与所述集合交集相关的待删除镜像层文件,以使所述集合交集为空集。
103.上述镜像仓库垃圾清理方法或镜像仓库垃圾清理装置可依托镜像仓库中的管理服务器完成。
104.图6示出了可以应用本发明实施例的镜像仓库垃圾清理方法或镜像仓库垃圾清理装置的示例性系统架构600。
105.如图6所示,系统架构600可以包括终端设备601、602、603,网络604和镜像仓库的管理服务器605。网络604用以在终端设备601、602、603和镜像仓库的管理服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
106.用户可以使用终端设备601、602、603通过网络604与镜像仓库的服务器605交互,以下载镜像或者上传镜像等。终端设备601、602、603上可以安装有各种通讯客户端应用,例
如网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
107.终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
108.镜像仓库的管理服务器605可以为终端设备601、602、603提供用户需要的镜像,镜像仓库的管理服务器605还可以确定每一次遍历操作对应的待删除镜像层文件集合;根据每一次遍历操作对应的待删除镜像层文件集合,计算集合交集,并将计算出的集合交集反馈给镜像仓库/镜像服务器。
109.需要说明的是,本发明实施例所提供的镜像仓库垃圾清理方法一般由镜像仓库的管理服务器605执行,相应地,镜像仓库垃圾清理装置一般设置于镜像仓库的管理服务器605中。
110.应该理解,图6中的终端设备、网络和镜像仓库的管理服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和镜像仓库的管理服务器。
111.下面参考图7,其示出了适于用来实现本发明实施例的管理服务器的计算机系统700的结构示意图。图7示出的管理服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
112.如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram 703中,还存储有系统700操作所需的各种程序和数据。cpu 701、rom 702以及ram 70https://www.baidu.com/s?wd=服务器&tn=39042058_41_oem_dg3通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
113.以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
114.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本发明的系统中限定的上述功能。
115.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程
序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
116.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
117.描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括遍历单元、差量计算单元以及清理单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,清理单元还可以被描述为“向所连接的镜像仓库/镜像服务器发送清除指令的单元”。
118.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:在接收到镜像垃圾清理指令后,对所述镜像仓库执行至少两次遍历操作;确定每一次所述遍历操作对应的待删除镜像层文件集合;根据每一次所述遍历操作对应的所述待删除镜像层文件集合,计算集合交集;根据所述集合交集,对所述镜像仓库进行垃圾清理。
119.根据本发明实施例的技术方案,通过对所述镜像仓库执行至少两次遍历操作,在业务不中断过程中,一旦业务运行,与业务相关的层文件就不在待删除镜像层文件集合内,因此,至少两次遍历操作得到的待删除镜像层文件集合可能存在差异,通过计算集合交集,可尽可能的从待删除镜像层文件集合中去掉不可被删除镜像层文件,因此,根据集合交集,对镜像仓库进行垃圾清理,可避免清理掉运行业务所需的层文件,因此,能够在业务不中断的情况下进行镜像仓库垃圾清理。
120.另外,根据本发明实施例的技术方案,遍历操作,包括:遍历镜像仓库中的所有镜像的元数据,为所有镜像标记依赖文件集合,镜像的元数据记录有镜像层文件的信息,则通过元数据可以很容易的为在运行业务所对应的镜像确定出依赖文件集合,则通过依赖文件集合,可以更容易及准确的得到待删除镜像层文件集合。
121.根据本发明实施例的技术方案,为所述遍历操作设置遍历参数,使所述遍历操作的次数等于所述遍历参数。一方面能够使遍历操作能够自动停止,另一方面通过设置遍历参数可以尽可能的减少误删层文件的可能性。通过测试发现,该遍历参数不小于3时,可避免误删层文件,保证清理的完整性和合理性的同时,能够比较快速的完成镜像仓库垃圾清理。
122.根据本发明实施例的技术方案,执行相邻两次所述遍历操作的时间间隔不小于12h。优选地,执行相邻两次所述遍历操作的时间间隔不小于7天。该间隔时间内几乎在使用的镜像都可至少被使用一次,而在遍历操作中即可获知,而间隔时间过短,可能有的镜像因为在这个间隔时间内未被使用过而被误删。通过测试发现,本发明实施例提供的时间间隔可大大降低层文件误删的可能性,同时能够保证已经完全停服的镜像对应的层文件被清理干净,而不影响其他为停服的镜像的正常使用。
123.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1