背景技术
云计算IaaS(基础设施即服务)系统中用户可以自主选择计算资源、存储空间、网络带宽乃至操作系统,而并不需要了解和控制云计算基础设置。IaaS系统会根据用户需求控制资源分配,并通过调度算法提供服务。
目前,主流IaaS系统都是通过构建虚拟机为用户提供服务,其主要流程如图1所示。
从使用者角度来看,虚拟机是一种具有完整硬件系统功能,与实际物理系统相隔离的计算机系统。它拥有自己独立的虚拟CPU、内存、硬盘、乃至网卡,而且操作系统可以像调用实际物理资源一样使用这些设备。
对于虚拟机而言,磁盘镜像文件类似于实际计算机中的硬盘等外部存储设备,保存着虚拟机中一切持久性数据。它可以以文件的形式保存在物理机磁盘中,并且通过物理机系统I/O实现读写功能。
相比实际物理磁盘,虚拟机磁盘镜像具有许多特点。首先,它能够进行稀疏化存储,使实际磁盘空间消耗远低于预设值,随着使用再慢慢增长到容量上限。其次,虚拟机磁盘镜像具有良好的隔离性,对物理机镜像屏蔽内部细节,因此无论虚拟机对磁盘镜像如何操作,都不会对物理机产生任何影响。最重要的是,由于虚拟机磁盘镜像实际上仅仅是物理机分区中的一个文件,可以很容易地进行复制与迁移,所以通过镜像拷贝就可以实现相同配置虚拟机的批量创建。其主要流程如图2所示
云计算平台通常可以提供两种方式创建磁盘镜像。其一,系统为用户提供空白磁盘镜像文件,允许用户自行安装操作系统;其二,由系统提供部分安装好操作系统的虚拟机磁盘镜像供直接用户使用。前者类似于物理计算机安装系统操作,具有较高的灵活性,可以让用户依照需求选择合适的操作系统;后者则类似于使用ghost(目前常见的备份软件,全称为NortonGhost)进行磁盘克隆,进行批量创建时尤为适用。
目前现有的云计算平台批量创建时大多采用“请求-响应”模式。即用户申请虚拟机后,系统再根据用户请求依次复制磁盘镜像文件。这种模式可以精确地控制镜像文件数量,使之恰好满足需求,但创建时用户却需要忍受漫长的镜像拷贝时间,批量创建时则更是一种煎熬。
虽然计算机计算性能飞速提高,有些计算机的运算速度可达每秒上千万亿次,但是,计算机的外部存储设备,尤其是物理磁盘的I/O(输入/输出)性能却增长缓慢,在非磁盘阵列情况下,非固态SCSI(小型计算机系统接口)硬盘内部传输速率较小。
一般而言,安装有操作系统的磁盘镜像文件通常较大。也就是说,即使创建磁盘镜像的过程完全独占磁盘I/O,复制一个磁盘镜像文件时间也会较长。而除了拷贝镜像过程外,创建虚拟机其他步骤基本上在几秒内即可完成,这也意味着虚拟机创建中绝大部分等待时间消耗在了复制磁盘镜像过程中。
借助于多核CPU(中央处理器)的帮助,创建虚拟机的其他步骤可并发处理,但受限于磁盘I/O能力,镜像复制过程只能逐个任务执行。因此当规模化创建虚拟机时,复制镜像文件所用时间将呈线性增长,可能占到创建总时间的较大比例。
针对相关技术中创建虚拟机中复制磁盘镜像所需时间太长的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中创建虚拟机中复制磁盘镜像所需时间太长的问题,本发明提出一种磁盘镜像的管理方法和系统,能够有效缩短磁盘镜像创建所需时间,提高系统的工作效率。
根据本发明的一个方面,提供了一种磁盘镜像的管理方法:
该磁盘镜像的管理方法包括:
预先在多个共享存储设备上创建源磁盘镜像;
根据多个共享存储设备源磁盘镜像并行创建磁盘镜像,其中,根据每个共享存储设备上的源磁盘镜像,在各共享存储设备本地创建磁盘镜像;
响应于虚拟机创建请求,将创建的磁盘镜像提供给虚拟机。
此外,该磁盘镜像的管理方法进一步包括:
在多个共享存储设备上创建源磁盘镜像之前,预先在每个共享存储设备划分出用于创建源磁盘镜像的存储空间。
可选地,预先在多个共享存储设备上创建源磁盘镜像包括:
以点对点互传的方式在多个共享设备上并行创建源磁盘镜像。
并且,在多个共享存储设备上创建源磁盘镜像之后,对创建的源磁盘镜像的正确性进行校验。
其中,进一步包括:
在磁盘镜像数量不足时,在至少一个共享存储设备上继续创建磁盘镜像,其中,每一个共享存储设备均以自身保存源磁盘镜像作为复制源进行并行复制。
此外,进一步包括:
在出现不同于已有源磁盘镜像的新源磁盘镜像的情况下,在多个共享存储设备上创建新源磁盘镜像,并创建相应的新磁盘镜像。
根据本发明的另一个方面,提供了一种磁盘镜像的管理系统。
该磁盘镜像的管理系统包括镜像资源池模块、镜像存储调度模块、多个共享存储设备,其中:
镜像资源池模块用于控制镜像存储调度模块预先在多个共享存储设备上创建源磁盘镜像;以及用于响应于虚拟机创建请求,将创建的磁盘镜像提供给虚拟机
镜像存储调度模块用于根据多个共享存储设备上的源磁盘镜像并行创建磁盘镜像,其中,根据每个共享存储设备上的源磁盘镜像,镜像存储调度模块在各共享存储设备本地创建磁盘镜像。
其中,镜像存储调度模块进一步用于在多个共享存储设备上创建源磁盘镜像之前,预先在每个共享存储设备划分出用于创建源磁盘镜像的存储空间。
并且,镜像存储调度模块还用于磁盘镜像数量不足时,在至少一个共享存储设备上继续创建磁盘镜像,其中,每一个共享存储设备均以自身保存源磁盘镜像作为复制源进行并行复制。
可选地,镜像存储调度模块还可用于在出现不同于已有源磁盘镜像的新源磁盘镜像的情况下,在多个共享存储设备上创建新源磁盘镜像,并创建相应的新磁盘镜像。
本发明通过预先在多个共享存储设备上创建源磁盘镜像,然后并行创建磁盘镜像,其中,根据每个共享存储设备上的源磁盘镜像,在各共享存储设备本地创建磁盘镜像,最后,响应于虚拟机创建请求,将创建的磁盘镜像提供给虚拟机。由此,可减少创建虚拟机中复制磁盘镜像所需时间,并且在规模化创建虚拟机时,以基于虚拟机请求的方式,能使多个共享存储设备共享磁盘镜像,复制镜像文件所用时间大为缩减,能提高创建虚拟机的效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的一个方面,提供了一种磁盘镜像的管理方法:
如图3所示,该磁盘镜像的管理方法包括:
步骤S301,预先在多个共享存储设备上创建源磁盘镜像;
步骤S303,根据多个共享存储设备源磁盘镜像并行创建磁盘镜像,其中,根据每个共享存储设备上的源磁盘镜像,在各共享存储设备本地创建磁盘镜像;
步骤S305,响应于虚拟机创建请求,将创建的磁盘镜像提供给虚拟机。
此外,该磁盘镜像的管理方法进一步包括:
在多个共享存储设备上创建源磁盘镜像之前,预先在每个共享存储设备划分出用于创建源磁盘镜像的存储空间。
可选地,预先在多个共享存储设备上创建源磁盘镜像包括:
以点对点互传的方式在多个共享设备上并行创建源磁盘镜像。
并且,在多个共享存储设备上创建源磁盘镜像之后,对创建的源磁盘镜像的正确性进行校验。
其中,该方法还可以进一步包括:
在磁盘镜像数量不足时,在至少一个共享存储设备上继续创建磁盘镜像,其中,每一个共享存储设备均以自身保存源磁盘镜像作为复制源进行并行复制。
此外,该方法可进一步包括:
在出现不同于已有源磁盘镜像的新源磁盘镜像的情况下,在多个共享存储设备上创建新源磁盘镜像,并创建相应的新磁盘镜像。
根据本发明的另一个方面,提供了一种磁盘镜像的管理系统。
如图4所示,该磁盘镜像的管理系统包括镜像资源池模块41、镜像存储调度模块42、多个共享存储设备(未示出),其中:
镜像资源池模块41,用于控制镜像存储调度模块预先在多个共享存储设备上创建源磁盘镜像;以及用于响应于虚拟机创建请求,将创建的磁盘镜像提供给虚拟机
镜像存储调度模块42,用于根据多个共享存储设备上的源磁盘镜像并行创建磁盘镜像,其中,根据每个共享存储设备上的源磁盘镜像,镜像存储调度模块在各共享存储设备本地创建磁盘镜像。
其中,镜像存储调度模块进一步用于在多个共享存储设备上创建源磁盘镜像之前,预先在每个共享存储设备划分出用于创建源磁盘镜像的存储空间。
并且,镜像存储调度模块还用于磁盘镜像数量不足时,在至少一个共享存储设备上继续创建磁盘镜像,其中,每一个共享存储设备均以自身保存源磁盘镜像作为复制源进行并行复制。
可选地,镜像存储调度模块还用于在一共享存储设备上的源磁盘镜像被删除的情况下,将基于该被删除的源磁盘镜像创建的所有磁盘镜像删除;和/或用于在出现不同于已有源磁盘镜像的新源磁盘镜像的情况下,在多个共享存储设备上创建新源磁盘镜像,并创建相应的新磁盘镜像。
根据本发明的上述实施例,提供了一种基于任务的分层式云计算磁盘镜像预处理系统结构。
如何在多台共享存储之间调度虚拟机磁盘镜像文件,始终是云计算系统中重要研究课题。每台共享存储都拥有自己的性能指标,主要包括存储容量、I/O速度以及自身可用的网络带宽。目前大多数共享存储服务器都采用千兆以太网络乃至万兆光纤网络,所以网络带宽通常不会成为共享存储的性能瓶颈。但磁盘I/O性能则不同,如前文所述,创建虚拟机过程时间主要消耗在复制磁盘镜像上,而复制磁盘镜像速度则主要受限于共享存储的磁盘I/O能力,所以共享存储间镜像调度需要重点关注磁盘的I/O瓶颈问题。
本发明为解决以上问题,设计了一种基于任务的分层式云计算磁盘镜像预处理系统结构。如图5所示,该系统结构分为三层,从上至下依次是:镜像资源池(对应于上述镜像资源池模块)、镜像存储调度(对应于上述镜像存储调度模块)以及共享存储,每层之间以任务的形式相互通信。
镜像资源池:在创建虚拟机时,负责为上层计算节点提供磁盘镜像文件,同时对其屏蔽底层结构。镜像资源池包含一个虚拟机镜像文件数据库,池中预存着部分已复制好的磁盘镜像文件,当计算节点向底层提出申请时,只要资源池内配额充足,则可以立刻提供磁盘镜像,从而实现镜像创建的“零延迟”。当资源池内配额不足时,则向镜像存储调度发布任务,由镜像存储调度在合适的共享存储中复制磁盘镜像。
镜像存储调度:负责镜像资源池内文件维护工作。创建虚拟机使镜像资源池发生消耗,则由镜像存储调度负责补充。镜像存储调度需要同时对源镜像模板及拷贝生成的虚拟机镜像文件进行维护。在管理员新创建源镜像模板后,镜像存储调度负责将该镜像文件副本依次保存至所有共享存储中;管理员删除某一源镜像模板后,也由存储调度清理该源镜像的所有模板副本。而在生成虚拟机镜像文件过程中,存储调度需要根据共享存储I/O情况选择合适的设备进行复制与保存,以避免共享存储发生I/O拥塞等情况。
共享存储:在每一个共享存储内划分一定区域保存源镜像模板称为源镜像存储空间,同时划分一定区域作为镜像资源池的预存空间。为避免大规模拷贝对网络造成的沉重负担以及减轻网络拥塞带来的不确定性问题,本系统要求在每一个共享存储上均保留一份源镜像模板的副本,在创建虚拟机镜像文件过程中只进行本机拷贝。
以上结构的核心调度策略目标包括:
(1)通过预处理方式,将磁盘I/O操作分配到每一个时间点,避免在某一个时间段集中执行磁盘I/O。
(2)通过调度策略,将磁盘I/O操作尽可能地均匀分布在每一台共享存储上,充分利用每一台共享存储的磁盘I/O能力。
在实现本发明的上述方案时,调度策略可以分为镜像资源池策略和镜像存储调度策略,下面将对具体的策略内容进行描述。
1.镜像资源池策略
镜像资源池调度策略主要用于确定虚拟机镜像文件需求,如资源池中需要与保留多少种系统镜像文件,每种镜像文件各保留几份等。并将计算结果作为任务向镜像存储调度发布。
在本系统中镜像资源池可以选择三种调度策略
一.基于请求分析镜像调度策略:对用户请求进行数据挖掘,根据请求动态调整资源池大小与预保留磁盘镜像规模,向镜像存储发布任务时,尽可能减少预保留镜像占用的共享存储空间。
二.空间配额镜像调度策略:系统管理员在共享存储中设定一定的磁盘空间配额,由镜像存储调度负责控制各种系统镜像文件比例,并将该空间填满。
三.镜像文件定额调度策略:系统管理员指定每种镜像文件数量,由镜像存储调度负责选择共享存储进行拷贝。
2.镜像存储调度策略
镜像存储调度是本系统的核心层,它肩负着连接资源池与共享存储承上启下的重任。因此镜像存储调度策略的优劣,直接决定了预处理系统的整体性能。本发明中镜像存储调度策略采用“接受任务-执行请求-汇报结果”的工作模式。镜像存储调度可随时接受上层模块下达的任务,并将其放置于任务队列,待资源条件允许时依次执行。
镜像存储调度策略为每一台共享存储设备创建一个拷贝线程,只有获得该线程的任务可以对该共享存储设备进行读取或复制操作。如此可保证在任一时刻,每一台共享存储设备最多只执行一项磁盘镜像文件的复制操作,借此控制磁盘I/O的拥塞。
镜像存储调度策略主要分为两个部分:源镜像存储调度算法与虚拟机磁盘镜像存储调度算法。
(1)源镜像存储调度算法
源镜像存储调度负责将系统管理员新创建的源镜像模板分发到每一台共享存储设备的源镜像存储空间中。
在镜像存储调度的任务队列里,源镜像存储调度拥有高优先级,即一旦系统管理员创建一个新的镜像模板,存储调度算法立刻将该镜像模板的复制任务置于任务队列之首,每一个共享存储完成当前执行任务后,优先进行镜像模板复制。
该复制过程采用点对点互传方式执行。当一个共享存储完成源镜像模板拷贝后,即可作为一个种子,为其他共享存储提供复制源。共享存储数量众多时,每次拷贝都可使得复制源成倍增长,如此能够避免同时读取单一资源镜像造成的读I/O拥塞问题。
源镜像模板拷贝是涉及到网络传输的大规模数据复制操作,在传输过程中容易发生传输异常,而源镜像模板异常对于以后的虚拟机镜像文件复制将产生致命的影响。因此可以在源镜像模板拷贝之后进行一次MD5校验,以便保证数据的严格一致性。
(2)虚拟机磁盘镜像存储调度算法
每当接收到上层复制虚拟机磁盘镜像的任务时,虚拟机磁盘镜像存储调度即将该任务放入任务队列。当任一台共享存储空闲时,即将位于任务队列首部的任务交给该共享存储执行。
选择共享存储需要考虑以下几个方面:
一.共享存储剩余空间大小,在启动状态下,虚拟机磁盘镜像文件只会单调增大。因此没有其他任务的情况时,共享存储剩余空间也会随着虚拟机的运行不断变小。复制磁盘镜像选择目标共享存储,不但需要考虑该共享存储剩余空间是否能够支持此磁盘镜像文件,同时还需要考虑复制此镜像文件后,共享存储剩余空间是否还能够支持其他虚拟机正常运行。
二.磁盘I/O状态,在正常状态下,共享存储不但负担着复制虚拟机磁盘镜像任务,同时也承担着其他I/O任务。在复制磁盘镜像文件前,需要先检查一下该共享存储设备的实际I/O情况,以避免拥塞情况发生。、
三.是否有源镜像拷贝任务,源镜像拷贝拥有高优先级,当需要执行虚拟机镜像复制时,跳过当前有源镜像拷贝任务的共享存储。
根据本发明的实施例所基于的体系,提供了一种共享存储体系结构。
共享存储体系基于云计算平台常采用的计算节点-共享存储分离架构。通过NFS(网络文件系统)等网络协议,使每个独立的计算节点都可以访问任意共享存储设备。
虚拟机的计算与存储模块分离可以方便地实现热迁移功能。虚拟机持久性数据全部保存在共享存储设备中,而计算资源如虚拟CPU、虚拟机内存等,则由每个Hypervisor(虚拟机管理平台)分别提供并进行管理。当一个Hypervisor需要停机维护时,只需要将所属虚拟机的内存与CPU状态复制到其他Hypervisor中,并令其磁盘映射指向共享存储中同一个磁盘镜像,即可实现虚拟机的平滑迁移,在迁移过程中所有的系统服务和应用程序均可正常运行,用户不会察觉到由于硬件维护造成的中断。该共享存储体系结构如图6所示。
综上所述,借助于本发明的上述技术方案,通过预先在多个共享存储设备上创建源磁盘镜像,然后并行创建磁盘镜像,其中,根据每个共享存储设备上的源磁盘镜像,在各共享存储设备本地创建磁盘镜像,最后,响应于虚拟机创建请求,将创建的磁盘镜像提供给虚拟机。由此,可减少创建虚拟机中复制磁盘镜像所需时间,并且在规模化创建虚拟机时,以基于虚拟机请求的方式,能使多个共享存储设备共享磁盘镜像,复制镜像文件所用平均时间大为缩减,令资源池磁盘镜像随取随用,能提高创建虚拟机的效率。在资源池配额充足的条件下可以实现镜像创建“零延迟”。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。