CN103229150A - 数据控制方法及系统 - Google Patents
数据控制方法及系统 Download PDFInfo
- Publication number
- CN103229150A CN103229150A CN2012800029174A CN201280002917A CN103229150A CN 103229150 A CN103229150 A CN 103229150A CN 2012800029174 A CN2012800029174 A CN 2012800029174A CN 201280002917 A CN201280002917 A CN 201280002917A CN 103229150 A CN103229150 A CN 103229150A
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- mirror image
- internal memory
- write
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000000737 periodic effect Effects 0.000 claims description 9
- 238000012217 deletion Methods 0.000 description 8
- 230000037430 deletion Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000010367 cloning Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据控制方法及系统,涉及计算机技术领域,所述方法包括:接收克隆虚拟机发送的读数据请求;确定所述读数据请求所请求读取的数据块所属镜像;当所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机;当所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,再从所述内存中读取所述数据块,并发送给所述克隆虚拟机。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据控制方法及系统。
背景技术
目前,通过虚拟化技术可以将一台物理机(即实体计算机)的物理资源虚拟成多个虚拟机,每个虚拟机均可以实现该物理机的功能。虚拟机具有克隆功能,利用一个虚拟机(该虚拟机相当于源虚拟机)可以克隆出来一个或多个克隆虚拟机,每个克隆虚拟机可以具有与源虚拟机完全相同的操作系统、应用软件以及数据文档,克隆虚拟机生成之后,还可以自行增加新的数据或者更新已有的数据。
现有技术提供一种链接克隆技术,通过基础镜像和更新镜像来实现克隆虚拟机的运行。基础镜像为克隆虚拟机和源虚拟机共同的数据部分,更新镜像是克隆虚拟机与源虚拟机不同的数据部分。
然而,现有的基础镜像和更新镜像是保存在磁盘上的,当各个克隆虚拟机运行时,每个克隆虚拟机在将读取的基础镜像中的数据写入内存时,由于每个克隆虚拟机在内存中写入的基础镜像均相同,导致内存资源的利用率不高。
发明内容
本发明提供一种数据控制方法及系统,可以提高内存资源的利用率。
为了达到上述发明目的,本发明采用如下技术方案:
第一方面,提供一种数据控制方法,基础镜像保存在内存中,更新镜像保存在磁盘中,所述方法包括:
接收克隆虚拟机发送的读数据请求;
确定所述读数据请求所请求读取的数据块所属镜像;
当所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机;
当所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,再从所述内存中读取所述数据块,并发送给所述克隆虚拟机。
结合第一方面,在第一方面的第一种实现方式中,所述基础镜像进行压缩后保存在所述内存的虚拟设备中,
所述当所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机包括:当所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块,将解压缩后的数据块发送给所述克隆虚拟机。
结合第一方面或第一方面的第一种实现方式,在第一方面的第二种实现方式中,还包括:
接收所述克隆虚拟机发送的写数据请求;
判断所述写数据请求所请求写入的数据是否构成完整的数据块;
如果构成完整的数据块,则写入所述更新镜像中,如果没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,并将更新后的数据块写入所述更新镜像中。
结合第一方面或者第一方面的以上任一种实现方式,在第一方面的第三种实现方式中,所述内存中的数据块保存在所述内存的各个页面中,
所述方法还包括:
定期扫描所述内存中的各个页面;
分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;
如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
第二方面,提供一种数据控制系统,基础镜像保存在内存中,更新镜像保存在磁盘中,所述系统包括:
接收模块,用于接收克隆虚拟机发送的读数据请求;
控制模块,用于确定所述读数据请求所请求读取的数据块所属镜像;
读取模块,用于当所述控制模块确定所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块;发送模块,用于将所述数据块发送给所述克隆虚拟机;
所述读取模块,还用于当所述控制模块确定所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块;写入模块,用于将所述数据块写入所述内存中;所述读取模块,还用于从所述内存中读取所述数据块,并由所述发送模块发送给所述克隆虚拟机。
结合第二方面,在第二方面的第一种实现方式中,所述基础镜像进行压缩后保存在所述内存的虚拟设备中,
所述读取模块,具体用于当所述控制模块确定所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块;
所述发送模块,具体用于将解压缩后的数据块发送给所述克隆虚拟机。
结合第二方面或第二方面的第一种实现方式,在第二方面的第二种实现方式中,
所述接收模块,还用于接收所述克隆虚拟机发送的写数据请求;
所述控制模块,还用于判断所述写数据请求所请求写入的数据是否构成完整的数据块;
所述写入模块,还用于如果所述控制模块判断出所述写数据请求所请求写入的数据构成完整的数据块,则写入所述更新镜像中;
所述读取模块,还用于如果所述控制模块判断出所述写数据请求所请求写入的数据没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,所述写入模块,还用于将更新后的数据块写入所述更新镜像中。
结合第二方面或者第二方面的以上任一种实现方式,在第二方面的第三种实现方式中,所述内存中的数据块保存在所述内存的各个页面中,
所述系统还包括:
扫描模块,用于定期扫描所述内存中的各个页面;
运算模块,用于分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;
处理模块,用于如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
第三方面,提供一种数据控制系统,基础镜像保存在内存中,更新镜像保存在磁盘中,所述系统包括:
接收器,用于接收克隆虚拟机发送的读数据请求;
处理器,用于确定所述读数据请求所请求读取的数据块所属镜像;
所述处理器,还用于当确定所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块;发射器,用于将所述数据块发送给所述克隆虚拟机;
所述处理器,还用于当所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,从所述内存中读取所述数据块,并由所述发射器发送给所述克隆虚拟机。
结合第三方面,在第三方面的第一种实现方式中,所述基础镜像进行压缩后保存在所述内存的虚拟设备中,
所述处理器,具体用于当确定所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块;
所述发射器,具体用于将解压缩后的数据块发送给所述克隆虚拟机。
结合第三方面或第三方面的第一种实现方式,在第三方面的第二种实现方式中,
所述接收器,还用于接收所述克隆虚拟机发送的写数据请求;
所述处理器,还用于判断所述写数据请求所请求写入的数据是否构成完整的数据块;
所述处理器,还用于如果判断出所述写数据请求所请求写入的数据构成完整的数据块,则写入所述更新镜像中;
所述处理器,还用于如果判断出所述写数据请求所请求写入的数据没有构成完整的数据块,从基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,将更新后的数据块写入所述更新镜像中。
结合第三方面或者第三方面的以上任一种实现方式,在第三方面的第三种实现方式中,所述内存中的数据块保存在所述内存的页面中,
所述处理器,还用于定期扫描所述内存中的各个页面;分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
本发明实施例中,由于各个克隆虚拟机共用的基础镜像存放在内存中,因而,克隆虚拟机请求读取的数据块属于基础镜像时,可以直接从内存中读取所述请求读取的数据块。本发明实施例中由于各个克隆虚拟机共用的基础镜像存放在内存中,亦即内存中保存了一份基础镜像,与现有现有技术中每个克隆虚拟机均需要在内存中占用一定空间来写入相同的基础镜像,导致内存保存了多份相同的基础镜像相比,本发明实施例可以提高内存资源的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的克隆虚拟机读写数据流程的一种示意图;
图2a为本发明实施例提供的数据控制方法的第一种流程图;
图2b为本发明实施例提供的数据控制方法的第二种流程图;
图2c为本发明实施例提供的页面共享示意图;
图3a为本发明实施例提供的数据控制系统的第一种结构图;
图3b为本发明实施例提供的数据控制系统的第二种结构图;
图4为本发明实施例提供的数据控制系统的第三种结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据控制方法,应用于克隆虚拟机从基础镜像和更新镜像中读写数据时。其中,所述克隆虚拟机是利用源虚拟机进行克隆得出的,基础镜像为所述克隆虚拟机和源虚拟机相同的数据部分,更新镜像为所述克隆虚拟机和源虚拟机不同的数据部分。
如图1所示的克隆虚拟机读写数据流程的示意图,所述基础镜像保存在内存中,所述更新镜像保存在磁盘中。
其中,内存与磁盘的区别如下:
内存(memory)为一种利用半导体技术做成的电子设备,用来存储数据。内存的容量通常比较小(例如,16M、1G等),但是读取速度比较快。内存在加电时,可以保存数据,但在断电后,所保存的数据将被清除,因而也被称为一种高速临时存储信息的硬件。
磁盘可以包括硬盘(Hard Disk),为一种采用磁性材料制作的电子设备,通过在平整的磁性表面存储和检索数据。信息通过离磁性表面很近的写头,由电磁流来改变极性方式被电磁流写到磁盘上,信息可以通过相反的方式回读。磁盘的容量通常比较大(例如40G,100G等),但是读取速度比较慢。磁盘是一种非易失性存储设备,在断电时,所保存的数据也不会丢失,因而也被称为一种低速长期存储信息的硬件。
所述基础镜像中保存的数据包括:从源虚拟机克隆得到的操作系统、应用程序及数据文档,所述更新镜像中保存的数据包括:克隆虚拟机自行增加的新数据或者将基础镜像中的数据进行更新后得出的数据。各个克隆虚拟机均有各自的更新镜像,但是会共用同一个基础镜像。当各个克隆虚拟机在启动运行时,均需要从基础镜像中读取数据,并根据各自的需求,对各自的更新镜像进行数据的读写操作。
下面,以一个克隆虚拟机为例,详细介绍一种数据控制方法,本方法的执行主体是一种数据控制系统,可以对来自克隆虚拟机的读写数据请求进行处理。
如图2a所示,所述方法包括:
201、接收克隆虚拟机发送的读数据请求。
202、确定所述读数据请求所请求读取的数据块所属镜像。
其中,所述数据块为进行数据读写操作的最小单位,通常,一个数据块包括512字节。
其中,可以根据所述请求读取的数据块是否被修改来确定该请求读取的数据块是属于基础镜像还是更新镜像。
由于基础镜像中数据块是各个克隆虚拟机共用的,通常不会被修改,因而,在将基础镜像保存在内存中时,数据控制系统可以将基础镜像中各个数据块的修改标记设置为未修改。
而更新镜像中保存的数据块为克隆虚拟机自行增加的新数据块或者将基础镜像中的数据块进行更新后得出的数据块,克隆虚拟机在将这些数据块写入更新镜像时,数据控制系统可以将这些数据块的修改标记设置为已修改。
需要说明的是,本文中,数据块的修改标记所表示的未修改和已修改是相对的概念,主要为了区分数据块是属于基础镜像还是更新镜像,亦即标记为未修改的数据块属于基础镜像,而标记为已修改的数据块属于更新镜像。
203、当所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机。
204、当所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,再从所述内存中读取所述数据块,并发送给所述克隆虚拟机。
本发明实施例中,由于各个克隆虚拟机共用的基础镜像存放在内存中,因而,克隆虚拟机请求读取的数据块属于基础镜像时,可以直接从内存中读取所述请求读取的数据块。本发明实施例中由于各个克隆虚拟机共用的基础镜像存放在内存中,亦即内存中保存了一份基础镜像,与现有现有技术中每个克隆虚拟机均需要在内存中占用一定空间来写入相同的基础镜像,导致内存保存了多份相同的基础镜像相比,本发明实施例可以提高内存资源的利用率。
另外,现有技术中,由于每个克隆虚拟机都需要从磁盘上读取一次基础镜像中的数据,而磁盘的读写能力(单位时间读写的输入/输出(I/O)次数)通常是固定的,因而限制了同时运行的克隆虚拟机的数量。而本发明实施例中的克隆虚拟机在读取基础镜像时无需对磁盘进行读写操作,只有在读取更新镜像时对磁盘进行读写操作,因而,可以减少对磁盘的读写次数,进而支持更多克隆虚拟机的运行。
此外,采用现有技术还需要人工预先设置克隆虚拟机所需缓存的大小,对技术人员的技术和经验要求较高,采用本发明实施例提供的方法不需要预先设置克隆虚拟机所需缓存的大小,可以进一步提高本发明实施例的实用范围。
本发明实施例提供的方法,还可以对来自克隆虚拟机的写数据请求进行处理。具体如下:
接收所述克隆虚拟机发送的写数据请求;判断所述写数据请求所请求写入的数据是否构成完整的数据块。如果构成完整的数据块,则写入所述更新镜像中;如果没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,并将更新后的数据块写入所述更新镜像中。
由于数据块为进行读写数据操作时的最小单位,而克隆虚拟机每次写入的数据不一定构成完整的数据块,例如,克隆虚拟机需要写入的数据是对某个数据块中的部分字节进行更新的,因而,再将这部分字节写入更新镜像时,需要先从基础镜像中将所述部分字节对应的数据块读出,并所述部分字节更新至所述数据块中的相应字节的位置处,例如,克隆虚拟机需要写入20个字节,并使用该20个字节对某个数据块的第100-120字节进行更新,则从基础镜像中将该数据块读出后,将所述数据块的第100-120字节更新为所述20个字节,并将更新后的数据块写入所述更新镜像中,具体地需要写入所述克隆虚拟机的更新镜像中。
进一步地,本发明实施例提供的方法中,所述基础镜像可以进行压缩后保存在所述内存的虚拟设备中,以便于节省内存资源。
所述步骤203中,当所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机具体替换为如下步骤执行:当所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块,将解压缩后的数据块发送给所述克隆虚拟机。
其中,可以使用ZRAM工具将基础镜像压缩后保存在内存的虚拟设备中。该ZRAM工具可以在内存中创建一个虚拟设备,该虚拟设备的格式可以采用ext4、ext2或者XFS等。在将基础镜像保存在该虚拟设备中时,所述ZRAM工具将自动采用压缩算法对基础镜像进行压缩后,保存在该虚拟设备中。所采用的压缩算法例如LZO算法。在从该虚拟设备读取基础镜像时,所述ZRAM工具也将自动采用同样的压缩算法对基础镜像进行解压缩,并将解压缩后的数据读取出来。
需要说明的是,所述基础镜像是保存在内存的一个虚拟设备中,由于内存在断电时会清除所保存的所有数据,因而,当内存重新上电时,需要重新采用ZRAM工具将基础镜像保存在内存的一个虚拟设备中。
可以理解的是,在采用ZRAM工具将基础镜像保存在内存的一个虚拟设备中之后,如果内存没有断电,各个虚拟机的启动和关闭不会影响到内存中所保存的基础镜像。当内存断电后,重新上电时需要采用ZRAM工具将基础镜像保存在内存的一个虚拟设备中。
进一步地,所述内存中的数据块保存在所述内存的各个页面中,亦即,无论预先保存在内存中的基础镜像中的数据块,还是将从磁盘中读取出来的更新镜像中的数据块写入内存中时,在内存中均采用内存的页面进行保存。
其中,内存管理单元是以页面的形式,分割内存的虚拟地址空间。内存的页面的大小可以是2的n次方。
由于克隆虚拟机的更新镜像中的数据和基础镜像中的数据有可能存在相同的情况,例如,克隆虚拟机的基础镜像中某个应用程序和更新镜像中的某个应用程序使用相同的链接库,因而,在内存中保存有该链接库的页面将会出现重复;或者,由于各个克隆虚拟机各自的更新镜像中的数据也可能存在相同的情况,在将从各个克隆虚拟机各自更新镜像中的数据写入内存中时,也会导致多个页面保存有相同数据的问题。
为了进一步提高内存资源的利用率,有效节省内存资源,如图2b所示,所述方法还包括如下步骤:
205、定期扫描所述内存中的各个页面;
206、分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;
207、如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
需要说明的是,所述数据控制系统记录有各个页面的调用端,该调用端为需要调用页面中数据的应用程序等,当数据控制系统接收到虚拟机发送的删除某个页面中数据的请求时,例如,克隆虚拟机中使用某个页面的应用程序退出时,需要从内存删除该页面,此时会向所述数据控制系统发送删除某个页面中数据的请求,所述数据控制系统判断该页面是否还存在其他调用端,如果存在,则不执行删除该页面的操作,否则,从内存中删除该页面。
如图2c所示的页面共享示意图,基础镜像、克隆虚拟机VM1的更新镜像和克隆虚拟机VM2的更新镜像中存在相同的数据块(斜线部分表示相同的数据块),在内存中仅保留了1份存储有所述相同数据块的页面,克隆虚拟机VM1的更新镜像、克隆虚拟机VM2的更新镜像和基础镜像均通过页面指针指向所述1份页面。当克隆虚拟机需要使用自身更新镜像中的数据块时,通过该页面指针可以确定所需数据块存放的页面。通过页面共享,本发明实施例可以进一步提高内存资源的利用率。
本发明实施例还提供一种数据控制系统,基础镜像保存在内存中,更新镜像保存在磁盘中,所述基础镜像和更新镜像可参见图1所示虚拟机读写数据流程的相关描述。
如图3a所示,所述系统包括:
接收模块31,用于接收克隆虚拟机发送的读数据请求;
控制模块32,用于确定所述读数据请求所请求读取的数据块所属镜像;其中,所述数据块为进行数据读写操作的最小单位,通常,一个数据块包括512字节。
所述控制模块可以根据所述请求读取的数据块是否被修改来确定该请求读取的数据块是属于基础镜像还是更新镜像。具体可以参见上述方法实施例中步骤202中的相关描述。
读取模块33,用于当所述控制模块确定所述请求读取的数据块属于所述基础镜像时,从所述内存中读取所述数据块;发送模块34,用于将所述数据块发送给所述克隆虚拟机;
所述读取模块33,还用于当所述控制模块确定所述请求读取的数据块属于所述更新镜像时,从所述磁盘中读取所述数据块;写入模块35,用于将所述数据块写入所述内存中;所述读取模块33,还用于从所述内存中读取所述数据块,并由所述发送模块发送给所述克隆虚拟机。
本发明实施例中,由于各个克隆虚拟机共用的基础镜像存放在内存中,因而,克隆虚拟机请求读取的数据块属于基础镜像时,可以直接从内存中读取所述请求读取的数据块。本发明实施例中由于各个克隆虚拟机共用的基础镜像存放在内存中,亦即内存中保存了一份基础镜像,与现有现有技术中每个克隆虚拟机均需要在内存中占用一定空间来写入相同的基础镜像,导致内存保存了多份相同的基础镜像相比,本发明实施例可以提高内存资源的利用率。
另外,现有技术中,由于每个克隆虚拟机都需要从磁盘上读取一次基础镜像中的数据,而磁盘的读写能力(单位时间读写的输入/输出(I/O)次数)通常是固定的,因而限制了同时运行的克隆虚拟机的数量。而本发明实施例提供的系统中,克隆虚拟机在读取基础镜像时无需对磁盘进行读写操作,只有在读取更新镜像时对磁盘进行读写操作,因而,可以减少对磁盘的读写次数,进而支持更多克隆虚拟机的运行。
此外,采用现有技术还需要人工预先设置克隆虚拟机所需缓存的大小,对技术人员的技术和经验要求较高,采用本发明实施例提供的系统不需要预先设置克隆虚拟机所需缓存的大小,可以进一步提高本发明实施例的实用范围。
进一步地,当所述系统还可以对来自克隆虚拟机的写数据请求进行处理,具体为:
所述接收模块31,还用于接收所述克隆虚拟机发送的写数据请求;
所述控制模块32,还用于判断所述写数据请求所请求写入的数据是否构成完整的数据块;
所述写入模块35,还用于如果所述控制模块判断出所述写数据请求所请求写入的数据构成完整的数据块,则写入所述更新镜像中;
所述读取模块33,还用于如果所述控制模块判断出所述写数据请求所请求写入的数据没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,所述写入模块35,还用于将更新后的数据块写入所述更新镜像中。
由于数据块为进行读写数据操作时的最小单位,而克隆虚拟机每次写入的数据不一定构成完整的数据块,例如,克隆虚拟机需要写入的数据是对某个数据块中的部分字节进行更新的,因而,再将这部分字节写入更新镜像时,需要先从基础镜像中将所述部分字节对应的数据块读出,并所述部分字节更新至所述数据块中的相应字节的位置处,例如,克隆虚拟机需要写入20个字节,并使用该20个字节对某个数据块的第100-120字节进行更新,则将该数据块读出后,则将所述数据块的第100-120字节更新为所述20个字节,并将更新后的数据块写入所述更新镜像中,具体地写入所述克隆虚拟机的更新镜像中。
进一步地,所述基础镜像进行压缩后保存在所述内存中,其中,可以使用ZRAM工具将基础镜像压缩后保存在内存的虚拟设备中。
所述读取模块33,具体用于当所述控制模块确定所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块;
所述发送模块34,具体用于将解压缩后的数据块发送给所述克隆虚拟机。
进一步地,所述内存中的数据块保存在所述内存的各个页面中,
为了进一步提高内存资源的利用率,有效节省内存资源,如图3b所示,所述系统还包括:
扫描模块36,用于定期扫描所述内存中的各个页面;
运算模块37,用于分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;
处理模块38,用于如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
需要说明的是,所述数据控制系统还可以记录有各个页面的调用端,该调用端为需要调用页面中数据的应用程序等,当数据控制系统接收到虚拟机发送的删除某个页面中数据的请求时,例如,克隆虚拟机中使用某个页面的应用程序退出时,需要从内存删除该页面,此时会向所述数据控制系统发送删除某个页面中数据的请求,所述数据控制系统判断该页面是否还存在其他调用端,如果存在,则不执行删除该页面的操作,否则,从内存中删除该页面。
图3b所示的系统还可以参见图2b和图2c所述方法中的相关描述。
本发明实施例还提供一种数据控制系统,其中,基础镜像保存在内存中,更新镜像保存在磁盘中,所述基础镜像和更新镜像可参见图1所示虚拟机读写数据流程的相关描述。
如图4所示,所述数据控制系统包括:处理器41、接收器42、发射器43、存储器44、总线4000和驱动电路4001。
其中,接收器42,用于接收克隆虚拟机发送的读数据请求;
处理器41,用于确定所述读数据请求所请求读取的数据块所属镜像;
所述处理器41,还用于当确定所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块;发射器43,用于将所述数据块发送给所述克隆虚拟机;
所述处理器41,还用于当所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,从所述内存中读取所述数据块,并由所述发射器43发送给所述克隆虚拟机。
其中,驱动电路4001,用于为数据控制系统中的各个硬件提供驱动使得各个硬件能够正常工作。
本实施例在具体实现中,存储器至少包括如下一个或者多个内存设备,一个只读存储器、一个随机存取存储器或者一个非易失行随机存取存储器,存储器为处理器提供指令和数据。
其中,所述处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。这些指令可以通过其中的处理器以配合实现及控制,用于执行本发明实施例揭示的方法。上述处理器还可以是通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(application specific integrated circuit)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
其中,上述通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器,解码器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。
另外,数据控制系统的各个硬件组件通过总线系统4000耦合在一起,其中总线系统4000除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起,在图4中将各种总线都标为总线系统4000。
本发明实施例中,由于各个克隆虚拟机共用的基础镜像存放在内存中,因而,克隆虚拟机请求读取的数据块属于基础镜像时,可以直接从内存中读取所述请求读取的数据块。本发明实施例中由于各个克隆虚拟机共用的基础镜像存放在内存中,亦即内存中保存了一份基础镜像,与现有现有技术中每个克隆虚拟机均需要在内存中占用一定空间来写入相同的基础镜像,导致内存保存了多份相同的基础镜像相比,本发明实施例可以提高内存资源的利用率。
另外,现有技术中,由于每个克隆虚拟机都需要从磁盘上读取一次基础镜像中的数据,而磁盘的读写能力(单位时间读写的输入/输出(I/O)次数)通常是固定的,因而限制了同时运行的克隆虚拟机的数量。而本发明提供的系统中,克隆虚拟机在读取基础镜像时无需对磁盘进行读写操作,只有在读取更新镜像时对磁盘进行读写操作,因而,可以减少对磁盘的读写次数,进而支持更多克隆虚拟机的运行。
此外,采用现有技术还需要人工预先设置克隆虚拟机所需缓存的大小,对技术人员的技术和经验要求较高,采用本发明实施例提供的系统不需要预先设置克隆虚拟机所需缓存的大小,可以进一步提高本发明实施例的实用范围。
本发明实施例提供的系统,还可以对来自克隆虚拟机的写数据请求进行处理。具体如下:
所述接收器42,还用于接收克隆虚拟机发送的写数据请求;
所述处理器41,还用于判断所述写数据请求所请求写入的数据是否构成完整的数据块;
所述处理器41,还用于如果判断出所述写数据请求所请求写入的数据构成完整的数据块,则写入所述更新镜像中;
所述处理器41,还用于如果判断出所述写数据请求所请求写入的数据没有构成完整的数据块,从基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据块中,将更新后的数据块写入所述更新镜像中。进一步地,所述基础镜像进行压缩后保存在所述存储器44中。
其中,可以使用ZRAM工具将基础镜像压缩后保存在内存的虚拟设备中。
所述处理器41,具体用于当确定所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块;
所述发射器43,具体用于将解压缩后的数据块发送给所述克隆虚拟机。
进一步地,所述内存中的数据块保存在所述内存的页面中,为了进一步提高内存资源的利用率,有效节省内存资源,所述处理器41,还用于定期扫描所述内存中的各个页面;分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数据控制方法,其特征在于,基础镜像保存在内存中,更新镜像保存在磁盘中,所述方法包括:
接收克隆虚拟机发送的读数据请求;
确定所述读数据请求所请求读取的数据块所属镜像;
当所述请求读取的数据块属于所述基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机;
当所述请求读取的数据块属于所述更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,再从所述内存中读取所述数据块,并发送给所述克隆虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述基础镜像进行压缩后保存在所述内存的虚拟设备中,
所述当所述请求读取的数据块属于所述基础镜像时,从所述内存中读取所述数据块,并将所述数据块发送给所述克隆虚拟机包括:当所述请求读取的数据块属于所述基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块,将解压缩后的数据块发送给所述克隆虚拟机。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
接收所述克隆虚拟机发送的写数据请求;
判断所述写数据请求所请求写入的数据是否构成完整的数据块;
如果构成完整的数据块,则写入所述更新镜像中;如果没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,并将更新后的数据块写入所述更新镜像中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述内存中的数据块保存在所述内存的各个页面中,
所述方法还包括:
定期扫描所述内存中的各个页面;
分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;
如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
5.一种数据控制系统,其特征在于,基础镜像保存在内存中,更新镜像保存在磁盘中,所述系统包括:
接收模块,用于接收克隆虚拟机发送的读数据请求;
控制模块,用于确定所述读数据请求所请求读取的数据块所属镜像;
读取模块,用于当所述控制模块确定所述请求读取的数据块属于所述基础镜像时,从所述内存中读取所述数据块;发送模块,用于将所述数据块发送给所述克隆虚拟机;
所述读取模块,还用于当所述控制模块确定所述请求读取的数据块属于所述更新镜像时,从所述磁盘中读取所述数据块;写入模块,用于将所述数据块写入所述内存中;所述读取模块,还用于从所述内存中读取所述数据块,并由所述发送模块发送给所述克隆虚拟机。
6.根据权利要求5所述的系统,其特征在于,所述基础镜像进行压缩后保存在所述内存的虚拟设备中,
所述读取模块,具体用于当所述控制模块确定所述请求读取的数据块属于所述基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块;
所述发送模块,具体用于将解压缩后的数据块发送给所述克隆虚拟机。
7.根据权利要求5或6所述的系统,其特征在于,
所述接收模块,还用于接收所述克隆虚拟机发送的写数据请求;
所述控制模块,还用于判断所述写数据请求所请求写入的数据是否构成完整的数据块;
所述写入模块,还用于如果所述控制模块判断出所述写数据请求所请求写入的数据构成完整的数据块,则写入所述更新镜像中;
所述读取模块,还用于如果所述控制模块判断出所述写数据请求所请求写入的数据没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,所述写入模块,还用于将更新后的数据块写入所述更新镜像中。
8.根据权利要求5-7任一项所述的系统,其特征在于,所述内存中的数据块保存在所述内存的各个页面中,
所述系统还包括:
扫描模块,用于定期扫描所述内存中的各个页面;
运算模块,用于分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;
处理模块,用于如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
9.一种数据控制系统,其特征在于,基础镜像保存在内存中,更新镜像保存在磁盘中,所述系统包括:
接收器,用于接收克隆虚拟机发送的读数据请求;
处理器,用于确定所述读数据请求所请求读取的数据块所属镜像;
所述处理器,还用于当确定所述请求读取的数据块属于基础镜像时,从所述内存中读取所述数据块;发射器,用于将所述数据块发送给所述克隆虚拟机;
所述处理器,还用于当所述请求读取的数据块属于更新镜像时,从所述磁盘中读取所述数据块,并将所述数据块写入所述内存中,从所述内存中读取所述数据块,并由所述发射器发送给所述克隆虚拟机。
10.根据权利要求9所述的系统,其特征在于,所述基础镜像进行压缩后保存在所述内存的虚拟设备中,
所述处理器,具体用于当确定所述请求读取的数据块属于基础镜像时,从所述内存的虚拟设备中读取并解压缩所述数据块;
所述发射器,具体用于将解压缩后的数据块发送给所述克隆虚拟机。
11.根据权利要求9或10所述的系统,其特征在于,
所述接收器,还用于接收所述克隆虚拟机发送的写数据请求;
所述处理器,还用于判断所述写数据请求所请求写入的数据是否构成完整的数据块;
所述处理器,还用于如果判断出所述写数据请求所请求写入的数据构成完整的数据块,则写入所述更新镜像中;
所述处理器,还用于如果判断出所述写数据请求所请求写入的数据没有构成完整的数据块,则从所述基础镜像中取出所述数据对应的数据块,将所述数据更新至所述数据对应的数据块中,将更新后的数据块写入所述更新镜像中。
12.根据权利要求9-11任一项所述的系统,其特征在于,所述内存中的数据块保存在所述内存的各个页面中,
所述处理器,还用于定期扫描所述内存中的各个页面;分别利用各个页面中的数据进行哈希运算,得到各个页面的哈希值;如果哈希值相同的页面大于两个,则保留所述哈希值相同的页面中的一个页面,删除其余的页面。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/087338 WO2014100954A1 (zh) | 2012-12-24 | 2012-12-24 | 数据控制方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103229150A true CN103229150A (zh) | 2013-07-31 |
CN103229150B CN103229150B (zh) | 2016-01-13 |
Family
ID=48838329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280002917.4A Active CN103229150B (zh) | 2012-12-24 | 2012-12-24 | 数据控制方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103229150B (zh) |
WO (1) | WO2014100954A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014100954A1 (zh) * | 2012-12-24 | 2014-07-03 | 华为技术有限公司 | 数据控制方法及系统 |
CN104461775A (zh) * | 2014-11-26 | 2015-03-25 | 英业达科技有限公司 | 异地备援系统及备份方法 |
CN104699569A (zh) * | 2015-03-24 | 2015-06-10 | 积成电子股份有限公司 | 一种mqx操作系统映像结构、mqx操作系统、用电信息采集终端及映像更新方法 |
CN105589704A (zh) * | 2014-10-22 | 2016-05-18 | 北京云巢动脉科技有限公司 | 一种加速虚拟机启动的方法及系统 |
CN111488195A (zh) * | 2020-04-10 | 2020-08-04 | 深信服科技股份有限公司 | 虚拟机克隆方法、装置、设备及计算机可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703927B (zh) * | 2021-10-29 | 2022-02-11 | 杭州链城数字科技有限公司 | 数据处理方法、隐私计算系统、电子装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818873A (zh) * | 2005-02-11 | 2006-08-16 | 戴尔产品有限公司 | 用于虚拟机中的集中式软件管理的系统和方法 |
US8151263B1 (en) * | 2006-03-31 | 2012-04-03 | Vmware, Inc. | Real time cloning of a virtual machine |
CN102609296A (zh) * | 2010-12-17 | 2012-07-25 | 微软公司 | 虚拟机分支和并行执行 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011221597A (ja) * | 2010-04-05 | 2011-11-04 | Hitachi Solutions Ltd | クローンディスク作成方法およびプログラム |
CN102708060B (zh) * | 2012-05-14 | 2015-03-25 | 华为技术有限公司 | 一种镜像文件访问方法、装置及系统 |
CN103229150B (zh) * | 2012-12-24 | 2016-01-13 | 华为技术有限公司 | 数据控制方法及系统 |
-
2012
- 2012-12-24 CN CN201280002917.4A patent/CN103229150B/zh active Active
- 2012-12-24 WO PCT/CN2012/087338 patent/WO2014100954A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818873A (zh) * | 2005-02-11 | 2006-08-16 | 戴尔产品有限公司 | 用于虚拟机中的集中式软件管理的系统和方法 |
US8151263B1 (en) * | 2006-03-31 | 2012-04-03 | Vmware, Inc. | Real time cloning of a virtual machine |
CN102609296A (zh) * | 2010-12-17 | 2012-07-25 | 微软公司 | 虚拟机分支和并行执行 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014100954A1 (zh) * | 2012-12-24 | 2014-07-03 | 华为技术有限公司 | 数据控制方法及系统 |
CN105589704A (zh) * | 2014-10-22 | 2016-05-18 | 北京云巢动脉科技有限公司 | 一种加速虚拟机启动的方法及系统 |
CN105589704B (zh) * | 2014-10-22 | 2018-08-21 | 北京云巢动脉科技有限公司 | 一种加速虚拟机启动的方法及系统 |
CN104461775A (zh) * | 2014-11-26 | 2015-03-25 | 英业达科技有限公司 | 异地备援系统及备份方法 |
CN104699569A (zh) * | 2015-03-24 | 2015-06-10 | 积成电子股份有限公司 | 一种mqx操作系统映像结构、mqx操作系统、用电信息采集终端及映像更新方法 |
CN104699569B (zh) * | 2015-03-24 | 2017-12-08 | 积成电子股份有限公司 | 一种mqx操作系统映像结构、mqx操作系统、用电信息采集终端及映像更新方法 |
CN111488195A (zh) * | 2020-04-10 | 2020-08-04 | 深信服科技股份有限公司 | 虚拟机克隆方法、装置、设备及计算机可读存储介质 |
CN111488195B (zh) * | 2020-04-10 | 2023-05-12 | 深信服科技股份有限公司 | 虚拟机克隆方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2014100954A1 (zh) | 2014-07-03 |
CN103229150B (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7861028B2 (en) | System and method for configuration and management of flash memory | |
CN103229150B (zh) | 数据控制方法及系统 | |
US20110213954A1 (en) | Method and apparatus for generating minimum boot image | |
CN107526608B (zh) | 一种ota升级包升级方法及设备 | |
CN110825325A (zh) | 基于映射表动态加载的ssd性能提升方法、装置、计算机设备及存储介质 | |
JP2017527877A (ja) | フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器 | |
US20190324868A1 (en) | Backup portion of persistent memory | |
JP2014516438A (ja) | ウェアレベリングを有するメモリ装置の暗号化 | |
CN111124314A (zh) | 映射表动态加载的ssd性能提升方法、装置、计算机设备及存储介质 | |
CN112925606A (zh) | 一种内存管理方法、装置及设备 | |
KR20140073955A (ko) | 메모리 시스템 및 그 구동 방법 | |
CN103617135B (zh) | 一种存储设备中数据读取的方法及装置 | |
US11221766B2 (en) | System and method for persistent memory rotation based on remaining write endurance | |
CN109727183B (zh) | 一种图形渲染缓冲区压缩表的调度方法及装置 | |
CN110989936A (zh) | 一种存储空间分配方法、装置及存储介质 | |
US10949340B2 (en) | Block mapping systems and methods for storage device | |
KR20140065196A (ko) | 메모리 시스템 및 그 구동 방법 | |
CN116048414A (zh) | 一种设备的数据读取方法及电子设备 | |
JP2022184735A (ja) | プログラム起動方法及び機器、記憶媒体 | |
JP2014071906A (ja) | コンピュータシステム及びそのデータ管理方法 | |
CN111198651B (zh) | 进行存储空间管理的方法以及数据存储装置及其控制器 | |
CN111435285B (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 | |
US10572382B2 (en) | Method of operating data storage device and method of operating data processing system including the same | |
US10152334B2 (en) | Network boot system | |
CN102622301A (zh) | 一种闪存文件的读取和更新方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220214 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |