CN105094924B - 镜像文件的导入方法及装置 - Google Patents
镜像文件的导入方法及装置 Download PDFInfo
- Publication number
- CN105094924B CN105094924B CN201510519278.4A CN201510519278A CN105094924B CN 105094924 B CN105094924 B CN 105094924B CN 201510519278 A CN201510519278 A CN 201510519278A CN 105094924 B CN105094924 B CN 105094924B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- image
- target
- father
- 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
Classifications
-
- 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/445—Program loading or initiating
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)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种镜像文件的导入方法及装置,属于计算机技术领域。所述方法包括:对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;根据第一描述文件和多个数据文件,获取目标数据文件;根据目标数据文件,生成目标镜像文件的压缩包;将目标镜像文件的压缩包导入到目标节点。本发明根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包进行整体导入,不仅节省了导入时间,而且节约了存储成本。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种镜像文件的导入方法及装置。
背景技术
在计算机领域,为了便于用户下载和使用,可通过镜像文件制作工具将一系列特定的文件按照预设格式制作成一个镜像文件。通常一个镜像文件由多个数据文件构成,每个数据文件中存储着镜像文件的不同数据。
为了节省存储空间,在Docker场景下,通常会将节点上的多个镜像文件保存成一个压缩包,该压缩包中的多个镜像文件可能共享着同一数据文件。当需要将节点上的部分镜像文件导入到另一节点上,可通过加载操作将包含所有镜像文件的压缩包导入到另一节点。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
即便仅需要节点上的部分镜像文件,由于已经将所有镜像文件保存为一个压缩包,则需要对该压缩包整体进行导入,该过程不仅耗时较长,而且增加了另一节点的存储成本。
发明内容
为了解决相关技术的问题,本发明实施例提供了一种镜像文件的导入方法及装置。所述技术方案如下:
第一方面,提供了一种镜像文件的导入方法,所述方法包括:
对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,所述第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
根据所述第一描述文件和所述多个数据文件,获取目标数据文件,所述目标数据文件中存储了待导入的目标镜像文件的文件数据;
根据所述目标数据文件,生成所述目标镜像文件的压缩包;
将所述目标镜像文件的压缩包导入到目标节点。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述第一描述文件和所述多个数据文件,获取目标数据文件,包括:
从多个数据文件中读取每个数据文件的文件ID及父ID;
从所述第一描述文件中获取所述目标镜像文件的叶子节点ID;
根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述每个数据文件中至少包括第二描述文件,所述第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
所述从所述多个数据文件中读取每个数据文件的文件ID及父ID,包括:
从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述从所述第一描述文件中获取所述目标镜像文件的叶子节点ID,包括:
根据目标镜像文件的镜像文件名称,从所述第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取所述目标镜像文件的镜像文件名称对应的叶子节点ID。
结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件,包括:
以所述叶子节点ID为起始文件ID,从所述多个数据文件的文件ID及父ID中,获取所述叶子节点ID的父ID;
以所述叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到所述目标镜像文件的根节点ID;
将所述叶子节点ID所在的数据文件与所述根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
结合第一方面,在第一方面的第五种可能的实现方式中,所述根据所述目标数据文件,生成所述目标镜像文件的压缩包,包括:
根据所述第一描述文件中存储的所述目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;
按照特定格式对所述目标数据文件以及所述目标描述文件进行压缩,得到所述目标镜像文件的压缩包。
第二方面,提供了一种镜像文件的导入装置,所述装置包括:
解压缩模块,用于对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,所述第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
获取模块,用于根据所述第一描述文件和所述多个数据文件,获取目标数据文件,所述目标数据文件中存储了待导入的目标镜像文件的文件数据;
生成模块,用于根据所述目标数据文件,生成所述目标镜像文件的压缩包;
导入模块,用于将所述目标镜像文件的压缩包导入到目标节点。
结合第二方面,在第二方面的第一种可能的实现方式中,所述获取模块,用于从多个数据文件中读取每个数据文件的文件ID及父ID;从所述第一描述文件中获取所述目标镜像文件的叶子节点ID;根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述每个数据文件中至少包括第二描述文件,所述第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
所述获取模块,具体用于从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述获取模块,具体用于根据目标镜像文件的镜像文件名称,从所述第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取所述目标镜像文件的镜像文件名称对应的叶子节点ID。
结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,具体用于以所述叶子节点ID为起始文件ID,从所述多个数据文件的文件ID及父ID中,获取所述叶子节点ID的父ID;以所述叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到所述目标镜像文件的根节点ID;将所述叶子节点ID所在的数据文件与所述根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
结合第二方面,在第二方面的第五种可能的实现方式中,所述生成模块,具体用于根据所述第一描述文件中存储的所述目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;按照特定格式对所述目标数据文件以及所述目标描述文件进行压缩,得到所述目标镜像文件的压缩包。
本发明实施例提供的技术方案带来的有益效果是:
根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包进行整体导入,不仅节省了导入时间,而且节约了存储成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1(A)是本发明一个实施例提供的一种镜像文件的结构图;
图1(B)是本发明一个实施例提供的一种镜像文件的导入方法的逻辑架构图;
图2是本发明另一个实施例所使用的计算机体系结构图;
图3是本发明另一个实施例提供的一种镜像文件的导入方法流程图;
图4是本发明另一个实施例提供的一种镜像文件的导入方法流程图;
图5是本发明另一个实施例提供的镜像文件导入过程的示意图;
图6是本发明另一个实施例提供的镜像文件的结构示意图;
图7是本发明另一个实施例提供的一种镜像文件的导入装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在计算机领域,镜像是冗余的一种类型,实质上是一个磁盘上的数据在另一个磁盘上的副本。为了节省文件在磁盘上所占用的存储空间,常采用UltraISO、winISO等镜像文件制作工具,将磁盘上的一系列文件制作成一个镜像文件。镜像文件常见的格式有BIN(Binary,二进制)、DAO(Data Access Object,数据库访问对象)等。当用户需要将磁盘上的多个文件拷贝到另一磁盘上时,用户可直接拷贝多个文件的镜像文件,以节省拷贝、迁移、导入过程的时间。
通常镜像文件中的数据存储于多个数据文件中,每个数据文件具有确定的文件ID(Identity,身份标识)和父ID。镜像文件中的多个数据文件呈树形结构,上层数据文件的文件ID为下层数据文件的父ID。在镜像文件的树形结构中,一般将底层数据文件的文件ID称为镜像文件的叶子节点ID,将顶层数据文件的父ID称为镜像文件的根节点ID。如图1(A)所示,节点1上有8个镜像层,构成3个镜像文件,分别为镜像文件A、镜像文件B及镜像文件C。具体地,镜像文件A由镜像层6对应的数据文件、镜像层3对应的数据文件、镜像层2对应的数据文件、镜像层1对应的数据文件构成,镜像文件B由镜像层7对应发的数据文件、镜像层4对应的数据文件、镜像层2对应的数据文件、镜像层1对应的数据文件构成,镜像文件C由镜像层8对应的数据文件、镜像层5对应的数据文件、镜像层2对应的数据文件、镜像层1对应的数据文件构成。在上述图1(A)中,镜像层6对应的数据文件为镜像文件A的镜像叶子,镜像层7对应的数据文件为镜像文件B的镜像叶子,镜像层8对应的数据文件为镜像文件C的镜像叶子;镜像层1对应的数据文件和镜像层2对应的数据文件为镜像文件A、镜像文件B及镜像文件C的公用数据文件。当需要将镜像文件A导入到节点2时,现有技术一般将镜像文件A、镜像文件B及镜像文件C保存成一个压缩包,并将该压缩包导入到节点C。由于采用该种方式在导入镜像文件时,需要对该压缩包整体进行导入,该过程不仅耗时较长,而且增加了节点2的存储成本。
为了解决上述问题,本发明实施例提供了一种镜像文件的导入方法。图1(B)示出了本实施例提供的镜像文件的导入方法的逻辑架构图。由图1(B)可知,本实施例通过采用树形化处理模块对包含多个镜像文件的压缩包进行处理,可得到包含所需镜像文件的压缩包。
请参考图2,其示出了本发明的一个实施例中使用的计算机100的说明性计算机体系结构。所述计算机100为常规的台式计算机或者膝上型笔记本,所述计算机100包括中央处理单元(CPU)101、包括随机存取存储器(RAM)102和只读存储器(ROM)103的系统存储器104,以及连接系统存储器104和中央处理单元101的系统总线105。所述计算机100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)106,和用于存储操作系统、应用程序和其他程序模块的大容量存储设备107。
在本实施例中,中央处理单元101用于执行以下指令:
对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,该第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
根据第一描述文件和多个数据文件,获取目标数据文件,目标数据文件中存储了待导入的目标镜像文件的文件数据;
根据目标数据文件,生成目标镜像文件的压缩包;
将目标镜像文件的压缩包导入到目标节点。
在本发明的另一个实施例中,中央处理单元101在根据第一描述文件和多个数据文件,获取目标数据文件时,具体包括:
从多个数据文件中读取每个数据文件的文件ID及父ID;
从第一描述文件中获取目标镜像文件的叶子节点ID;
根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件。
在本发明的另一个实施例中,每个数据文件中至少包括第二描述文件,第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
中央处理单元101在从多个数据文件中读取每个数据文件的文件ID及父ID时,具体包括:
从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
在本发明的另一个实施例中,中央处理单元101在从第一描述文件中获取目标镜像文件的叶子节点ID时,具体包括:
根据目标镜像文件的镜像文件名称,从第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取目标镜像文件的镜像文件名称对应的叶子节点ID。
在本发明的另一个实施例中,中央处理单元101在根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件时,具体包括:
以叶子节点ID为起始文件ID,从多个数据文件的文件ID及父ID中,获取叶子节点ID的父ID;
以叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到目标镜像文件的根节点ID;
将叶子节点ID所在的数据文件与根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
在本发明的另一个实施例中,中央处理单元101在根据目标数据文件,生成目标镜像文件的压缩包时,具体包括:
根据第一描述文件中存储的目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;
按照特定格式对目标数据文件以及目标描述文件进行压缩,得到目标镜像文件的压缩包。
所述基本输入/输出系统106包括有用于显示信息的显示器108和用于用户输入信息的诸如鼠标、键盘之类的输入设备109。其中所述显示器108和输入设备109都通过连接到系统总线105的输入输出控制器110连接到中央处理单101。所述基本输入/输出系统106还可以包括输入输出控制器110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器110还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备107通过连接到系统总线105的大容量存储控制器(未示出)连接到中央处理单元101。所述大容量存储设备107及其相关联的计算机可读介质为计算机100提供非易失性存储。也就是说,所述大容量存储设备107可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。
根据本发明的各种实施例,所述计算机100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机100可以通过连接在所述系统总线105上的网络接口单元111连接到网络112,或者说,也可以使用网络接口单元111来连接到其他类型的网络或远程计算机系统(未示出)。
本发明实施例提供的计算机,根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包进行整体导入,不仅节省了导入时间,而且节约了存储成本。
本发明实施例提供了一种镜像文件的导入方法,参见图3,本实施例提供的方法流程包括:
301、对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,该第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中。
302、根据第一描述文件和多个数据文件,获取目标数据文件,目标数据文件中存储了待导入的目标镜像文件的文件数据。
303、根据目标数据文件,生成目标镜像文件的压缩包。
304、将目标镜像文件的压缩包导入到目标节点。
本发明实施例提供的方法,根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包进行整体导入,不仅节省了导入时间,而且节约了存储成本。
在本发明的另一个实施例中,根据第一描述文件和多个数据文件,获取目标数据文件,包括:
从多个数据文件中读取每个数据文件的文件ID及父ID;
从第一描述文件中获取目标镜像文件的叶子节点ID;
根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件。
在本发明的另一个实施例中,每个数据文件中至少包括第二描述文件,第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
从多个数据文件中读取每个数据文件的文件ID及父ID,包括:
从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
在本发明的另一个实施例中,从第一描述文件中获取目标镜像文件的叶子节点ID,包括:
根据目标镜像文件的镜像文件名称,从第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取目标镜像文件的镜像文件名称对应的叶子节点ID。
在本发明的另一个实施例中,根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件,包括:
以叶子节点ID为起始文件ID,从多个数据文件的文件ID及父ID中,获取叶子节点ID的父ID;
以叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到目标镜像文件的根节点ID;
将叶子节点ID所在的数据文件与根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
在本发明的另一个实施例中,根据目标数据文件,生成目标镜像文件的压缩包,包括:
根据第一描述文件中存储的目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;
按照特定格式对目标数据文件以及目标描述文件进行压缩,得到目标镜像文件的压缩包。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
本发明实施例提供了一种镜像文件的导入方法,该方法以Docker环境下计算机中的任一节点或计算机系统中的任一计算机执行本发明为例,参见图4,本实施例提供的方法流程包括:
401、对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件。
在计算机领域,为了节省存储空间,通常会将节点上的多个镜像文件保存成一个指定压缩包。在将节点上的任一镜像文件导入到另一节点上时,可采用解压缩软件对该压缩包进行解压缩,该过程可得到第一描述文件和多个数据文件。
其中,第一描述文件一般为Json文件,可用于存储压缩包中所包含的多个镜像文件的镜像文件名称与叶子节点之间的对应关系、以及每个镜像文件的创建时间等其他信息。Json文件的格式一般为:“镜像文件”:{“tag”:“叶子节点ID”}。其中,tag表征镜像文件的创建时间等其他信息。
例1,如果指定压缩包中包含两个镜像文件,且这两个镜像文件的镜像名称分别为nginx和busybox,则第一描述文件格式如下:
{
“nginx”:{“latest”:“a785ba7493fd9009be710230457f334486b11a45f7e830652d39665a451”}
“busybox”:{“latest”:“b785ba7493fd9009be7102790697f334486b17e830652d39665a4522”}
}
由上述例1可知,镜像名称nginx对应的镜像文件的创建时间为“latest”,该镜像文件对应的叶子节点ID为:
“a785ba7493fd9009be710230457f334486b11a45f7e830652d39665a451”;
镜像名称busybox对应的镜像文件的创建时间为“latest”,该镜像文件对应的叶子节点ID为:
“b785ba7493fd9009be7102790697f334486b17e830652d39665a4522”。
其中,对压缩包进行解压缩得到的数据文件的个数与镜像层的个数相同,如果压缩包包括6个镜像层,则解压缩后得到的数据文件为6个,每个数据文件对应树形存储结构一个镜像层,可用于存储镜像文件的部分或全部文件数据,也即是每个镜像文件的文件数据存储于至少一个数据文件中。通常数据文件中包括两个文件,一个文件为第二描述文件,另一个文件为Layer.tar文件。其中,Layer.tar文件用于存储了数据文件的操作数据。第二描述文件为一个Json文件,用于按照预设存储格式存储数据文件的文件ID及父ID、创建时间等信息。在计算机领域,通常将第二描述文件中所存储的数据称为元数据,将Layer.tar文件中所存储的数据称为层数据,也即是,每个数据文件由元数据及层数据构成。具体地,数据文件的数据结构如下述表1所示。
表1
为了更全面地描述数据文件,数据文件中还包括一个VERSION文件,该VERSION文件可用于描述Layer.tar文件中操作数据的版本号。
另外,由于压缩包所包含的镜像文件中的文件数据通常采用树形结构分层存储在不同的数据文件中,因而为了便于后续获取到待导入的目标镜像文件的数据文件,本实施例在解析压缩包的过程中,可采用表格等形式保存所有数据文件的文件ID与父ID之间的对应关系。具体存储时,可将解析后的数据文件的文件ID与父ID采用如下表2的方式进行存储。
表2
文件ID | 父ID |
1001 | NULL |
1002 | 1001 |
1003 | 1002 |
1004 | 1002 |
402、从多个数据文件中读取每个数据文件的文件ID及父ID。
由于解压缩得到的每个数据文件中均包含一个第二描述文件,该第二描述文件中按照预设存储格式存储了数据文件的文件ID及父ID,因此,根据预设存储格式,从第二描述文件中读取每个数据文件的文件ID及父ID。
例2,第二描述文件的格式如下:
{“ID”:“1f1cfc8b4072488196bdf2c7638a50940849cca3d36fle35141e82edb0a41789”,
“patent ID”:“3ec5f57e729cb2f888889bfe90498a49370cf68461ea6913f0cda191f629d738”,
“created”:“2015-05-27T 16:59:52.607276406Z”,
“container_config”:{},
“architecture”:“amd64”,
“os”:“linux”,
“size”:7654020}
}
则根据该第二描述文件的存储格式,可从第二描述文件中获取该数据文件的文件ID为:
“1f1cfc8b4072488196bdf2c7638a50940849cca3d36fle35141e82edb0a41789”,
父ID为:
“3ec5f57e729cb2f888889bfe90498a49370cf68461ea6913f0cda191f629d738”。
403、从第一描述文件中获取目标镜像文件的叶子节点ID。
基于第一描述文件中所存储的镜像文件名称与叶子节点ID之间的对应关系,当获取到待导入的目标镜像文件的镜像文件名称后,可根据该目标镜像文件的镜像文件名称,从第一描述文件所存储的镜像文件名称与叶子节点ID之间的对应关系中,获取该目标镜像文件的镜像名称对应的叶子节点。
仍以上述例1为例,如果待导入的目标镜像文件的镜像文件名称为busybox,则可获取到镜像文件名称busybox对应的叶子节点ID为:
“b785ba7493fd9009be7102790697f334486b17e830652d39665a4522”。
404、根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件。
通常镜像文件由叶子节点ID所在的数据文件与根节点ID所在的数据文件之间多个数据文件构成,这些数据文件呈树形结构,叶子节点ID所在的数据文件构成了镜像文件的底层数据文件,根节点ID所在的数据文件构成了镜像文件的顶层数据文件,基于多个数据文件的文件ID及父ID,可根据叶子节点ID逐步获取到根节点ID。
在本实施例中,当获取到叶子节点ID及多个数据文件的文件ID及父ID,可以叶子节点ID为起始文件ID,从多个数据文件的文件ID及父ID中,获取叶子节点ID的父ID,再以该叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到目标镜像文件的根节点ID,进而将叶子节点ID所在的数据文件与根节点ID所在的数据文件之间的全部数据文件作为目标数据文件,该目标数据文件中存储了目标镜像文件的文件数据。
针对上述根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件的过程,为了便于理解,下面将以上述表2所存储的数据文件的文件ID及父ID为例进行说明。
例如,叶子节点ID为1004,由表2可知,叶子节点ID1004的父ID为1002,以父ID1002为文件ID,文件ID1002的父ID为1001,以父ID1001为文件ID,文件ID1001的父ID为NULL,该NULL为镜像文件的根节点ID,之后将叶子节点ID1004所在的数据文件、文件节点ID1002所在的数据文件、文件节点ID1001所在的数据文件作为目标数据文件。该目标数据文件的结构为叶子节点ID1004所在的数据文件>文件节点ID1002所在的数据文件>文件节点ID1001。
405、根据目标数据文件,生成目标镜像文件的压缩包。
在根据目标数据文件,生成目标镜像文件的压缩包时,可采用如下(1)~(2):
(1)、根据第一描述文件中存储的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件。
基于第一描述文件中所存储的镜像文件名称与叶子节点ID之间的对应关系,可获取到目标镜像文件的镜像文件名称对应的叶子节点ID,进而将获取到的目标镜像文件的镜像文件名称对应的叶子节点ID单独存储在一个Json文件中,得到目标描述文件。
(2)、按照特定格式对目标数据文件以及目标描述文件进行压缩,得到目标镜像文件的压缩包。
其中,特定格式可以为镜像文件压缩包中数据的存储格式。基于特定存储格式,通过将目标数据文件以及目标描述文件进行压缩,可得到目标镜像文件的压缩包,此时目标镜像文件的压缩包中包含的数据有目标数据文件的元数据、层数据及目标描述文件中的数据。
406、将目标镜像文件的压缩包导入到目标节点。
其中,目标节点可以为计算机中的任一节点,还可以为计算机系统中另一计算机,本实施例不对目标节点作具体的限定。当得到目标镜像文件的压缩包后,通过执行加载操作将该压缩包导入到目标节点上。由于该压缩包中仅存储了目标镜像文件对应的数据文件及描述文件,因而不仅减少了导入过程的时间消耗,而且减少了目标节点存储目标镜像文件的存储成本。
针对上述镜像文件导入的整个过程,下面将以图5为例进行详述。
参见图5,在将指定镜像文件从一个节点导入到另一个节点上的过程中,需要先在第一节点上对包含制定镜像文件的压缩包进行解压缩,得到第一描述文件及多个数据文件。之后,从每个数据文件所包含的第二描述文件中读取每个数据文件的文件ID及父ID,并从第一描述文件所存储的镜像文件名称与叶子节点ID之间的对应关系中,获取指定镜像文件名称对应的叶子节点ID,进而根据该叶子节点ID及每个数据文件的文件ID及父ID,获取到指定镜像文件对应的所有数据文件。当采用特定格式对指定镜像文件对应的所有数据文件及该指定镜像文件的描述文件进行压缩,可得到指定镜像文件的压缩包。最后通过加载操作将该指定镜像文件的压缩包导入到另一节点上。
基于上述图5所示的镜像文件的导入过程图,下面将以一个具体例子进行说明。
参见图6,对包含多个镜像文件的压缩包进行解压缩,可得到第一描述文件及6个数据文件,6个数据文件对应6个镜像层,分别为文件ID为1001(父ID为NULL)的数据文件、文件ID为1002(父ID为1001)的数据文件、文件ID为1003(父ID为1002)的数据文件、文件ID为1004(父ID为1003)的数据文件、文件ID为1005(父ID为1002)的数据文件、文件ID为1006(父ID为1005)的数据文件。根据第一描述文件,可获取到镜像文件A对应的叶子节点ID为1004,镜像文件B对应的叶子节点ID为1005。
如果需要将镜像文件A导入到目标节点,则可根据镜像文件A对应的叶子节点ID1004,获取叶子节点ID1004的父ID1003,以叶子节点ID1004的父ID1003为文件ID,获取文件ID1003的父ID1002,再以父ID1002为文件ID,获取文件ID1002的父ID1001,以父ID1001为文件ID,获取到文件ID1001的父ID为NULL,该父节点ID NULL为根节点ID,基于所获取的文件ID,可获取到镜像文件A对应的目标数据文件为:文件ID1004所在的数据文件>文件ID1003所在的数据文件>文件ID1002所在的数据文件>文件ID1001所在的数据文件。之后,根据第一描述文件中存储的镜像文件名称与叶子节点之间的对应关系,获取镜像文件A与叶子节点ID1004之间的对应关系,并基于该对应关系生成目标描述文件。通过采用特定格式对文件ID1004所在的数据文件、文件ID1003所在的数据文件、文件ID1002所在的数据文件、文件ID1001所在的数据文件及目标描述文件进行压缩,可得到镜像文件A对应的压缩包。最后通过加载操作将镜像文件A对应的压缩包导入到目标节点。
本发明实施例提供的方法,根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包进行整体导入,不仅节省了导入时间,而且节约了存储成本。
参见图7,本发明实施例提供了一种镜像文件的导入装置,该装置包括:
解压缩模块701,用于对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,该第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
获取模块702,用于根据第一描述文件和多个数据文件,获取目标数据文件,目标数据文件中存储了待导入的目标镜像文件的文件数据;
生成模块703,用于根据目标数据文件,生成目标镜像文件的压缩包;
导入模块704,用于将目标镜像文件的压缩包导入到目标节点。
在本发明的另一个实施例中,获取模块702,用于从多个数据文件中读取每个数据文件的文件ID及父ID;从第一描述文件中获取目标镜像文件的叶子节点ID;根据叶子节点ID与多个数据文件的文件ID及父ID,获取目标数据文件。
在本发明的另一个实施例中,每个数据文件中至少包括第二描述文件,第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
获取模块702,具体用于从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
在本发明的另一个实施例中,获取模块702,具体用于根据目标镜像文件的镜像文件名称,从第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取目标镜像文件的镜像文件名称对应的叶子节点ID。
在本发明的另一个实施例中,获取模块702,具体用于以叶子节点ID为起始文件ID,从多个数据文件的文件ID及父ID中,获取叶子节点ID的父ID;以叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到目标镜像文件的根节点ID;将叶子节点ID所在的数据文件与根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
在本发明的另一个实施例中,生成模块703,具体用于根据第一描述文件中存储的目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;按照特定格式对目标数据文件以及目标描述文件进行压缩,得到目标镜像文件的压缩包。
综上所述,本发明实施例提供的装置,根据对包含多个镜像文件的压缩包解压缩后得到的文件,获取待导入的镜像文件,进而将该镜像文件有针对性地导入到目标节点,避免了对包含多个镜像文件的压缩包进行整体导入,不仅节省了导入时间,而且节约了存储成本。
需要说明的是:上述实施例提供的镜像文件的导入装置在导入镜像文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将镜像文件的导入装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的镜像文件的导入装置与镜像文件的导入方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种镜像文件的导入方法,其特征在于,所述方法包括:
对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,所述第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
从多个数据文件中读取每个数据文件的文件ID及父ID;
从所述第一描述文件中获取目标镜像文件的叶子节点ID;
根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件,所述目标数据文件中存储了待导入的目标镜像文件的文件数据;
根据所述目标数据文件,生成所述目标镜像文件的压缩包;
将所述目标镜像文件的压缩包导入到目标节点。
2.根据权利要求1所述的方法,其特征在于,所述每个数据文件中至少包括第二描述文件,所述第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
所述从所述多个数据文件中读取每个数据文件的文件ID及父ID,包括:
从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
3.根据权利要求1所述的方法,其特征在于,所述从所述第一描述文件中获取所述目标镜像文件的叶子节点ID,包括:
根据目标镜像文件的镜像文件名称,从所述第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取所述目标镜像文件的镜像文件名称对应的叶子节点ID。
4.根据权利要求1所述的方法,其特征在于,所述根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件,包括:
以所述叶子节点ID为起始文件ID,从所述多个数据文件的文件ID及父ID中,获取所述叶子节点ID的父ID;
以所述叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到所述目标镜像文件的根节点ID;
将所述叶子节点ID所在的数据文件与所述根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
5.根据权利要求1所述的方法,其特征在于,所述根据所述目标数据文件,生成所述目标镜像文件的压缩包,包括:
根据所述第一描述文件中存储的所述目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;
按照特定格式对所述目标数据文件以及所述目标描述文件进行压缩,得到所述目标镜像文件的压缩包。
6.一种镜像文件的导入装置,其特征在于,所述装置包括:
解压缩模块,用于对包含多个镜像文件的压缩包进行解压缩,得到第一描述文件和多个数据文件,所述第一描述文件用于存储镜像文件名称与叶子节点身份标识ID之间的对应关系,每个镜像文件的文件数据存储于至少一个数据文件中;
获取模块,用于从多个数据文件中读取每个数据文件的文件ID及父ID;从所述第一描述文件中获取目标镜像文件的叶子节点ID;根据所述叶子节点ID与所述多个数据文件的文件ID及父ID,获取目标数据文件,所述目标数据文件中存储了待导入的目标镜像文件的文件数据;
生成模块,用于根据所述目标数据文件,生成所述目标镜像文件的压缩包;
导入模块,用于将所述目标镜像文件的压缩包导入到目标节点。
7.根据权利要求6所述的装置,其特征在于,所述每个数据文件中至少包括第二描述文件,所述第二描述文件用于按照预设存储格式存储数据文件的文件ID及父ID;
所述获取模块,具体用于从每个数据文件对应的第二描述文件中读取每个数据文件的文件ID及父ID。
8.根据权利要求6所述的装置,其特征在于,所述获取模块,具体用于根据目标镜像文件的镜像文件名称,从所述第一描述文件存储的镜像文件名称与叶子节点ID之间的对应关系中,获取所述目标镜像文件的镜像文件名称对应的叶子节点ID。
9.根据权利要求6所述的装置,其特征在于,所述获取模块,具体用于以所述叶子节点ID为起始文件ID,从所述多个数据文件的文件ID及父ID中,获取所述叶子节点ID的父ID;以所述叶子节点ID的父ID为文件ID,循环遍历所有数据文件的文件ID及父ID,直至获取到所述目标镜像文件的根节点ID;将所述叶子节点ID所在的数据文件与所述根节点ID所在的数据文件之间的全部数据文件作为目标数据文件。
10.根据权利要求6所述的装置,其特征在于,所述生成模块,具体用于根据所述第一描述文件中存储的所述目标镜像文件的镜像文件名称与叶子节点ID之间的对应关系,生成目标描述文件;按照特定格式对所述目标数据文件以及所述目标描述文件进行压缩,得到所述目标镜像文件的压缩包。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510519278.4A CN105094924B (zh) | 2015-08-21 | 2015-08-21 | 镜像文件的导入方法及装置 |
PCT/CN2016/087703 WO2017032170A1 (zh) | 2015-08-21 | 2016-06-29 | 镜像文件的导入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510519278.4A CN105094924B (zh) | 2015-08-21 | 2015-08-21 | 镜像文件的导入方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094924A CN105094924A (zh) | 2015-11-25 |
CN105094924B true CN105094924B (zh) | 2018-06-26 |
Family
ID=54575434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510519278.4A Active CN105094924B (zh) | 2015-08-21 | 2015-08-21 | 镜像文件的导入方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105094924B (zh) |
WO (1) | WO2017032170A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107015995A (zh) * | 2016-01-28 | 2017-08-04 | 华为技术有限公司 | 一种镜像文件的修改方法和装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094924B (zh) * | 2015-08-21 | 2018-06-26 | 华为技术有限公司 | 镜像文件的导入方法及装置 |
CN105740048B (zh) * | 2016-01-26 | 2019-03-08 | 华为技术有限公司 | 一种镜像管理方法、装置及系统 |
WO2018107361A1 (zh) * | 2016-12-13 | 2018-06-21 | 华为技术有限公司 | 镜像处理方法以及计算设备 |
CN108509253A (zh) * | 2018-04-03 | 2018-09-07 | 南京中兴软创软件技术有限公司 | 一种快速发布大量容器镜像的方法 |
CN112671892B (zh) * | 2020-12-22 | 2022-11-18 | 北京百度网讯科技有限公司 | 数据传输方法、装置、电子设备及介质 |
CN113778747B (zh) * | 2021-08-11 | 2023-08-29 | 江苏深网科技有限公司 | 一种设备系统镜像文件格式分析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546740A (zh) * | 2011-06-24 | 2012-07-04 | 奇智软件(北京)有限公司 | 一种基于云压缩文件的压缩和解压缩方法、装置及系统 |
CN102831001A (zh) * | 2012-09-11 | 2012-12-19 | 北京百纳威尔科技有限公司 | 软件升级包的制作方法及装置、程序的升级方法及设备 |
CN103226593A (zh) * | 2013-04-17 | 2013-07-31 | 富泰华工业(深圳)有限公司 | 一种文件系统的管理方法及其文件存储终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2898424B8 (en) * | 2012-09-19 | 2019-08-21 | Hitachi Vantara Corporation | System and method for managing deduplication using checkpoints in a file storage system |
CN103116654B (zh) * | 2013-03-06 | 2016-08-24 | 同方知网(北京)技术有限公司 | 一种xml数据节点编码压缩方法 |
CN105094924B (zh) * | 2015-08-21 | 2018-06-26 | 华为技术有限公司 | 镜像文件的导入方法及装置 |
-
2015
- 2015-08-21 CN CN201510519278.4A patent/CN105094924B/zh active Active
-
2016
- 2016-06-29 WO PCT/CN2016/087703 patent/WO2017032170A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546740A (zh) * | 2011-06-24 | 2012-07-04 | 奇智软件(北京)有限公司 | 一种基于云压缩文件的压缩和解压缩方法、装置及系统 |
CN102831001A (zh) * | 2012-09-11 | 2012-12-19 | 北京百纳威尔科技有限公司 | 软件升级包的制作方法及装置、程序的升级方法及设备 |
CN103226593A (zh) * | 2013-04-17 | 2013-07-31 | 富泰华工业(深圳)有限公司 | 一种文件系统的管理方法及其文件存储终端 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107015995A (zh) * | 2016-01-28 | 2017-08-04 | 华为技术有限公司 | 一种镜像文件的修改方法和装置 |
CN107015995B (zh) * | 2016-01-28 | 2021-01-05 | 华为技术有限公司 | 一种镜像文件的修改方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105094924A (zh) | 2015-11-25 |
WO2017032170A1 (zh) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094924B (zh) | 镜像文件的导入方法及装置 | |
US20210026613A1 (en) | Data model api for live applications in a cloud collaboration platform | |
US10055216B2 (en) | Minimizing image copying during partition updates | |
KR102128138B1 (ko) | 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법 | |
WO2019133230A1 (en) | Violation resolution in client synchronization | |
Erraissi et al. | Data sources and ingestion big data layers: meta-modeling of key concepts and features | |
CN102224716B (zh) | 用于配置多种联网技术的统一界面 | |
CN107844301A (zh) | 一种安卓应用渠道合包方法及装置 | |
US20140195896A1 (en) | Conversion of a presentation to darwin information typing architecture (dita) | |
WO2020134628A1 (zh) | 一种基于区块链对结构化作品进行存证的方法及装置 | |
JP2005302038A (ja) | Bツリー中の連続キーの名前を変更する方法およびシステム | |
CN106951451A (zh) | 一种网页内容提取方法、装置及计算设备 | |
US9183212B2 (en) | Representing directory structure in content-addressable storage systems | |
EP3535674A1 (en) | Systems and methods for data management using zero-touch tagging | |
CN106855861A (zh) | 一种文件合并方法、装置及电子设备 | |
CN110209735A (zh) | 数据库备份方法、数据库备份装置、计算设备和存储介质 | |
CN102224708A (zh) | 用于配置多个联网技术的统一存储 | |
CN102224765A (zh) | 创建跨技术的配置设置 | |
US8346869B2 (en) | Granular data synchronization for editing multiple data objects | |
CN108255989A (zh) | 图片存储方法、装置、终端设备及计算机存储介质 | |
Erraissi et al. | Meta-modeling of data sources and ingestion big data layers | |
CN109408682A (zh) | 一种正则表达式匹配的方法、系统及设备 | |
CN107408239B (zh) | 通过多个邮箱在通信应用中进行海量数据管理的架构 | |
CN110134768A (zh) | 文本的处理方法、装置、设备及存储介质 | |
US20220019907A1 (en) | Dynamic In-Memory Construction of a Knowledge Graph |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220217 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |