一种命令卸载方法、装置及物理机与流程

文档序号:12123077阅读:249来源:国知局
一种命令卸载方法、装置及物理机与流程

本发明涉及通信技术领域,尤其涉及一种命令卸载方法、装置及物理机。



背景技术:

目前,无论是为了实现虚拟机之间的拷贝卸载或是虚拟机自身的清零命令卸载过程,都需要虚拟机在接收到应用程序下发的操作指令之后,将操作指令经由IO(英文:Input/Output,中文:输入/输出)环发送至后端进程,并由主机根据该操作指令生成相应的SCSI(英文:Small Computer System Interface,中文:小型计算机系统接口)指令,之后发送至诸如IP SAN(英文:IP based SAN,中文:基于IP的SAN设备)等物理存储设备,由物理存储设备解析并执行该SCSI指令,从而在物理存储设备上完成数据的拷贝或是清零操作。

由此可见,上述操作在执行过程中,需要将生成的SCSI指令最终发送至对应的物理存储设备,之后由该物理存储设备来执行相应的操作。然而,考虑到上述数据的拷贝或是清零操作都需要由物理机的物理层硬件设备来完成,甚至需要物理机的CPU(英文:Central Processing Unit,中文:中央处理器)和网络资源的参与,对物理机的硬件资源要求较高,也带来了对物理机硬件资源和网络资源使用上的浪费。



技术实现要素:

本发明提供一种命令卸载方法、装置及物理机,能够减少在处理操作指令(如拷贝或者清零指令)时,对物理机的硬件资源的浪费。

为达到上述目的,本发明采用如下技术方案:

第一方面,本发明提供一种命令卸载方法,该方法用于物理机,物理机运行有主机Host,该主机上运行有虚拟机。该方法包括:虚拟机截获应用程序下发的操作指令,该操作指令用于指示对待操作数据执行指定操作;虚拟机根据操作指令,生成卸载命令,并向主机发送卸载命令,该卸载命令包括拷贝卸载命令或清零卸载命令;主机将卸载命令中的虚拟源地址转换为待操作数据的物理源地址,该虚拟源地址用于表示待操作数据在虚拟机的虚拟磁盘中的位置;主机根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作。由此可见,这样虽然需要虚拟机与主机共同来完成指定操作的执行过程,但由于主机是根据虚拟机生成的卸载命令来完成指定操作的,因此,无论当前应用本发明的系统为集群文件系统、分布式共享存储系统,或是其他系统,主机均能够识别该卸载命令。并且,主机和虚拟机均属于物理机的一部分,在上述执行过程中,主要由主机在接收到卸载命令之后执行相应操作,而无需物理存储设备执行相应的操作,因此,采用本发明所提供的实现方式,能够在处理操作指令(如拷贝或者清零指令)时,有效减少对物理机的硬件资源的浪费。

在一种可能的设计中,当指定操作为拷贝操作时,待操作数据包括至少一个数据块,虚拟机可以生成至少一个数据块中每个数据块的拷贝卸载命令,并向主机发送每个数据块的拷贝卸载命令。需要说明的是,虚拟机可以同时生成每个数据块的拷贝卸载命令,并打包向主机发送,或是每次只生成一个数据块的拷贝卸载命令,并向主机发送,之后当主机执行完该拷贝卸载命令指示的拷贝操作之后,再生成下一条拷贝卸载命令,供主机执行,直至待操作数据中的所有数据块都完成拷贝操作。

在一种可能的设计中,在虚拟机截获应用程序下发的操作指令之后,虚拟机还需要向主机发送创建指令,该创建指令中携带有每个数据块的拷贝卸载命令中数据块的长度,创建指令用于在目的虚拟机的磁盘文件系统中创建空文件,目的虚拟机运行在虚拟机运行的主机上,或运行在除主机以外的主机上;虚拟机接收目的虚拟机反馈的虚拟目的地址,该虚拟目的地址是空文件中分配给待操作数据的目的数据块的虚拟地址,目的数据块的长度大于或等于每个数据块的拷贝卸载命令中数据块的长度。这样一来,就可以确保主机在执行拷贝操作时,目的虚拟机中已经为这次拷贝过程预留出一定空间,即上述创建的空文件。

在一种可能的设计中,该方法应用于分布式共享存储系统,则主机对待操作数据执行指定操作,可以具体实现为:主机将待操作数据的虚拟目的地址更新为待操作数据的物理源地址;主机根据更新的虚拟目的地址,将待操作数据的物理源地址对应的数据块的引用计数的数值加一,该引用计数的值用于表示待操作数据的物理地址对应的数据块被引用的次数。由此可见,采用上述方式来实现待操作数据的拷贝操作,仅仅建立了地址之间的映射关系,并增加待操作数据的物理源地址的引用计数。因此,对于虚拟机而言,降低了虚拟机存储操作对虚拟机计算网络资源的消耗,同时,通过增加引用计数还起到了加速的效果。

在一种可能的设计中,该方法应用于集群文件系统,则主机对待操作数据执行指定操作,可以具体实现为:主机建立待操作数据的虚拟目的地址与待操作数据的物理源地址之间的映射关系;主机将待操作数据的物理源地址对应的数据块拷贝到待操作数据的物理目的地址;主机将映射关系中的待操作数据的物理源地址替换为待操作数据的物理目的地址。由此可见,采用上述方式来实现待操作数据的拷贝操作,需要先将数据块从物理源地址拷贝到物理目的地址,之后建立虚拟源地址与物理目的地址之间的映射关系。对于虚拟机而言,降低了虚拟机存储操作对虚拟机计算网络资源的消耗,但相比较于前一种可能的设计,则无法达到有效的拷贝加速的效果。

在一种可能的设计中,主机将卸载命令中的虚拟源地址转换为待操作数据的物理源地址的过程,可以具体实现为:在待操作数据的存储方式为块存储的情况下,主机将待操作数据的虚拟源地址转换为待操作数据的物理源地址;或者,在待操作数据的存储方式为对象存储的情况下,主机将待操作数据的虚拟源地址转换为对象标识,对象标识为待操作数据对应的数据块的标识。由此可见,对于不同的存储方式,需要采用不同的地址转换方式。

在一种可能的设计中,当卸载命令为清零卸载命令时,主机根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作的过程,可以具体实现为:当虚拟磁盘为待操作数据模拟的虚拟磁盘时,主机将待操作数据的物理源地址的比特图中每一位清零;或者,当虚拟磁盘为分布式共享存储系统模拟的虚拟磁盘时,主机将待操作数据的对象标识释放,并释放待操作数据对应的数据块;或者,当虚拟磁盘为集群文件系统模拟的虚拟磁盘时,主机将待操作数据的数据块释放;或者,当不存在待操作数据的虚拟源地址与待操作数据的物理源地址之间的映射关系时,主机将待操作数据的物理源地址对应的数据块写零。由此可见,在本发明中,需要根据虚拟磁盘的模拟情况,来选择合适的清零方案。

第二方面,本发明提供一种命令卸载装置,该命令卸载装置包括主机Host和虚拟机。虚拟机,用于截获应用程序下发的操作指令,操作指令用于指示对待操作数据执行指定操作;虚拟机,还用于根据操作指令,生成卸载命令,并向主机发送卸载命令,卸载命令包括拷贝卸载命令或清零卸载命令;主机,用于将卸载命令中的虚拟源地址转换为待操作数据的物理源地址,虚拟源地址用于表示待操作数据在虚拟机的虚拟磁盘中的位置;主机,还用于根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作。上述命令卸载装置可以用于完成上述方法示例中主机和虚拟机所执行的功能,该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。其中,该硬件或是软件包括至少一个上述功能相应的模块。需要说明的是,上述命令卸载装置中的主机和虚拟机还能用于实现第一方面所述的各种功能。

第三方面,本发明提供一种物理机。该物理机包括硬件层、运行在硬件层之上的主机Host和虚拟机。虚拟机,用于截获应用程序下发的操作指令,操作指令用于指示对待操作数据执行指定操作;虚拟机,还用于根据操作指令,生成卸载命令,并向主机发送卸载命令,卸载命令包括拷贝卸载命令或清零卸载命令;主机,用于将卸载命令中的虚拟源地址转换为待操作数据的物理源地址,虚拟源地址用于表示待操作数据在虚拟机的虚拟磁盘中的位置;主机,还用于根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作。

另外,该物理机中还可以包括处理器、输入设备、输出设备。该处理器被配置为支持该物理机执行上述方法中相应的功能。该输入设备和输出设备可以被视为通信接口,用于支持该物理机与其他设备之间的通信。需要说明的是,该物理机还可以包括存储器,该存储器用于与处理器耦合,具体可以包括用于实现第一方面所述的各种功能的虚拟机和主机,此外还能保存该物理机必要的程序指令和数据。

本发明提供的命令卸载方法、装置及物理机,相比较于现有技术中借助物理存储设备来执行指定操作,在本发明中,虚拟机可以根据应用程序所下发的操作指令来生成卸载命令,之后由虚拟机将卸载命令向主机发送;主机在接收到虚拟机发送的卸载命令之后,将卸载命令所携带的虚拟源地址转换为待操作数据的物理源地址,之后,主机可以根据卸载命令所携带的虚拟目的地址和上述待操作数据的物理源地址,对待操作数据执行指定操作。这样虽然需要虚拟机与主机共同来完成指定操作的执行过程,但由于主机是根据虚拟机生成的卸载命令来完成指定操作的,因此,无论当前应用本发明的系统为集群文件系统、分布式共享存储系统,或是其他系统,主机均能够识别该卸载命令。并且,主机和虚拟机均属于物理机的一部分,在上述执行过程中,主要由主机在接收到卸载命令之后执行相应操作,而无需物理存储设备执行相应的操作,因此,采用本发明所提供的实现方式,能够在处理操作指令(如拷贝或者清零指令)时,有效减少对物理机的硬件资源的浪费。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的一种数据中心结构示意图;

图2为本发明实施例提供的另一种数据中心结构示意图;

图3为本发明实施例提供的一种虚拟机和主机实现交互过程的示意图;

图4为本发明实施例提供的一种命令卸载方法交互图;

图5为本发明实施例提供的另一种命令卸载方法交互图;

图6为本发明实施例提供的另一种命令卸载方法交互图;

图7为本发明实施例提供的一种命令卸载装置的结构示意图;

图8为本发明实施例提供的一种物理机的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例可以应用于不同的数据中心结构,本发明实施例不做限制。比如:该数据中心结构可以具体为设置有集群文件系统的结构,或是Server San架构等。

如图1所示为一种设置有集群文件系统01的数据中心结构,该数据中心中可以包括多个主机,比如包括主机100、主机200和主机300。在每个主机内部均可以运行一个或多个虚拟机,比如在主机100上运行着虚拟机10和虚拟机11,其中,每个虚拟机可以包括至少一个虚拟磁盘,比如虚拟机10包括虚拟磁盘12,且每个虚拟磁盘的后端都会存在一个后端存储服务进程,比如后端进程14,以实现为对应的虚拟机提供服务。其中,后端进程可以是qemu进程,也可以是专门的后端进程,比如blkback、vhost等。后端进程会将经IO环传送的命令向集群文件系统01发送,并由集群文件系统01经过网络02向IP SAN03发送,之后由IP SAN03对该命令进行处理。

如图2所示为一种设置有分布式共享存储系统的Server San架构,该数据中心同样也可以包括多个主机,且每个主机内部均可以运行一个或多个虚拟机,虚拟机内部结构与如图1所示架构中的虚拟机类似,在此不做赘述。与图1的区别在于,后端进程会将经IO环传送的命令向分布式共享存储系统04发送,之后由分布式共享存储系统04将命令转发给对应的本地磁盘,并由本地磁盘对该命令进行处理。需要说明的是,上述本地磁盘可以为传送该命令的后端进程所对应的虚拟机所在主机内部的本地磁盘,也可以为设置在其他主机上的虚拟磁盘。比如主机400中,虚拟机40最终通过后端进程44将命令向分布式共享存储系统04发送,分布式共享系统04根据该命令本身的含义来确定是将该命令向本地磁盘46、本地磁盘47发送,或是向位于主机500或主机600中的本地磁盘发送。需要说明的是,本地磁盘的数量与主机内部所设置的虚拟机的数量无关,可以根据自身需求进行配置,比如主机500中虽然包括虚拟机50和虚拟机51,但在主机500中仅包括本地磁盘56,同样的,主机600中虽然仅包括虚拟机60,但可以在主机600中设置多个本地磁盘,即本地磁盘63和本地磁盘64。

本发明实施例提供一种命令卸载方法,可以应用于如图3所示的虚拟机700a,且该虚拟机700a可以位于上述两种数据中心结构中,但不仅限位于上述两种数据中心结构中。在本发明实施例中,在虚拟机700a内部,可以基于文件系统73posix接口来实现操作指令的捕获,也就是当应用程序下发拷贝、清零等操作指令时,虚拟机700a可以将该操作指令捕获,并生成相应的卸载命令,并传递给前端进程71。之后由前端进程71将卸载命令放到IO环72中传递给主机700b内部的后端进程73,并由后端进程73解析该卸载命令,最终交给分布式共享存储系统04或集群文件系统01进行处理。具体实现方式会在后文提出,在此不做赘述。

以上述两种数据中心结构为例,如图4所示,该方法可以应用于物理机,该物理机上可以运行有主机(英文:Host),该主机上还可以运行有虚拟机,本发明可以由该虚拟机与该主机共同来实现,该方法流程包括:

101、虚拟机截获应用程序下发的操作指令。

其中,操作指令用于指示对待操作数据执行指定操作。

虚拟机的应用程序所下发的操作指令可以包括清零指令或是拷贝指令,比如虚拟机中的APP(英文:Application,中文:应用程序)对文件A中f偏移位置下发x长度的写0操作,或是源端虚拟机中的APP下发拷贝指令,将文件A从目录a拷贝到目的端虚拟机的目录b。需要说明的是,拷贝指令可以包括跨虚拟机拷贝指令,以及在同一虚拟机上进行拷贝操作的虚拟机内部拷贝指令中的至少一种。

需要说明的是,在本发明中,虚拟机可以识别到应用程序下发的操作指令,并截获该操作指令。

102、虚拟机根据操作指令,生成卸载命令。

其中,卸载命令包括拷贝卸载命令或清零卸载命令。

需要说明的是,虚拟机可以根据所截获的操作指令,生成卸载命令,并由前端进程将生成的卸载命令通过IO环向后端进程发送。

103、虚拟机向主机发送卸载命令。

104、主机将卸载命令中的虚拟源地址转换为待操作数据的物理源地址。

其中,虚拟源地址用于表示待操作数据在虚拟机的虚拟磁盘中的位置。

105、主机根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作。

在主机接收到虚拟机发送的卸载命令之后,解析该卸载命令,并按照该卸载命令所指示的操作类型来完成指定操作。如图3所示,主机700b中的后端进程73在接收到虚拟机700a发送的卸载命令之后,发送至分布式共享存储系统04或集群文件系统01,并根据不同的系统类型,采用相应的方式完成指定操作。

在本发明中,虚拟机可以根据应用程序所下发的操作指令来生成卸载命令,之后由虚拟机将卸载命令向主机发送;主机在接收到虚拟机发送的卸载命令之后,将卸载命令所携带的虚拟源地址转换为待操作数据的物理源地址,之后,主机可以根据卸载命令所携带的虚拟目的地址和上述待操作数据的物理源地址,对待操作数据执行指定操作。这样虽然需要虚拟机与主机共同来完成指定操作的执行过程,但由于主机是根据虚拟机生成的卸载命令来完成指定操作的,因此,无论当前应用本发明的系统为集群文件系统、分布式共享存储系统,或是其他系统,主机均能够识别该卸载命令。并且,主机和虚拟机均属于物理机的一部分,在上述执行过程中,主要由主机在接收到卸载命令之后执行相应操作,而无需物理存储设备执行相应的操作,因此,采用本发明所提供的实现方式,能够在处理操作指令(如拷贝或者清零指令)时,有效减少对物理机的硬件资源的浪费。

考虑到当指定操作为拷贝时,待操作数据所包括的数据块的个数为至少一个,为了确保能够将待操作数据完整的进行拷贝,在本发明实施例的一个实现方式中,需要分别生成每个数据块的拷贝卸载命令,从而使主机能够执行每个数据块的拷贝操作。因此,如图4所示的步骤102虚拟机根据操作指令,生成卸载命令,可以具体实现为步骤1021;如图4所示的步骤103虚拟机向主机发送卸载命令,可以具体实现为步骤1031:

1021、虚拟机生成至少一个数据块中每个数据块的拷贝卸载命令。

1031、虚拟机向主机发送每个数据块的拷贝卸载命令。

在本发明中,虚拟机可以同时将每个数据块的拷贝卸载命令一起向主机发送,或每次只向主机发送一个拷贝卸载命令,并当该主机执行完这一个拷贝卸载命令之后,再向该主机发送下一个拷贝卸载命令,直至该主机执行完所有拷贝卸载命令所指示的操作。

需要说明的是,虚拟机可以按照生成数据块的先后顺序来生成每个数据块对应的拷贝卸载命令,并由主机依次执行每个数据块的拷贝操作,但在本发明中,并不限定虚拟机生成拷贝卸载命令的顺序,以及主机执行拷贝操作的顺序,只要可以确保待操作数据能够被全部被拷贝即可。

另外,考虑到拷贝操作在执行过程中,需要在目的虚拟机中创建一个用于存储待操作数据的空文件,因此,在进行上述操作之前,需要先在目的虚拟机的磁盘文件系统中创建空文件。在执行完如图4所示的步骤101虚拟机获取应用程序下发的操作指令之后,还需要执行步骤106和步骤107:

106、虚拟机向主机发送创建指令。

其中,创建指令中携带有每个数据块的拷贝卸载命令中数据块的长度,创建指令用于在目的虚拟机的磁盘文件系统中创建空文件,目的虚拟机运行在虚拟机运行的主机上,或运行在除主机以外的主机上。

107、虚拟机接收目的虚拟机反馈的虚拟目的地址。

其中,虚拟目的地址是空文件中分配给待操作数据的目的数据块的虚拟地址,目的数据块的长度大于或等于每个数据块的拷贝卸载命令中数据块的长度。

这样一来,就能够为待操作数据在目的虚拟机的磁盘文件系统中预留出一定的存储空间,以便于将待操作数据从虚拟源地址拷贝到目的源地址。

以如图5所示的拷贝操作执行流程为例,具体实现步骤如下:

201、VM(英文:Virual Machine,中文:虚拟机)1中的APP下发拷贝指令。

其中,拷贝指令具体为将文件A从目录a拷贝到VM3的目录b;VM1可以被视为源端虚拟机,VM3可以被视为目的虚拟机。

需要说明的是,拷贝指令可以在同一虚拟机上实现,或是在不同虚拟机上实现。当拷贝指令在不同虚拟机上实现时,VM1与VM3为不同虚拟机;当拷贝指令在同一虚拟机上实现时,VM1与VM3为同一虚拟机。

202、VM1截获拷贝指令。

203、VM1通知VM3创建目的空文件。

若VM1与VM3为同一虚拟机,那么当VM1(即VM3)截获拷贝指令之后,可以直接在本地的磁盘文件系统中创建目的空文件。需要说明的是,如图5所示的交互流程图为VM1与VM3属于不同虚拟机时的交互流程。

204、VM3在本地的磁盘文件系统中创建目的空文件。

205、VM1初始化文件偏移f=0。

考虑到文件可能存在多个数据块,而在一般情况下拷贝操作每次只能针对一个数据块进行,因此,在这里所设置的文件偏移f是用于在后续执行过程中判断是否继续进行其他数据块的拷贝操作的条件。也就意味着,直到文件A的偏移f与待拷贝的文件A的数据块的偏移相同时,结束拷贝操作。

需要说明的是,上述判别方式是按照文件中每个数据块的生成顺序依次进行拷贝操作的,但在本发明中不仅限于上述方式,也可以乱序进行拷贝操作,只要能够保证该文件中的所有数据块均完成拷贝即可。

206、判断f是否大于或等于文件尾的偏移。

其中,当f大于或等于文件尾的偏移时,结束拷贝操作;否则,继续执行步骤207。

207、VM1中的文件系统获取偏移f对应数据块B(vlba,vlen)。

其中,数据块B为待拷贝的文件A中的起始数据块,vlba为数据块B的起始虚拟源地址,vlen为数据块B的长度。

208、VM3在文件系统中分配对应数据块C(vlba,vlen)。

为了保证数据块B能够完全复制到数据块C,在本发明中,数据块B和数据块C的vlen可以相同,或者,数据块C的长度大于数据块B的长度。需要说明的是,步骤208所示的分配操作只是在目的虚拟机,即在VM3的文件系统中分配,而不是真实下发到后端的真实存储设备中进行空间的分配。也就意味着,本发明所实现的操作方案可以不借助于实际物理存储设备。

209、VM1生成拷贝卸载命令(拷贝,VM1.B.vlba,VM3.C.vlba,vlen)。

在本发明中,拷贝卸载命令的格式为操作类型,虚拟源地址,虚拟目的地址,长度。其中,操作类型为拷贝,虚拟源地址为VM1中数据块B的vlba,虚拟目的地址为VM3中数据块C的vlba,长度为数据块B的长度,同时也可以是数据块C的长度,即vlen。

210、VM1的前端进程将拷贝卸载命令经由IO环向主机的后端进程发送。

211、当主机的后端进程接收到拷贝卸载命令之后,解析拷贝卸载命令,得到解析后的拷贝卸载命令(拷贝,plba1,VM3.C.vlba,plen)。

其中,解析后的拷贝卸载命令的格式为操作类型,物理源地址,虚拟目的地址,长度。其中,操作类型为拷贝,物理源地址为数据块B的plba,即数据块B的物理地址,虚拟目的地址为VM3中数据块C的vlba,长度为数据块B在本地磁盘中对应的长度,即plen。

212、主机将VM3.C.vlba指向plba1,并增加plba1对应数据块的引用计数。

需要说明的是,步骤212仅提供了一种具体的对待操作数据执行指定操作的方式,即当上述实现方式用于分布式共享存储系统时,VM1、VM3与主机是如何实现上述过程的,而对于当本发明所提供的方法应用于集群文件系统时,可参见步骤1053至步骤1055,在此不做赘述。另外,在步骤212中,VM3.C.vlba指向plba1可以视为建立了VM3.C.vlba和plba1之间的映射关系。

213、主机将拷贝结果返回VM1。

214、在VM1中,f+=B.vlen。

需要说明的是,B.vlen为数据块B的长度;仅当待拷贝的文件A完全拷贝到指定位置,即VM3的文件系统中之后,才能结束上述操作流程,否则将循环执行上述步骤206至步骤214,直到遍历到文件A的文件尾,也就是直至将文件中所有数据块拷贝完。

考虑到在本发明所提供的技术方案应用于不同数据中心结构时,会有不同的拷贝方法,在本发明实施例的一个实现方式中,当本发明的方法应用于分布式共享存储系统时,可以通过改变地址之间的映射关系,并增加待操作数据的物理源地址对应的数据块的引用计数,来完成拷贝操作。因此,在上述实现方式的基础上,步骤105主机根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作,可以具体实现为步骤1051和步骤1052:

1051、主机将待操作数据的虚拟目的地址更新为待操作数据的物理源地址。

1052、主机根据更新的虚拟目的地址,将待操作数据的物理源地址对应的数据块的引用计数的数值加一。

其中,引用计数的值用于表示待操作数据的物理地址对应的数据块被引用的次数。

以如图5所示的拷贝操作执行流程为例,当方法应用于分布式共享存储系统时,主机可以建立VM3.C.vlba与plba1之间的映射关系,并增加plba1对应数据块的引用计数,从而完成数据块B的拷贝操作。

在本发明中,采用上述方式来实现待操作数据的拷贝操作,仅仅建立了地址之间的映射关系,并增加待操作数据的物理源地址的引用计数。因此,对于虚拟机而言,降低了虚拟机存储操作对虚拟机计算网络资源的消耗,同时,通过增加引用计数还起到了加速的效果。

另外,当本发明的方法应用于集群文件系统时,可以通过将待操作数据的物理源地址对应的数据块进行拷贝,之后将映射关系中的物理源地址改变为物理目的地址,来完成拷贝操作。因此,在上述实现方式的基础上,步骤105主机根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作,还可以具体实现为步骤1053至步骤1055:

1053、主机建立待操作数据的虚拟目的地址与待操作数据的物理源地址之间的映射关系。

1054、主机将待操作数据的物理源地址对应的数据块拷贝到待操作数据的物理目的地址。

1055、主机将映射关系中的待操作数据的物理源地址替换为待操作数据的物理目的地址。

以如图5所示的拷贝操作执行流程为例,当方法应用于集群文件系统时,主机可以将plba1的数据块拷贝到plba2,并建立VM3.C.vlba与plba2之间的映射关系,从而完成数据块B的拷贝操作。

在本发明中,采用上述方式来实现待操作数据的拷贝操作,需要先将数据块从物理源地址拷贝到物理目的地址,之后建立虚拟源地址与物理目的地址之间的映射关系。对于虚拟机而言,降低了虚拟机存储操作对虚拟机计算网络资源的消耗,但相比较于步骤1051和步骤1052所示的实现方案,无法达到有效的拷贝加速的效果。

由于在数据结构中心中,待操作数据的存储方式可能为块存储或是对象存储,而在进行拷贝操作之前,需要针对不同存储方式来完成待操作数据的虚拟源地址的转换操作,在本发明实施例的一个实现方式中,分别针对不同存储方式提供了具体的将待操作数据的虚拟源地址进行转换的方案。因此,在上述实现方式的基础上,步骤104主机将卸载命令中的虚拟源地址转换为待操作数据的物理源地址,可以具体实现为步骤1041或步骤1042:

1041、在待操作数据的存储方式为块存储的情况下,主机将待操作数据的虚拟源地址转换为待操作数据的物理源地址。

1042、在待操作数据的存储方式为对象存储的情况下,主机将待操作数据的虚拟源地址转换为对象标识。

其中,对象标识为待操作数据对应的数据块的标识。

需要说明的是,在主机的后端进程解析卸载命令时,需要将vlba、vlen进行转换,后端进程具体可以将存储方式为块存储的待操作数据的虚拟源地址vlba,转换为物理源地址plba,或是将存储方式为对象存储的待操作数据的虚拟源地址vlba,转换为对象标识oid。

在本发明中,在主机的后端进程进行卸载命令解析的过程中,会将待操作数据的虚拟源地址进行转换,之后交给分布式共享存储系统或是集群文件系统进行处理。

当虚拟机中的应用程序下发的操作指令所指示的操作为清零时,在本发明实施例的一个实现方式中,可以根据虚拟磁盘的模拟情况来选择合适的清零方法。因此,在如图4所示的实现方式的基础上,步骤105主机根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作,还可以具体实现为步骤1056至步骤1059中的一项:

1056、当虚拟磁盘为待操作数据模拟的虚拟磁盘时,主机将待操作数据的物理源地址的比特图中每一位清零。

1057、当虚拟磁盘为分布式共享存储系统模拟的虚拟磁盘时,主机将待操作数据的对象标识释放,并释放待操作数据对应的数据块。

1058、当虚拟磁盘为集群文件系统模拟的虚拟磁盘时,主机将待操作数据的数据块释放。

1059、当不存在待操作数据的虚拟源地址与待操作数据的物理源地址之间的映射关系时,主机将待操作数据的物理源地址对应的数据块写零。

例如:如果虚拟磁盘是由vhd(英文:Microsoft Virtual Hard Disk format,中文:虚拟磁盘格式)文件进行模拟的,则将vhd文件中对应plba地址的bitmap清0;如果虚拟磁盘是由Server San提供的,则将Server San中对应块的对象标识释放,并释放对应数据块;如果虚拟磁盘是由集群文件系统提供的,则将集群文件系统中plba对应文件的数据块释放;如果不存在元数据,则将plba对应的数据块写0,而这种方法只能降低虚拟机存储操作对虚拟机计算网络资源的消耗,却无法像上述三种实现方法那样起到加速的效果。

以如图6所示的清零操作执行流程为例,具体实现步骤如下:

301、VM1中的APP下发清零指令。

其中,清零指令具体可以为对文件A中f偏移下发写0操作。

302、VM1截获清零指令,并将清零指令转换为清零卸载命令(清零,vlba,vlen)。

在本发明中,清零卸载命令的格式为操作类型,虚拟源地址,长度。其中,操作类型为清零,虚拟源地址为VM1中数据块B的vlba,长度为数据块B的长度,即vlen。

303、VM1的前端进程将清零卸载命令经由IO环向后端进程发送。

304、当主机的后端进程接收到清零卸载命令之后,解析清零卸载命令,得到解析后的清零卸载命令(清零,plba1,plen)。

其中,解析后的清零卸载命令的格式为操作类型,物理源地址,长度。其中,操作类型为清零,物理源地址为数据块B的plba,长度为数据块B在本地磁盘中对应的长度,即plen。

305、主机对plba,plen所对应的元数据执行清零操作。

其中,元数据用于表示虚拟源地址与物理源地址之间的映射关系。需要说明的是,在本发明中,具体执行清零操作的过程包括但不仅限于上述步骤1056至步骤1059中所示的针对不同情况所采取的不同清零方法,在此不做赘述。

306、主机将清零结果返回VM1。

在本发明中,在虚拟机获取到应用程序下发的操作指令为指示清零操作的指令时,主机可以根据虚拟磁盘的模拟情况来选择合适的清零方法,之后对待操作数据执行清零操作。

上述主要从虚拟机和主机交互的角度对本发明实施例提供的方案进行了介绍。可以理解的是,为了实现上述功能,本发明还提供了一种命令卸载装置80,如图7所示,该装置80包含了执行各个功能相应的软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本发明实施例可以根据上述方法示例对装置80进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图7示出了上述实施例中所涉及的装置80的一种可能的结构示意图,装置80包括:虚拟机81和主机82。虚拟机81,用于截获应用程序下发的操作指令,操作指令用于指示对待操作数据执行指定操作;虚拟机81,还用于根据操作指令,生成卸载命令,并向主机82发送卸载命令,卸载命令包括拷贝卸载命令或清零卸载命令;主机82,用于将卸载命令中的虚拟源地址转换为待操作数据的物理源地址,虚拟源地址用于表示待操作数据在虚拟机81的虚拟磁盘中的位置;主机82,还用于根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作。

在本发明中,虚拟机81不仅用于执行图4中的过程101至过程103,还用于执行图5和图6中VM1所执行的所有过程;主机82不仅用于执行图4中的过程104和过程105,还用于执行图5和图6中主机所执行的所有过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。此外,装置80中的主机82和虚拟机81,还可以用于执行本文所描述的技术的其它过程。在本发明中,装置80中还可以包括用于与外界其他设备进行通信的通信模块83,以及用于存储程序代码和数据存储模块84。其中,该通信模块83具体可以是收发器、收发电路或通信接口等,该存储模块84具体可以是存储器,主机82和虚拟机81可以集成在该存储模块84中,或者,该存储模块84可以为至少两个,并分别设置在主机82和虚拟机81内部。此外,在装置80中,还可以包括处理模块85。其中,该处理模块85可以是处理器或控制器,例如可以是中央处理器,通用处理器,数字信号处理器(英文:Digital Signal Processor,简称:DSP),专用集成电路(英文:Application-Specific Integrated Circuit,简称:ASIC),现场可编程门阵列(英文:Field Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。

本发明提供的命令卸载装置,相比较于现有技术中借助物理存储设备来执行指定操作,在本发明中,虚拟机可以根据应用程序所下发的操作指令来生成卸载命令,之后由虚拟机将卸载命令向主机发送;主机在接收到虚拟机发送的卸载命令之后,将卸载命令所携带的虚拟源地址转换为待操作数据的物理源地址,之后,主机可以根据卸载命令所携带的虚拟目的地址和上述待操作数据的物理源地址,对待操作数据执行指定操作。这样虽然需要虚拟机与主机共同来完成指定操作的执行过程,但由于主机是根据虚拟机生成的卸载命令来完成指定操作的,因此,无论当前应用本发明的系统为集群文件系统、分布式共享存储系统,或是其他系统,主机均能够识别该卸载命令。并且,主机和虚拟机均属于物理机的一部分,在上述执行过程中,主要由主机在接收到卸载命令之后执行相应操作,而无需物理存储设备执行相应的操作,因此,采用本发明所提供的实现方式,能够在处理操作指令(如拷贝或者清零指令)时,有效减少对物理机的硬件资源的浪费。

当通信模块83为输入设备和输出设备,虚拟机81和主机82集成在同一存储模块84上,则该存储模块可以具体为处理器,存储模块84为存储器时,本发明实施例所涉及的物理机可以为图8所示的物理机90。

参阅图8所示,该物理机90包括:处理器91、输入设备92、输出设备93、存储器94以及总线95。其中,处理器91、输入设备92、输出设备93,以及存储器94通过总线95相互连接,存储器94中具体可以包括主机941和虚拟机942;总线95可以是外设部件互连标准(英文:Peripheral Component Interconnect,简称:PCI)总线或扩展工业标准结构(英文:Extended Industry Standard Architecture,简称:EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(英文:Random Access Memory,简称:RAM)、闪存、只读存储器(英文:Read Only Memory,简称:ROM)、可擦除可编程只读存储器(英文:Erasable Programmable ROM,简称:EPROM)、电可擦可编程只读存储器(英文:Electrically EPROM,简称:EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(简称:CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。

需要说明的是,上述输入设备92、输出设备93可以根据物理机90是否需要与其他设备进行通信来确定是否需要设置。图8所示的主机941作为管理层,用以完成硬件资源的管理、分配;为虚拟机942呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,主机941可能是虚拟机监控器(简称:VMM);此外,有时VMM和一个特权虚拟机配合,两者结合组成主机941。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应主机941的一个文件或者一个逻辑块设备。虚拟机942则运行在主机941为其准备的虚拟硬件平台上,主机941上运行一个或多个诸如942的虚拟机。其中,虚拟机942则通过虚拟机软件可以在一台物理机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机942上可以安装操作系统和应用程序,虚拟机942还可访问网络资源。对于在虚拟机942中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。

在本发明中,虚拟机942,用于截获应用程序下发的操作指令,操作指令用于指示对待操作数据执行指定操作;虚拟机942,还用于根据操作指令,生成卸载命令,并向主机941发送卸载命令,卸载命令包括拷贝卸载命令或清零卸载命令;主机941,用于将卸载命令中的虚拟源地址转换为待操作数据的物理源地址,虚拟源地址用于表示待操作数据在虚拟机942的虚拟磁盘中的位置;主机941,还用于根据卸载命令中的虚拟目的地址和待操作数据的物理源地址,对待操作数据执行指定操作。

此外,虚拟机942还可以用于执行如图5和图6中虚拟机所实现的功能,主机941还可以用于执行如图5和图6中主机所实现的功能,具体可以参见上述方法实施例中的各个步骤,在此不做赘述。

本发明提供的物理机,相比较于现有技术中借助物理存储设备来执行指定操作,在本发明中,虚拟机可以根据应用程序所下发的操作指令来生成卸载命令,之后由虚拟机将卸载命令向主机发送;主机在接收到虚拟机发送的卸载命令之后,将卸载命令所携带的虚拟源地址转换为待操作数据的物理源地址,之后,主机可以根据卸载命令所携带的虚拟目的地址和上述待操作数据的物理源地址,对待操作数据执行指定操作。这样虽然需要虚拟机与主机共同来完成指定操作的执行过程,但由于主机是根据虚拟机生成的卸载命令来完成指定操作的,因此,无论当前应用本发明的系统为集群文件系统、分布式共享存储系统,或是其他系统,主机均能够识别该卸载命令。并且,主机和虚拟机均属于物理机的一部分,在上述执行过程中,主要由主机在接收到卸载命令之后执行相应操作,而无需物理存储设备执行相应的操作,因此,采用本发明所提供的实现方式,能够在处理操作指令(如拷贝或者清零指令)时,有效减少对物理机的硬件资源的浪费。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1