镜像文件的导入方法及装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术领域,特别涉及一种镜像文件的导入方法及装置。
【背景技术】
[0002] 在计算机领域,为了便于用户下载和使用,可通过镜像文件制作工具将一系列特 定的文件按照预设格式制作成一个镜像文件。通常一个镜像文件由多个数据文件构成,每 个数据文件中存储着镜像文件的不同数据。
[0003] 为了节省存储空间,在Docker场景下,通常会将节点上的多个镜像文件保存成一 个压缩包,该压缩包中的多个镜像文件可能共享着同一数据文件。当需要将节点上的部分 镜像文件导入到另一节点上,可通过加载操作将包含所有镜像文件的压缩包导入到另一节 点。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005] 即便仅需要节点上的部分镜像文件,由于已经将所有镜像文件保存为一个压缩 包,则需要对该压缩包整体进行导入,该过程不仅耗时较长,而且增加了另一节点的存储成 本。
【发明内容】
[0006] 为了解决相关技术的问题,本发明实施例提供了一种镜像文件的导入方法及装 置。所述技术方案如下:
[0007] 第一方面,提供了一种镜像文件的导入方法,所述方法包括:
[0008] 对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件, 所述第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个 镜像文件的文件数据存储于至少一个数据文件中;
[0009] 根据所述第一描述文件和所述多个数据文件,获取目标数据文件,所述目标数据 文件中存储了待导入的目标镜像文件的文件数据;
[0010] 根据所述目标数据文件,生成所述目标镜像文件的压缩包;
[0011] 将所述目标镜像文件的压缩包导入到目标节点。
[0012] 结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述第一描述 文件和所述多个数据文件,获取目标数据文件,包括:
[0013] 从多个数据文件中读取每个数据文件的文件ID及父ID ;
[0014] 从所述第一描述文件中获取所述目标镜像文件的叶子节点ID ;
[0015] 根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件。
[0016] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式 中,所述每个数据文件中至少包括第二描述文件,所述第二描述文件用于按照预设存储格 式存储数据文件的文件ID及父ID ;
[0017] 所述从所述多个数据文件中读取每个数据文件的文件ID及父ID,包括:
[0018] 从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
[0019] 结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式 中,所述从所述第一描述文件中获取所述目标镜像文件的叶子节点ID,包括:
[0020] 根据目标镜像文件的镜像文件名称,从所述第一描述文件存储的镜像文件名称与 叶子节点ID之间的对应关系中,获取所述目标镜像文件的镜像文件名称对应的叶子节点 ID。
[0021] 结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式 中,所述根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件, 包括:
[0022] 以所述叶子节点ID为起始文件ID,从所述多个数据文件的文件ID及父ID中,获 取所述叶子节点ID的父ID ;
[0023] 以所述叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID, 直至获取到所述目标镜像文件的根节点ID ;
[0024] 将所述叶子节点ID所在的数据文件与所述根节点ID所在的数据文件之间的全部 数据文件作为目标数据文件。
[0025] 结合第一方面,在第一方面的第五种可能的实现方式中,所述根据所述目标数据 文件,生成所述目标镜像文件的压缩包,包括:
[0026] 根据所述第一描述文件中存储的所述目标镜像文件的镜像文件名称与叶子节点 ID之间的对应关系,生成目标描述文件;
[0027] 按照特定格式对所述目标数据文件以及所述目标描述文件进行压缩,得到所述目 标镜像文件的压缩包。
[0028] 第二方面,提供了一种镜像文件的导入装置,所述装置包括:
[0029] 解压缩模块,用于对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件 和多个数据文件,所述第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间 的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
[0030] 获取模块,用于根据所述第一描述文件和所述多个数据文件,获取目标数据文件, 所述目标数据文件中存储了待导入的目标镜像文件的文件数据;
[0031 ] 生成模块,用于根据所述目标数据文件,生成所述目标镜像文件的压缩包;
[0032] 导入模块,用于将所述目标镜像文件的压缩包导入到目标节点。
[0033] 结合第二方面,在第二方面的第一种可能的实现方式中,所述获取模块,用于从多 个数据文件中读取每个数据文件的文件ID及父ID ;从所述第一描述文件中获取所述目标 镜像文件的叶子节点ID ;根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获 取目标数据文件。
[0034] 结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式 中,所述每个数据文件中至少包括第二描述文件,所述第二描述文件用于按照预设存储格 式存储数据文件的文件ID及父ID ;
[0035] 所述获取模块,具体用于从每个数据文件对应的第二描述文件中读取每个数据文 件的文件ID及父ID。
[0036] 结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式 中,所述获取模块,具体用于根据目标镜像文件的镜像文件名称,从所述第一描述文件存储 的镜像文件名称与叶子节点ID之间的对应关系中,获取所述目标镜像文件的镜像文件名 称对应的叶子节点ID。
[0037] 结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式 中,具体用于以所述叶子节点ID为起始文件ID,从所述多个数据文件的文件ID及父ID中, 获取所述叶子节点ID的父ID ;以所述叶子节点ID的父ID为文件ID,循环遍历所有数据文 件的文件ID及父ID,直至获取到所述目标镜像文件的根节点ID ;将所述叶子节点ID所在 的数据文件与所述根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
[0038] 结合第二方面,在第二方面的第五种可能的实现方式中,所述生成模块,具体用于 根据所述第一描述文件中存储的所述目标镜像文件的镜像文件名称与叶子节点ID之间的 对应关系,生成目标描述文件;按照特定格式对所述目标数据文件以及所述目标描述文件 进行压缩,得到所述目标镜像文件的压缩包。
[0039] 本发明实施例提供的技术方案带来的有益效果是:
[0040] 根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文 件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包 进行整体导入,不仅节省了导入时间,而且节约了存储成本。
【附图说明】
[0041] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0042] 图I (A)是本发明一个实施例提供的一种镜像文件的结构图;
[0043] 图I (B)是本发明一个实施例提供的一种镜像文件的导入方法的逻辑架构图;
[0044] 图2是本发明另一个实施例所使用的计算机体系结构图;
[0045] 图3是本发明另一个实施例提供的一种镜像文件的导入方法流程图;
[0046] 图4是本发明另一个实施例提供的一种镜像文件的导入方法流程图;
[0047] 图5是本发明另一个实施例提供的镜像文件导入过程的示意图;
[0048] 图6是本发明另一个实施例提供的镜像文件的结构示意图;
[0049] 图7是本发明另一个实施例提供的一种镜像文件的导入