CN107832097B - 数据加载方法及装置 - Google Patents

数据加载方法及装置 Download PDF

Info

Publication number
CN107832097B
CN107832097B CN201710918182.4A CN201710918182A CN107832097B CN 107832097 B CN107832097 B CN 107832097B CN 201710918182 A CN201710918182 A CN 201710918182A CN 107832097 B CN107832097 B CN 107832097B
Authority
CN
China
Prior art keywords
volume
data
virtual machine
loading
target
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
Application number
CN201710918182.4A
Other languages
English (en)
Other versions
CN107832097A (zh
Inventor
曹岳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710918182.4A priority Critical patent/CN107832097B/zh
Publication of CN107832097A publication Critical patent/CN107832097A/zh
Application granted granted Critical
Publication of CN107832097B publication Critical patent/CN107832097B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

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)

Abstract

本申请实施例提供了一种数据加载方法及装置,涉及计算机领域。该方法包括:在虚拟机启动之后获取虚拟机的写请求,写请求用于将虚拟机生成的虚拟机数据写入虚拟机的卷中的目标位置;在卷的属性为延迟加载属性时,从位表卷中获取目标位置的加载状态,位表卷是在创建空白的卷时创建的,位表卷用于指示卷中各个位置上的数据的加载状态,加载状态包括未加载、加载中和已加载,加载中用于指示正在从镜像文件中加载对应位置上的数据;在目标位置的加载状态为加载中时,暂停响应写请求,直至目标位置的加载状态为已加载时,将虚拟机数据写入卷中的目标位置;可以解决数据加载过程中的数据冲突的问题;提高了虚拟机加载数据的准确性。

Description

数据加载方法及装置
技术领域
本申请涉及计算机领域,特别涉及一种数据加载方法及装置。
背景技术
虚拟化技术是云计算系统中的一种重要技术,通过虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。通过虚拟化技术对中央处理器(Central Processing Unit,CPU)、内存、网络等进行虚拟化,可以允许一个云计算系统中同时运行多个虚拟机,并且每一个虚拟机都可以独立运行而互不影响。另外,为了提高创建虚拟机的效率,云计算系统中会保存镜像文件,镜像文件是创建虚拟机所需要的光盘镜像文件,通过对镜像文件的拷贝能够创建一台新的虚拟机。
云计算系统通常包括以下几个模块:云平台、云主机、云存储和镜像服务器。其中,云平台是管理员与云计算系统进行人机交互的平台,云平台中运行有虚拟机管理程序,该虚拟机管理程序可以是web版的网页客户端,该虚拟机管理程序用于触发云主机执行虚拟机的创建、启动、删除等操作。云主机中运行有至少一个卷管理程序和镜像管理程序,当卷管理程序为多个时,该多个卷管理程序中包括一个主卷管理程序。主卷管理程序用于为虚拟机在云存储中创建对应的卷,并通过镜像管理程序从镜像服务器中获取镜像文件写入卷,该主卷管理程序还用于为其他卷管理程序分配数据加载任务。云存储包括每个卷管理程序所管理的卷,每个卷管理程序负责管理至少一个卷。镜像服务器中存储有至少一个镜像文件。
由于镜像文件的数据量较大,相关技术提供了一种延迟加载(Lazyload)技术来实现虚拟机的快速创建。在管理员通过虚拟机管理程序触发云主机创建虚拟机时,云主机先通过卷管理程序在云存储中创建与该虚拟机对应的空白的延迟加载卷,并将该延迟加载卷挂载至云主机,然后通过镜像管理程序创建该空白的卷与镜像文件之间的关联关系,这时可以不用将镜像文件全部载入到延迟加载卷中,就可以将这个延迟加载卷挂载给云主机中的虚拟机进行正常使用。在虚拟机需要加载镜像文件中的目标数据时,先通过卷管理程序查询延迟加载卷中是否存储有目标数据;若延迟加载卷中存储有该目标数据,则从延迟加载卷中读取该目标数据并传递给虚拟机;若延迟加载卷中未存储有该目标数据,则卷管理程序通过镜像管理程序根据关联关系从镜像服务器中将该目标数据读取至延迟加载卷中,并将该延迟加载卷中的目标数据传递给虚拟机。虚拟机获取到请求加载的目标数据后,根据该目标数据进行输入/输出(Input/Output,I/O)操作,得到虚拟机数据,通过卷管理程序将该虚拟机数据写入延迟加载卷中。
除了虚拟机按需加载镜像文件中的目标数据之外,其它卷管理程序还会后台将镜像文件按照数据顺序加载到延迟加载卷中。当镜像文件全部加载至延迟加载卷后,延迟加载卷转成普通卷,并删除延迟加载卷与镜像文件之间的关联关系。但是在后台加载镜像文件时,若虚拟机产生的虚拟机数据需要写入延迟加载卷的存储位置A,后台加载的镜像文件也需要写入延迟加载卷的存储位置A时,会发生数据写入冲突而导致数据错误。
发明内容
本申请提供了一种数据加载方法及装置,可以解决数据加载过程中产生的数据冲突的问题。所述技术方案如下:
第一方面,提供了一种数据加载方法,该方法包括:在虚拟机启动之后获取虚拟机的写请求;在卷的属性为延迟加载属性时,从位表卷中获取该写请求中目标位置的加载状态;
在目标位置的加载状态为加载中时,暂停响应写请求,直至目标位置的加载状态为已加载时,将虚拟机数据写入卷中的目标位置。其中,写请求用于将虚拟机生成的虚拟机数据写入虚拟机的卷中的目标位置;位表卷是在创建空白的卷时创建的,位表卷用于指示卷中各个位置上的数据的加载状态;该加载状态包括未加载、加载中和已加载,加载中用于指示正在从镜像文件中加载对应位置上的数据。
通过创建卷对应的位表卷,该位表卷用于存储卷中每个存储位置的数据对应的加载状态,当卷管理程序需要写入虚拟机生成的虚拟机数据时,先获取该虚拟机数据对应的目标位置的加载状态,在该目标位置的加载状态为加载中时,说明该目标位置对应的数据正在从镜像服务器加载,此时,不将虚拟机数据写入卷;可以解决镜像文件中的数据覆盖虚拟机数据,导致数据冲突的问题;由于虚拟机数据是在镜像文件中的数据写入卷中之后再写入卷,因此,避免了新旧数据冲突的问题,可以提高卷中数据的准确性。
结合第一方面,在第一方面的第一种实现中,从位表卷中获取目标位置的加载状态之后,还包括:在目标位置的加载状态为未加载时,将虚拟机数据写入卷中的目标位置;在位表卷中将目标位置的加载状态切换为已加载;在目标位置的加载状态为已加载时,将虚拟机数据写入卷中的目标位置。
由于当目标位置的加载状态为未加载状态时,说明卷中目标位置对应的数据还未从镜像服务器开始加载,因此,不会存在镜像文件中的数据覆盖虚拟机数据的问题,此时,虚拟机对应的卷管理程序直接将虚拟机数据写入卷中对应的位置。另外,在将虚拟机数据写入卷中之后,为了防止出现存在一个卷管理程序再次从镜像服务器中加载该目标位置对应的数据,使得镜像文件中的数据覆盖虚拟机数据的情况,虚拟机对应的卷管理程序还需要将目标位置的加载状态从未加载修改为已加载,这样,后续卷管理程序直接从该目标位置读取虚拟机数据即可,保证了卷中数据的准确性。
结合第一方面或第一方面的第一种实现,在第一方面的第二种实现中,在虚拟机启动之后获取虚拟机的读请求;确定卷中是否存储有目标数据;在卷中未存储有目标数据时,从位表卷中获取目标位置的加载状态;在目标位置的加载状态为加载中时,暂停响应读请求,直至目标位置的加载状态切换至已加载时,将卷中的目标数据发送至虚拟机。其中,读请求用于读取卷中目标位置上的目标数据。
通过创建卷对应的位表卷,该位表卷用于存储卷中每个存储位置的数据对应的加载状态,当存在一个卷管理层程序请求加载目标数据,卷中未存储该目标数据,且该目标数据的加载状态为加载中时,说明该目标数据正在从镜像服务器加载,此时不需要再次从镜像服务器加载该数据;可以解决卷中同一存储位置上的数据被加载多次的问题;节省了多次加载卷中同一位置的数据时消耗的资源。
结合第一方面的第二种实现,在第一方面的第三种实现中,从位表卷中获取目标位置的加载状态之后,还包括:在目标位置的加载状态为未加载时,从镜像文件中加载目标数据,并在位表卷中将目标位置的加载状态切换为加载中;将镜像文件中的目标数据写入卷,并在位表卷中将目标数据的加载状态从加载中切换为已加载,卷与镜像文件相关联。
结合第一方面的第二种实现或第一方面的第三种实现,在第一方面的第四种实现中,在虚拟机启动之后,还包括:将镜像文件中的未加载数据加载至卷中,并在位表卷中将正在加载的数据对应的加载状态修改为加载中,未加载数据是指位表卷指示的加载状态为未加载的数据;在镜像文件的全部数据加载至卷后,删除位表卷。
由于镜像文件中的数据全部加载至卷中时,无需再在后台从镜像服务器加载数据,因此,不会再出现旧数据覆盖新数据的问题,此时,将位表卷删除,既可以保证虚拟机加载的数据的准确性,又可以节省云存储中的存储资源。
结合第一方面的第四种实现,在第一方面的第五种实现中,在镜像文件的全部数据加载至卷之后,还包括:将卷的属性从延迟加载属性转变为普通属性,卷是在创建虚拟机时创建的,卷初始的属性为延迟加载属性。
若镜像文件中的数据全部加载至卷后,卷管理程序未修改卷的属性,在后台从镜像服务器加载数据的卷管理程序可能会不断地检测该卷中是否存在未加载的数据,浪费后台加载数据的资源。本实施例中,由于镜像文件中的数据全部加载至卷中时,无需再从镜像服务器中加载数据,此时,将卷的属性由延迟加载属性转变为普通属性,可以指示卷管理程序无需再检测该卷中是否存在未加载的数据,节省了后台加载数据的资源。
结合第一方面的第三种实现至第五种实现中的任意一种,在第一方面的第六种实现中,将镜像文件中的目标数据写入卷,包括:将目标数据写入镜像文件对应的缓存卷中;将缓存卷中的目标数据写入卷。
通过在云存储中创建缓存卷,云主机中的各个卷管理程序在从镜像服务器加载目标数据之前,先在该缓存卷中查找目标数据;这样,缓存卷中每个存储位置对应的数据只需要从镜像服务器中加载一次;使得镜像服务器无需对同一存储位置的数据处理多次,降低了镜像服务器处理镜像数据的压力。
结合第一方面的第六种实现,在第一方面的第七种实现中,将镜像文件中的目标数据写入卷,包括:当虚拟机是第一个请求读取目标数据的虚拟机时,将目标数据写入缓存卷。
结合第一方面的第六种实现,在第一方面的第八种实现中,所述将所述缓存卷中的所述目标数据写入所述卷之前,还包括:当虚拟机不是第一个请求读取目标数据的虚拟机且目标数据正在被其他虚拟机请求写入缓存卷时,暂停响应读请求,直至将目标数据写入缓存卷时,响应读请求将缓存卷中的目标数据写入卷。
第二方面,提供了一种数据加载装置,该装置具有实现上述第一方面或第一方面任意一种实现所提供的数据加载方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多于一个与上述功能相对应的单元。
第三方面,提供了一种数据加载设备,该设备包括:处理器、与所述处理器相连的存储器,所述处理器执行所述存储器中存储的指令实现上述第一方面或第一方面任意一种实现所提供的数据加载方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在数据加载设备上运行时,使得数据加载设备执行上述第一方面或第一方面中的任意一种实现所提供的数据加载方法。
附图说明
图1是本申请一个示例性实施例提供的数据加载系统的结构示意图;
图2A和图2B是本申请一个示例性实施例提供的相关技术中的数据加载方法的示意图;
图3是本申请一个示例性实施例提供的数据加载方法的流程图;
图4是本申请一个示例性实施例提供的数据加载的示意图;
图5是本申请一个示例性实施例提供的写入虚拟机数据的示意图;
图6是本申请一个示例性实施例提供的数据加载的示意图;
图7是本申请一个示例性实施例提供的数据加载的示意图;
图8是本申请一个示例性实施例提供的数据加载的示意图;
图9是本申请一个实施例提供的数据加载装置的框图;
图10是本申请一个实施例提供的数据加载设备的结构图。
具体实施方式
本文所提及的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,如无特殊说明,只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
在本文中提及的“单元”通常是指按照逻辑划分的功能性结构,该“单元”可以由纯硬件实现,或者,软硬件的结合实现。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
首先,对本申请涉及的若干个名词进行介绍。
虚拟机(Virtual Machine,VM):是指通过软件模拟的计算机系统。虚拟机具有完整的硬件系统功能、且运行在与真实的操作系统相隔离的运行环境中。
虚拟机是根据真实的操作系统的镜像文件生成的,它具有与真实的操作系统相同的功能。在使用虚拟机时,所有操作是在一个全新的、独立的虚拟的操作系统中进行,并且在该虚拟机中可以安装软件、保存数据,拥有该虚拟机对应的桌面,且不会对真实的操作系统产生影响。
卷:是指用于供虚拟机访问数据的存储资源。
可选地,本申请中的卷为逻辑卷。逻辑卷是由多个逻辑分区组成的集合,逻辑卷中的逻辑分区是连续的,但是两个连续的逻辑分区对应的物理分区可能不连续。比如:两个连续的逻辑分区对应的物理分区在不同的磁盘上。
逻辑分区是指映射到物理分区上的逻辑单位,一个逻辑分区可以对应一个或多个物理分区。
物理分区是把物理卷划分成连续的、大小相等的存储单位得到的。
物理卷是用于存储数据的存储设备,包括可移动存储设备和不可移动存储设备,比如:硬盘。
下面对本申请的一种示例性的实施环境进行介绍。
请参考图1,其示出了本申请一个示例性实施例提供的数据加载系统的结构示意图。该数据加载系统包括:云平台110、至少一台云主机120、云存储130和镜像服务器140。
云平台110用于对云主机120中的虚拟机进行管理。可选地,云平台110中运行有管理客户端,该管理客户端用于供用户对云主机120中的虚拟机进行管理。
可选地,云平台110对云主机120中的虚拟机进行管理,包括但不限于:在云主机120中创建虚拟机、启动云主机120中的虚拟机、删除云主机120中的虚拟机。
其中,云平台110与云主机120通过有线或无线的方式连接。示意性地,云平台110与云主机120通过互联网连接。
示意性地,用户通过云平台110向云主机120发送虚拟机创建请求,从而在云主机120中创建虚拟机;云主机120接收到虚拟机创建请求后,根据虚拟机创建请求中携带的创建信息创建虚拟机。
创建信息包括但不限于:虚拟机运行时所需的计算资源、存储资源和网络资源中的至少一种。
云主机120用于运行虚拟机,并对虚拟机运行时所需的资源进行管理。比如:对中央处理器(Central Processing Unit,CPU)(对应计算资源)、内存(对应存储资源)、网络(对应网络资源)等进行管理。
可选地,每台云主机120支持运行至少一台虚拟机。
可选地,云主机120是服务器主机,至少一台云主机120构成服务器集群。
每台云主机120中运行有一个或多个卷管理程序(图1中以一台云主机中运行有一个卷管理程序为例),该卷管理程序用于在云存储130中创建卷,根据虚拟机的数据加载请求将镜像服务器140中的镜像文件写入卷,并访问卷中的数据。
可选地,卷管理程序在创建虚拟机时在云存储130中创建该虚拟机对应的空白的卷。可选地,每个卷管理程序对应管理至少一个卷。
可选地,在云主机120尚未创建虚拟机时,该云主机120中的至少一个卷管理程序不对卷进行管理。
可选地,每个卷管理程序所管理的每个虚拟机对应一个卷。比如:在图1中,云主机2中的虚拟机2对应卷2,虚拟机5对应卷3,卷2和卷3是云主机2中的业务管理程序管理的卷;云主机3中的虚拟机3对应卷4,云主机中的虚拟机6对应卷5,卷4和卷5是云主机3中的业务管理程序管理的卷。
但在一些实施例中,多个虚拟机也可以共用同一个卷。比如:在图1中,云主机1中的虚拟机1和虚拟机4共用云存储130中的卷1,卷1是主管理程序所管理的卷。
可选地,卷管理程序也可以称为虚拟块系统(Virtual Block System,VBS)。
在云主机120中的虚拟机启动之前,卷管理程序需要将该虚拟机对应的卷挂载至云主机120中。
可选地,将卷挂载至云主机120中是指:将卷作为云主机120的一个分区挂接到云主机120的特定目录中。
可选地,当不同的虚拟机共用云存储中的同一个卷时,卷管理程序需要将该卷挂载至每个虚拟机对应的特定目录中。其中,不同的虚拟机对应的特定目录不同。
可选地,当存在多个卷管理程序时,卷管理程序包括主管理程序和业务管理程序。
其中,主管理程序用于创建每个虚拟机对应的空白的卷。
业务管理程序用于处理所管理的虚拟机的数据加载请求。比如:在图1中,业务管理程序1处理云主机1中的虚拟机1和虚拟机2的数据加载请求。
可选地,主管理程序还用于处理自身所管理的虚拟机的数据加载请求。
可选地,主管理程序还用于为业务管理程序分配后台加载数据的任务,其中,后台加载数据的任务是指业务管理程序在后台自动加载(Load)镜像服务器140中的数据的任务。比如:为业务管理程序分配在后台将镜像服务器140中的数据加载至卷2的任务。
数据加载请求用于请求卷管理程序从对应的卷中加载对应存储位置的数据。可选地,数据加载请求中携带有虚拟机请求加载的数据(目标数据)在卷中的存储位置。
可选地,云主机120与云存储130通过有线或无线的方式相连。示意性地,云主机120与云存储130通过局域网连接。
云存储130包括至少一个对象存储设备(Object Storage Device,OSD),卷以逻辑形式在至少一个对象存储设备中存储数据。
镜像服务器140中存储有至少一个镜像文件,该镜像文件中存储有镜像数据。镜像数据用于支持虚拟机的运行。或者说,每个镜像文件用于创建一种类型的虚拟机。
可选地,镜像服务器140与云主机120通过有线或无线的方式相连。示意性地,镜像服务器140与云主机120通过局域网连接。
在虚拟机创建完成时,该虚拟机对应有一个空白的卷,为了保证虚拟机能够通过卷管理程序从卷中读取到待加载的数据,需要将镜像服务器140中镜像文件的镜像数据加载至卷中。
由于卷管理程序无法直接从镜像服务器中140中加载镜像数据,因此,在云主机120中还运行有镜像数据加载程序,卷管理程序通过镜像数据加载程序从镜像服务器140中加载镜像数据。
可选地,每台云主机上运行有至少一个镜像数据加载程序,镜像数据加载程序用于接收卷管理程序的数据加载请求,并从镜像服务器获取镜像数据。
可选地,镜像数据加载程序也称为数据网关服务(Data Gate Way,DGW)。
可选地,本申请中,卷管理程序创建的卷具有延迟加载属性,延迟加载属性是指:在虚拟机创建完成后,根据虚拟机的数据加载请求从镜像服务器中加载数据的属性。
延迟加载属性与全量加载属性相对,全量加载属性是指:在虚拟机启动之前,将虚拟机运行时所需的全量数据从镜像服务器加载至卷的属性。
另外,在本申请中,卷管理程序在创建虚拟机对应的空白的卷之后,还创建该空白的卷对应的位表卷,位表卷用于记录卷中各个位置上的数据的加载状态,加载状态包括:未加载、加载中和已加载。可选地,位表卷中的存储位置与卷中的存储位置一一对应。比如:在图1中,卷1对应的位表卷1,卷2对应的位表卷2,卷3对应的位表卷3。
其中,未加载是指卷中对应的存储位置的数据还未开始从镜像服务器加载,也即,对于卷中与该未加载对应的位置,不存在卷管理程序从镜像文件中加载该位置上的数据。
加载中是指卷中对应存储位置的数据正在从镜像服务器加载,也即,对于卷中与该加载中相对应的位置,存在一个卷管理程序正在从镜像文件中加载该位置上的数据。可选地,卷管理程序可以是响应虚拟机的读请求从镜像文件中加载该位置上的数据;或者,卷管理程序可以是在后台自动从镜像文件中加载该位置上的数据。
已加载是指卷中对应存储位置的数据已写入卷中,也即,对于卷中与该已加载对应的位置已写入数据。可选地,写入卷中的数据可以是虚拟机生成的虚拟机数据;或者,也可以是镜像文件中的数据。
可选地,加载状态可以通过字符表示,比如:0表示未加载、1表示加载中、2表示已加载。
请参考图2A,其示出了相关技术提供的数据加载方法的示意图。
1、云平台210向云主机220发送虚拟机创建请求,云主机220中的卷管理程序221根据虚拟机创建请求中的创建信息创建虚拟机222,并在云存储230中创建空白的卷231。卷管理程序在虚拟机222启动之前,将空白的卷231挂载至云主机220中,并将卷231与镜像服务器240中的镜像文件相关联。
可选地,将空白的卷231挂载至云主机220中是指将卷231作为云主机220的一个分区挂接到云主机220的特定目录中。这样,当虚拟机222需要访问卷231中的数据时,通过卷管理程序221来访问该特定目录,即可访问到卷231。
可选地,卷管理程序221将卷231与镜像文件相关联是指:记录卷231与镜像文件之间的关联关系。
2、虚拟机222启动后,向卷管理程序221发送数据加载请求,卷管理程序221根据数据加载请求在卷231中查找该数据加载请求指示的目标数据。
3、卷管理程序221在卷231中未查找到目标数据时,通过镜像数据加载程序223从镜像服务器240中将目标数据写入卷231。
4、卷管理程序221读取卷231中的目标数据,将该目标数据发送至虚拟机222。
5、其它卷管理程序224在后台通过镜像数据加载程序223从镜像服务器240中,按照数据顺序将除卷231中的数据之外的其它数据加载至卷231中(图中未示出)。
可选地,数据顺序是指卷231中数据的存储位置的顺序,比如:数据顺序为数据在卷中的逻辑标号由小到大的顺序。
在上述数据加载过程中,参考图2B,若卷管理程序221根据虚拟机222的数据加载请求从镜像服务器240加载数据1(左斜线阴影部分表示),此时,其它卷管理程序224在后台从镜像服务器240加载数据1,则可能出现以下情况:
卷管理程序221先将数据1写入卷231,然后将卷231中的数据1发送给虚拟机222,虚拟机222接收到数据1后,生成虚拟机数据,将该虚拟机数据写在数据1对应的位置(横线阴影部分表示),此时,其它卷管理程序224将数据1写入卷231,产生旧数据(数据1)覆盖新数据(虚拟机数据)的问题。
基于上述技术问题,本申请提供如下技术方案。
请参考图3,其示出了本申请一个示例性实施例提供的数据加载方法的流程图,该方法用于图1所示的数据加载系统中,且各个步骤的执行主体为卷管理程序。该方法包括以下几个步骤。
步骤301,在虚拟机启动之后获取虚拟机的写请求。
其中,写请求用于将虚拟机生成的虚拟机数据写入虚拟机的卷中的目标位置。
虚拟机创建在云主机中,并根据云平台的控制在云主机中启动。
可选地,云主机创建虚拟机时,还会通过卷管理程序中的主管理程序创建该虚拟机对应的卷。在虚拟机启动之前,虚拟机对应的卷管理程序需要将该虚拟机对应的卷挂载至云主机中。
其中,虚拟机对应的卷在虚拟机初次启动之前为空白的卷。也即,在主管理程序创建虚拟机时,创建的对应的卷为空白的卷。
可选地,主管理程序创建空白的卷后,还会将卷与镜像服务器中的镜像文件相关联。通过将卷与镜像服务器中的镜像文件相关联,使得卷管理程序(虚拟机对应的卷管理程序,可以是主管理程序,也可以是业务管理程序)可以将镜像文件中的数据写入卷中。
可选地,将卷与镜像文件相关联是指:记录卷与镜像文件的关联关系。示意性地,卷管理程序在创建卷时会生成该卷对应的卷标识,镜像服务器中存储的镜像文件存在对应的文件标识,卷管理程序记录卷标识与文件标识之间的关联关系。
其中,卷标识可以是卷管理程序随机分配的字符串;或者,是按照生成顺序生成的字符串;或者,是按照生成顺序和所属云主机的标识生成的字符串,本实施例不对卷标识的形式作限定。
其中,文件标识可以通过镜像数据加载程序从镜像服务器中读取得到。文件标识可以是镜像文件的名称;或者,可以是镜像服务器随机分配的字符串,本实施例不对文件标识的形式作限定。
本申请中,虚拟机对应的卷具有延迟加载属性。
另外,在本申请中,卷管理程序在创建虚拟机对应的空白的卷之后,还创建该空白的卷对应的位表卷,位表卷用于记录卷中各个位置上的数据的加载状态,加载状态包括:未加载、加载中和已加载。
由于卷管理程序创建的是空白的卷,该空白的卷对应的位表卷中各个存储位置记录的加载状态为未加载,即,位表卷中各个存储位置的初始加载状态为未加载。
可选地,虚拟机启动之后包括但不限于以下场景:1、云主机接收到云平台的启动指令开始启动对应的虚拟机实例;2、虚拟机启动的过程中,比如:虚拟机获取网络资源的过程、虚拟机获取计算资源的过程等;3、虚拟机启动过程结束后正常运行的过程中。
可选地,虚拟机生成的虚拟机数据可以是根据卷中的数据生成的;或者,也可以是在启动之后自行生成的。
可选地,写请求包括虚拟机数据待写入到卷中的目标位置。
步骤302,在卷的属性为延迟加载属性时,从位表卷中获取目标位置的加载状态。
位表卷是在创建空白的卷时创建的,位表卷用于指示卷中各个位置上的数据的加载状态,加载状态包括未加载、加载中和已加载。
可选地,卷管理程序存储有每个卷的属性,具有延迟加载属性的卷是还未获取到镜像文件中全部数据的卷。
其中,虚拟机对应的卷管理程序在卷的属性为延迟加载属性时,从位表卷中获取目标位置的加载状态,包括:获取卷的属性;确定该属性是否为延迟加载属性;在属性是延迟加载属性时,从位表卷中获取目标位置的加载状态。
可选地,从卷对应的位表卷中获取目标位置的加载状态,包括:获取位表卷中与目标位置相对应的存储位置存储的加载状态。
比如:参考图4,写请求指示的目标位置为卷41中的位置42,则卷管理程序从卷41对应的位表卷43的位置42中获取加载状态。
可选地,在卷的属性不是延迟加载属性时,卷管理程序直接将虚拟机数据写入卷中的目标位置,流程结束。
由于在卷的属性不是延迟加载属性时,说明卷管理程序已经将镜像文件的全部数据加载至卷中,此时,不会再出现镜像文件中的数据覆盖虚拟机数据的问题,因此,通过在卷的属性为延迟加载属性时,从位表卷中获取目标位置的加载状态,可以避免在卷的属性不是延迟加载属性时,卷管理程序仍旧从位表卷中获取目标位置的加载状态,影响写入虚拟机数据的速度,且浪费资源的问题。
步骤303,在目标位置的加载状态为加载中时,暂停响应写请求,直至目标位置的加载状态为已加载时,将虚拟机数据写入卷中的目标位置。
在目标位置的加载状态为加载中时,说明目标位置对应的数据正在从镜像服务器加载至卷中,且该数据还未写入卷。若此时将虚拟机数据写入卷中的目标位置,则在虚拟机写入卷中后,可能会出现镜像文件中的数据覆盖该虚拟机数据的问题,即,数据冲突的问题。本申请中,通过暂停响应写请求,在目标位置的加载状态为已加载时,说明镜像文件中的数据已写入卷,此时,再将虚拟机数据写入卷中的目标位置可以解决旧数据(镜像文件中的数据)覆盖新数据(虚拟机数据)的问题,保证了卷中数据的准确性。
可选地,当目标位置的加载状态为未加载状态时,将虚拟机数据写入卷中的目标位置;在位表卷中将目标位置的加载状态切换为已加载。由于当目标位置的加载状态为未加载状态时,说明卷中目标位置对应的数据还未从镜像服务器开始加载,因此,不会存在镜像文件中的数据覆盖虚拟机数据的问题,此时,虚拟机对应的卷管理程序直接将虚拟机数据写入卷中对应的位置。另外,在将虚拟机数据写入卷中之后,为了防止出现存在一个卷管理程序再次从镜像服务器中加载该目标位置对应的数据,使得镜像文件中的数据覆盖虚拟机数据的情况,虚拟机对应的卷管理程序还需要将目标位置的加载状态从未加载修改为已加载,这样,后续卷管理程序直接从该目标位置读取虚拟机数据即可,保证了卷中数据的准确性。
可选地,在目标位置的加载状态为已加载时,将虚拟机数据写入卷中的目标位置。由于当目标位置的加载状态为已加载状态时,说明卷中目标位置对应的数据已写入卷,因此,不会存在镜像文件中的数据覆盖虚拟机数据的问题,此时,虚拟机对应的卷管理程序直接将虚拟机数据写入卷中对应的位置。
可选地,本申请中,虚拟机对应的卷管理程序将虚拟机数据写入卷中的目标位置,包括:根据I/O操作的粒度将虚拟机数据写入卷中的目标位置。
其中,I/O操作的粒度是指:卷管理程序从卷中读取数据的最小数据量,或者,卷管理程序向卷中写入数据的最小数据量。
在一个示例中,在虚拟机数据的大小小于I/O操作的粒度时,卷管理程序从卷中读取包括该虚拟机数据的数据块,并将该数据块发送至虚拟机,该数据块的大小等于I/O操作的粒度;虚拟机接收数据块,根据数据块中的虚拟机数据生成虚拟机数据(与虚拟机数据的数据量相同);卷管理程序获取虚拟机数据,将该虚拟机数据与读取的数据块合并,得到新的虚拟机数据(与数据块的数据量相同),并将该新的虚拟机数据写入卷。
可选地,卷管理程序将虚拟机数据与读取的数据块合并,包括:将数据块中存储位置与虚拟机数据的存储位置相同的数据替换为虚拟机数据。
参考图5所示的卷管理程序将虚拟机数据写入卷的示意图。假设卷管理程序50对卷51进行I/O操作的粒度是8千字节(KBytes,KB),当虚拟机数据52的大小小于8KB时,如:5KB时,卷管理程序先从卷51中读取8KB数据(图中左斜线阴影部分表示)。其中,8KB数据对应的存储位置中存在该5KB的虚拟机数据对应的存储位置。卷管理程序获取到8KB数据后,将该8KB数据与5KB虚拟机数据合并,得到新的8KB虚拟机数据,将该8KB虚拟机数据写入卷51。新的8KB虚拟机数据包括虚拟机生成的5KB的虚拟机数据(图中双斜线阴影部分表示)。
在又一个示例中,在虚拟机数据的大小与I/O操作的粒度呈倍数关系时,比如:虚拟机数据的大小等于I/O操作的粒度,又比如:虚拟机数据的大小为I/O操作的粒度的2倍,卷管理程序直接将该虚拟机数据写入卷中,无需执行从卷中读取数据块,将数据块与虚拟机数据合并的步骤。
下面对本实施例提供的数据加载方式举一个实例进行介绍。
参考图6,卷管理程序61生成虚拟机数据,并生成写请求,该写请求用于将虚拟机数据写入卷63中的存储位置62。此时,卷63的属性为延迟加载属性。
卷管理程序61从位表卷64中获取存储位置62的加载状态,该加载状态为加载中,卷管理程序61不响应写请求。
此时,卷管理程序65将存储位置62对应的数据从镜像服务器66写入卷63中(图中横线阴影表示),并在位表卷64中将存储位置62中的加载状态从加载中修改为已加载。
卷管理程序61根据已加载将虚拟机数据写入卷63中的存储位置62(图中右斜线阴影表示)。此时,不会存在另一个卷管理程序从镜像服务器66中再次加载目标数据,避免了旧数据(目标数据)覆盖卷63中的新数据(虚拟机数据)的问题。
综上所述,本申请提供的数据加载方法,通过创建卷对应的位表卷,该位表卷用于存储卷中每个存储位置的数据对应的加载状态,当卷管理程序需要写入虚拟机生成的虚拟机数据时,先获取该虚拟机数据对应的目标位置的加载状态,在该目标位置的加载状态为加载中时,说明该目标位置对应的数据正在从镜像服务器加载,此时,不将虚拟机数据写入卷;可以解决镜像文件中的数据覆盖虚拟机数据,导致数据冲突的问题;由于虚拟机数据是在镜像文件中的数据写入卷中之后再写入卷,因此,避免了新旧数据冲突的问题,可以提高卷中数据的准确性。
可选地,基于图3所述的实施例,在步骤301中,虚拟机生成的虚拟机数据可能是基于从卷中读取的目标数据生成的。此时,在虚拟机生成虚拟机数据之前,还需要从卷中读取目标数据。
虚拟机从卷中读取目标数据,包括以下几个步骤。
1、在虚拟机启动之后获取虚拟机的读请求。
读请求用于请求读取卷中目标位置上的目标数据。目标数据是指在虚拟机运行过程中请求的数据,也即虚拟机根据当前运行情况请求的所需要的数据。
在卷管理程序将卷挂载至云主机之后,若虚拟机启动,且需要读取目标数据,则虚拟机向卷管理程序发送读请求;相应地,卷管理程序接收该读请求。
可选地,读请求中携带有目标位置,该目标位置是指目标数据在卷中的存储位置。
可选地,本步骤中,虚拟机启动之后和卷的相关描述详见步骤301,本实施例在此不作赘述。
2、确定虚拟机对应的卷中是否存储有目标数据。
可选地,卷管理程序确定虚拟机对应的卷中是否存储有目标数据,包括:
卷管理程序根据读请求指示的目标位置,在卷中查找该目标位置是否存储有目标数据。
可选地,当卷中的目标位置存储有目标数据时,卷管理程序将卷中的目标数据发送至虚拟机。
可选地,当卷中的目标位置未存储有目标数据时,执行步骤3。
3、在卷中未存储有目标数据时,从卷对应的位表卷中获取目标位置的加载状态。
位表卷是在创建空白的卷时创建的,位表卷用于记录卷中各个位置上的数据的加载状态,加载状态包括未加载、加载中和已加载。
可选地,本步骤中获取目标位置的加载状态的相关描述详见步骤302,本实施例在此不作赘述。
4、在目标数据的加载状态为加载中时,暂停响应读请求,直至目标数据的加载状态切换至已加载时,将卷中的目标数据发送至虚拟机。
由于当存在一个卷管理程序正在从镜像服务器中加载目标数据时,目标数据的加载状态为加载中,此时,若存在另一个卷管理程序从镜像服务器中加载该目标数据,则根据加载中可以确定出不需要再次从镜像服务器中加载目标数据,即,暂停响应读请求,而是在目标数据的加载状态切换至已加载时,说明该目标数据已写入卷,此时,另一个卷管理程序再将卷中的目标数据发送至虚拟机,这样,不会存在两个卷管理程序同时请求加载目标数据,降低了数据冲突发生的概率。
可选地,在目标位置的加载状态为未加载时,从镜像文件中加载目标数据,并在位表卷中将目标数据的加载状态切换为加载中。虚拟机对应的卷管理程序获取到目标数据之后,将镜像文件中的目标数据写入卷;并在位表卷中将目标数据的加载状态从加载中切换为已加载。
可选地,本申请中,在虚拟机启动之后,存在一个卷管理程序在后台将镜像文件的未加载数据加载至卷中,并在位表卷中将正在加载的数据对应的加载状态修改为加载中,未加载数据是指位表卷指示的加载状态为未加载的数据。
需要补充说明的是,后台加载数据的卷管理程序将数据写入卷中时,还会将该数据的加载状态从加载中修改为已加载。
通过在虚拟机请求未加载数据之前,将镜像文件中的未加载数据加载至卷,使得虚拟机在请求该未加载数据时,卷管理程序可以直接将卷中的数据发送给虚拟机,提高了虚拟机加载数据的速度。
卷管理程序将镜像文件中的未加载数据加载至卷中,包括:卷管理程序在后台从镜像文件中加载数据之前,获取位表卷中各个位置的加载状态;对于每个加载状态为未加载的存储位置,从镜像服务器中获取该存储位置对应的数据。
可选地,虚拟机接收到目标数据后生成虚拟机数据,虚拟机对应的卷管理程序获取虚拟机生成的虚拟机数据,将虚拟机数据写入卷。
可选地,虚拟机数据是根据目标数据生成的。此时,卷管理程序将读请求指示的存储位置中的目标数据发送给虚拟机后,虚拟机根据该目标数据生成虚拟机数据,并将虚拟机数据发送给卷管理程序,卷管理程序将该虚拟机数据写入卷中对应的存储位置。
卷管理程序将该虚拟机数据写入卷中对应的存储位置的相关描述详见步骤303,本实施例在此不作赘述。
综上所述,本申请提供的数据加载方法,通过创建卷对应的位表卷,该位表卷用于存储卷中每个存储位置的数据对应的加载状态,当存在一个卷管理层程序请求加载目标数据,卷中未存储该目标数据,且该目标数据的加载状态为加载中时,说明该目标数据正在从镜像服务器加载,此时,不需要再次从镜像服务器加载该数据;可以解决卷中同一存储位置上的数据被加载多次的问题;节省了多次加载卷中同一位置的数据时消耗的资源。
可选地,在镜像文件的全部数据加载至卷后,卷管理程序将卷的属性从延迟加载属性转变为普通属性。
可选地,普通属性是指:卷管理程序不再将镜像服务器中的数据加载至卷中的属性。
可选地,卷管理程序将卷的属性从延迟加载属性转变为普通属性,包括:将卷的属性从延迟加载属性修改为普通属性。
卷管理程序记录有每个卷的属性,在镜像文件中的数据未全部加载至卷中时,卷管理程序设置卷的属性为延迟加载属性,在镜像文件中的数据全部加载至卷中时,卷管理程序将卷的属性修改为普通属性。
可选地,延迟加载属性和普通属性通过字符表示,比如:字符1表示延迟加载属性,字符0表示普通属性。
若镜像文件中的数据全部加载至卷后,卷管理程序未修改卷的属性,在后台从镜像服务器加载数据的卷管理程序可能会不断地检测该卷中是否存在未加载的数据,浪费后台加载数据的资源。本实施例中,由于镜像文件中的数据全部加载至卷中时,无需再从镜像服务器中加载数据,此时,将卷的属性由延迟加载属性转变为普通属性,可以指示卷管理程序无需再检测该卷中是否存在未加载的数据,节省了后台加载数据的资源。
可选地,在镜像文件的全部数据加载至卷后,卷与镜像文件不再关联。示意性地,卷管理程序删除卷与镜像文件的关联关系。
本实施例中,由于镜像文件中的数据全部加载至卷中时,无需再在后台从镜像服务器加载数据,因此,不再需要存储卷与镜像文件之间的关联关系,此时,将卷与镜像文件之间的关联关系删除,可以节省云主机的存储空间。
可选地,在镜像文件的全部数据加载至卷后,删除位表卷。
本实施例中,由于镜像文件中的数据全部加载至卷中时,无需再在后台从镜像服务器加载数据,因此,不会再出现旧数据覆盖新数据的问题,此时,将位表卷删除,既可以保证虚拟机加载的数据的准确性,又可以节省云存储中的存储资源。
可选地,对于同一份镜像文件,由于可能存在多个卷管理程序请求从镜像服务器加载同一存储位置的数据,请求该存储位置的数据的卷管理程序越多,镜像服务器管理镜像数据的压力越大。
参考图7,假设存在三个卷管理程序请求存储位置71对应的数据(阴影部分表示),则镜像服务器需要将存储位置71对应的数据向云主机发送三次,镜像服务器处理镜像数据的压力较大。
为了降低镜像服务器的压力,本申请中,卷管理程序在云存储中创建缓存卷,缓存卷用于存储不同卷管理程序请求加载的同一存储位置的数据;每个卷管理程序在从镜像服务器加载数据之前,先检测该缓存卷中是否存储有该数据,这样,同一存储位置的数据只需要从镜像服务器中加载一次即可,降低了镜像服务器处理数据的压力。
可选地,缓存卷是在创建第一台虚拟机对应的卷时创建的。缓存卷位于云存储中。缓存卷中数据的存储位置与卷中数据的存储位置一一对应。
可选地,主管理程序在创建缓存卷后,将缓存卷与各个虚拟机对应的卷管理程序相关联,将缓存卷与镜像文件相关联,这样,可以保证虚拟机对应的卷管理程序根据读请求在缓存卷中加载数据,并将镜像文件中的数据写入缓存卷。
可选地,缓存卷也可以称为镜像缓存卷等,本实施例不对缓存卷的名称作限定。
若主卷管理程序在云存储中创建了缓存卷,则在上述实施例中,将镜像文件中的目标数据写入卷,还包括:从镜像服务器中将目标数据写入镜像文件对应的缓存卷中;将缓存卷中的目标数据写入卷中。
当虚拟机是第一个请求读取目标数据的虚拟机时,该虚拟机对应的卷管理程序从镜像服务器中将目标数据写入缓存卷中。
示意性地,当虚拟机是第一个请求读取目标数据的虚拟机时,该虚拟机对应的卷管理程序查找缓存卷中是否存储有目标数据;在缓存卷中未存储有目标数据时,该卷管理程序通过镜像数据加载程序从镜像服务器中加载目标数据,将该目标数据写入缓存卷中。然后,将缓存卷中的目标数据写入虚拟机对应的卷中。
可选地,在虚拟机对应的卷管理程序通过镜像数据加载程序从镜像服务器中加载目标数据时,标记该目标数据的暂停响应权限,这样,在存在其它虚拟机请求该目标数据时,其它虚拟机对应的管理程序根据该暂停响应权限,暂停响应读请求;在虚拟机对应的卷管理程序将目标数据写入缓存卷中时,将该目标数据的暂停响应权限修改为允许响应权限,此时,其它虚拟机对应的管理程序根据该允许响应权限响应其它虚拟机的请求,将该目标数据写入对应的卷中。
可选地,缓存卷中各个存储位置存储的数据的初始响应权限为允许响应权限。
其中,数据的允许响应权限是指允许卷管理程序响应读请求的权限,比如:在缓存卷中存储有目标数据时,允许将该目标数据写入对应的卷的权限;又比如:在缓存卷中未存储有目标数据时,允许卷管理程序从镜像服务器中加载目标数据,并将该目标数据写入对应的卷的权限。
其中,数据的暂停响应权限是指暂时禁止卷管理程序响应读请求的权限,比如:在缓存卷中未存储有目标数据,且卷管理程序正在从镜像服务器中加载目标数据时,禁止卷管理程序再次从镜像服务器中加载该目标数据的权限。
示意性地,当虚拟机不是第一个请求读取目标数据的虚拟机时,若该目标数据未存储在缓存卷中,则缓存卷对应的卷管理程序暂停响应虚拟机的读请求,直至将目标数据写入缓存卷时,响应读请求。
可选地,当虚拟机不是第一个请求读取目标数据的虚拟机时,虚拟机对应的卷管理程序根据目标数据的暂停响应权限,暂停响应虚拟机的读请求,直至该目标数据由暂停响应权限修改为允许响应权限时,虚拟机对应的卷管理程序将缓存卷中的目标数据写入对应的卷中,再将卷中的数据发送给虚拟机。
可选地,参考图8,假设存在卷管理程序81、82和83均需要加载存储位置84对应的目标数据,且卷管理程序81、82和83所管理的卷中未存储该目标数据。卷管理程序81所管理的虚拟机为第一次请求读取目标数据的虚拟机,则卷管理程序81获取缓存卷85的响应权限,该响应权限为允许响应权限。然后,卷管理程序81查询缓存卷85的存储位置84是否存储有目标数据;在缓存卷85未存储该目标数据时,卷管理程序81从镜像服务器86中加载该目标数据,并设置该目标数据的暂停响应权限。
卷管理程序82和83所管理的至少一台虚拟机发送了读请求,卷管理程序82和83接收到读请求后,获取缓存卷85中目标数据的响应权限。此时,响应权限为暂停响应权限,卷管理程序82和83暂停响应至少一台虚拟机发送的读请求。
卷管理程序81将目标数据写入缓存卷85之后(图中左斜线阴影部分表示),设置该目标数据的允许响应权限。卷管理程序82和83根据允许响应权限,响应所管理的虚拟机的读请求。
卷管理程序81将缓存卷85中的目标数据写入对应的卷1(图中左斜线阴影部分表示);然后,将卷1中的目标数据发送至发送读请求的虚拟机,该虚拟机由卷管理程序81管理。
卷管理程序82将缓存卷85中的目标数据写入对应的卷2(图中左斜线阴影部分表示);然后,将卷2中的目标数据发送至发送读请求的虚拟机,该虚拟机由卷管理程序82管理。
卷管理程序83将缓存卷85中的目标数据写入对应的卷3(图中左斜线阴影部分表示);然后,将卷3中的目标数据发送至发送读请求的虚拟机,该虚拟机由卷管理程序83管理。
综上所述,本实施例提供的数据加载方法,通过在云存储中创建缓存卷,云主机中的各个卷管理程序在从镜像服务器加载目标数据之前,先在该缓存卷中查找目标数据;这样,缓存卷中每个存储位置对应的数据只需要从镜像服务器中加载一次;使得镜像服务器无需对同一存储位置的数据处理多次,降低了镜像服务器处理镜像数据的压力。
可选地,在从缓存卷请求数据的至少一个卷管理程序对应的卷中均已加载数据完成时,主管理程序将该缓存卷删除。
可选地,主卷管理程序确定从缓存卷请求数据的至少一个卷管理程序;在缓存卷中的数据全部加载完成之后,周期性地检测该至少一个卷管理程序对应的卷的属性是否为普通属性;在该至少一个卷管理程序对应的卷的属性均为普通属性时,说明至少一个卷管理程序对应的卷中均已加载数据完成,此时,删除缓存卷。
可选地,主管理程序通过云平台获取至少一个卷管理程序。
本实施例中,通过在从缓存卷请求数据的至少一个卷管理程序对应的卷中均已加载数据完成时,缓存卷对应的卷管理程序该缓存卷删除,使得缓存卷在数据延迟加载过程完成后无需再占用云存储中的资源,节省了云存储的存储资源。
需要补充说明的是,本申请中,以各个虚拟机所依赖的缓存卷和卷从镜像服务器中加载同一份镜像文件为例进行说明,在实际实现时,可以存在至少两个不同的卷从镜像服务器中加载不同的镜像文件,存在至少两个不同的缓存卷从镜像服务器中加载不同的镜像文件,每个卷和/或缓存卷加载对应的镜像文件的方式参考上述实施例,本实施例在此不作赘述。
请参考图9,其示出了本申请一个实施例提供的数据加载装置的框图。该数据加载装置可以通过软件、硬件或者两者的结合实现成为图1所示的数据加载系统中的云主机120的全部或者一部分。该数据加载装置可以包括:请求获取单元910、状态获取单元920和数据写入单元930。
请求获取单元910,用于在虚拟机启动之后获取虚拟机的写请求,所述写请求用于将所述虚拟机生成的虚拟机数据写入所述虚拟机的卷中的目标位置;
状态获取单元920,用于在所述卷的属性为延迟加载属性时,从位表卷中获取所述目标位置的加载状态,所述位表卷是在创建空白的所述卷时创建的,所述位表卷用于指示所述卷中各个位置上的数据的加载状态,所述加载状态包括未加载、加载中和已加载,所述加载中用于指示正在从镜像文件中加载对应位置上的数据;
数据写入单元930,用于在所述目标位置的加载状态为所述加载中时,暂停响应所述写请求,直至所述目标位置的加载状态为所述已加载时,将所述虚拟机数据写入所述卷中的所述目标位置。
可选地,所述数据写入单元930,用于:
在所述目标位置的加载状态为所述未加载时,将所述虚拟机数据写入所述卷中的所述目标位置;在所述位表卷中将所述目标位置的加载状态切换为所述已加载;
在所述目标位置的加载状态为所述已加载时,将所述虚拟机数据写入所述卷中的所述目标位置。
可选地,所述请求获取单元910,还用于在所述虚拟机启动之后获取所述虚拟机的读请求,所述读请求用于读取所述卷中所述目标位置上的目标数据;
所述装置还包括:数据查询单元,用于确定所述卷中是否存储有所述目标数据;
所述状态获取单元,用于在所述卷中未存储有所述目标数据时,从所述位表卷中获取所述目标位置的加载状态;
所述装置还包括:数据读取单元,用于在所述目标位置的加载状态为所述加载中时,暂停响应所述读请求,直至所述目标位置的加载状态切换至所述已加载时,将所述卷中的目标数据发送至所述虚拟机。
可选地,所述装置还包括:数据加载单元,用于在所述目标位置的加载状态为所述未加载时,从所述镜像文件中加载所述目标数据,并在所述位表卷中将所述目标位置的加载状态切换为所述加载中;
所述数据写入单元930,还用于将所述镜像文件中的所述目标数据写入所述卷,并在所述位表卷中将所述目标数据的加载状态从所述加载中切换为所述已加载,所述卷与所述镜像文件相关联。
可选地,所述装置还包括:
后台加载单元,用于在所述虚拟机启动之后,将所述镜像文件中的未加载数据加载至所述卷中,并在所述位表卷中将正在加载的数据对应的加载状态修改为所述加载中,所述未加载数据是指所述位表卷指示的加载状态为所述未加载的数据;
位表删除单元,用于在所述镜像文件的全部数据加载至所述卷后,删除所述位表卷。
可选地,所述装置还包括:
属性转变单元,用于在所述镜像文件的全部数据加载至所述卷之后,将所述卷的属性从所述延迟加载属性转变为普通属性,所述卷是在创建所述虚拟机时创建的,所述卷初始的属性为所述延迟加载属性。
可选地,所述数据写入单元930,用于:
将所述目标数据写入所述镜像文件对应的缓存卷中;
将所述缓存卷中的所述目标数据写入所述卷。
可选地,所述数据写入单元930,用于:
当所述虚拟机是第一个请求读取所述目标数据的虚拟机时,将所述目标数据写入所述缓存卷。
可选地,所述数据写入单元930,用于:
当所述虚拟机不是所述第一个请求读取所述目标数据的虚拟机且所述目标数据正在被其他虚拟机请求写入所述缓存卷时,在将所述缓存卷中的所述目标数据写入所述卷之前,暂停响应所述读请求,直至将所述目标数据写入所述缓存卷时,响应所述读请求将所述缓存卷中的所述目标数据写入所述卷。
相关细节可结合参考上述方法实施例。
请参考图10,其示出了本申请一个示例性实施例提供的数据加载设备的结构示意图,该数据加载设备可以是图1所示的数据加载系统中的云主机120。该数据加载设备包括:处理器101、存储器102和总线103。
处理器101包括一个或者一个以上处理核心,处理器101通过运行软件程序以及模块,从而执行各种功能应用以及信息处理。
存储器102通过总线103与处理器101相连。存储器102存储有数据加载设备在数据加载过程中必要的程序指令和数据。
处理器101用于执行存储器102中的程序指令和/或数据以实现本申请各个方法实施例提供的数据加载方法的功能。
此外,存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随时存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
可以理解的是,图10仅仅示出了数据加载设备的简化设计。在其他的实施例中,数据加载设备可以包含任意数量的发射器,接收器,处理器,控制器,存储器,通信单元等,而所有可以实现本发明的数据加载设备都在本发明的保护范围之内。
可选地,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在数据加载设备上运行时,使得数据加载设备执行上述方法实施例所提供的数据加载方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (20)

1.一种数据加载方法,其特征在于,所述方法包括:
在虚拟机启动之后获取虚拟机的写请求,所述写请求用于将所述虚拟机生成的虚拟机数据写入所述虚拟机的卷中的目标位置;
在所述卷的属性为延迟加载属性时,从位表卷中获取所述目标位置的加载状态,所述位表卷是在创建空白的所述卷时创建的,所述位表卷用于指示所述卷中各个位置上的数据的加载状态,所述加载状态包括未加载、加载中和已加载,所述加载中用于指示正在从镜像文件中加载对应位置上的数据;
在所述目标位置的加载状态为所述加载中时,暂停响应所述写请求,直至所述目标位置的加载状态为所述已加载时,将所述虚拟机数据写入所述卷中的所述目标位置。
2.根据权利要求1所述的方法,其特征在于,所述从位表卷中获取所述目标位置的加载状态之后,还包括:
在所述目标位置的加载状态为所述未加载时,将所述虚拟机数据写入所述卷中的所述目标位置;在所述位表卷中将所述目标位置的加载状态切换为所述已加载;
在所述目标位置的加载状态为所述已加载时,将所述虚拟机数据写入所述卷中的所述目标位置。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述虚拟机启动之后获取所述虚拟机的读请求,所述读请求用于读取所述卷中所述目标位置上的目标数据;
确定所述卷中是否存储有所述目标数据;
在所述卷中未存储有所述目标数据时,从所述位表卷中获取所述目标位置的加载状态;
在所述目标位置的加载状态为所述加载中时,暂停响应所述读请求,直至所述目标位置的加载状态切换至所述已加载时,将所述卷中的目标数据发送至所述虚拟机。
4.根据权利要求3所述的方法,其特征在于,所述从所述位表卷中获取所述目标位置的加载状态之后,还包括:
在所述目标位置的加载状态为所述未加载时,从所述镜像文件中加载所述目标数据,并在所述位表卷中将所述目标位置的加载状态切换为所述加载中;
将所述镜像文件中的所述目标数据写入所述卷,并在所述位表卷中将所述目标数据的加载状态从所述加载中切换为所述已加载,所述卷与所述镜像文件相关联。
5.根据权利要求3所述的方法,其特征在于,所述在虚拟机启动之后,还包括:
将所述镜像文件中的未加载数据加载至所述卷中,并在所述位表卷中将正在加载的数据对应的加载状态修改为所述加载中,所述未加载数据是指所述位表卷指示的加载状态为所述未加载的数据;
在所述镜像文件的全部数据加载至所述卷后,删除所述位表卷。
6.根据权利要求5所述的方法,其特征在于,所述在所述镜像文件的全部数据加载至所述卷之后,还包括:
将所述卷的属性从所述延迟加载属性转变为普通属性,所述卷是在创建所述虚拟机时创建的,所述卷初始的属性为所述延迟加载属性。
7.根据权利要求4任一所述的方法,其特征在于,所述将所述镜像文件中的所述目标数据写入所述卷,包括:
将所述目标数据写入所述镜像文件对应的缓存卷中;
将所述缓存卷中的所述目标数据写入所述卷。
8.根据权利要求7所述的方法,其特征在于,所述将所述镜像文件中的所述目标数据写入所述卷,包括:
当所述虚拟机是第一个请求读取所述目标数据的虚拟机时,将所述目标数据写入所述缓存卷。
9.根据权利要求7所述的方法,其特征在于,所述将所述缓存卷中的所述目标数据写入所述卷之前,还包括:
当所述虚拟机不是第一个请求读取所述目标数据的虚拟机且所述目标数据正在被其他虚拟机请求写入所述缓存卷时,暂停响应所述读请求,直至将所述目标数据写入所述缓存卷时,响应所述读请求将所述缓存卷中的所述目标数据写入所述卷。
10.一种数据加载装置,其特征在于,所述装置包括:
请求获取单元,用于在虚拟机启动之后获取虚拟机的写请求,所述写请求用于将所述虚拟机生成的虚拟机数据写入所述虚拟机的卷中的目标位置;
状态获取单元,用于在所述卷的属性为延迟加载属性时,从位表卷中获取所述目标位置的加载状态,所述位表卷是在创建空白的所述卷时创建的,所述位表卷用于指示所述卷中各个位置上的数据的加载状态,所述加载状态包括未加载、加载中和已加载,所述加载中用于指示正在从镜像文件中加载对应位置上的数据;
数据写入单元,用于在所述目标位置的加载状态为所述加载中时,暂停响应所述写请求,直至所述目标位置的加载状态为所述已加载时,将所述虚拟机数据写入所述卷中的所述目标位置。
11.根据权利要求10所述的装置,其特征在于,所述数据写入单元,用于:
在所述目标位置的加载状态为所述未加载时,将所述虚拟机数据写入所述卷中的所述目标位置;在所述位表卷中将所述目标位置的加载状态切换为所述已加载;
在所述目标位置的加载状态为所述已加载时,将所述虚拟机数据写入所述卷中的所述目标位置。
12.根据权利要求10或11所述的装置,其特征在于,
所述请求获取单元,还用于在所述虚拟机启动之后获取所述虚拟机的读请求,所述读请求用于读取所述卷中所述目标位置上的目标数据;
所述装置还包括:数据查询单元,用于确定所述卷中是否存储有所述目标数据;
所述状态获取单元,用于在所述卷中未存储有所述目标数据时,从所述位表卷中获取所述目标位置的加载状态;
所述装置还包括:数据读取单元,用于在所述目标位置的加载状态为所述加载中时,暂停响应所述读请求,直至所述目标位置的加载状态切换至所述已加载时,将所述卷中的目标数据发送至所述虚拟机。
13.根据权利要求10所述的装置,其特征在于,
所述装置还包括:数据加载单元,用于在所述目标位置的加载状态为所述未加载时,从所述镜像文件中加载目标数据,并在所述位表卷中将所述目标位置的加载状态切换为所述加载中;
所述数据写入单元,还用于将所述镜像文件中的所述目标数据写入所述卷,并在所述位表卷中将所述目标数据的加载状态从所述加载中切换为所述已加载,所述卷与所述镜像文件相关联。
14.根据权利要求12所述的装置,其特征在于,所述装置还包括:
后台加载单元,用于在所述虚拟机启动之后,将所述镜像文件中的未加载数据加载至所述卷中,并在所述位表卷中将正在加载的数据对应的加载状态修改为所述加载中,所述未加载数据是指所述位表卷指示的加载状态为所述未加载的数据;
位表删除单元,用于在所述镜像文件的全部数据加载至所述卷后,删除所述位表卷。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
属性转变单元,用于在所述镜像文件的全部数据加载至所述卷之后,将所述卷的属性从所述延迟加载属性转变为普通属性,所述卷是在创建所述虚拟机时创建的,所述卷初始的属性为所述延迟加载属性。
16.根据权利要求13任一所述的装置,其特征在于,所述数据写入单元,用于:
将所述目标数据写入所述镜像文件对应的缓存卷中;
将所述缓存卷中的所述目标数据写入所述卷。
17.根据权利要求16所述的装置,其特征在于,所述数据写入单元,用于:
当所述虚拟机是第一个请求读取所述目标数据的虚拟机时,将所述目标数据写入所述缓存卷。
18.根据权利要求16所述的装置,其特征在于,所述数据写入单元,用于:
当所述虚拟机不是第一个请求读取所述目标数据的虚拟机且所述目标数据正在被其他虚拟机请求写入所述缓存卷时,在将所述缓存卷中的所述目标数据写入所述卷之前,暂停响应读请求,直至将所述目标数据写入所述缓存卷时,响应所述读请求将所述缓存卷中的所述目标数据写入所述卷。
19.一种数据加载设备,其特征在于,所述设备包括:处理器、与所述处理器相连的存储器,所述处理器执行所述存储器中存储的指令实现权利要求1至9任一所述的数据加载方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可执行程序,所述可执行程序由处理器执行以实现权利要求1至9任一所述的数据加载方法。
CN201710918182.4A 2017-09-29 2017-09-29 数据加载方法及装置 Active CN107832097B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710918182.4A CN107832097B (zh) 2017-09-29 2017-09-29 数据加载方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710918182.4A CN107832097B (zh) 2017-09-29 2017-09-29 数据加载方法及装置

Publications (2)

Publication Number Publication Date
CN107832097A CN107832097A (zh) 2018-03-23
CN107832097B true CN107832097B (zh) 2020-04-28

Family

ID=61647539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710918182.4A Active CN107832097B (zh) 2017-09-29 2017-09-29 数据加载方法及装置

Country Status (1)

Country Link
CN (1) CN107832097B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109814979B (zh) * 2018-12-17 2021-03-30 华为技术有限公司 数据加载方法、装置、计算机设备以及可读存储介质
CN111026333A (zh) * 2019-12-10 2020-04-17 北京金山云网络技术有限公司 访问请求处理方法、处理装置、电子设备及存储介质
CN113419870A (zh) * 2021-06-20 2021-09-21 济南浪潮数据技术有限公司 一种卷读写方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102253885A (zh) * 2010-05-19 2011-11-23 微软公司 用户界面分析管理
CN103369508A (zh) * 2013-06-25 2013-10-23 华为技术有限公司 数据加载方法和终端设备
EP2755132A1 (en) * 2011-10-12 2014-07-16 Huawei Technologies Co., Ltd. Virtual machine memory snapshot generating and recovering method, device and system
JP2014186441A (ja) * 2013-03-22 2014-10-02 Fujitsu Ltd ストレージシステム、制御装置および制御方法
CN104866435A (zh) * 2015-06-06 2015-08-26 成都云祺科技有限公司 一种连续数据保护方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102253885A (zh) * 2010-05-19 2011-11-23 微软公司 用户界面分析管理
EP2755132A1 (en) * 2011-10-12 2014-07-16 Huawei Technologies Co., Ltd. Virtual machine memory snapshot generating and recovering method, device and system
JP2014186441A (ja) * 2013-03-22 2014-10-02 Fujitsu Ltd ストレージシステム、制御装置および制御方法
CN103369508A (zh) * 2013-06-25 2013-10-23 华为技术有限公司 数据加载方法和终端设备
CN104866435A (zh) * 2015-06-06 2015-08-26 成都云祺科技有限公司 一种连续数据保护方法

Also Published As

Publication number Publication date
CN107832097A (zh) 2018-03-23

Similar Documents

Publication Publication Date Title
CN108701048B (zh) 数据加载方法及装置
KR102444832B1 (ko) 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝
US11086725B2 (en) Orchestration of heterogeneous multi-role applications
US10579364B2 (en) Upgrading bundled applications in a distributed computing system
US10949273B2 (en) Shared memory usage tracking across multiple processes
US20120185855A1 (en) Image management for virtual machine instances and associated virtual storage
US10025790B2 (en) Chain file system
JP2019016135A (ja) 情報処理システム、情報処理システムの制御プログラム及び情報処理システムの制御方法
US10235282B2 (en) Computer system, computer, and method to manage allocation of virtual and physical memory areas
US10970106B1 (en) Storage device sharing among virtual machines
US7194594B2 (en) Storage area management method and system for assigning physical storage areas to multiple application programs
US10620871B1 (en) Storage scheme for a distributed storage system
US10642697B2 (en) Implementing containers for a stateful application in a distributed computing system
CN107832097B (zh) 数据加载方法及装置
WO2018158808A1 (ja) 情報システム、管理プログラム及び情報システムのプログラム交換方法
JP2022034455A (ja) 計算機システムおよび管理方法
US20220318042A1 (en) Distributed memory block device storage
US20190212923A1 (en) Implementing An Interface To A High-Availability Storage System In A Distributed Computing System
JP4300133B2 (ja) クラスタメモリファイルシステム
US11550488B2 (en) Computer system and load distribution method
KR20190069134A (ko) 응용 프로그램간 파일 공유 장치 및 방법
KR101099130B1 (ko) 가상볼륨 저장관리 시스템
JP7113698B2 (ja) 情報システム

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220218

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.