CN108475201B - 一种虚拟机启动过程中的数据获取方法和云计算系统 - Google Patents

一种虚拟机启动过程中的数据获取方法和云计算系统 Download PDF

Info

Publication number
CN108475201B
CN108475201B CN201680003333.7A CN201680003333A CN108475201B CN 108475201 B CN108475201 B CN 108475201B CN 201680003333 A CN201680003333 A CN 201680003333A CN 108475201 B CN108475201 B CN 108475201B
Authority
CN
China
Prior art keywords
read
data block
virtual machine
operating system
data
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
CN201680003333.7A
Other languages
English (en)
Other versions
CN108475201A (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 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
Publication of CN108475201A publication Critical patent/CN108475201A/zh
Application granted granted Critical
Publication of CN108475201B publication Critical patent/CN108475201B/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

Abstract

本发明实施例提供了一种在虚拟机启动过程中获取数据的方法和云计算系统。在虚拟机启动过程中,虚拟化平台的虚拟磁盘驱动接收虚拟机发送的读数据请求,根据读数据请求,确定缓存区中是否存储有需读取的数据块,缓存区用于存储操作系统的必要数据;当所缓存区中存储有需读取的数据块时,虚拟磁盘驱动从缓存区中读取该需读取的数据块,并返回该虚拟机;当缓存区中没有存储所述需读取的数据块时,虚拟磁盘驱动根据读数据请求在第二存储设备中查找所述需读取的数据块,并将查找到的所述需读取的数据块返回给所述虚拟机。本发明实施例提供的方法可以使得大量虚拟机能够快速启动。

Description

一种虚拟机启动过程中的数据获取方法和云计算系统
技术领域
本发明涉及计算机虚拟化技术领域,尤其涉及一种虚拟机启动过程中的数据获取方法和云计算系统。
背景技术
通过软件来定义计算机基础架构越来越成为一种趋势,相应地,企业IT架构也从企业独自建设、独自维护向共享资源、维护外包发展。云计算系统就是适应这种变化,为企业提供基础IT设施的服务。
云计算系统作为可供公众使用的IT基础设施服务,可以向各行各业的企业提供服务。由于企业活动往往具有季节性变化规律,比如零售电商季节性促销,在某个时间段需要短期大量的计算资源。这就意味着,客户需要在业务需要时,能够快速部署大量虚拟机;而业务量下降后,又需要释放多余的虚拟机等资源来节约资金。
虚拟机按照需求自动快速创建并启动是云计算系统适应用户需求的关键技术。
发明内容
有鉴于此,本发明实施例公开了一种在虚拟机启动过程中获取数据的方法和云计算系统,通过在缓存区中存储虚拟机启动时需要读取的操作系统的必要数据,在启动过程中从缓存区中获取操作系统的必要数据,从而节省虚拟机启动需花费的时间,实现了云计算系统中虚拟机的快速启动。
第一方面,本申请提供了一种虚拟机启动过程中的数据获取方法,该方法应用于云计算系统,所述云计算系统包括服务器和第二存储设备,所述第二存储设备为镜像存储设备,该服务器上运行虚拟化平台,方法包括以下步骤:虚拟化平台的虚拟磁盘驱动接收虚拟机发送的读数据请求;虚拟磁盘驱动根据读数据请求,确定缓存区中是否存储有需读取的数据块,该缓存区用于存储所述虚拟机需要读取的操作系统用于启动所述虚拟机的必要数据;若该缓存区中存储有所述需读取的数据块,所述虚拟磁盘驱动从缓存区中读取该需读取的数据块,并返回所述虚拟机;若所述缓存区中没有存储所述需读取的数据块,所述虚拟磁盘驱动根据所述读数据请求在所述第二存储设备中查找所述需读取的数据块,并将查找到的所述需读取的数据块返回给所述虚拟机。
通过本发明实施例提供的方法,虚拟机在启动过程中,在缓存区中存储有虚拟机启动时需要读取的操作系统的必要数据,可以到缓存区中获取到启动所需读取的操作系统的必要数据,大大节省了虚拟机启动所需的时间。
结合第一方面,在第一方面第一种可能的实现方式中,该方法还包括:若在所述第二存储设备中查找到的所述需读取的数据块为所述操作系统用于启动所述虚拟机的必要数据,所述虚拟磁盘驱动将所述查找到的数据块写入所述缓存区。
在虚拟机启动过程中在第二存储设备中查找到的操作系统用于虚拟机启动的数据为操作系统用于启动虚拟机的必要数据,将该必要数据为虚拟数据存储到缓存区中,这样后面再有同类型的虚拟机启动时,可以到缓存区中读取到操作系统用于启动虚拟机的必要数据,无需再到第二存储设备中读取,大大节省了虚拟机启动所需的时间。
结合第一方面或第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,该方法还包括:读数据请求中携带有第一虚拟磁盘标识、需读取的数据块的大小值和需读取的数据块的偏移量,其中,第一虚拟磁盘为第一存储设备中为所述虚拟机分配的虚拟磁盘。虚拟磁盘驱动根据虚拟磁盘标识与操作系统标识之间的对应关系查找到所述第一虚拟磁盘标识对应的第一操作系统标识,第一操作系统标识是所述虚拟机需要安装的操作系统的标识。虚拟磁盘驱动根据读数据请求确定缓存区中是否存储有需读取的数据块具体为:虚拟磁盘驱动根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量,确定缓存区中是否存储有所述需读取的数据块。当所述缓存区中没有存储所述需读取的数据块时,虚拟磁盘驱动根据读数据请求在述第二存储设备中查找需读取的数据块具体为:当缓存区中没有存储需读取的数据块时,虚拟磁盘驱动根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量在第二存储设备中查找所述需读取的数据块。
虚拟磁盘驱动查找到读数据请求中的第一虚拟磁盘标识对应的第一操作系统标识,可以根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量在缓存区中查找是否有需读取的数据;如果缓存区中没有存储该需读取的数据,虚拟磁盘驱动根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量到第二存储设备中查找需读取的数据,而无需将第二存储设备中的第一操作系统的数据提前读取到第一虚拟磁盘中,大大加快了虚拟机启动的速度。
结合第一方面或第一方面第一种可能的实现方式,在第一方面第三种可能的实现方式中,第一操作系统标识为所述虚拟机对应的虚拟机模板的操作系统虚拟磁盘的标识。
这样如果缓存区中没有存储该需读取的数据,虚拟磁盘驱动可以根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量到第二存储设备中查找需读取的数据,不用再转换标识。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第四种可能的实现方式中,操作系统用于启动所述虚拟机的必要数据为所述虚拟机处于启动完成状态时已读取的所述操作系统的数据,所述启动完成状态包括:所述缓存区中写入的所述操作系统的数据的数量大于预定数量,所述虚拟机的CPU占用率小于预定阈值,或者所述虚拟磁盘驱动接收到所述虚拟机读写非操作系统虚拟磁盘的操作请求数量超过预定阈值。
确定虚拟机处于启动完成状态时已读取的操作系统的数据为操作系统的必要数据,可以大大减少虚拟机在启动时需要读取的数据,节省了虚拟机启动所花费的时间。
结合第一方面第二种可能的实现方式或第一方面第三种可能的实现方式或者第一方面第四种可能的实现方式,在第一方面第五种可能的实现方式中,方法还包括以下步骤:虚拟磁盘驱动将需读取的数据块写入第一虚拟磁盘。
结合第一方面第五种可能的实现方式,在第一方面第六种可能的实现方式中,所述虚拟磁盘驱动将所述操作系统的非必要数据写入所述第一虚拟磁盘。
结合第一方面第二种可能的实现方式或第一方面第三种可能的实现方式或者第一方面第四种可能的实现方式,在第一方面第七种可能的实现方式中,所述缓存区位于所述服务器中或者位于所述第一存储设备中。
缓存区中存储有操作系统用于启动虚拟机的必要数据,当缓存区在服务器中时,虚拟机启动时可以快速的从服务器中读取到启动所需要的操作系统的必要数据。可选的,也可以在第一存储设备中划分出缓存区,虚拟机启动时也可以很快的从第一存储设备中读取到启动所需要的操作系统的必要数据。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第八种可能的实现方式中,虚拟磁盘驱动采用缓冲链表的方式来记录写入所述缓存区的数据块的操作系统标识、数据块的大小值和数据块的偏移量。
将操作系统的必要数据存储到缓存区的同时,需要记录存储的数据的信息,便于后续读取时方便查找虚拟机启动时需读取的数据。
结合第一方面第八种可能的实现方式,在第一方面第九种可能的实现方式中,所述方法还包括:在对应所述操作系统的缓冲链表的描述对象上记录所述查找到的数据块的大小值和数据块的偏移量,并把所述查找到的数据块保存在所述缓存区中的地址保存到对应所述操作系统的所述缓冲链表的最后一个描述对象上。
第二方面,本发明实施例提供了一种用于在虚拟机启动过程中获取数据的服务器,服务器与第二存储设备相连,第二存储设备为镜像存储设备,其中,服务器包括处理器,处理器运行有虚拟化平台,虚拟化平台中运行有虚拟磁盘驱动,虚拟磁盘驱动用于:接收虚拟机的读数据请求;根据读数据请求确定缓存区中是否存储有该需读取的数据块,缓存区用于存储虚拟机需要读取的操作系统用于启动所述虚拟机的必要数据;该必要数据为该虚拟机处于启动完成状态时已读取的所述操作系统的数据;当缓存区中存储有该需读取的数据块时,从缓存区中读取该需读取的数据块,并返回虚拟机;当缓存区中没有存储有需读取的数据块时,根据读数据请求在第二存储设备中查找该需读取的数据块,并将查找到的需读取的数据块返回给所述虚拟机。
本发明实施例提供的服务器,在缓存区中存储虚拟机启动时需要读取的操作系统的必要数据,虚拟机在启动过程中可以在缓存区中获取操作系统的必要数据,大大节省了虚拟机启动需花费的时间。
结合第二方面,在第二方面第一种可能的实现方式中,虚拟磁盘驱动还用于:若在第二存储设备中查找到的该需读取的数据块为操作系统用于启动所述虚拟机的必要数据,将查找到的数据块写入所述缓存区。
将操作系统用于启动虚拟机的必要数据存储到缓存区中,再启动相同类型的虚拟机时,就可以在缓存区中读取到操作系统的必要数据,大大节省了虚拟机启动所需的时间。
结合第二方面或第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,读数据请求中携带有第一虚拟磁盘标识、需读取的数据块的大小值和需读取的数据块的偏移量,其中,第一虚拟磁盘为第一存储设备中为该虚拟机分配的虚拟磁盘。虚拟磁盘驱动还用于根据虚拟磁盘标识与操作系统标识之间的对应关系查找到第一虚拟磁盘标识对应的第一操作系统标识,第一操作系统标识是该虚拟机需要安装的操作系统的标识。虚拟磁盘驱动用于根据读数据请求确定缓存区中是否存储有需读取的数据块具体为:虚拟磁盘驱动用于根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量,确定缓存区中是否存储有该需读取的数据块。虚拟磁盘驱动用于当缓存区中没有存储有该需读取的数据块时,根据读数据请求在第二存储设备中查找该需读取的数据块具体为:当缓存区中没有存储该需读取的数据块时,虚拟磁盘驱动用于根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量在第二存储设备中查找该需读取的数据块。
结合第二方面或第二方面以上任一种可能的实现方式,在第二方面第三种可能的实现方式中,虚拟磁盘驱动还用于:判断所述虚拟机是否处于启动完成状态。启动完成状态包括:缓存区中写入的操作系统的数据大于预定数量,虚拟机的CPU占用率小于预定阈值,或者虚拟磁盘驱动接收到虚拟机读写非操作系统虚拟磁盘的操作请求数量超过预定阈值。
确定虚拟机处于启动完成状态时已读取的操作系统的数据为操作系统的必要数据,可以大大减少虚拟机在启动时需要读取的数据,节省了虚拟机启动所花费的时间。
结合第二方面或第二方面以上任一种可能的实现方式,在第二方面第四种可能的实现方式中,云系统还包括第一存储设备,虚拟磁盘驱动还用于将该需读取的数据块写入第一虚拟磁盘。
结合第二方面或第二方面以上任一种可能的实现方式,在第二方面第五种可能的实现方式中,虚拟磁盘驱动还用于将该操作系统的非必要数据写入第一虚拟磁盘。
结合第二方面或第二方面以上任一种可能的实现方式,在第二方面第六种可能的实现方式中,虚拟磁盘驱动还用于根据读数据请求确定缓存区中没有存储该需读取的数据块,且在第二存储设备中查找到的该需读取的数据块的数据为操作系统用于启动所述虚拟机的必要数据时,在对应所述操作系统的缓冲链表的描述对象上记录所述查找到的数据块的大小值和数据块的偏移量,并把所述查找到的数据块保存在所述缓存区中的地址保存到对应所述操作系统的所述缓冲链表的最后一个描述对象上。
将操作系统的必要数据存储到缓存区的同时,需要记录存储的数据的信息,便于后续读取时方便查找虚拟机启动时需读取的数据。
结合第二方面或第二方面以上任一种可能的实现方式,在第二方面第七种可能的实现方式中,所述缓存区位于所述服务器中或者位于所述第一存储设备中。
第三方面,本发明实施例提供了一种云计算系统,包括第一存储设备、第二存储设备和如第二方面或第二方面第一种至第六种任一种可能的实现方式所述的服务器,服务器与第二存储设备相连,第二存储设备为镜像存储设备,第一存储设备可以在服务器中,也可以与服务器相连,第一存储设备为虚拟机存储设备。
本发明实施例提供的云计算系统,服务器在缓存区中存储有虚拟机启动时需要读取的操作系统的必要数据,虚拟机在启动过程中可以到缓存区中获取到启动所需读取的操作系统的必要数据,大大节省了虚拟机启动所需的时间。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1为本发明实施例的云计算系统的结构示意图;
图2为本发明实施例的虚拟机启动过程中获取数据的方法流程图;
图3为本发明实施例的虚拟机启动过程中获取数据的另一方法流程图;
图4为本发明实施例的缓冲链表的结构示意图;
图5为本发明实施例的服务器的结构示意图;
图6为本发明实施例的服务器的另一结构示意图;
图7为本发明实施例的去计算系统的另一结构示意图。
具体实施方式
在虚拟化场景下,无论是单纯的虚拟化平台还是在虚拟化平台基础上的云服务,都需要提供一种虚拟机创建启动机制。创建虚拟机的云计算系统的结构如附图1所示,所述云计算系统包括服务器、第一存储设备和第二存储设备。服务器可以为一个普通的服务器,包含处理器。处理器用于创建虚拟机,运行虚拟化平台。为了方便查看,将处理器创建的虚拟机以及运行的虚拟化平台单独在图1中示出。虚拟化平台中运行有虚拟磁盘驱动,虚拟磁盘驱动用于管理虚拟机。第一存储设备用于为创建的虚拟机提供存储空间,即为创建的虚拟机分配虚拟磁盘,因此所述第一存储设备也可以称为虚拟机存储设备。第一存储设备可以是服务器本机的硬盘,也可以是外挂的磁盘阵列,第一存储设备对性能要求比较高。第二存储设备用于存储虚拟机模板、虚拟机的操作系统等信息,第二存储设备也可以称为镜像存储设备。第二存储设备对可靠性要求较高。一般情况下,第一存储设备和第二存储设备是物理上独立的两个存储设备。
虚拟机模板是预先创建并且未运行的虚拟机,存储在镜像存储设备中。虚拟机模板有虚拟CPU、虚拟内存和至少一块虚拟磁盘。安装了操作系统的虚拟磁盘称之为操作系统虚拟磁盘,可以做为启动虚拟机的引导磁盘。仅安装了应用程序而未安装操作系统的虚拟磁盘称之为非操作系统虚拟磁盘。根据某个虚拟机模板创建的多个虚拟机为同一个类型的虚拟机。同一类型的虚拟机,在创建和启动时,分配的虚拟磁盘、读取的操作系统的数据以及读取操作系统的顺序等等均相同。
创建虚拟机时,用户选择一个虚拟机模板来创建一个新的虚拟机,即用户选择要创建的虚拟机的类型。云计算系统中的虚拟机管理器创建一个虚拟机,通知云计算系统中的磁盘管理器,所述磁盘管理器在虚拟机存储设备中为新创建的虚拟机创建空的虚拟磁盘。新创建的虚拟机向虚拟磁盘驱动发送读数据请求,虚拟磁盘驱动接收到读数据请求后把虚拟机模板的虚拟磁盘的数据拷贝到所述空的虚拟磁盘中。拷贝完虚拟机模板的虚拟磁盘的数据后,在此基础上即可成功启动一个虚拟机。虚拟机模板的虚拟磁盘的数据大小一般在10G以上,将这些数据拷贝到所述空的虚拟磁盘中需要的时间比较长,因此创建虚拟机的速度比较慢。而且由于虚拟机存储设备与镜像存储设备一般是两个独立的存储系统,因此启动新的虚拟机时,需要从镜像存储设备将虚拟机模板中虚拟磁盘的数据复制到虚拟机存储设备上。受到镜像存储设备的性能和镜像存储设备与服务器之间的网络带宽原因的影响,当启动的虚拟机数量较多时,启动速度慢。
为了提高启动虚拟机的速度,现有技术中针对在同一个虚拟机存储设备上创建同类型的虚拟机的情况,使用链接克隆技术。具体方式为:创建某种类型的第一个虚拟机时,在虚拟机存储设备中创建第一虚拟磁盘,这里的第一虚拟磁盘是指在虚拟机存储设备中为第一个虚拟机分配的虚拟磁盘,将虚拟机模板的虚拟磁盘的数据拷贝到第一虚拟磁盘之后,对第一虚拟磁盘创建快照,将快照作为链接克隆,利用快照创建同种类型的第二个以及更多的虚拟机。采用链接克隆技术时,仍然需要把虚拟机模板的虚拟磁盘的数据拷贝到第一虚拟磁盘,另外通过链接克隆同时创建的虚拟机数量要受限于虚拟机存储设备的性能。从共同的链接克隆卷上读取数据时,随着虚拟机个数的增加,读取的性能会线性下降,当超过一定数量后,虚拟机创建就会变慢,难以响应用户的操作,因此通过链接克隆创建的虚拟机数量要受到限制。当超过限制的数量时,需要创建新的链接克隆。
总之,使用目前技术方案,当需要创建的虚拟机数量较大时,无法快速创建和启动虚拟机以满足用户业务的增长需要。
本发明实施例提供一种在虚拟机启动过程中快速获取数据的实现方案,实现方法的流程如附图2所示。所述方法应用于云计算系统,云计算系统包括服务器和第二存储设备,所述第二存储设备为镜像存储设备,所述服务器上运行虚拟化平台,虚拟化平台中运行虚拟磁盘驱动,如附图1所示。
步骤201:虚拟化平台的虚拟磁盘驱动接收待启动虚拟机发送的读数据请求。
需要创建虚拟机时,用户选择待创建的虚拟机的类型,即选择虚拟机模板,云计算系统中的虚拟机管理器创建第一虚拟机,并向云计算系统中的磁盘管理器发送通知消息。可选的,云计算系统还包括第一存储设备,第一存储设备为虚拟机存储设备,用于为创建的虚拟机提供虚拟磁盘。磁盘管理器接收到通知消息之后在虚拟机存储设备上创建一个空卷,作为第一虚拟机的虚拟磁盘。为了后续描述方便,在本发明实施例中,将创建的虚拟磁盘称为第一虚拟磁盘。此步骤与已有的实现方式相同,因此不再详细描述。云计算系统中的虚拟机管理器和磁盘管理器的功能与现有技术中的功能相同,不再另行描述。
可选的,虚拟机模板可以有操作系统虚拟磁盘和非操作系统虚拟磁盘,并且非操作系统虚拟磁盘可以有多个。如果用户选择的虚拟机模板有多个虚拟磁盘,则在本步骤中,虚拟磁盘驱动在第一存储设备上创建多个第一虚拟磁盘,分别与虚拟机模板中的多个虚拟磁盘对应。
第一虚拟磁盘创建完后,会触发启动虚拟机的操作。虚拟机开始启动,读取基本输入/输出系统(Basic Input/Output System,BIOS)中的数据后,虚拟机向虚拟化平台发送读数据请求。读数据请求中携带有第一虚拟磁盘标识,需读取的数据块的大小值和需读取的数据块的偏移量,这里的第一虚拟磁盘标识即指第一虚拟磁盘的虚拟磁盘标识。
创建虚拟机时,用户选择虚拟机模板后,虚拟机管理器根据虚拟机模板创建虚拟机,并通知磁盘管理器在虚拟机存储设备中为创建的虚拟机分配虚拟磁盘。磁盘管理器将创建的虚拟磁盘的虚拟磁盘标识返回给虚拟机管理器。由于虚拟机模板中包含了创建的虚拟机需读取的操作系统的信息,因此虚拟机管理器创建虚拟机后可以获得创建的虚拟机需读取的操作系统的操作系统标识。虚拟机管理器将获得的操作系统标识和虚拟磁盘标识发送给服务器的虚拟化平台的虚拟磁盘驱动。虚拟磁盘驱动收到之后,建立操作系统标识与虚拟磁盘标识之间的对应关系,并将操作系统标识与虚拟磁盘标识之间的对应关系存储到服务器的内存中。
虚拟磁盘驱动接收到待启动虚拟机发送的读数据请求后,根据内存中存储的虚拟磁盘标识与操作系统标识之间的对应关系查找到所述第一虚拟磁盘标识对应的第一操作系统标识,所述第一操作系统标识是所述虚拟机需要安装的操作系统的标识。由于虚拟机是根据某个虚拟机模板来创建的,因此这里的第一操作系统标识可以与虚拟机对应的虚拟机模板的操作系统虚拟磁盘的标识相同。
虚拟机在启动的过程中,会确定此次需要读取的数据块的大小值和数据块的偏移量。在启动过程中,虚拟机会向虚拟磁盘驱动发送多个读数据请求来读取操作系统的数据,虚拟机读取到需要的操作系统的数据之后完成启动。
在现有技术中,虚拟机创建后,会把虚拟机对应的虚拟模板的操作系统虚拟磁盘的数据先读取到虚拟机的第一虚拟磁盘中,虚拟机启动时,读数据请求中携带的是第一虚拟磁盘的虚拟磁盘标识,这时虚拟磁盘驱动是到第一虚拟磁盘中读取操作系统的数据。而本发明实施例中,虚拟磁盘驱动会将读数据请求中的第一虚拟磁盘的虚拟磁盘标识转换为对应的第一操作系统标识,虚拟磁盘驱动就可以根据第一操作系统标识在缓存区中查找,这样只要在缓存区中存储有第一操作系统标识对应的操作系统的数据,就可以直接从缓存区中获取启动所需的操作系统的数据,而无需提前将虚拟机模板的操作系统虚拟磁盘的数据读取到虚拟机的第一虚拟磁盘中,大大加快其他虚拟机启动的速度。
步骤203:虚拟磁盘驱动根据所述读数据请求确定缓存区中是否存储有所述需读取的数据块,所述缓存区用于存储所述操作系统用于启动所述虚拟机的必要数据。
所述缓存区位于所述服务器中,可以位于服务器的内存中,也可以位于服务器的本机存储介质中。可选的,所述缓存区也可以位于第一存储设备中,所述缓存区可以位于第一存储设备的控制器中,也可以由高性能的存储设备(例如SSD盘)来作为缓存区。
虚拟磁盘驱动根据读数据请求确定缓存区中是否存储有需读取的数据块具体为:虚拟磁盘驱动根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量,确定缓存区中是否存储有所述需读取的数据块。
发明人在发明过程中发现,在启动虚拟机的过程中,虚拟机并不需要读取操作系统的全部数据才能完成虚拟机的启动,而是只需要读取操作系统的部份数据即可。在本发明实施例中,确认虚拟机处于启动完成状态时已读取的操作系统的数据就是启动虚拟机所必需的数据,所以将虚拟机处于启动完成状态时已读取的操作系统的数据称为操作系统的必要数据。操作系统的数据的大小一般会有十几个G,而启动虚拟机所需的操作系统的必要数据要小得多。
相同类型的虚拟机的创建和启动过程完全一致。基于这个发现,虚拟磁盘驱动可以记录某种类型第一个虚拟机处于启动完成状态时已读取的操作系统的数据,这些操作系统的数据也必然是第二个以及后续创建的相同类型虚拟机启动时要读取的操作系统的数据,而且读取的顺序也一样。
操作系统大部分的数据是在虚拟机启动完成后读取的,在本发明实施例中,将虚拟机启动完成后读取的数据称为操作系统的非必要数据。如果缓存操作系统的全部数据会大大增加内存的需求,成本急剧增加。因此虚拟磁盘驱动要判断虚拟机处于启动完成状态时虚拟机已经读取的操作系统的数据。
本发明实施例提供有三种方式来判断虚拟机是否处于启动完成状态。
第一种方式是当缓存区中写入的操作系统的数据的数量大于预定数量时。预定数量可以由经验丰富的工程师根据虚拟机处于启动完成状态时虚拟机已经读取的操作系统的数据的数量来确定。由于同一种类型的虚拟机启动时读取操作系统数据的顺序是一样的,因此,可以由经验丰富的工程师将统计得到的虚拟机处于启动完成状态时已读取的操作系统的数据大小作为预定数量。在创建同类型的虚拟机时,虚拟机读取的操作系统的数据大于预定数量时,虚拟机即可完成启动。
第二种方式是,虚拟磁盘驱动判断对非操作系统虚拟磁盘的读写操作是否超过预定阈值。当虚拟机启动完成后,才能对操作系统虚拟磁盘以外的虚拟磁盘(即非操作系统磁盘)进行读写操作。因此可以设定对非操作系统虚拟磁盘的读写操作超过一定的数量时或者是对非操作系统虚拟磁盘的读写操作达到总读写操作一定的比例时,就可以判断虚拟机启动完成。将虚拟机处于启动完成状态时已经读取的操作系统的数据即为操作系统的必要数据。
第三种方式是,判断虚拟机的CPU的占用率是否小于预定的阈值。在一定时间周期内,CPU占用率小于一定的数值,就可以判断虚拟机启动完成,此时虚拟机已读取的操作系统的数据即为操作系统的必要数据。
除了以上提到的判断虚拟机是否处于启动完成状态的三种方式,本领域技术人员也可以通过其他类似的方式来判断虚拟机是否处于启动完成状态。例如,可以由经验丰富的工程师统计在某些情况下虚拟机处于启动完成状态时读取操作系统的时间,将统计得到的时间作为预定时间阈值。当虚拟机启动时,在同样的情况下读取操作系统的时间达到预定的时间阈值时虚拟机启动完成。
可选的,也可以识别出操作系统的必要数据,在创建虚拟机之前预先将操作系统的必要数据存入缓存区。
虚拟磁盘驱动在接收到虚拟机发送的读数据请求之后,确定缓存区中是否存储有所述需读取的数据块,缓存区用于存储所述操作系统用于启动虚拟机的必要数据。可选的,虚拟磁盘驱动还可以为每种操作系统的必要数据创建单独的缓存区分别存储。对于缓存区存储的操作系统的必要数据,虚拟磁盘驱动可以使用缓冲链表的方式来记录相关的信息。例如,采用缓冲链表的方式来记录写入缓存区的数据块的操作系统标识,数据块的大小值和数据块的偏移量。可选的,也可以使用其他方式(例如树状结构)来记录缓存区中存储的操作系统的必要数据的信息。具体采用哪种方式,可以根据业务或者用户的需要来设置。
下面以使用链表的方式为例来说明是如何存储以及利用操作系统必要数据的信息的。本发明实施例提供的链表的结构如附图3所示。
虚拟磁盘驱动创建一个缓冲链表的全局指针。在创建虚拟机之前,缓存区中没有存储数据,此时缓冲链表指针为空。因此创建第一个虚拟机时,虚拟磁盘驱动中指向缓冲链表指针为空,此时需要在缓冲链表中创建一个镜像缓冲对象,在镜像缓冲对象处记录操作系统标识(即操作系统的标识),已经缓冲数据量为0,下一个镜像缓冲对象指针设置为空,缓冲的数据块链表指针为空。在虚拟机启动过程中,要读取数据时,先根据读数据请求中的操作系统标识在镜像链表中查找是否有对应的镜像缓冲对象(即操作系统的必要数据)。找到镜像缓冲对象后,再根据读数据请求中的数据块的大小值和数据块的偏移量在镜像缓冲对象的数据块链表中查找是否存在对应的数据块。如果存在对应的数据块,则表明缓存区中存储有需读取的数据块,则将缓存区中对应位置的数据块返回给虚拟机。具体的操作系统数据可以存储在缓冲链表中(如附件4所示),也可以添加指针指向该操作系统数据存储的位置。具体实现方式可以采用已知的实现方式,在本发明实施例中不再详细说明。对于虚拟机来说,就如同从虚拟磁盘上读取到了操作系统的必要数据。相对从镜像磁盘上读取操作系统的数据,大大节省了时间。
如果根据操作系统标识没有在镜像链表中找到对应的镜像标识,或者根据数据块的大小值和数据块的偏移量在镜像链表中没有找到对应的数据块,则说明缓存区中没有存储所述读数据请求需读取的数据块,这时虚拟磁盘驱动需要从镜像存储中读取所述需读取的数据块。如果此时需读取的数据为操作系统的必要数据,则将所述操作系统的必要数据写入缓存区,并在在缓冲链表中新创建一个镜像缓冲对象,在镜像缓冲对象上记录操作系统的镜像标识、数据块的大小值和数据块的偏移量,并把数据块保存新在缓存区中的地址保存到操作系统的数据链表的最后一个对象上。如何判断读取的数据是否为操作系统的必要数据,在前文已进行了相应的描述,在此不再另行说明。
步骤205:当根据所述读数据请求确定所述缓存区中存储有所述需读取的数据块时,所述虚拟磁盘驱动从所述缓存区中读取所述需读取的数据块,返回所述虚拟机。
由于在创建同种类型的第一个虚拟机时,已经将操作系统的必要数据缓冲在缓存区中。因此,在创建同种类型的第二个虚拟机时,虚拟磁盘驱动根据读数据请求可以在缓存中查找到所述需读取的数据块。具体来说,当以镜像缓冲链表的方式记录缓存区中存储的数据时,虚拟磁盘驱动根据读数据请求中的操作系统标识在镜像缓冲链表中查找到所述操作系统标识,再根据读数据请求中的需读取的数据块的大小值和需读取的数据块的偏移量在所述镜像缓冲链表中查找到对应的对象,则说明缓存区中存储有所述需读取的数据块。虚拟磁盘驱动从缓存区中读取所述数据块,并返回给所述虚拟机。当虚拟机读取完需要读取的操作系统的必要数据后,即可完成启动。
由于启动虚拟机所需的操作系统的必要数据已经在缓存区内,再创建同种类型的虚拟机时可以直接从缓存区中读取操作系统的必要数据,而不需要从第二存储设备中读取操作系统的必要数据到虚拟磁盘再从虚拟磁盘中读取操作系统的数据,从而大大加快了虚拟机的启动速度。并且创建同类型的虚拟机的数量不受限制,这样在创建大量的虚拟机时,启动虚拟机的时间大大缩短。
步骤207:当所述缓存区中没有存储所述所述需读取的数据块时,虚拟磁盘驱动根据所述读数据请求在第二存储设备中查找所述需读取的数据块,并将查找到的所述需读取的数据块返回给虚拟机。
当所述缓存区中没有存储需读取的数据块时,虚拟磁盘驱动根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量在第二存储设备中查找所述需读取的数据块。如果缓存区中没有存储所述需读取的数据块,虚拟磁盘驱动则到第二存储设备中根据所述读数据请求查找需要读取的数据块。虚拟磁盘驱动根据第一操作系统标识、需读取的数据块的大小值和需读取的数据块的偏移量在第二存储设备中查找到对应的数据块之后,将查找到的数据块返回给虚拟机。
虚拟机读取完操作系统的必要数据之后,即可完成启动。这样,虚拟机在启动时,只需要从第二存储设备中读取操作系统的必要数据,而不需要读取操作系统的全部数据,可以大大节省虚拟机的启动时间。
步骤209:若根据所述读数据请求在第二存储设备中查找到的所述需读取的数据块为操作系统用于启动虚拟机的必要数据,虚拟磁盘驱动将所述查找到的数据块写入所述缓存区。
虚拟磁盘驱动将所述查找到的数据块写入缓存区之后,记录所述查找到的数据块的操作系统标识,所述查找到的数据块的大小值和所述查找到的数据块的偏移量。记录方式可以是链表的方式记录,也可以是其他的方式(例如树状结构)来记录。可选的,链表的记录方式如前文所述,在此不再另行说明。
将操作系统的必要数据写入缓存区中,当有同种类型的虚拟机需要启动时,可以根据读数据请求在缓存区中查找到启动虚拟机的操作系统的必要数据,这样就无需去第二存储设备中读取数据,大大节省了虚拟机的启动时间。当待启动的虚拟机数量较多时,效果更明显。
在前述方法的基础上,所述方法还可以包括以下步骤,如附图3所示:
步骤311:虚拟磁盘驱动将所述需读取的数据块写入第一虚拟磁盘。
虚拟磁盘驱动将虚拟机在启动过程中需读取的数据块写入第一虚拟磁盘中,第一虚拟磁盘是云计算系统中磁盘管理器在第一存储设备中为虚拟机分配的虚拟磁盘。当缓存区中存储有所述需读取的数据块时,虚拟磁盘驱动可以在向虚拟机返回所述需读取的数据块的同时将所述数据块写入第一虚拟磁盘,也可以在系统空闲时将所述数据块写入第一虚拟磁盘。当缓存区中没有存储所述需读取的数据块时,虚拟磁盘驱动可以在将所述数据块写入缓存区的同时将所述数据块写入第一虚拟磁盘中,还可以在向虚拟机返回所述数据时将所述数据块写入第一虚拟磁盘中,还可以在系统空闲时将所述数据块写入第一虚拟磁盘。
可选的,所述方法还可以包括以下步骤,如附图3所示:
步骤313:所述虚拟磁盘驱动将所述操作系统的非必要数据写入所述第一虚拟磁盘。
当所述需读取的数据块是所述操作系统的非必要数据时,只需要将所述操作系统的非必要数据写入所述第一虚拟磁盘,而不写入缓存区。由于操作系统的非必要数据不影响虚拟机的启动,因此,可以在虚拟机启动之后系统空闲时再将操作系统的非必要数据写入第一虚拟磁盘中。这样可以在系统相对空闲时再操作,减小对系统性能的影响。
本发明实施例提供的一种在虚拟机启动过程中获取数据的方法,在虚拟机启动过程中,虚拟化平台的虚拟磁盘驱动接收到虚拟机发送的读数据请求之后,查找与读数据请求中的第一虚拟磁盘标识对应的第一操作系统标识,根据第一操作系统标识、需读取的数据块的大小值和需读取的数据的偏移量确定缓存区中是否存储有该需读取的数据块,当缓存区中存储有该需读取数据块时,虚拟磁盘驱动向虚拟机返回需读取的数据块。缓存区是用来存储虚拟机需读取的操作系统用于启动虚拟机的必要数据的。这样,在虚拟机的启动过程中,如果可以在缓存区中读取到虚拟机启动所需的操作系统的必要数据,而现有技术是在虚拟机启动过程中需要先把镜像存储设备中的操作系统的数据读取到第一存储设备中,这样本发明实施例提供的方案大大节省了虚拟机的启动时间。即使在缓存区中没有存储虚拟机启动所需的操作系统的必要数据,在本发明实施例中需要到镜像存储设备中去读取操作系统的必要数据,因此本发明实施例提供的方案可以节省虚拟机的启动时间。另外,相对现有技术中的链接克隆技术,本发明实施例提供的方法不受虚拟机数量的限制,并且虚拟机读取到操作系统的必要数据就可以启动,虚拟机启动的时间亦大大缩短。
本发明实施例还提供一种云计算系统(如附图1所示),包括服务器11、第一存储设备13和第二存储设备15。服务器11与第二存储设备15相连;第一存储设备13可以与服务器11相连,也可以是服务器11中的硬盘。第一存储设备13用于为创建的虚拟机提供存储空间,即为创建的虚拟机1011分配虚拟磁盘,因此所述第一存储设备13也可以称为虚拟机存储设备。第一存储设备13可以是服务器外挂的磁盘阵列。第二存储设备15用于存储虚拟机模板、虚拟机的虚拟磁盘等信息,第二存储设备15也可以称为镜像存储设备。一般情况下,第一存储设备13和第二存储设备15是物理上独立的两个存储设备。
所述服务器用于实现前述的在虚拟机启动中获取数据的方法,服务器的结构如附图5所示。服务器包含处理器51,处理器51用于创建虚拟机511并运行虚拟化平台513。虚拟化平台513中运行有虚拟磁盘驱动5131,虚拟磁盘驱动5131用于实现以下方案:
接收虚拟机511的读数据请求;所述读数据请求中携带有第一虚拟磁盘标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量,其中,所述第一虚拟磁盘为第一存储设备中为所述虚拟机分配的虚拟磁盘;
根据虚拟磁盘标识与操作系统标识之间的对应关系查找到所述第一虚拟磁盘标识对应的第一操作系统标识,所述第一操作系统标识是所述虚拟机需要安装的操作系统的标识;
根据所述读数据请求确定缓存区54中是否存储有所述需读取的数据块。
所述缓存区54用于存储所述虚拟机需要读取的操作系统用于启动所述虚拟机的必要数据;所述必要数据为所述虚拟机处于启动完成状态时已读取的所述操作系统的数据。
所述虚拟磁盘驱动用于根据所述读数据请求确定缓存区中是否存储有需读取的数据块,具体为:所述虚拟磁盘驱动用于根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量,确定缓存区中是否存储有所述需读取的数据块。
所述缓存区54可以位于服务器中(如附图6所示的服务器),例如位于服务器的内存中,或者位于服务器的本机存储介质中。可选的,所述缓存区54也可以位于第一存储设备13中(如附图7所示的云计算系统),例如可以位于第一存储设备13的控制器中,也可以由高性能的存储设备(例如SSD盘)来提供缓存区。
当所述缓存区54中存储有所述需读取的数据块时,虚拟磁盘驱动5131用于从所述缓存区54中读取所述需读取的数据块,并返回给所述虚拟机511;当所述缓存区54中没有存储有所述需读取的数据块时,虚拟磁盘驱动5131还用于根据所述读数据请求在第二存储设备中查找所述需读取的数据块,并将查找到的所述需读取的数据块返回给所述虚拟机511。
所述虚拟磁盘驱动用于当所述缓存区中没有存储有所述需读取的数据块时,根据所述读数据请求在所述第二存储设备中查找所述需读取的数据块,具体为:当所述缓存区中没有存储所述需读取的数据块时,所述虚拟磁盘驱动用于根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量在所述第二存储设备中查找所述需读取的数据块。
如果在缓存区中存储有虚拟机启动时需读取的数据块(即虚拟机启动时需要读取的操作系统的数据),在虚拟机的启动过程中虚拟磁盘驱动5131可以从缓存区中读取所述需读取的数据块,而不需要从第二存储设备中读取所述需读取的数据块到虚拟磁盘再从虚拟磁盘中读取所述需读取的数据,从而大大加快了虚拟机的启动速度。并且创建同类型的虚拟机的数量不受限制,这样在创建大量的虚拟机时,启动虚拟机的时间大大缩短。
即使在缓存区中没有存储所述虚拟机启动时需读取的数据块,在虚拟机启动的过程中,也只需要从第二存储设备中读取操作系统的必要数据,而不需要读取操作系统的全部数据,可以大大节省虚拟机的启动时间。
所述虚拟磁盘驱动5131还用于:若在所述第二存储设备中查找到的所述需读取的数据块为所述操作系统用于启动所述虚拟机的必要数据,将所述查找到的数据块写入所述缓存区54。
所述操作系统用于启动虚拟机的必要数据的判断方法在前文已做了详细的描述,在此不再另行说明。
所述虚拟磁盘驱动5131还用于:判断所述虚拟机511是否处于启动完成状态;所述启动完成状态包括:所述缓存区中写入的所述操作系统的数据大于预定数量;所述虚拟机的CPU占用率小于预定阈值;或者所述虚拟磁盘驱动接收到所述虚拟机读写非操作系统虚拟磁盘的操作请求数量超过预定阈值。
所述服务器还与第一存储设备相连,所述虚拟磁盘驱动5131还用于:将所述需读取的数据块写入所述第一虚拟磁盘。
所述虚拟磁盘驱动5131还用于:将所述操作系统的非必要数据写入所述第一虚拟磁盘。
所述虚拟磁盘驱动5131还用于:根据所述读数据请求确定所述缓存区54中没有存储所述需读取的数据块,且在所述第二存储设备中查找到的所述需读取的数据块的数据为所述操作系统用于启动所述虚拟机的必要数据时,在对应所述操作系统的缓冲链表的描述对象上记录所述查找到的数据块的大小值和数据块的偏移量,并把所述查找到的数据块保存在所述缓存区中的地址保存到对应所述操作系统的所述缓冲链表的最后一个描述对象上。
使用缓冲链表来记录写入所述缓存区的数据块的信息的具体在实现方法在前文已进行了详细的描述。在些不再另行说明。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (17)

1.一种虚拟机启动过程中的数据获取方法,应用于云计算系统,所述云计算系统包括服务器、第一存储设备和第二存储设备,所述第二存储设备为镜像存储设备,所述服务器上运行虚拟化平台,其特征在于,所述方法包括以下步骤:
所述虚拟化平台的虚拟磁盘驱动接收所述虚拟机发送的读数据请求;所述读数据请求中携带有第一虚拟磁盘标识、需读取的数据块的大小值和所述需读取的数据块的偏移量,其中,所述第一虚拟磁盘标识为所述第一存储设备中为所述虚拟机分配的第一虚拟磁盘的标识;
所述虚拟磁盘驱动根据虚拟磁盘标识与操作系统标识之间的对应关系查找到所述第一虚拟磁盘标识对应的第一操作系统标识,所述第一操作系统标识是所述虚拟机需要安装的操作系统的标识;
所述虚拟磁盘驱动根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量,确定缓存区中是否存储有需读取的数据块,所述缓存区用于存储所述虚拟机需要读取的操作系统用于启动所述虚拟机的必要数据,所述必要数据为所述虚拟机处于启动完成状态时已读取的所述操作系统的数据;
当所述缓存区中存储有所述需读取的数据块时,所述虚拟磁盘驱动从所述缓存区中读取所述需读取的数据块,返回所述虚拟机;
当所述缓存区中没有存储所述需读取的数据块时,所述虚拟磁盘驱动根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量在所述第二存储设备中查找所述需读取的数据块,并将查找到的所述需读取的数据块返回给所述虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在所述第二存储设备中查找到的所述需读取的数据块为所述操作系统用于启动所述虚拟机的必要数据,所述虚拟磁盘驱动将所述查找到的数据块写入所述缓存区。
3.根据权利要求1所述的方法,其特征在于,所述第一操作系统标识为所述虚拟机对应的虚拟机模板的操作系统虚拟磁盘的标识。
4.根据权利要求1-3任一所述的方法,其特征在于,所述操作系统用于启动所述虚拟机的必要数据为所述虚拟机处于启动完成状态时已读取的所述操作系统的数据,所述启动完成状态包括:所述缓存区中写入的所述操作系统的数据的数量大于预定数量,所述虚拟机的CPU占用率小于预定阈值,或者所述虚拟磁盘驱动接收到所述虚拟机读写非操作系统虚拟磁盘的操作请求数量超过预定阈值。
5.根据权利要求1-3任一所述的方法,其特征在于,所述方法还包括:所述虚拟磁盘驱动将所述需读取的数据块写入所述第一虚拟磁盘。
6.根据权利要求5所述的方法,其特征在于,所述方法包括:
所述虚拟磁盘驱动将所述操作系统的非必要数据写入所述第一虚拟磁盘。
7.根据权利要求1-3任一所述的方法,其特征在于,所述缓存区位于所述服务器中或者位于所述第一存储设备中。
8.根据权利要求1-3任一所述的方法,其特征在于,所述方法还包括:
所述虚拟磁盘驱动采用缓冲链表的方式来记录写入所述缓存区的数据块的操作系统标识、数据块的大小值和数据块的偏移量。
9.根据权利要求7所述的方法,其特征在于,所述虚拟磁盘驱动确定所述缓存区中没有存储所述需读取的数据块,且在所述第二存储设备中查找到的所述需读取的数据块的数据为所述操作系统用于启动所述虚拟机的必要数据时,所述方法还包括:
在对应所述操作系统的缓冲链表的描述对象上记录所述查找到的数据块的大小值和数据块的偏移量,并把所述查找到的数据块保存在所述缓存区中的地址保存到对应所述操作系统的所述缓冲链表的最后一个描述对象上。
10.一种用于在虚拟机启动过程中获取数据的服务器,所述服务器与第一存储设备、第二存储设备相连,所述第二存储设备为镜像存储设备,其特征在于:所述服务器包括处理器,所述处理器运行有虚拟化平台,所述虚拟化平台中运行有虚拟磁盘驱动,所述虚拟磁盘驱动用于:
接收所述虚拟机的读数据请求;所述读数据请求中携带有第一虚拟磁盘标识、需读取的数据块的大小值和所述需读取的数据块的偏移量,其中,所述第一虚拟磁盘标识为所述第一存储设备中为所述虚拟机分配的第一虚拟磁盘的标识;
根据虚拟磁盘标识与操作系统标识之间的对应关系查找到所述第一虚拟磁盘标识对应的第一操作系统标识,所述第一操作系统标识是所述虚拟机需要安装的操作系统的标识;
根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量,确定缓存区中是否存储有需读取的数据块,所述缓存区用于存储所述虚拟机需要读取的操作系统用于启动所述虚拟机的必要数据;所述必要数据为所述虚拟机处于启动完成状态时已读取的所述操作系统的数据;
当所述缓存区中存储有所述需读取的数据块时,从所述缓存区中读取所述需读取的数据块,并返回所述虚拟机;
当所述缓存区中没有存储有所述需读取的数据块时,根据所述第一操作系统标识、所述需读取的数据块的大小值和所述需读取的数据块的偏移量在所述第二存储设备中查找所述需读取的数据块,并将查找到的所述需读取的数据块返回给所述虚拟机。
11.根据权利要求10所述的服务器,其特征在于,所述虚拟磁盘驱动还用于:
若在所述第二存储设备中查找到的所述需读取的数据块为所述操作系统用于启动所述虚拟机的必要数据,将所述查找到的数据块写入所述缓存区。
12.根据权利要求10或11所述的服务器,其特征在于,所述虚拟磁盘驱动还用于:
判断所述虚拟机是否处于启动完成状态;所述启动完成状态包括:所述缓存区中写入的所述操作系统的数据大于预定数量,所述虚拟机的CPU占用率小于预定阈值,或者所述虚拟磁盘驱动接收到所述虚拟机读写非操作系统虚拟磁盘的操作请求数量超过预定阈值。
13.根据权利要求10或11所述的服务器,其特征在于,所述虚拟磁盘驱动还用于:将所述需读取的数据块写入所述第一虚拟磁盘。
14.根据权利要求10或11所述的服务器,其特征在于,所述虚拟磁盘驱动还用于:
将所述操作系统的非必要数据写入所述第一虚拟磁盘。
15.根据权利要求10或11所述的服务器,其特征在于,所述虚拟磁盘驱动还用于:
当所述服务器的缓存区中没有存储所述需读取的数据块,且在所述第二存储设备中查找到的所述需读取的数据块的数据为所述操作系统用于启动所述虚拟机的必要数据时,在对应所述操作系统的缓冲链表的描述对象上记录所述查找到的数据块的大小值和数据块的偏移量,并把所述查找到的数据块保存在所述缓存区中的地址保存到对应所述操作系统的所述缓冲链表的最后一个描述对象上。
16.根据权利要求10或11所述的服务器,其特征在于,所述缓存区位于所述服务器中或者位于所述第一存储设备中。
17.一种云计算系统,其特征在于,所述云计算系统包括第一存储设备、第二存储设备和如权利要求11-16任一所述的服务器,所述服务器与所述第二存储设备相连,所述第二存储设备为镜像存储设备,所述第一存储设备可以在所述服务器中,也可以与所述服务器相连,所述第一存储设备为虚拟机存储设备。
CN201680003333.7A 2016-11-24 2016-11-24 一种虚拟机启动过程中的数据获取方法和云计算系统 Active CN108475201B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/107112 WO2018094649A1 (zh) 2016-11-24 2016-11-24 一种虚拟机启动过程中的数据获取方法和云计算系统

Publications (2)

Publication Number Publication Date
CN108475201A CN108475201A (zh) 2018-08-31
CN108475201B true CN108475201B (zh) 2021-02-26

Family

ID=62194563

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680003333.7A Active CN108475201B (zh) 2016-11-24 2016-11-24 一种虚拟机启动过程中的数据获取方法和云计算系统

Country Status (2)

Country Link
CN (1) CN108475201B (zh)
WO (1) WO2018094649A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491757B (zh) * 2018-10-11 2022-03-15 广东微云科技股份有限公司 本地计算模式虚拟机的启动加速方法
CN110704157B (zh) * 2019-09-12 2023-06-30 深圳市元征科技股份有限公司 一种应用启动方法、相关装置及介质
CN110531730A (zh) * 2019-10-16 2019-12-03 广东紫方环保技术有限公司 一种污染源在线监控系统
CN112181596B (zh) * 2020-10-10 2023-05-12 济南浪潮数据技术有限公司 一种虚拟机克隆方法、装置、设备及存储介质
CN116560796B (zh) * 2023-05-12 2024-02-02 深圳天融信创新科技有限公司 数据加载方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105279000A (zh) * 2015-11-19 2016-01-27 北京北信源软件股份有限公司 一种虚拟机软件安装方法、安装控制器及安装代理
CN105607973A (zh) * 2014-11-19 2016-05-25 中国移动通信集团公司 一种虚拟机系统中设备故障处理的方法、装置及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102307206B (zh) * 2010-09-25 2014-10-01 广东电子工业研究院有限公司 基于云存储的快速访问虚拟机镜像的缓存系统的缓存方法
CN103067425B (zh) * 2011-10-20 2016-04-27 中国移动通信集团公司 虚拟机创建方法、虚拟机管理系统及相关设备
CN106095524B (zh) * 2011-12-22 2019-04-02 中国移动通信集团公司 一种虚拟机部署方法、系统和装置
CN102629941B (zh) * 2012-03-20 2014-12-31 武汉邮电科学研究院 云计算系统中虚拟机镜像缓存的方法
US8904113B2 (en) * 2012-05-24 2014-12-02 International Business Machines Corporation Virtual machine exclusive caching
CN103870312B (zh) * 2012-12-12 2018-01-23 华为技术有限公司 建立虚拟机共享存储缓存的方法及装置
US9436555B2 (en) * 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
CN104580391A (zh) * 2014-12-18 2015-04-29 国云科技股份有限公司 一种适用于云计算的提高服务器带宽的方法
KR102192503B1 (ko) * 2015-04-01 2020-12-17 한국전자통신연구원 캐시 서버를 이용하여 가상 데스크톱 서비스를 제공하기 위한 시스템 및 그 방법
CN105718280A (zh) * 2015-06-24 2016-06-29 乐视云计算有限公司 一种加速虚拟机io的方法和管理平台
CN105045663B (zh) * 2015-08-24 2018-12-04 马金栋 快速部署虚拟机的方法与系统
CN105487898A (zh) * 2015-11-27 2016-04-13 国云科技股份有限公司 一种提高虚拟机批量开机关机速度的方法
CN105549905B (zh) * 2015-12-09 2018-06-01 上海理工大学 一种多虚拟机访问分布式对象存储系统的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105607973A (zh) * 2014-11-19 2016-05-25 中国移动通信集团公司 一种虚拟机系统中设备故障处理的方法、装置及系统
CN105279000A (zh) * 2015-11-19 2016-01-27 北京北信源软件股份有限公司 一种虚拟机软件安装方法、安装控制器及安装代理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于镜像分割技术的虚拟机启动方法研究;易帆等;《成都工业学院学报》;20131231;第16卷(第4期);第44-47页 *

Also Published As

Publication number Publication date
CN108475201A (zh) 2018-08-31
WO2018094649A1 (zh) 2018-05-31

Similar Documents

Publication Publication Date Title
US11734125B2 (en) Tiered cloud storage for different availability and performance requirements
CN108475201B (zh) 一种虚拟机启动过程中的数据获取方法和云计算系统
CN110062924B (zh) 用于虚拟化图形处理的容量预留
US11397648B2 (en) Virtual machine recovery method and virtual machine management device
US9870288B2 (en) Container-based processing method, apparatus, and system
US8832029B2 (en) Incremental virtual machine backup supporting migration
US8793427B2 (en) Remote memory for virtual machines
CN108701048B (zh) 数据加载方法及装置
US11080143B2 (en) Systems and processes for data backup and recovery
US20220066786A1 (en) Pre-scanned data for optimized boot
CN107203480B (zh) 一种数据预取方法以及装置
US20140082275A1 (en) Server, host and method for reading base image through storage area network
US10089015B1 (en) Per-drive memory resident zeroing maps for drive zeroing in a data storage system
US11481140B1 (en) Dynamic base disk mirroring for linked clones
US20220058044A1 (en) Computer system and management method
US20130262532A1 (en) Garbage collection for virtual environments
US11055017B1 (en) Throttling a point-in-time snapshot copy operation within a data consistency application
CN112631994A (zh) 数据迁移方法及系统
EP3264254A1 (en) System and method for a simulation of a block storage system on an object storage system
US11126371B2 (en) Caching file data within a clustered computing system
CN113986471A (zh) 虚拟机镜像文件安全删除方法、装置、设备及存储介质
US11121981B1 (en) Optimistically granting permission to host computing resources
CN109241011B (zh) 一种虚拟机文件处理方法及装置
CN107145305B (zh) 一种分布式物理磁盘的使用方法及虚拟机
CN110908602A (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
GR01 Patent grant
GR01 Patent grant