CN113411363A - 一种镜像文件的上传方法、相关设备及计算机存储介质 - Google Patents
一种镜像文件的上传方法、相关设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113411363A CN113411363A CN202010183182.6A CN202010183182A CN113411363A CN 113411363 A CN113411363 A CN 113411363A CN 202010183182 A CN202010183182 A CN 202010183182A CN 113411363 A CN113411363 A CN 113411363A
- Authority
- CN
- China
- Prior art keywords
- fragment
- segment
- data packet
- image file
- uploading
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 239000012634 fragment Substances 0.000 claims abstract description 360
- 239000003795 chemical substances by application Substances 0.000 claims abstract description 182
- 230000015654 memory Effects 0.000 claims description 34
- 230000005540 biological transmission Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 12
- 238000000926 separation method Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 44
- 238000007726 management method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 12
- 238000013467 fragmentation Methods 0.000 description 11
- 238000006062 fragmentation reaction Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- -1 ... Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 210000004907 gland Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5603—Access techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种镜像文件的上传方法、相关设备及计算机存储介质,方法包括:获取目标镜像文件;对目标镜像文件进行分片,获得分片S1,S2,...,Sm和分片总量m,其中,m为正整数;将数据包P1,P2,...,Pn和分片总量m发送给上传代理设备,其中,数据包P1包含分片S1和分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,n为正整数,并且n≤m。
Description
技术领域
本申请涉及虚拟化技术领域,尤其涉及一种镜像文件的上传方法、相关设备及计算机存储介质。
背景技术
在云服务的应用场景下,镜像服务以门户网站(portal)的形式呈现,因此用户需要通过浏览器完成镜像的注册以及上传。在浏览器上传文件的过程中,经常出现由于网络环境较差而导致文件上传中断或者上传失败的问题,而且浏览器不支持文件的分片上传,因此当用户通过浏览器上传大镜像文件且未成功上传至服务器时,该大镜像文件需要重新进行上传,从而大大降低了大镜像文件的上传效率。
目前,针对公有云的镜像服务,用户需要开通商业的对象存储服务并通过专用的工具(例如,Packer、OBS Browser)实现镜像文件的上传,这种方式需要用户在下载和学习该工具之后,才能进行镜像文件的上传,从而降低了易用性。针对私有云的镜像服务,企业需要部署专用的对象存储服务,因此通过这种方式将耗费较高的成本,并在一定程度上降低了易用性。
发明内容
本申请实施例公开了一种镜像文件的上传方法、相关设备及计算机存储介质,能够有效解决浏览器不支持上传大镜像文件以及上传效率低下的问题。
第一方面,本申请提供了一种镜像文件上传方法,应用于客户端,包括:
获取目标镜像文件;
对所述目标镜像文件进行分片,获得分片S1,S2,...,Sm和分片总量m,其中,m为正整数;
将数据包P1,P2,...,Pn和所述分片总量m发送给上传代理设备,其中,所述数据包P1包含分片S1和分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,n为正整数,并且n≤m。
在一些可能的设计中,在n小于m的情况下,所述方法还包括:在n小于m的情况下,所述方法还包括:向所述上传代理设备发送断点续传请求,以获得所述分片序号In,其中,所述断点续传请求用于请求发生断点的分片对应的分片序号;根据所述分片序号In,将数据包Pn+1发送给所述上传代理设备。
在一些可能的设计中,所述将数据包P1,P2,...,Pn发送给上传代理设备包括:利用l个线程,将数据包P1,P2,...,Pl并行发送给所述上传代理设备;利用所述l个线程,将数据包Pl+1,Pl+2,...,P2×l并行发送给所述上传代理设备;…;利用所述l个线程,将数据包Pn-l+1,Pn-l+2,...,Pn并行发送给所述上传代理设备,其中,1≤l≤n/2,l是正整数。
可以看出,利用上述方法可以在客户端中对待上传的目标镜像文件进行分片,然后将目标镜像文件的分片发送到上传代理设备。因此,当目标镜像文件在上传过程中出现上传中断或者上传失败时,客户端可以从发送失败的分片处重新上传目标镜像文件,从而提高目标镜像文件的上传效率。而且,客户端将目标镜像文件进行分片,通过上传分片而完成目标镜像文件的上传,从而提高目标镜像文件的上传成功率。另外,客户端还可以将目标镜像文件的分片并行发送给上传代理设备,能够大大提升目标镜像文件的上传效率。
第二方面,本申请提供了另一种镜像文件的上传方法,应用于上传代理设备,包括:
接收客户端发送的分片总量m以及数据包P1,P2,...,Pn,其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,分片S1,S2,...,Sm是所述客户端对目标镜像文件进行分片得到的,m和n均为正整数,并且n≤m;
将所述分片总量m和分片S1,S2,...,Sn发送给对象存储设备。
在一些可能的设计中,在n小于m的情况下,在接收客户端发送的分片总量m以及数据包P1,P2,...,Pn之后,所述方法还包括:接收所述客户端发送的数据包Pn+2,Pn+3,...,Pm,并将分片Sn+2,Sn+3,...,Sm发送给所述对象存储设备,其中,数据包Pn+2包含分片Sn+2以及分片序号In+2,数据包Pn+3包含分片Sn+3以及分片序号In+3,…,数据包Pm包含分片Sm以及分片序号Im;接收所述客户端发送的断点续传请求;根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;接收所述客户端根据所述分片序号In发送的数据包Pn+1,并将所述数据包Pn+1发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述数据包Pn+1包含分片Sn+1以及分片序号In+1。
在一些可能的设计中,在n小于m的情况下,所述方法还包括:接收所述客户端发送的断点续传请求;根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;接收所述客户端根据所述分片序号In从所述数据包Pn+1开始续传的剩下的数据包,并将所述剩下的数据包对应的分片发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述剩下的数据包包括数据包Pn+1,Pn+2,...,Pm,所述数据包Pn+1包含分片Sn+1以及分片序号In+1,所述数据包Pn+2包含分片Sn+2以及分片序号 In+2,…,数据包Pm包含分片Sm以及分片序号Im。
在一些可能的设计中,所述方法还包括:在接收所述客户端发送的所述数据包P1时,调用镜像管理设备创建所述目标镜像文件对应的镜像标识,并保存所述镜像标识。
在一些可能的设计中,所述方法还包括:调用所述镜像管理设备刷新所述目标镜像文件对应的镜像状态。
上述方法中,上传代理设备接收到客户端发送的目标镜像文件的分片之后,并将分片转发给对象存储设备,再由对象存储设备将分片还原为目标镜像文件,从而实现目标镜像文件的上传。同时,当目标镜像文件在上传过程中出现上传中断或者上传失败时,上传代理设备可以将发生断点的分片对应的分片序号发送给客户端,使得客户端能够根据发生断点的分片对应的分片序号继续上传目标镜像文件,从而提高镜像文件的上传效率和上传成功率。
第三方面,本申请提供了一种客户端,包括:
获取单元,用于获取目标镜像文件;
分片处理单元,用于对所述目标镜像文件进行分片,获得分片S1,S2,...,Sm和分片总量m,其中,m为正整数;
发送单元,用于将数据包P1,P2,...,Pn和所述分片总量m发送给上传代理设备,其中,所述数据包P1包含分片S1和分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,n为正整数,并且n≤m。
在一些可能的设计中,在n小于m的情况下,所述发送单元还用于:向所述上传代理设备发送断点续传请求,以获得所述分片序号In,其中,所述断点续传请求用于请求发生断点的分片对应的分片序号;根据所述分片序号In,将数据包Pn+1发送给所述上传代理设备。
在一些可能的设计中,所述发送单元具体用于:利用l个线程,将数据包P1,P2,...,Pl并行发送给所述上传代理设备;利用所述l个线程,将数据包Pl+1,Pl+2,...,P2×l并行发送给所述上传代理设备;…;利用所述l个线程,将数据包P1,P2,...,Pn并行发送给所述上传代理设备,其中, 1≤l≤n/2,l是正整数。
上述客户端中,分片处理单元通过对目标镜像文件进行分片,从而实现由客户端将目标镜像文件分片上传。当目标镜像文件在上传过程中出现上传中断或者上传失败时,利用上述客户端可以实现镜像文件的断点续传,不仅能够提高目标镜像文件的上传效率,还能够提高目标镜像文件的上传成功率。同时,发送单元还可以实现分片的并发上传,因此利用上述客户端上传镜像文件时,能够更大地提升目标镜像文件的上传效率。
第四方面,本申请提供了一种上传代理设备,其特征在于,包括:
获取单元,用于接收客户端发送的分片总量m以及数据包P1,P2,...,Pn,其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,分片S1,S2,...,Sm是所述客户端对目标镜像文件进行分片得到的,m和n均为正整数,并且n≤m;
发送单元,用于将所述分片总量m和分片S1,S2,...,Sn发送给对象存储设备。
在一些可能的设计中,在n小于m的情况下,在所述获取单元接收客户端发送的分片总量m以及数据包P1,P2,...,Pn之后,所述获取单元还用于接收所述客户端发送的数据包Pn+2,Pn+3,...,Pm,并将分片Sn+2,Sn+3,...,Sm发送给所述对象存储设备,其中,数据包Pn+2包含分片Sn+2以及分片序号In+2,数据包Pn+3包含分片Sn+3以及分片序号In+3,…,数据包Pm包含分片Sm以及分片序号Im;所述获取单元还用于接收所述客户端发送的断点续传请求;所述发送单元还用于根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;所述获取单元还用于接收所述客户端根据所述分片序号In发送的数据包Pn+1,并将所述数据包Pn+1发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述数据包Pn+1包含分片Sn+1以及分片序号In+1。
在一些可能的设计中,在n小于m的情况下,所述获取单元还用于接收所述客户端发送的断点续传请求;所述发送单元还用于根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;所述获取单元还用于接收所述客户端根据所述分片序号In从所述数据包Pn+1开始续传的剩下的数据包,并将所述剩下的数据包对应的分片发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述剩下的数据包包括数据包Pn+1,Pn+2,...,Pm,所述数据包Pn+1包含分片Sn+1以及分片序号In+1,所述数据包Pn+2包含分片Sn+2以及分片序号In+2,…,数据包Pm包含分片Sm以及分片序号Im。
在一些可能的设计中,所述设备还包括调用单元和进度记录单元,所述调用单元用于,在接收所述客户端发送的所述数据包P1时,调用镜像管理设备创建所述目标镜像文件对应的镜像标识;所述进度记录单元用于,保存所述镜像标识。
在一些可能的设计中,所述调用单元还用于:调用所述镜像管理设备刷新所述目标镜像文件对应的镜像状态。
可以看出,获取单元接收到客户端发送的目标镜像文件的分片之后,由发送单元将分片转发给对象存储设备,使得对象存储设备能够根据分片还原为目标镜像文件,从而实现目标镜像文件的上传。而且,当目标镜像文件在上传过程中出现上传中断或者上传失败时,发送单元可以将发生断点的分片对应的分片序号发送给客户端,使得客户端能够根据发生断点的分片对应的分片序号继续上传目标镜像文件,从而提高镜像文件的上传效率和上传成功率。
第五方面,本申请提供了一种镜像文件上传系统,其特征在于,所述系统包括第三方面所述的客户端、第四方面所述的上传代理设备、对象存储设备以及镜像服务设备,其中,
所述对象存储设备用于接收所述上传代理设备发送的所述分片S1,S2,...,Sm,并将所述分片S1,S2,...,Sm还原为所述目标镜像文件;
所述镜像管理设备用于创建所述目标镜像文件对应的镜像标识;
所述镜像管理设备还用于刷新所述目标镜像文件的镜像状态。
上述镜像文件上传系统中,客户端通过对镜像文件进行分片,并将分片发送给上传代理设备,再由上传代理设备将分片转发至对象存储设备,并由对象存储设备将分片还原为目标镜像文件,从而完成目标镜像文件的上传。同时,在目标镜像文件的上传过程中,镜像管理设备通过刷新目标镜像文件的镜像状态,从而确定该目标镜像文件是否上传成功。因此,利用上述镜像文件上传系统可以实现目标镜像文件的断点续传和分片并发上传,不仅能够提高目标镜像文件的上传效率,还能够提高目标镜像文件的上传成功率。
第六方面,本申请提供了一种客户端,包括处理器和存储器,所述处理器执行所述存储器中的代码以实现如第一方面所述的部分或者全部步骤。
第七方面,本申请提供了一种上传代理设备,包括处理器和存储器,所述处理器执行所述存储器中的代码以实现如第二方面所述的部分或全部步骤。
第八方面,本申请提供了一种计算机存储介质,存储有计算机指令;所述计算机指令用于实现如第一方面所述的部分或者全部步骤。
第九方面,本申请提供了一种计算机存储介质,存储有计算机指令;所述计算机指令用于实现如第二方面所述的部分或者全部步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种云系统的结构示意图;
图2是本申请提供的一种具体的云系统的结构示意图;
图3是本申请提供的一种镜像文件上传系统的结构示意图;
图4是本申请提供的一种镜像上传界面的示意图;
图5是本申请提供的一种镜像文件上传的流程示意图;
图6是本申请提供的一种镜像文件上传的流程示意图;
图7是本申请提供的一种客户端的结构示意图;
图8是本申请提供的一种上传代理设备的结构示意图;
图9是本申请提供的另一种客户端的结构示意图;
图10是本申请提供的另一种上传代理设备的结构示意图。
具体实施方式
参见图1,图1示出了一种云系统的结构示意图。云系统的拥有者自己部署云计算基础设施,即部署计算资源(例如,服务器)110、部署存储资源(例如,存储器)120以及部署网络资源(例如,网卡)130等等。公有云的拥有者(例如,运营商)将云计算基础设施的计算资源、存储资源、网络资源进行虚拟化,并提供相应的服务给云的使用者(例如,用户) 使用。其中,运营商可以提供以下三种服务给用户使用:云计算基础设施即服务(infrastructure as a service,IaaS)、平台即服务(platform as a service,PaaS)以及软件即服务(software as a service, SaaS)。
IaaS提供给用户的服务是对云计算基础设施的利用,包括处理、存储、网络以及其它基本的计算资源,使得用户能够部署和运行任意软件,包括操作系统和应用程序。用户不管理或控制任何云计算基础设施,但能控制操作系统的选择、储存空间、部署应用,也有可能获得有限制的网络组件(例如,防火墙,负载均衡器等)的控制。
PaaS提供给用户的服务是把用户采用供应商提供的开发语言和工具(例如,Java、python、 Net等)开发的或收购的应用程序部署到云计算基础设施上。用户不需要管理或控制底层的云计算基础设施,包括网络、服务器、操作系统、存储等,但用户能控制部署的应用程序,也可能控制运行应用程序的托管环境配置。
SaaS提供给用户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面(例如,浏览器),访问云计算基础设施上的应用程序。用户不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等。
因此,用户可以利用运营商提供的服务运行自己的业务,例如,深度学习、人工智能以及大数据等等。
参见图2,图2示出了一种具体的云系统的示意图。本申请的云系统包括:云管理平台 210和基础设施220。其中,云管理平台210通过调用基础设施220,从而为用户提供云服务,云管理平台210可以是OpenStack、CloudStack、Hadoop、AWS(Amazon Web Service)等等,此处不作具体限定。
云管理平台210可以包括protal211、计算服务212、存储服务213、网路服务214以及管理服务215。其中,protal211可以提供给用户访问云系统或者云服务的入口。计算服务212 可以是用于部署虚拟机等等的组件。存储服务213可以用于提供分布式、持续虚拟对象存储等等的组件。网络服务214可以是用于提供了对网络节点的网络拓扑管理的组件。管理服务 215可以是用于对其他服务进行控制的组件。
以云管理平台210为OpenStack为例,计算服务212可以是Nova,存储服务213可以是 Swift、Cinder,网络服务214可以是Neutron,管理服务215可以是Glance、Nova、Horizon、Neutron以及Keystone等等。其中,Glance主要负责对云系统中提供的各类镜像的元数据进行管理,并为用户提供镜像管理服务,具体可实现虚拟机镜像的注册、查找以及检索等功能,从而方便用户为虚拟机选择并安装操作系统。而且,Glance的后端存储支持对接多种存储类型,例如,Swift、简单存储服务(simple storage service,S3)或者容器存储等等。Swift作为 OpenStack中默认的对象存储方案,相较于其他存储方案(如,S3、容器存储等),Swift更容易构筑在低成本、标准硬件存储基础设施之上,而且Swift支持大对象文件(如,静态大文件和动态大文件)的分片上传。
因此,本申请采用Swift作为Glance的后端存储以负责存储通过客户端浏览器上传的镜像文件。具体参见图3所示,图3示出了本申请涉及的一种镜像文件上传系统。镜像文件上传系统具体可以包括客户端310、上传代理设备320、对象存储设备330以及镜像管理设备 340。在本申请中,对象存储设备330为部署有Swift的设备,镜像管理设备340为部署有Glance 的设备,因此以下将对象存储设备330称为Swift,镜像管理设备340称为Glance。上传代理设备320、对象存储设备330和镜像管理设备340可以部署在一个计算设备上,也可以部署在不同的计算设备上,此处不作具体限定。
在本申请中,当用户通过客户端310上传镜像文件时,首先在客户端310对镜像文件进行分片操作,然后将镜像文件的分片发送到上传代理设备320,上传代理设备320接收到镜像文件的分片之后,将其转发至Swift330中,并调用Glance340刷新该镜像的状态。可以看出,利用该系统能够实现通过客户端分片上传镜像文件,也就是说,当镜像文件在上传过程中出现上传中断或者上传失败的情况时,客户端可以从断点位置处继续上传该镜像文件,而不需要重新上传完整的镜像文件,从而大大提升镜像文件的传输效率以及上传成功率。
下面将基于图3示出的镜像文件上传系统对本申请展开详细的描述。
在本申请具体的实施例中,在客户端向上传代理设备发送待上传的镜像文件之前,客户端可以通过浏览器接收用户输入的登录请求,并将登录请求发送给云管理平台。其中,登录请求携带了账号和密码,登录请求用于请求登录镜像管理系统,镜像管理系统由Glance提供。然后,云管理平台根据登录请求确定客户端的登录权限,若客户端具有登录权限,则浏览器界面中显示镜像上传界面,如图4所示。以图4为例,待上传的镜像文件包括第一镜像文件、第二镜像文件和第三镜像文件。下面以第一镜像文件为例,对本申请提供的镜像文件的上传方法进行详细介绍,具体可分为以下两种情况。
首先,介绍第一镜像文件在上传过程中未发生上传中断或者上传失败的情况。如图5所示,图5示出了本申请提供的一种镜像文件的上传方法的流程示意图。本实施方式的镜像文件上传方法包括但不限于如下步骤:
S101、客户端获取第一镜像文件。
在本申请具体的实施例中,客户端获取第一镜像文件之后,判断第一镜像文件的大小是否大于预设阈值。若第一镜像文件的大小大于预设阈值,则执行S102;若第一镜像文件的大小小于或者等于预设阈值,则客户端将第一镜像文件发送给上传代理设备,再由上传代理设备转发给Swift进行存储。当Swift接收到第一镜像文件时,上传代理设备调用Glance接口刷新第一镜像文件的镜像状态。
在一更具体的实施例中,客户端通过浏览器接收用户输入的拖拽指令,并根据拖拽指令获取第一镜像文件。其中,镜像上传界面提供了文件读取接口,拖拽指令用于将第一镜像文件拖拽到文件读取接口。客户端基于文件读取接口确定第一镜像文件的大小,若第一镜像文件的大小大于预设阈值,则执行S102;若第一镜像文件的大小小于或者等于预设阈值,则执行S107。另外,客户端还可以通过浏览器接收用户输入的其他类型指令(如,选择指令),从而获取第一镜像文件。
S102、客户端根据预设分片大小对第一镜像文件进行分片操作,得到第一镜像文件的分片S1,S2,...,Sm以及分片总量m,其中,m是正整数。
在本申请具体的实施例中,客户端根据预设分片大小对第一镜像文件进行分片操作,得到分片S1,S2,...,Sm,并为分片S1添加分片序号I1,分片S2添加分片序号I2,…,分片Sm添加分片序号Im,从而得到数据包P1,P2,...,Pm。其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2以及分片序号I2,…,数据包Pm包含分片Sm以及分片序号Im。其中,分片序号I1,I2,...,Im用于表示分片S1,S2,...,Sm的先后顺序,也就是说,分片S1是第1个分片,分片S2第2个分片,…,分片Sm第m个分片。
需要说明的,数据包P1,P2,...,Pm中还可以携带第一镜像文件的文件名称以及对应分片的大小等信息,此处不作具体限定。
S103、客户端将数据包P1,P2,...,Pm和分片总量m发送给上传代理设备。
在一种可能的实施例中,客户端将数据包P1,P2,...,Pm依次发送给上传代理设备。
在另一可能的实施例中,客户端使用l个线程同时将数据包P1,P2,...,Pl发送给上传代理设备,当上传代理设备接收到数据包P1,P2,...,Pl之后,客户端再使用上述l个线程同时将数据包 Pl+1,Pl+2,...,P2×l发送给上传代理设备,直至客户端将数据包P1,P2,...,Pm全部发送给上传代理设备。其中,1≤l≤m2,l是正整数。可以看出,通过分片并发的方式可以有效地减少上传次数以及文件数据流。
在本申请具体的实施例中,当客户端第一次向上传代理设备发送数据包时(例如,数据包P1或者数据包P1,P2,...,Pl)时,上传代理设备调用Glance接口创建镜像元数据,从而获取镜像元数据对应的镜像标识(identity document,ID)。然后,上传代理设备根据镜像ID,创建一个以镜像ID命名的空的对象文件。其中,镜像元数据用于描述第一镜像,具体可以包括第一镜像的镜像ID、第一镜像的大小、第一镜像的镜像状态以及第一镜像的镜像格式(例如, qcow2格式、vhd格式)等等。镜像ID用于标识第一镜像。
S104、上传代理设备将分片总量m和分段D1,D2,...,Dm发送至Swift。
在一种可能的实施例中,若客户端将数据包P1,P2,...,Pm依次发送给上传代理设备,则上传代理设备将分段D1,D2,...,Dm依次发送给Swift。
具体的,上传代理设备接收到数据包P1之后,根据数据包P1和镜像ID,为分片S1添加对象前缀名称N1得到分段D1,然后将分段D1发送到Swift。其中,对象前缀名称N1包括镜像ID 和分段D1对应的分段序号,分段D1对应的分段序号是分片序号I1。若Swift接收到分段D1,则上传代理设备在分段上传记录中保存分段D1的镜像ID以及分段D1对应的分段序号。同样的,上传代理设备接收到数据包P2之后,根据数据包P2和镜像ID,为分片S2添加对象前缀名称N2得到分段D2,然后将分段D2发送到Swift。其中,对象前缀名称N2包括镜像ID和分段D2对应的分段序号,分段D2对应的分段序号是分片序号I2。若Swift接收到分段D2,则上传代理设备在分段上传记录中保存分段D2的镜像ID以及分段D2对应的分段序号。…。上传代理设备接收到数据包Pm之后,根据数据包Pm和镜像ID,为分片Sm添加对象前缀名称Nm得到分段Dm,然后将分段Dm发送到Swift。其中,对象前缀名称Nm包括镜像ID和分段Dm对应的分段序号,分段Dm对应的分段序号是分片序号Im。若Swift接收到分段Dm,则上传代理设备在分段上传记录中保存分段Dm的镜像ID以及分段Dm对应的分段序号。
其中,对象前缀名称可具体表示为镜像ID-分段序号,镜像ID的格式可以设置为Glance 默认的存储格式,例如xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,分段序号也可以设置为 Glance默认的存储格式,且分段序号与分片序号一一对应,例如分片序号I15(00015)对应的分段序号为00015,因此对象前缀名称N15可表示为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00015。分段上传记录可参见表1,从表1中可以看出分片S1对应的对象前缀名称为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00001,分片S2对应的对象前缀名称为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00002,…,分片Sm对应的对象前缀名称为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-m。
表1.分段上传记录
镜像ID | 分段序号 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 00001 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 00002 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 00003 |
…. | … |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | m |
在另一种可能的实施例中,若客户端将数据包P1,P2,...,Pl并行发送给上传代理设备,将 Pl+1,Pl+2,...,P2×l并行发送给上传代理设备,…,将数据包Pm-l+1,Pm-l+2,...,Pm并行发送给上传代理设备,则上传代理设备将分段D1,D2,...,Dl并行发送给Swift,将分段Dl+1,Dl+2,...,D2×l并行发送给Swift,…,将分段Dm-l+1,Dm-l+2,...,Dm并行发送给Swift。
具体的,上传代理设备接收到数据包P1,P2,...,Pl之后,根据数据包P1,P2,...,Pl和镜像ID,分别为分片S1,S2,...,Sl添加对象前缀名称N1,N2,...,Nl得到分段D1,D2,...,Dl,然后将分段 D1,D2,...,Dl并行发送到Swift。其中,对象前缀名称N1包括镜像ID和分段D1对应的分段序号,分段D1对应的分段序号是分片序号I1;对象前缀名称N2包括镜像ID和分段D2对应的分段序号,分段D2对应的分段序号是分片序号I2;…;对象前缀名称Nl包括镜像ID和分段Dm对应的分段序号,分段Dl对应的分段序号是分片序号Il。若Swift接收到分段D1,D2,...,Dl,则上传代理设备在分段上传记录中分别保存分段D1,D2,...,Dl的镜像ID以及分段D1,D2,...,Dl对应的分段序号。应理解,上传代理设备将分片Sl+1,Sl+2,...,S2×l并行发送给Swift的过程,…,将分片Sm-l+1,Sm-l+2,...,Sm并行发送给Swift的过程与上传代理设备将分片S1,S2,...,Sl并行发送给Swift的过程类似,此处不再展开具体赘述。
可以看出,上述步骤实现了从上传代理设备的输入流到Swift的输出流的过程,也就是从上传代理设备中读取镜像文件,并将镜像文件写入到Swift,从而在无需本地缓存的情况下,将镜像文件上传到Swift,不仅提高镜像文件的上传效率,还节省存储空间。
S105、Swift根据对象前缀名称N1,N2,...,Nm,将分片S1,S2,...,Sm合并为第一镜像文件。
在本申请具体的实施例中,Swift根据接收到的分段D1,得到分片S1以及对象前缀名称N1; Swift根据接收到的分段D2,得到分片S2以及对象前缀名称N2;…;Swift根据接收到的分段Dm,得到分片Sm以及对象前缀名称Nm。而且,Swift根据分段D1,D2,...Dm的对象前缀名称,还可以获得分片S1,S2,...,Sm的镜像ID以及对应的分段序号,从而确定分片S1,S2,...,Sm都属于第一镜像文件的分片。当Swift接收到所有的分段,也就是上传代理设备确定分段上传记录中记录的分段数量与分片总量m相同时,上传代理设备向Swift发送以镜像ID命名的对象文件,并将调用Swift接口,使得Swift根据对象前缀名称N1,N2,...,Nm,将第一镜像文件的分片S1,S2,...,Sm按照分段序号进行合并,从而得到第一镜像文件。
S106、上传代理设备根据分段上传记录和分片总量m,获取第一镜像文件的上传进度,然后调用Glance接口刷新第一镜像的镜像状态。
其中,镜像状态包括queued状态、saving状态、active状态以及killed状态等等。queued 状态表示等待上传镜像文件;saving状态表示镜像文件正在被上传;active状态表示镜像文件上传完毕,此时镜像可以使用;killed状态表示镜像文件上传过程中发生错误。
在本申请具体的实施例中,上传代理设备根据分段上传记录确定第一镜像文件的上传进度,然后调用Glance接口对第一镜像文件对应的镜像状态进行刷新。若分段上传记录中未存储有任一个分段的镜像ID及其分段序号,则表示第一镜像文件的上传进度为0,此时第一镜像的状态为queued。若分段上传记录中存储有k个分段的镜像ID及其对应的k个分段序号,则表示第一镜像文件的上传进度为k/m,此时第一镜像的状态为saving状态。若分段上传记录中存储有m个分段的镜像ID及其对应的m个分段序号,则表示第一镜像文件的上传进度为100%,此时第一镜像的状态为active状态。若上传过程发生中断或者上传失败,此时第一镜像的状态为killed状态。
在本申请具体的实施例中,当Swift将分片S1,S2,...,Sm合并为第一镜像文件之后,上传代理设备调用Glance接口刷新第一镜像的镜像状态,确定第一镜像处于可用状态,从而完成第一镜像的注册。
举例说明,假设第一镜像文件的大小为130GB,预设分片大小为50兆字节(megabyte,MB)。当文件读取接口接收到第一镜像文件之后,客户端根据预设分片大小,将第一镜像文件处理为2663个分片,即分片S1,S2,...,S2663,其中,分片总量为2663个,分片S1,S2,...,S2662的大小均为50MB,分片S2663的大小为20MB。客户端为分片S1,S2,...,S2663依次添加分片序号,得到数据包P1,P2,...,P2663,其中,分片S1的分片序号I1记为00001,分片S2的分片序号I2记为 00002,…,分片S2663的分片序号I2663记为02663。客户端将数据包P1和分片总量发送给上传代理设备,上传代理设备接收数据包P1并调用Glance接口以创建镜像元数据,从而获取镜像ID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),然后根据镜像ID创建一个以镜像ID命名的目标对象文件。之后,上传代理设备根据数据包P1和镜像ID,为获取到的分片S1添加对象前缀名称N1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00001)得到分段D1,并将分段D1转发到Swift中。当Swift接收到分段D1,上传代理设备将分段D1对应的镜像ID和分段序号(00001) 保存在分段上传记录中。类似的,客户端将数据包P2发送给上传代理设备,上传代理设备根据数据包P2和镜像ID,对接收到的分片S2添加对象前缀名称N2(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00002)得到分段D2,并将分段D2转发到Swift中,当Swift接收到分段D2,则上传代理设备将分段D2对应的镜像ID和分段序号(00002) 保存在分段上传记录中;…;客户端将数据包P2663发送给上传代理设备,上传代理设备根据数据包P2663和镜像ID,对接收到的分片S2663添加对象前缀名称N2663 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-02663)得到分段D2663,并将分段D2663转发到Swift 中,当Swift接收到分段D2663,则上传代理设备将分段D2663对应的镜像ID和分段序号(02663) 保存在分段上传记录中。此时,上传代理设备向Swift发送目标对象文件,并将调用Swift接口,使得Swift根据对象前缀名称N1,N2,...,N2663,将分片S1,S2,...,S2663合并为第一镜像文件。另外,上传代理设备在第一镜像文件的上传过程中还根据分段上传记录和分片总量,定期调用Glance接口刷新第一镜像的镜像状态。在Swift将分片S1,S2,...,S2663合并为第一镜像文件之后,上传代理设备通过调用Glance接口刷新第一镜像的镜像状态,得到第一镜像的镜像状态为可用状态,从而完成第一镜像的注册。
上述方法中,当镜像文件在上传过程中未发生上传中断或者上传失败的情况时,客户端通过对镜像文件进行分片,并将镜像文件的分片发送给上传代理设备,再由上传代理设备将分片对应的分段转发给Swift,使得Swift可以根据接收到分段,按照对象前缀名称将分片合并为镜像文件。可以看出,利用上述方法可以实现利用镜像文件的分片代替镜像文件进行上传,从而提高镜像文件的上传成功率。另外,客户端还可以将镜像文件的分片并行发送给上传代理设备,再由上传代理设备将分片并行发送给Swift,从而提供镜像文件的上传效率。
在客户端向上传代理设备发送第一镜像文件的分片时,可能由于网络原因或者上传代理设备异常等情况导致上传代理设备无法完整接收到第一镜像文件的所有分片S1,S2,...,Sm。那么,接下来将以第一镜像文件在上传过程中出现上传中断或者单个分片上传失败为例,介绍本申请提供的镜像文件上传方法。如图6所示,图6示出了本申请提供的一种镜像文件的上传方法的流程示意图。本实施方式的镜像文件上传方法包括但不限于如下步骤:
S201、客户端向上传代理设备发送断点续传请求。
其中,断点续传请求中携带了第一镜像文件对应的镜像ID,断点续传请求用于请求发生上传中断或者上传失败时断点处分片对应的分片序号。
在本申请具体的实施例中,客户端上传第一镜像文件的分片时出现单个分片上传失败的情况,例如,上传代理设备未接收到分片Sn+1。或者,客户端上传第一镜像文件的分片时出现上传中断的情况,即上传代理设备未接收到分片Sn+1,Sn+2,...,Sm。其中,1≤n<m,n是正整数。
在一种可能的实施例中,当客户端向上传代理设备发送数据包Pn+1时,出现网络中断、当前网络环境不支持数据包的上传、上传代理设备异常等情况,使得上传代理设备未接收到数据包Pn+1。当客户端向上传代理设备发送数据包Pn+2时,网络环境或者上传代理设备等恢复正常,此时上传代理设备将可以接收到数据包Pn+2,Pn+3,...,Pm,换句话说,上传代理设备接收到数据包P1,P2,...,Pn,Pn+2,Pn+3,...,Pm。
在另一种可能的实施例中,当客户端向上传代理设备发送数据包Pn+1时,出现网络中断、当前网络环境不支持数据包的上传、上传代理设备异常等情况,使得上传代理设备无法接收到从数据包Pn+1开始的剩下的数据包(Pn+1,Pn+2,...,Pm),此时上传代理设备仅接收到数据包 P1,P2,...,Pn。
S202、上传代理设备根据断点续传请求,向客户端发送断点处分片对应的分片序号In。
在本申请具体的实施例中,上传代理设备接收到断点续传请求之后,根据第一镜像文件对应的镜像ID,调用Glance接口刷新第一镜像的镜像状态,从而获得文件上传令牌(token)。然后,上传代理设备根据文件上传token将分段上传记录中的发生断点的分片(分段)对应的分片序号In(分段序号)发送给客户端,使得客户端可以根据分片序号In从数据包Pn+1开始续传的剩下的数据包。
S203、客户端根据分片序号In向上传代理设备发送上传失败的分片对应的数据包,并由上传代理设备将上传失败的分片对应的分段发送给Swift。
在一种可能的实施例中,客户端根据分片序号In仅向上传代理设备发送数据包Pn+1。其中,数据包Pn+1包括分片Sn+1和分片序号In+1。上传代理设备接收到数据包Pn+1之后,根据数据包Pn+1和第一镜像文件的镜像ID,为分片Sn+1添加对象前缀名称Nn+1得到分段Dn+1,然后将分段Dn+1发送给Swift。其中,对象前缀名称Nn+1包括镜像ID和分段Dn+1对应的分段序号,分段Dn+1对应的分段序号是分片序号In+1。若Swift接收到分段Dn+1,则上传代理设备在分段上传记录中保存分段Dn+1的镜像ID以及分段Dn+1对应的分段序号。
在另一种可能的实施例中,客户端根据分片序号In向上传代理设备依次发送数据包 Pn+1,Pn+2,...,Pm。其中,数据包Pn+1包括分片Sn+1和分片序号In+1,数据包Pn+2包括分片Sn+2和分片序号In+2,…,数据包Pm包括分片Sm和分片序号Im。上传代理设备接收到数据包Pn+1之后,根据数据包Pn+1和镜像ID,为分片Sn+1添加对象前缀名称Nn+1得到分段Dn+1,然后将分段Dn+1发送给Swift。其中,对象前缀名称Nn+1包括镜像ID和分段Dn+1对应的分段序号,分段Dn+1对应的分段序号是分片序号In+1。若Swift接收到分段Dn+1,则上传代理设备在分段上传记录中保存分段Dn+1的镜像ID以及分段Dn+1对应的分段序号。上传代理设备接收到数据包Pn+2之后,根据数据包Pn+2和镜像ID,为分片Sn+2添加对象前缀名称Nn+2得到分段Dn+2,然后将分段Dn+2发送给Swift。其中,对象前缀名称Nn+2包括镜像ID和分段Dn+2对应的分段序号,分段Dn+2对应的分段序号是分片序号In+2。若Swift接收到分段Dn+2,则上传代理设备在分段上传记录中保存分段Dn+2的镜像ID以及分段Dn+2对应的分段序号。…。上传代理设备接收到数据包Pm之后,根据数据包Pm和镜像ID,为分片Sm添加对象前缀名称Nm得到分段Dm,然后将分段Dm发送到Swift。其中,对象前缀名称Nm包括镜像ID和分段Dm对应的分段序号,分段Dm对应的分段序号是分片序号Im。若Swift接收到分段Dm,则上传代理设备在分段上传记录中保存分段Dm的镜像ID以及分段Dm对应的分段序号。
在另一种可能的实施例中,客户端利用l个线程将数据包Pn+1,Pn+2,...,Pn+l并行发送给上传代理设备,直至上传代理设备接收到数据包Pm。上传代理设备接收到数据包Pn+1,Pn+2,...,Pn+l之后,根据数据包Pn+1,Pn+2,...,Pn+l和镜像ID,分别为分片Sn+1,Sn+2,...,Sn+l添加对象前缀名称 Nn+1,Nn+2,...,Nn+l,从而得到分段Dn+1,Dn+2,...,Dn+l,然后将分段Dn+1,Dn+2,...,Dn+l并行发送给 Swift。其中,对象前缀名称Nn+1包括镜像ID和分段Dn+1对应的分段序号,分段Dn+1对应的分段序号是分片序号In+1;对象前缀名称Nn+2包括镜像ID和分段Dn+2对应的分段序号,分段Dn+2对应的分段序号是分片序号In+2;…;对象前缀名称Nn+l包括镜像ID和分段Dn+l对应的分段序号,分段Dn+l对应的分段序号是分片序号In+l。若Swift接收到分段Dn+1,Dn+2,...,Dn+l,则上传代理设备在分段上传记录中分别保存分段Dn+1,Dn+2,...,Dn+l的镜像ID以及分段Dn+1,Dn+2,...,Dn+l对应的分段序号。
S205、Swift将分片S1,S2,...,Sm合并为第一镜像文件。
在一种可能的实施例中,在客户端向上传代理设备发送断点续传请求之前,Swift中保存了分段D1,D2,...,Dn,Dn+2,Dn+3,...,Dm。其中,分段D1,D2,...,Dn,Dn+2,Dn+3,...,Dm是由上传代理设备根据数据包P1,P2,...,Pn,Pn+2,Pn+3,...,Pm和镜像ID,分别为分片S1,S2,...,Sn,Sn+2,Sn+3,...,Sm添加对象前缀名称N1,N2,...,Nn,Nn+2,Nn+3,...,Nm之后得到的。当Swift接收到分段Dn之后,Swift 根据分段D1,D2,...,Dn,Dn+1,Dn+2,...,Dm的对象前缀名称N1,N2,...,Nn,Nn+1,Nn+2,...,Nm,将分片 S1,S2,...,Sm合并为第一镜像文件。
在另一种可能的实施例中,在客户端向上传代理设备发送断点续传请求之前,Swift中保存了分段D1,D2,...,Dn。其中,分段D1,D2,...,Dn是由上传代理设备根据数据包P1,P2,...,Pn和镜像ID,分别为分片S1,S2,...,Sn添加对象前缀名称N1,N2,...,Nn之后得到的。当Swift接收到分段Dn+1,Dn+2,...,Dm之后,Swift根据分段D1,D2,...,Dn,Dn+1,Dn+2,...,Dm的对象前缀名称 N1,N2,...,Nn,Nn+1,Nn+2,...,Nm,将分片S1,S2,...,Sm合并为第一镜像文件。
S206、上传代理设备根据分段上传记录和分片总量m,获取第一镜像文件的上传进度,然后调用Glance接口刷新第一镜像的镜像状态。
在本申请具体的实施例中,当Swift将分片S1,S2,...,Sm合并为第一镜像文件之后,代理组件调用Glance接口刷新第一镜像的镜像状态,确定第一镜像处于可用状态,从而完成第一镜像的注册。另外,在断点续传上传失败的分片的过程中,上传代理设备也可以调用Glance接口刷新第一镜像的镜像状态。
举例说明,假设第一镜像文件的大小为500GB,预设分片大小为200MB。当文件读取接口接收到第一镜像文件之后,客户端浏览器根据预设分片大小,将第一镜像文件处理为2560 个分片,即分片S1,S2,...,S2560。其中,分片总量为2560个,分片S1,S2,...,S2560的大小均为200MB。浏览器为分片S1,S2,...,S2560依次添加分片序号,得到数据包P1,P2,...,P2560。其中,分片S1的分片序号I1记为00001,分片S2的分片序号I2记为00002,…,分片S2560的分片序号I2560记为 02560。客户端将数据包P1和分片总量发送给上传代理设备,上传代理设备接收数据包P1并调用Glance接口以创建镜像元数据,从而获取镜像ID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),然后根据镜像ID创建一个以镜像ID命名的目标对象文件。上传代理设备接收到数据包P1之后,根据数据包P1和镜像ID为分片S1添加对象前缀名称N1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00001),从而得到分段D1,并将分段D1发送给Swift,当Swift接收到分段D1,上传代理设备在分段上传记录中保存分段D1对应的镜像ID及其分段序号(00001);客户端将数据包P2发送给上传代理设备,上传代理设备接收到数据包P2之后,根据数据包P2和镜像ID为分片S2添加对象前缀名称N2 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-00002),从而得到分段D2,并将分段D2发送给 Swift,当Swift接收到分段D2,上传代理设备在分段上传记录中保存分段D2对应的镜像ID 及其分段序号(00002);…;客户端将数据包P2000发送给上传代理设备,上传代理设备接收到数据包P2000之后,根据数据包P2000和镜像ID为分片S2000添加对象前缀名称N2000 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-02000),从而得到分段D2000,并将分段D2000发送给Swift,当Swift接收到分段D2000,上传代理设备在分段上传记录中保存分段D2000对应的镜像ID及其分段序号(02000)。当客户端向上传代理设备发送数据包P2001时,由于网络中断导致数据包P2001以及剩下的数据包无法发送给上传代理设备。当网络恢复时,客户端向上传代理设备发送断点续传请求。上传代理设备根据断点续传请求,向客户端发送分片序号I2000 (02000)。然后,客户端根据分片序号I2000向上传代理设备发送数据包P2001,上传代理设备接收到数据包P2001之后,根据数据包P2001和镜像ID为分片S2001添加对象前缀名称N2001 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-02001),从而得到分段D2001,并将分段D2001发送给Swift,当Swift接收到分段D2001,上传代理设备在分段上传记录中保存分段D2001对应的镜像ID及其分段序号(02001);…;客户端向上传代理设备发送数据包P2560,上传代理设备接收到数据包P2560之后,根据数据包P2560和镜像ID为分片S2560添加对象前缀名称N2560 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-02560),从而得到分段D2560,并将分段D2560发送给Swift,当Swift接收到分段D2560,上传代理设备在分段上传记录中保存分段D2560对应的镜像ID及其分段序号(02560)。此时,上传代理设备调用Swift接口,使得Swift根据对象前缀名称N1,N2,...,N2560,将分片S1,S2,...,S2560合并为第一镜像文件。另外,上传代理设备在第一镜像文件的上传过程中还根据分段上传记录和分片总量,定期调用Glance接口刷新第一镜像的镜像状态。在Swift将分片S1,S2,...,S2560合并为第一镜像文件之后,上传代理设备通过调用Glance接口刷新第一镜像的镜像状态,得到第一镜像的镜像状态为可用状态,从而完成第一镜像的注册。
应理解,当第一镜像文件的大小小于或者等于预设阈值,且第一镜像文件在上传过程中出现上传中断或者上传失败时,浏览器将重新上传第一镜像文件至上传代理设备,再由上传代理设备转发给Swift进行存储。当Swift重新接收到第一镜像文件时,上传代理设备调用 Glance接口刷新第一镜像文件的镜像状态。
需要说明的,预设分片大小可以是上述实施例中的50MB、200MB,也可以是60MB、150MB等等,此处不作具体限定。
为了简便陈述,本实施例并没有对数据包P1,P2,...,Pn-1,Pn+1,...,PmP1,P2,...,Pm、数据包 P1,P2,...,Pn-1的定义和获取过程、分段D1,D2,...,Dn-1,Dn+1,...,Dm、分段D1,D2,...,Dn-1的定义和获取过程进行详细说明,也没有对Swift将分片S1,S2,…,Sm合并为第一镜像文件的具体过程、上传代理设备调用Glance接口刷新镜像状态的过程进行详细描述,还没有对分段上传记录进行详细描述等等,具体可参见S101-S107及其相关实施例,此处不再展开赘述。本实施例仅介绍了单个分片上传失败的应用场景,类似的上述方法还可以应用于多个分片上传失败的应用场景,此处不再进行赘述。另外,上述两个实施例中仅仅详细介绍了第一镜像文件的上传方法,在实际应用中,第二镜像文件和第三镜像文件等等的上传方法与第一镜像文件的上传过程类似,此处不再展开赘述。
上述方法中,当镜像文件在上传过程中发生上传中断或者上传失败的情况时,客户端通过向上传代理设备发送断点续传请求,从而获取发生断点的分片对应的分片序号,从而使得客户端可以将上传失败的分片重新发送给上传代理设备,从而完成镜像文件的上传过程。可以看出,利用上述方法可以实现镜像文件的断点续传,提高镜像文件的上传成功率以及上传效率。另外,客户端还可以将镜像文件的分片并行发送给上传代理设备,再由上传代理设备将分片并行发送给Swift,从而提供镜像文件的上传效率。
结合上述图1至图6以及相关实施例,下面将以第一镜像文件的上传过程为例,详细阐述本申请实施例涉及的相关装置。
在本申请实施例中,客户端310可以是用户侧的一种用于接收或发射信号的实体,如新一代用户设备(new generation UE,gUE),具体可以包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、移动互联网设备(mobile internet device,MID)、笔记本电脑、智能穿戴设备(如智能手表、智能手环)等等,本申请实施例不作限定。具体请参见图7,图7是本申请提供的一种客户端的结构示意图。客户端310可以包括获取单元410、分片处理单元420 以及发送单元430。其中,
获取单元410用于获取第一镜像文件。
分片处理单元420用于根据预设分片大小对第一镜像文件进行分片操作,得到第一镜像文件的分片S1,S2,...,Sm以及分片总量m,其中,m是正整数。
发送单元430用于将数据包P1,P2,...,Pm和分片总量m发送给上传代理设备。
在本申请具体的实施例中,获取单元410还用于在获取第一镜像文件之后,判断第一镜像文件的大小是否大于预设阈值,若第一镜像文件的大小大于预设阈值,则将第一镜像文件 311发送到分片处理单元420;若第一镜像文件的大小小于或者等于预设阈值,则将第一镜像文件发送到发送单元430,然后再由发送单元430将第一镜像文件发送到上传代理设备。
在一更具体的实施例中,获取单元410可以通过接收用户输入的拖拽指令,并根据拖拽指令获取第一镜像文件;获取单元410还可以通过接收用户输入的选择指令,并根据选择指令获取第一镜像文件等等,此处不作具体限定。
在本申请具体的实施例中,分片处理单元420具体用于根据预设分片大小对第一镜像文件进行分片操作,得到分片S1,S2,...,Sm,并为分片S1添加分片序号I1,分片S2添加分片序号 I2,…,分片Sm添加分片序号Im,从而得到数据包P1,P2,...,Pm。其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2以及分片序号I2,…,数据包Pm包含分片Sm以及分片序号Im。其中,分片序号I1,I2,...,Im用于表示分片S1,S2,...,Sm的先后顺序,也就是说,分片 S1是第1个分片,分片S2第2个分片,…,分片Sm第m个分片。
在一种可能的实施例中,当第一镜像文件在上传过程中未发生上传中断或者上传失败时,发送单元430可以将数据包P1,P2,...,Pm依次发送给上传代理设备。或者,发送单元430使用l 个线程同时将数据包P1,P2,...,Pl发送给上传代理设备,当上传代理设备接收到数据包 P1,P2,...,Pl之后,发送单元430再使用上述l个线程同时将数据包Pl+1,Pl+2,...,P2×l发送给上传代理设备,直至发送单元430将数据包P1,P2,...,Pm全部发送给上传代理设备。其中,1≤l≤m2,l是正整数。可以看出,通过分片并发的方式可以有效地减少上传次数以及文件数据流。
在另一种可能的实施例中,当第一镜像文件在上传过程中出现单个分片(例如数据包对应Pn+1对应的分片Sn+1)上传失败的情况时,发送单元430还用于向上传代理设备发送断点续传请求,以获得分片序号In,其中,断点续传请求中携带了第一镜像文件对应的镜像ID,断点续传请求用于请求发生断点的分片对应的分片序号;根据分片序号In,将数据包Pn+1发送给上传代理设备。应理解,第一镜像文件在上传过程中出现多个分片上传失败的情况与出现单个分片上传失败的情况类似,此处不再展开赘述。
在另一种可能的实施例中,当第一镜像文件在上传过程中出现上传中断的情况(例如,在数据包Pn+1处发生中断)时,发送单元430还用于向上传代理设备发送断点续传请求,以获得分片序号In。其中,断点续传请求中携带了第一镜像文件对应的镜像ID,断点续传请求用于请求发生断点的分片对应的分片序号;根据分片序号In,将数据包Pn+1,Pn+2,...,Pm发送给上传代理设备。其中,发送单元430可以将数据包Pn+1,Pn+2,...,Pm依次发送给上传代理设备,还可以采用并发上传的方式将数据包Pn+1,Pn+2,...,Pm发送给上传代理设备,具体请参见S203。
上述客户端中,分片处理单元通过对镜像文件进行分片,从而实现由客户端将镜像文件分片上传。而且,发送单元还可以实现分片的并发上传,因此利用上述客户端上传镜像文件时,能够更大地提升目标镜像文件的上传效率。另外,当镜像文件在上传过程中出现上传中断或者上传失败时,发送单元通过向上传代理设备发送断点续传请求,获得发生断点的分片对应的分片序号,使得发送单元能够根据发生断点的分片对应的分片序号向上传代理设备发送上传失败的分片对应的数据包。可以看出,利用上述客户端上传镜像文件时,可以实现镜像文件的断点续传以及分片并发上传,不仅能够提高镜像文件的上传效率,还能够提高镜像文件的上传成功率。
本申请提供的上传代理设备可以是软件装置也可以是硬件装置,当上传代理设备为软件装置时,上传代理设备可以单独部署在任意环境(云环境、边缘环境、终端计算设备等)中的一个计算设备上,也可以与Swift、Glance部署在同一个计算设备上;当上传代理设备为硬件设备时,上传代理设备可以是任意环境中的一个计算设备。上传代理设备内部的单元模块也可以有多种划分,各个模块可以是软件模块,也可以是硬件模块,也可以部分是软件模块部分是硬件模块,本申请不对其进行限制。图8为一种示例性的划分方式,如图8所示,上传代理设备320可以包括获取单元510、发送单元520、调用单元530以及进度记录单元540。下面分别介绍每个功能单元的功能。
获取单元510用于接收客户端发送的分片总量m以及数据包P1,P2,...,Pm,其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pm包含分片Sm以及分片序号Im,分片S1,S2,...,Sm是客户端对目标镜像文件进行分片得到的,m为正整数。
发送单元520用于将分片总量m和分片S1,S2,...,Sm发送给Swift。
调用单元530用于在接收客户端发送的数据包P1时,调用Glance创建第一镜像文件对应的镜像ID。
进度记录单元540用于保存第一镜像文件的镜像ID、第一镜像文件的镜像大小、分片 S1,S2,...,Sm的大小以及分片序号I1,I2,...,Im。
在本申请具体的实施例中,发送单元520在向Swift发送分片S1,S2,...,Sm之前,发送单元 520还用于对分片S1,S2,...,Sm添加对应的对象前缀名称,从而得到分段D1,D2,...,Dm,然后将分段D1,D2,...,Dm发送给Swift。其中,分片S1对应的对象前缀名称N1包括镜像ID和分片序号I1,分片S2对应的对象前缀名称N2包括镜像ID和分片序号I2,…,分片Sm对应的对象前缀名称Nm包括镜像ID和分片序号Im。
在一种可能的实施例中,当第一镜像文件在上传过程中未发生上传中断或者上传失败时,发送单元520为分片S1添加对象前缀名称N1得到分段D1,然后将分段D1发送到Swift,若 Swift接收到分段D1,则在进度记录单元540的中保存分段D1的镜像ID和分片序号I1;发送单元520为分片S2添加对象前缀名称N2得到分段D2,然后将分段D2发送到Swift,若Swift 接收到分段D2,则在进度记录单元540的中保存分段D2的镜像ID和分片序号I2;…;发送单元520为分片Sm添加对象前缀名称Nm得到分段Dm,然后将分段Dm发送到Swift,若Swift接收到分段Dm,则在进度记录单元540中保存分段Dm镜像ID和分片序号Im。
在另一种可能的实施例中,当第一镜像文件在上传过程中未发生上传中断或者上传失败时,发送单元520分别为分片S1,S2,...,Sl添加对象前缀名称N1,N2,...,Nl得到分段D1,D2,...,Dl,然后将分段D1,D2,...,Dl并行发送到Swift。若Swift接收到分段D1,D2,...,Dl,则在进度记录单元540中分别保存分段D1,D2,...,Dl的镜像ID以及分段D1,D2,...,Dl对应的分片序号I1,I2,...,Il。应理解,上传代理设备将分片Sl+1,Sl+2,...,S2×l并行发送给Swift的过程,…,将分片 Sm-l+1,Sm-l+2,...,Sm并行发送给Swift的过程与上传代理设备将分片S1,S2,...,Sl并行发送给Swift 的过程类似,此处不再展开具体赘述。
在另一种可能的实施例中,当第一镜像文件在上传过程中出现单个分片(例如数据包对应Pn+1对应的分片Sn+1)上传失败的情况,也就是获取单元510仅仅接收到客户端发送的数据包P1,P2,...,Pn,Pn+2,Pn+3,...,Pm时,获取单元510还用于接收客户端发送的断点续传请求,发送单元520还用于将进度记录单元540中保存的分片序号In发送给客户端。之后,获取单元510 还用于接收客户端根据分片序号In发送的数据包Pn+1,发送单元520还用于为分片Sn+1添加对象前缀名称Nn+1,得到分段Dn+1,并将分段Dn+1发送给Swift。若Swift接收到分段Dn+1,则在进度记录单元540中保存分段Dn+1的镜像ID和分片序号In+1。应理解,第一镜像文件在上传过程中出现多个分片上传失败的情况与出现单个分片上传失败的情况类似,此处不再展开赘述。
在另一种可能的实施例中,当第一镜像文件在上传过程中出现上传中断(例如,在数据包Pn+1处发生中断)的情况,也就是获取单元510仅仅接收到客户端发送的数据包P1,P2,...,Pn时,获取单元510还用于接收客户端发送的断点续传请求,发送单元520还用于将进度记录单元540中保存的分片序号In发送给客户端。之后,获取单元510还用于接收客户端根据分片序号In从数据包Pn+1开始续传的剩下的数据包(Pn+1,Pn+2,...,Pm),发送单元520还用于为分片 Sn+1,Sn+2,...,Sm添加对象前缀名称Nn+1,Nn+2,...,Nm,得到分段Dn+1,Dn+2,...,Dm,并将分段 Dn+1,Dn+2,...,Dm发送给Swift。若Swift接收到分段Dn+1,Dn+2,...,Dm,则在进度记录单元540 中分别保存分段Dn+1,Dn+2,...,Dm对应的镜像ID和分片序号In+1,In+2,...,Im。
在本申请具体的实施例中,在Swift接收到分段Dm之后,也就是进度记录单元540保存有分段D1,D2,...,Dm的镜像ID和对应的分片序号I1,I2,...,Im之后,调用单元530还用于调用 Swift还原第一镜像文件。
在本申请具体的实施例中,调用单元530还用于在Swift将分片S1,S2,...,Sm合并为第一镜像文件之后,调用Glance刷新第一镜像的镜像状态,以确定第一镜像处于可用状态,从而完成第一镜像的注册。另外,调用单元530还可以在第一镜像文件的上传过程中实时调用Glance 刷新第一镜像的镜像状态,此处不作具体限定。
为了简便陈述,本实施例中并没有对上传代理设备调用Swift还原第一镜像文件的具体过程进行详细阐述,也没有对上传代理设备调用Glance刷新第一镜像的镜像状态的具体过程进行详细阐述,还没有上传代理设备发送分片对应的分段的具体过程进行详细阐述,具体请参见图5-图6以及S103-S106、S202-S205的部分或者全部步骤,此处不再展开赘述。
可以看出,该上传代理设备的获取单元接收到客户端发送的数据包,可以得到镜像文件的分片,然后由发送单元将分片对应的分段转发给Swift,使得Swift能够根据分段得到对象前缀名称和分片,从而在无需本地缓存的基础上将分片还原为镜像文件,实现目标镜像文件的上传。而且,当目标镜像文件在上传过程中出现上传中断或者上传失败时,发送单元可以将发生断点的分片对应的分片序号发送给客户端,使得客户端能够根据发生断点的分片对应的分片序号继续上传镜像文件中上传失败的分片,从而大大提高镜像文件的上传效率和上传成功率。
如图9所示,图9示出了本申请提供的另一种客户端的结构示意图。客户端310具体可以包括处理器610、通信接口620和存储器630。其中,处理器610、通信接口620以及存储器630通过总线640进行耦合。
处理器610可以是中央处理器(central processing unit,CPU),通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件(programmable logic device,PLD)、晶体管逻辑器件、硬件部件或者其任意组合。处理器610可以实现或执行结合本申请公开内容所描述的各种示例性的方法。具体的,处理器610读取存储器630中存储的程序代码,并与通信接口620配合执行S101-S103、S201、S203的部分或者全部步骤。
通信接口620可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、控制器局域网络接口、局域互联网络(local interconnectnetwork,LIN)以及 FlexRay接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。具体的,通信接口 620可以与上传代理设备320等等。
存储器630可以包括易失性存储器,例如随机存取存储器(random accessmemory,RAM);存储器630也可以包括非易失性存储器,例如只读存储器(read onlymemory,ROM)、快闪存储器、硬盘(hard disk drive,HDD)或固态硬盘(solid state drive,SSD),存储器630还可以包括上述种类的存储器的组合。存储器630可以存储有程序代码以及程序数据。其中,程序代码由图7示出的客户端中的部分或者全部单元的代码组成,例如,获取单元410的代码、分片处理单元420的代码以及发送单元430的代码等等。程序数据由图7示出的客户端在运行程序的过程中产生的数据,例如,分片S1,S2,...,Sm、数据包P1,P2,...,Pm、镜像文件的大小、以及分片数量等等。
总线640可以是控制器局域网络(controller area network,CAN)或其他实现内部总线。总线 640可以分为地址总线、数据总线、控制总线等。为了便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
如图10所示,图10示出了本申请提供的另一种上传代理设备的结构示意图。上传代理设备320具体可以包括处理器710、通信接口720和存储器730。其中,处理器710、通信接口720以及存储器730通过总线740进行耦合。
处理器710可以是CPU,通用处理器、DSP、ASIC、FPGA或者其他PLD、晶体管逻辑器件、硬件部件或者其任意组合。处理器710可以实现或执行结合本申请公开内容所描述的各种示例性的方法。具体的,处理器710读取存储器730中存储的程序代码,并与通信接口 720配合执行S103-S106、S202-S205的部分或者全部步骤。
通信接口720可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、控制器局域网络接口、LIN以及FlexRay接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。具体的,通信接口720可以与网络设备750连接,网络设备750可以包括客户端310、Swift330以及Glance340等等。
存储器730可以包括易失性存储器,例如RAM;存储器730也可以包括非易失性存储器,例如ROM、快闪存储器、HDD或SSD,存储器730还可以包括上述种类的存储器的组合。存储器730可以存储有程序代码以及程序数据。其中,程序代码由图8示出的上传代理设备中的部分或者全部单元的代码组成,例如,获取单元510的代码、发送单元520的代码以及调用单元530的代码等等。程序数据由图8示出的上传设备在运行程序的过程中产生的数据,例如,分段D1,D2,...,Dm、对象前缀名称N1,N2,...,Nm、分段上传记录等等。
总线740可以是CAN或其他实现内部总线。总线740可以分为地址总线、数据总线、控制总线等。为了便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请还提供了一种计算机存储介质,上述计算机存储介质存储有计算机指令,上述计算机指令被硬件(例如处理器等)执行,以实现本申请中由客户端310执行的部分或全部步骤(例如,S101-103、S201、S203)。
本申请还提供了一种计算机存储介质,上述计算机存储介质存储有计算机指令,上述计算机指令被硬件(例如处理器等)执行,以实现本申请中由上传代理设备320中执行部分或全部步骤(例如,S103-S106、S202-S205)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机指令产品的形式实现。上述计算机指令产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机指令指令时,全部或部分地产生按照本申请实施例所述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(如,同轴电缆、光纤、数字用户线) 或无线(如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(如,软盘、存储盘、磁带)、光介质(如,DVD)、或者半导体介质(如,SSD)等。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,也可以通过其它的方式实现。例如以上所描述的装置实施例仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可结合或者可以集成到另一个系统,或一些特征可以忽略或不执行。另一点,所显示或讨论的相互之间的间接耦合或者直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例的方案的目的。
另外,在本申请各实施例中的各功能单元可集成在一个处理单元中,也可以是各单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质例如可包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或光盘等各种可存储程序代码和数据文件的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (21)
1.一种镜像文件上传方法,应用于客户端,其特征在于,包括:
获取目标镜像文件;
对所述目标镜像文件进行分片,获得分片S1,S2,...,Sm和分片总量m,其中,m为正整数;
将数据包P1,P2,...,Pn和所述分片总量m发送给上传代理设备,其中,所述数据包P1包含分片S1和分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,n为正整数,并且n≤m。
2.根据权利要求1所述的方法,其特征在于,在n小于m的情况下,所述方法还包括:向所述上传代理设备发送断点续传请求,以获得所述分片序号In,其中,所述断点续传请求用于请求发生断点的分片对应的分片序号;
根据所述分片序号In,将数据包Pn+1发送给所述上传代理设备。
3.根据权利要求2所述的方法,其特征在于,所述将数据包P1,P2,...,Pn发送给上传代理设备包括:
利用l个线程,将数据包P1,P2,...,Pl并行发送给所述上传代理设备;利用所述l个线程,将数据包Pl+1,Pl+2,...,P2×l并行发送给所述上传代理设备;…;利用所述l个线程,将数据包Pn-l+1,Pn-l+2,...,Pn并行发送给所述上传代理设备,其中,1≤l≤n/2,l是正整数。
4.一种镜像文件的上传方法,应用于上传代理设备,其特征在于,包括:
接收客户端发送的分片总量m以及数据包P1,P2,...,Pn,其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,分片S1,S2,...,Sm是所述客户端对目标镜像文件进行分片得到的,m和n均为正整数,并且n≤m;
将所述分片总量m和分片S1,S2,...,Sn发送给对象存储设备。
5.根据权利要求4所述的方法,其特征在于,在n小于m的情况下,在接收客户端发送的分片总量m以及数据包P1,P2,...,Pn之后,所述方法还包括:
接收所述客户端发送的数据包Pn+2,Pn+3,...,Pm,并将分片Sn+2,Sn+3,...,Sm发送给所述对象存储设备,其中,数据包Pn+2包含分片Sn+2以及分片序号In+2,数据包Pn+3包含分片Sn+3以及分片序号In+3,…,数据包Pm包含分片Sm以及分片序号Im;
接收所述客户端发送的断点续传请求;
根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;
接收所述客户端根据所述分片序号In发送的数据包Pn+1,并将所述数据包Pn+1发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述数据包Pn+1包含分片Sn+1以及分片序号In+1。
6.根据权利要求4所述的方法,其特征在于,在n小于m的情况下,所述方法还包括:
接收所述客户端发送的断点续传请求;
根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;
接收所述客户端根据所述分片序号In从所述数据包Pn+1开始续传的剩下的数据包,并将所述剩下的数据包对应的分片发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述剩下的数据包包括数据包Pn+1,Pn+2,...,Pm,所述数据包Pn+1包含分片Sn+1以及分片序号In+1,所述数据包Pn+2包含分片Sn+2以及分片序号In+2,…,数据包Pm包含分片Sm以及分片序号Im。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
在接收所述客户端发送的所述数据包P1时,调用镜像管理设备创建所述目标镜像文件对应的镜像标识,并保存所述镜像标识。
8.根据权利要求4至7任一项权利要求所述的方法,其特征在于,所述方法还包括:调用所述镜像管理设备刷新所述目标镜像文件对应的镜像状态。
9.一种客户端,其特征在于,包括:
获取单元,用于获取目标镜像文件;
分片处理单元,用于对所述目标镜像文件进行分片,获得分片S1,S2,...,Sm和分片总量m,其中,m为正整数;
发送单元,用于将数据包P1,P2,...,Pn和所述分片总量m发送给上传代理设备,其中,所述数据包P1包含分片S1和分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,n为正整数,并且n≤m。
10.根据权利要求9所述的客户端,其特征在于,在n小于m的情况下,所述发送单元还用于:
向所述上传代理设备发送断点续传请求,以获得所述分片序号In,其中,所述断点续传请求用于请求发生断点的分片对应的分片序号;
根据所述分片序号In,将数据包Pn+1发送给所述上传代理设备。
11.根据权利要求10所述的客户端,其特征在于,所述发送单元具体用于:
利用l个线程,将数据包P1,P2,...,Pl并行发送给所述上传代理设备;利用所述l个线程,将数据包Pl+1,Pl+2,...,P2×l并行发送给所述上传代理设备;…;利用所述l个线程,将数据包P1,P2,...,Pn并行发送给所述上传代理设备,其中,1≤l≤n/2,l是正整数。
12.一种上传代理设备,其特征在于,包括:
获取单元,用于接收客户端发送的分片总量m以及数据包P1,P2,...,Pn,其中,数据包P1包含分片S1以及分片序号I1,数据包P2包含分片S2和分片序号I2,…,数据包Pn包含分片Sn以及分片序号In,分片S1,S2,...,Sm是所述客户端对目标镜像文件进行分片得到的,m和n均为正整数,并且n≤m;
发送单元,用于将所述分片总量m和分片S1,S2,...,Sn发送给对象存储设备。
13.根据权利要求12所述的设备,其特征在于,在n小于m的情况下,在所述获取单元接收客户端发送的分片总量m以及数据包P1,P2,...,Pn之后,
所述获取单元还用于接收所述客户端发送的数据包Pn+2,Pn+3,...,Pm,并将分片Sn+2,Sn+3,...,Sm发送给所述对象存储设备,其中,数据包Pn+2包含分片Sn+2以及分片序号In+2,数据包Pn+3包含分片Sn+3以及分片序号In+3,…,数据包Pm包含分片Sm以及分片序号Im;
所述获取单元还用于接收所述客户端发送的断点续传请求;
所述发送单元还用于根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;
所述获取单元还用于接收所述客户端根据所述分片序号In发送的数据包Pn+1,并将所述数据包Pn+1发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述数据包Pn+1包含分片Sn+1以及分片序号In+1。
14.根据权利要求12所述的设备,其特征在于,在n小于m的情况下,
所述获取单元还用于接收所述客户端发送的断点续传请求;
所述发送单元还用于根据所述断点续传请求,将发生断点的分片对应的分片序号In发送给所述客户端;
所述获取单元还用于接收所述客户端根据所述分片序号In从所述数据包Pn+1开始续传的剩下的数据包,并将所述剩下的数据包对应的分片发送给所述对象存储设备,以供所述对象存储设备根据所述分片S1,S2,...,Sm还原所述目标镜像文件,其中,所述剩下的数据包包括数据包Pn+1,Pn+2,...,Pm,所述数据包Pn+1包含分片Sn+1以及分片序号In+1,所述数据包Pn+2包含分片Sn+2以及分片序号In+2,…,数据包Pm包含分片Sm以及分片序号Im。
15.根据权利要求13或14所述的设备,其特征在于,所述设备还包括调用单元和进度记录单元,
所述调用单元用于,在接收所述客户端发送的所述数据包P1时,调用镜像管理设备创建所述目标镜像文件对应的镜像标识;
所述进度记录单元用于,保存所述镜像标识。
16.根据权利要求12至15任一项权利要求所述的设备,其特征在于,所述调用单元还用于:调用所述镜像管理设备刷新所述目标镜像文件对应的镜像状态。
17.一种镜像文件上传系统,其特征在于,所述系统包括权利要求9至11任一项权利要求所述的客户端、权利要求12至16任一项权利要求所述的上传代理设备、对象存储设备以及镜像服务设备,其中,
所述对象存储设备用于接收所述上传代理设备发送的所述分片S1,S2,...,Sm,并将所述分片S1,S2,...,Sm还原为所述目标镜像文件;
所述镜像管理设备用于创建所述目标镜像文件对应的镜像标识;
所述镜像管理设备还用于刷新所述目标镜像文件的镜像状态。
18.一种客户端,其特征在于,包括处理器和存储器,所述处理器执行所述存储器中的代码以实现权利要求1至3任一项权利要求所述的方法。
19.一种上传代理设备,其特征在于,包括处理器和存储器,所述处理器执行所述存储器中的代码以实现权利要求4至8任一项权利要求所述的方法。
20.一种计算机存储介质,其特征在于,存储有计算机指令;所述计算机指令用于实现权利要求1至3任一项权利要求所述的方法。
21.一种计算机存储介质,其特征在于,存储有计算机指令;所述计算机指令用于实现权利要求4至8任一项权利要求所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010183182.6A CN113411363A (zh) | 2020-03-16 | 2020-03-16 | 一种镜像文件的上传方法、相关设备及计算机存储介质 |
PCT/CN2021/075236 WO2021184992A1 (zh) | 2020-03-16 | 2021-02-04 | 一种镜像文件的上传方法、相关设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010183182.6A CN113411363A (zh) | 2020-03-16 | 2020-03-16 | 一种镜像文件的上传方法、相关设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113411363A true CN113411363A (zh) | 2021-09-17 |
Family
ID=77676598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010183182.6A Pending CN113411363A (zh) | 2020-03-16 | 2020-03-16 | 一种镜像文件的上传方法、相关设备及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113411363A (zh) |
WO (1) | WO2021184992A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114911580A (zh) * | 2022-07-11 | 2022-08-16 | 统信软件技术有限公司 | 镜像状态处理方法、装置与计算设备 |
CN114968937A (zh) * | 2022-05-31 | 2022-08-30 | 济南浪潮数据技术有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN115277682A (zh) * | 2022-08-02 | 2022-11-01 | 中信百信银行股份有限公司 | 一种海量小文件的归集方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401260B (zh) * | 2021-12-18 | 2024-05-28 | 杭州安恒信息技术股份有限公司 | 微服务集群文件分片上传方法、系统、设备和存储介质 |
CN116233120B (zh) * | 2023-05-10 | 2023-07-14 | 深圳普菲特信息科技股份有限公司 | 一种基于数据处理的大文件分片传输方法、系统和介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581216B (zh) * | 2012-07-20 | 2017-12-19 | 中国电信股份有限公司 | 分片数据存储的方法、设备和系统 |
CN104144186B (zh) * | 2013-05-10 | 2017-12-01 | 中国电信股份有限公司 | 云计算环境中基于Web浏览器的数据上传方法与系统 |
CN107426258B (zh) * | 2016-05-23 | 2020-04-28 | 华为技术有限公司 | 一种镜像文件的上传和下载方法及装置 |
CN107360233A (zh) * | 2017-07-14 | 2017-11-17 | 世纪龙信息网络有限责任公司 | 文件上传的方法、装置、设备及可读存储介质 |
CN108933837A (zh) * | 2018-08-07 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种镜像文件的传输方法及装置 |
CN109783193A (zh) * | 2018-12-27 | 2019-05-21 | 南京优速网络科技有限公司 | 一种可在多域云平台中复用的镜像文件管理方法 |
-
2020
- 2020-03-16 CN CN202010183182.6A patent/CN113411363A/zh active Pending
-
2021
- 2021-02-04 WO PCT/CN2021/075236 patent/WO2021184992A1/zh active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968937A (zh) * | 2022-05-31 | 2022-08-30 | 济南浪潮数据技术有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN114911580A (zh) * | 2022-07-11 | 2022-08-16 | 统信软件技术有限公司 | 镜像状态处理方法、装置与计算设备 |
CN114911580B (zh) * | 2022-07-11 | 2022-09-27 | 统信软件技术有限公司 | 镜像状态处理方法、装置与计算设备 |
CN115277682A (zh) * | 2022-08-02 | 2022-11-01 | 中信百信银行股份有限公司 | 一种海量小文件的归集方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021184992A1 (zh) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10700979B2 (en) | Load balancing for a virtual networking system | |
JP6569020B2 (ja) | ネットワーキング技術 | |
CN113411363A (zh) | 一种镜像文件的上传方法、相关设备及计算机存储介质 | |
US9350682B1 (en) | Compute instance migrations across availability zones of a provider network | |
US20170264610A1 (en) | Data processing method and apparatus based on mobile application entrance and system | |
US10313282B1 (en) | Flexible middleware messaging system | |
US11095716B2 (en) | Data replication for a virtual networking system | |
US20170124021A1 (en) | Methods for enabling direct memory access (dma) capable devices for remote dma (rdma) usage and devices thereof | |
CN104144202B (zh) | Hadoop分布式文件系统的访问方法、系统和装置 | |
US12074918B2 (en) | Network-based Media Processing (NBMP) workflow management through 5G Framework for Live Uplink Streaming (FLUS) control | |
CN110196843A (zh) | 一种基于容器集群的文件分发方法及容器集群 | |
US10545667B1 (en) | Dynamic data partitioning for stateless request routing | |
CN115878046A (zh) | 数据处理方法、系统、装置、存储介质及电子设备 | |
CN111225003B (zh) | 一种nfs节点配置方法和装置 | |
US11307912B1 (en) | Forward message compatibility safety in producer-consumer systems | |
CN109479214B (zh) | 一种负载均衡的方法及相关装置 | |
US11354204B2 (en) | Host multipath layer notification and path switchover following node failure | |
CN108829340B (zh) | 存储处理方法、装置、存储介质及处理器 | |
CN110798366B (zh) | 任务逻辑的处理方法、装置及设备 | |
US20170235631A1 (en) | Resilient distributed storage system | |
US11973687B2 (en) | Multilayer decentralized server network | |
CN110058790B (zh) | 用于存储数据的方法、设备和计算机程序产品 | |
US11442943B1 (en) | Error-causing record isolation for data stream processing | |
US9961027B2 (en) | Email webclient automatic failover | |
CN113452539B (zh) | 源站切换方法、装置、电子设备及存储介质 |
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 |