一种镜像文件的分布式锁资源控制权限迁移方法以及装置与流程

文档序号:13808238阅读:158来源:国知局
一种镜像文件的分布式锁资源控制权限迁移方法以及装置与流程

本申请涉及服务器虚拟化技术领域,尤其涉及一种镜像文件的分布式锁资源控制权限迁移方法以及装置。



背景技术:

在服务器虚拟化产品中,采用多台物理主机(下称节点)构成虚拟化工作集群;虚拟化工作集群中运行有至少一台虚拟机;虚拟化工作集群中的虚拟机通过虚拟化软件进行管理,实现虚拟机的创建、迁移、撤销等;虚拟化软件一般采用共享文件系统作为存储虚拟机镜像文件的载体;节点之间通过网络交互消息,协调对共享存储空间的访问,使得构成虚拟化工作集群中的多个节点可以访问到相同的存储空间。

共享文件系统为了协调不同节点对磁盘上共享资源的访问,采用分布式锁技术在节点间实现文件的同步和互斥。当虚拟机在某个节点n上启动时,虚拟化管理软件会从本节点n打开虚拟机镜像文件;当节点n打开虚拟镜像文件后,运行在节点n上的分布式锁管理器会在节点n创建与镜像文件对应的分布式锁资源(lock);如果该节点n为第一个打开该虚拟机镜像文件的节点,会采用节点n作为锁资源控制权限拥有者(owner)节点,并在该节点n创建owner;当集群中的任意一个节点(包括节点n)想要操作磁盘上的镜像文件的时候,首先向owner节点发送加锁请求,owner节点在接收到加锁请求后,根据加锁请求以及当前锁资源lock的分配情况,执行对应镜像文件的加锁授权处理。

当需要将在某个节点上运行的虚拟机迁移到其他节点上时;如果虚拟机迁移之前所在的节点恰好为与虚拟机的镜像文件关联的锁资源的owner节点,会导致owner节点和虚拟机迁移之后打开镜像文件的节点为不同节点,使得该虚拟机后续的加锁请求都会通过网络发送到owner节点;由于虚拟机会频繁的对镜像文件进行操作,加锁请求通过网路传输至owner节点会增加虚拟机加锁的时延和计算资源开销,造成虚拟机的读写性能下降;同时,如果虚拟机迁移后的所在节点和owner节点之间的网络不可达,会造成虚拟机对某个镜像文件的加锁请求被挂起,使得虚拟机无法获得对镜像文件的操作权限,造成文件系统和虚拟机的可用性下降。



技术实现要素:

本申请实施例提供一种镜像文件的分布式锁资源控制权限迁移方法以及装置,用以在将虚拟机被迁移到其他节点的时候,也将镜像文件的分布式锁资源控制权迁随同虚拟机迁移至相同的节点,避免加锁请求通过网路传输至owner节点,从而减少虚拟机加锁的时延和计算资源的开销,避免虚拟机的读写性能下降。

第一方面,提供一种镜像文件的分布式锁资源控制权限迁移方法,应用于虚拟机迁移的目的节点,该方法包括:

虚拟机迁移的目的节点生成与该虚拟机的镜像文件对应的第一锁资源信息;所述第一锁资源信息包括:所述第一锁资源信息的标识、虚拟机迁移的源节点的标识以及目的节点对于所述锁资源的锁状态信息;其中,所述源节点为虚拟机迁移之前镜像文件的锁资源控制权限拥有者owner节点;

根据所述源节点的标识,向所述源节点发送锁资源控制权限迁移请求;所述锁资源控制权限迁移请求中携带有所述第一锁资源信息的标识;所述第一锁资源信息的标识用于所述源节点返回与所述第一锁资源信息的标识对应的各个节点对于所述锁资源的锁状态信息;

将所述第一锁资源信息中的源节点的标识替换为目的节点的标识,以及将目的节点对于所述锁资源的锁状态信息替换为所述源节点返回的各个节点对于所述锁资源的锁状态信息,得到第二锁资源信息,并通知其他节点更新后的owner节点为所述目的节点,以便其他节点在向所述目的节点发起针对所述镜像文件的加锁请求时,基于所述第二锁资源信息控制其他节点对于所述镜像文件的访问权限。

第二方面,提供一种镜像文件的分布式锁资源控制权限迁移方法,应用于虚拟机迁移的源节点,该方法包括:

虚拟机迁移的源节点接收虚拟迁移的目的节点所发送的锁资源控制权限迁移请求;所述锁资源控制权限迁移请求中携带有第一锁资源信息的标识;所述目的节点为虚拟机迁移之后镜像文件的owner节点;

获取与所述第一锁资源信息的标识对应的各个节点对于所述锁资源的锁状态信息;

将所述各个节点对于所述锁资源的锁状态信息发送给所述目的节点,用于所述目的节点生成第二锁资源信息。

第三方面,提供一种镜像文件的分布式锁资源控制权限迁移装置,安装于虚拟机迁移的目的节点,该装置包括:

第一锁资源信息生成模块,用于在虚拟机迁移的目的节点生成与该虚拟机的镜像文件对应的第一锁资源信息;所述第一锁资源信息包括:所述第一锁资源信息的标识、源节点的标识以及目的节点对于所述锁资源的锁状态信息;其中,所述源节点为虚拟机迁移之前镜像文件的owner节点;

迁移请求发送模块,用于根据所述源节点的标识,向所述源节点发送锁资源控制权限迁移请求;所述锁资源控制权限迁移请求中携带有所述第一锁资源信息的标识;所述第一锁资源信息的标识用于所述源节点返回与所述第一锁资源信息的标识对应的各个节点对于所述锁资源的锁状态信息;

第二锁资源信息生成模块,用于将所述第一锁资源信息中的源节点的标识替换为目的节点的标识,以及将目的节点对于所述锁资源的锁状态信息替换为所述源节点返回的各个节点对于所述锁资源的锁状态信息,得到第二锁资源信息,并通知其他节点更新后的owner节点为所述目的节点,以便其他节点在向所述目的节点发起针对所述镜像文件的访问请求时,基于所述第二锁资源信息控制其他节点对于所述镜像文件的访问权限。

第四方面,提供一种镜像文件的分布式锁资源控制权限迁移装置,安装于虚拟机迁移的源节点,该装置包括:

接收模块,用于虚拟机迁移的源节点接收虚拟机迁移的目的节点所发送的锁资源控制权限迁移请求;所述锁资源控制权限迁移请求中携带有第一锁资源信息的标识;所述目的节点为虚拟机迁移之后镜像文件的owner节点;

获取模块,用于获取与所述第一锁资源信息的标识对应的各个节点对于所述锁资源的锁状态信息;

发送模块,用于将所述各个节点对于所述锁资源的锁状态信息发送给所述目的节点,用于所述目的节点生成第二锁资源信息。

本申请实施例中,如果虚拟机的镜像文件的锁资源控制权限拥有者和虚拟机迁移的源节点为同一节点,则将owner也随同虚拟机一起迁移至目的节点,从而能够使得虚拟机在迁移之后,其所在的节点和镜像文件对应的owner节点仍然在同一节点上;虚拟机对镜像文件进行操作的时候,不需要通过网络向owner节点发送加锁请求,而通过调用节点内核程序与owner进行交互,从而避免当虚拟机所在节点和owner节点不同且两者之间网络不可达时所造成的分布式文件系统和虚拟机可用性下降的问题;同时也不需要通过网络传输加锁请求,从而减少虚拟机加锁的时延和计算资源的开销,避免由于此问题导致的虚拟机读写性能下降。

附图说明

为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要的附图做简单的介绍。显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1示出本申请实施例一所提供的镜像文件的分布式锁资源控制权限迁移方法的流程示意图;

图2示出本申请实施例二所提供的镜像文件的分布式锁资源控制权限迁移方法的流程示意图;

图3示出本申请实施例三所提供的镜像文件的分布式锁资源控制权限迁移方法的流程示意图;

图4示出本申请实施例四所提供的镜像文件的分布式锁资源控制权限迁移方法的流程示意图;

图5示出本申请实施例所提供一种的镜像文件的分布式锁资源控制权限迁移装置的结构示意图;

图6示出本申请实施例所提供另一种的镜像文件的分布式锁资源控制权限迁移装置的结构示意图;

图7示出本申请实施例所提供一种的镜像文件的分布式锁资源控制权限迁移装置的结构示意图;

图8示出本申请实施例所提供另一种的镜像文件的分布式锁资源控制权限迁移装置的结构示意图。

具体实施方式

与现有技术中在对虚拟机进行迁移的时候仅仅将虚拟机从虚拟机运行的源节点迁移至目的节点不同,本申请实施例在对虚拟机进行迁移时,如果虚拟机镜像文件的owner节点和虚拟机迁移的源节点为同一节点,则将owner也随同虚拟机一起迁移至目的节点,从而能够使得虚拟机在迁移之后,其所在的节点和镜像文件对应的owner节点仍然在同一节点上;虚拟机对镜像文件进行操作的时候,不需要通过网络向owner节点发送加锁请求,而通过调用节点内核程序与owner进行交互,从而避免当虚拟机所在节点和owner节点不同且两者之间网络不可达时所造成的分布式文件系统和虚拟机可用性下降的问题;同时也不需要通过网络传输加锁请求,从而减少虚拟机加锁的时延和计算资源的开销,避免由于此问题导致的虚拟机读写性能下降。

本申请中的虚拟机镜像文件为虚拟机在正常运行过程中需要使用的文件,或者虚拟机在执行某项任务时需要调用的文件。

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请做进一步详细的说明。

本申请实施例中,执行镜像文件的分布式锁资源控制权限迁移方法的设备分别为虚拟机迁移的源节点和目的节点;其中虚拟化管理软件实现对源节点和目的节点的管理。下面首先从执行主体为虚拟机迁移的目的节点对本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移方法加以说明。

参见图1所示,本申请实施例一所提供的镜像文件的分布式锁资源控制权限迁移方法包括以下步骤:

s101:虚拟机迁移的目的节点生成与该虚拟机的镜像文件对应的第一锁资源信息;第一锁资源信息包括:第一锁资源信息的标识、源节点的标识以及目的节点对于锁资源的锁状态信息;其中,源节点为虚拟机迁移之前镜像文件的锁资源控制权限拥有者owner节点。

在具体实施中,虚拟机迁移之前,虚拟化管理软件会首先在源节点配置所启动的虚拟机相关配置信息,如cpu资源、内存资源、ip地址等,并在源节点访问共享文件系统,打开虚拟机在运行过程中需要使用的镜像文件;在镜像文件被打开的同时,运行在源节点中的分布式锁管理器为每一个镜像文件创建锁资源;如果此时该源节点为打开镜像文件的第一个节点,则将该源节点作为锁资源的owner节点,并生成与owner对应的锁资源信息;该锁资源信息中包括:锁资源信息的标识以及各个节点对于锁资源的锁状态信息。虚拟化工作集群内的其它节点中所创建的锁资源包括:锁资源信息的标识、源节点的标识以及自身节点对于锁资源的锁状态信息;其他节点基于源节点的标识,通过网络向owner节点发送的加锁请求,源节点通过调用自身内核程序,向owner节点发送的加锁请求。

当虚拟机需要迁移至目的节点的时候,虚拟化管理软件启动虚拟机迁移程序,在源节点关闭虚拟机的镜像文件,并在虚拟机迁移的目的节点创建配置信息与源节点中虚拟机相同的虚拟机,并在目的节点打开虚拟机的镜像文件。此时,运行在目的节点中的分布式锁管理器为所打开的虚拟机镜像文件创建锁资源,生成第一锁资源信息;由于此时虚拟机的镜像文件对应的owner节点仍然为源节点,因此,所生成的第一锁资源信息包括:第一锁资源信息的标识、源节点的标识以及目的节点在对于锁资源的锁状态信息。

具体地,对应于同一个镜像文件,在生成与镜像文件对应的第一锁资源信息时:

首先,运行在目的节点中的分布式锁管理器在目的节点生成与镜像文件的名称对应的第一锁资源信息的标识,其中该第一锁资源信息的标识与源节点中锁资源信息中的锁资源信息的标识相同。

其次,目的节点会向其它节点广播owner查询指令;在owner查询指令中携带有第一锁资源的标识。如果接收到owner查询指令的节点并非owner节点,则该节点会向目的节点反馈指示其非owner节点的信息,或者不对该owner查询指令进行响应;如果接收到owner查询指令的节点为owner节点,则该节点会向目的节点反馈指示其为owner节点的信息,在该信息中携带有owner节点的标识。此时,由于owner节点为源节点,因此源节点会向目的节点反馈其为owner节点的信息,该信息中携带有owner节点的标识即为源节点的标识;同时,由于源节点已经存在目的节点对于锁资源的锁状态信息,则为了实现目的节点和源节点之间锁状态信息的同步,源节点还会将目的节点对于锁资源的锁状态信息发送给目的节点。

最后,目的节点中在接收到源节点根据第一锁资源信息的标识返回的owner节点的标识以及目的节点对于锁资源的锁状态信息之后,根据第一锁资源信息的标识,第一锁资源信息的标识返回的owner节点的标识以及目的节点对于锁资源的锁状态信息,创建锁资源,生成第一锁资源信息。

需要注意的是,本实施例中锁状态信息为加锁状态和解锁状态中任意一种。一般地,由于虚拟机在迁移之前,会从源节点关闭镜像文件,镜像文件对应的锁状态信息不论在关闭镜像文件之前处于加锁状态还是解锁状态,在关闭后,都会被owner节点设置为解锁状态。

s102:根据源节点的标识,向源节点发送锁资源控制权限迁移请求;锁资源控制权限迁移请求中携带有第一锁资源信息的标识;第一锁资源信息的标识用于源节点返回与第一锁资源信息的标识对应的各个节点对于锁资源的锁状态信息。

在具体实施中,当目的节点生成与虚拟机的镜像文件对应的第一锁资源信息之后,会根据源节点的标识,向源节点发送锁资源控制权限迁移请求。具体地,虚拟化工作集群在创建的时候,每个节点都会保存有其他节点的标志、目的地址以及同一个节点的标识与目的地址之间的映射关系;目的节点在生成第一锁资源信息之后,会根据第一锁资源信息中所包含的源节点的标识,获得源节点的标目的地址,并基于该目的地址,将锁资源控制权限迁移请求发送给源节点。

源节点在接收到锁资源控制权限迁移请求之后,会根据其中的所携带的第一锁资源信息的标识,定位到具体的锁资源信息,并将锁资源信息中的各个节点对于锁资源的锁状态信息返回给目的节点。

s103:将第一锁资源信息中的源节点的标识替换为目的节点的标识,以及将目的节点对于锁资源的锁状态信息替换为源节点返回的各个节点对于锁资源的锁状态信息,得到第二锁资源信息,并通知其他节点更新后的owner节点为目的节点,以便其他节点在向目的节点发起针对镜像文件的加锁请求时,基于第二锁资源信息控制其他节点对于镜像文件的访问权限。

在具体实施中,当目的节点接收到源节点根据锁资源控制权限迁移请求所返回的各个节点对于所述锁资源的锁状态信息之后,会将第一锁资源信息中的源节点标识替换为目的节点的标识,并将目的节点对于锁资源的锁状态信息替换为源节点返回的各个节点对于锁资源的锁状态信息,得到第二锁资源信息。

另外,目的节点还会通知其他节点更新后的锁资源控制着为目的节点。具体地,目的节点会生成owner节点通知指令,并将owner节点通知指令向其它节点广播,或者基于各个节点对于锁资源的锁状态信息,发送给对应的节点;在该owner通知指令中携带有目的节点的标识以及第一锁资源信息的标识,接收到owner节点通知指令的节点首先基于第一锁资源信息的标识,对于第一锁资源信息标识对应的锁资源进行定位,然后将锁资源中的源owner节点的标识,替换为目的节点的标识;当该节点再次发起加锁请求后,会基于目的节点的标识,将加锁请求发送给目的节点。

采用上述实施例,在虚拟化工作集群中将虚拟机从源节点迁移至目的节点的时候,如果虚拟机在迁移之前虚拟机镜像文件对应的锁资源owner与虚拟机在同一节点,则在虚拟机的目的节点生成与该虚拟机的镜像文件对应的第一锁资源信息,并向源节点发送锁资源控制权限迁移请求;源节点基于锁资源控制权限迁移请求将各个节点对于锁资源的锁状态信息发送给目的节点后,目的节点将第一锁资源信息中的源节点的标识替换为目的节点的标识,将目的节点对于锁资源的锁状态信息替换为源节点返回的各个节点对于锁资源的锁状态信息,得到第二锁资源信息,并通知其他节点更新后的锁资源控制权限拥有者为目的节点,从而将owner一起迁移至目的节点上;当虚拟机在目的节点上对镜像文件进行操作的时候,不需要通过网络向owner节点发送加锁请求,而通过调用节点内核程序与owner进行交互,从而能够避免虚拟机所在节点和owner节点不同所造成的通过网络传输加锁请求,从而减少虚拟机加锁的时延和计算资源的开销,避免由于此问题导致的虚拟机读写性能下降。

参见图2所示,本申请实施例二还提供另外一种镜像文件的分布式锁资源控制权限迁移方法,在生成与该虚拟机的镜像文件对应的第一锁资源信息之后,向源节点发送锁资源控制权限迁移请求之前,还包括:

s201:根据源节点的标识信息,向源节点发送虚拟机镜像文件的加锁请求;

s202:当接收到源节点返回的加锁成功信息后,生成锁资源控制权限迁移请求。

在镜像文件的分布式锁资源控制权限迁移过程中,如果owner节点在成功迁移之前接收到其它节点所发送的加锁请求,授权发送加锁请求的节点对镜像文件进行操作,会更改发送加锁请求的节点对于锁资源的锁状态信息;这有可能导致源节点在根据锁资源控制权限迁移请求向目的节点的各个节点对于锁资源的锁状态信息之后,发送加锁请求的节点对于锁资源的锁状态信息被改变,造成源节点发送给目的节点的各个节点对于锁资源的锁状态信息,和源节点中实际存储的各个节点对于锁资源的锁状态信息不一致的情况,从而造成owner在迁移至目的节点后,锁资源管理出错。

为了避免上述问题的产生,在owner被迁移至目的节点之前,目的节点首先根据源节点的标识信息,向源节点发送虚拟机镜像文件的加锁请求。源节点在接收到该虚拟机镜像文件的加锁请求后,对该加锁请求进行加锁授权处理,将锁资源对应的镜像文件的操作权限锁定在目的节点,即时在此过程中有其他的节点向源节点发送加锁请求,该请求也不会被源节点处理,从而能够保证源节点发送给目的节点的各个节点对于锁资源的状态信息,和源节点中实际存储的各个节点对于锁资源的锁状态信息是一致的。

另外,参见图2所示,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移方法中,得到所述第二锁资源信息之后,还包括:

s203:向源节点发送迁移成功信息;迁移成功信息用于源节点返回其他节点所发送的待处理加锁请求;

s204:对待处理加锁请求进行加锁授权处理。

在具体实施中,由于在owner被从源节点成功迁移至目的节点之前,其他节点要对镜像文件进行操作的时候,依然会向源节点发送加锁请求;源节点在接收到锁资源控制权限迁移请求之后,或者在接收到目的节点所发送的加锁请求后,会将之后接收到的其它节点所发送的加锁请求作为待处理加锁请求悬挂;当目的节点生成第二资源信息之后,会向源节点发送迁移成功信息;当源节点接收到迁移成功信息之后,向目的节点返回其悬挂的所有待处理加锁请求;目的节点在接收到待处理加锁请求后,对待处理加锁请求进行加锁授权处理。

基于同一发明构思,本申请实施例中还提供了与上述镜像文件的分布式锁资源控制权限迁移方法对应的另外一种镜像文件的分布式锁资源控制权限迁移方法,从执行主体为源节点的角度对本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移方法加以说明。

参见3所示,本申请实施例三提供的一种镜像文件的分布式锁资源控制权限迁移方法包括:

s301:虚拟机迁移的源节点接收虚拟机迁移的目的节点所发送的锁资源控制权限迁移请求;锁资源控制权限迁移请求中携带有第一锁资源信息的标识;目的节点为虚拟机迁移之后镜像文件的owner节点。

在具体实施中,目的节点向源节点发送控制权限迁移请求的具体过程参见上述s101,在此不再赘述。

s302:获取与第一锁资源信息的标识对应的各个节点对于锁资源的锁状态信息。

s303:将所述各个节点对于所述锁资源的锁状态信息发送给所述目的节点,用于所述目的节点生成第二锁资源信息。

在具体实施中,源节点上创建的虚拟机在打开镜像文件的时候,如果其为第一个打开镜像文件的节点,则运行在源节点上的分布式锁管理器会在源节点创建与镜像文件对应的锁资源信息,并将源节点作为锁资源的owner节点。其中,作为owner节点的锁资源信息包括:锁资源的标识、源节点的标识以及各个节点对于锁资源的锁状态信息。

当源节点接收到目的节点所发送的控制权限迁移指令后,会根据其中所携带的第一资源信息的标识,与所锁资源有中的锁资源标识进行匹配,以定位到与第一资源信息的标识对应的锁资源。

在定位待具体的锁资源后,在定位到与第一锁资源信息对应的锁资源后,能够从中获取到与第一锁资源信息对应的各个节点对于锁资源的锁状态信息,并将其发送给目的节点,以使目的节点根据各个节点对于锁资源的锁状态信息,完成对owner的迁移。

采用上述实施例,在虚拟化工作集群中将虚拟机从源节点迁移至目的节点的时候,如果虚拟机在迁移之前虚拟机镜像文件对应的锁资源owner与虚拟机在同一节点,虚拟机在目的节点打开之后,会向源节点发送锁资源控制权限迁移请求;源节点在接收到锁资源控制权限迁移请求之后,将与之对应的各个节点对于锁资源的锁状态信息发送给目的节点,以使目的节点基于各个节点对于锁资源的锁状态信息将owner迁移至与虚拟机所在节点的同一个节点,当虚拟机在目的节点上对镜像文件进行操作的时候,不需要通过网络向owner节点发送加锁请求,而通过调用目的节点内核程序与owner进行交互,从而避免当虚拟机所在节点和owner节点不同且两者之间网络不可达时所造成的分布式文件系统和虚拟机可用性下降的问题;同时也不需要通过网络传输加锁请求,从而减少虚拟机加锁的时延和计算资源的开销,避免由于此问题导致的虚拟机读写性能下降。

可选地,参见图4所示,本申请实施例四还提供另外一种镜像文件的分布式锁资源控制权限迁移方法,接收目的节点所发送的锁资源控制权限迁移请求之前,该方法还包括:

s401:接收目的节点所发送的owner查询指令;owner查询指令中携带有第一锁资源信息的标识。

在具体实施中,目的节点向源节点发送owner查询指令的过程参见上述s101,在此不再赘述。

s402:获取与第一锁资源信息的标识对应的owner节点的标识以及目的节点对于锁资源的锁状态信息;

s403:将owner节点的标识及目的节点对于锁资源的锁状态信息发送至目的节点,用于目的节点创建第一锁资源信息。

在具体实施中,当源节点接收到目的节点所发送的owner查询指令后,会基于该owner查询指令中携带的第一锁资源信息的标识,从本地所有owner节点对应的锁资源信息中进行检测是否有与第一锁资源信息的标识对应的锁资源信息;如果有,则从检测到的锁资源中获取与第一锁资源信息的标识对应的owner节点的标识以及目的节点对于锁资源的锁状态信息,然后将目owner节点的标识以及目的节点对于锁资源的锁状态信息发送给目的节点,以使目的节点创建第一锁资源信息。

另外,在本申请实施例提供的另外一种镜像文件的分布式锁资源控制权限迁移方法中,接收目的节点所发送的锁资源控制权限迁移请求之前,还包括:

接收目的节点所发送的镜像文件的加锁请求。

根据加锁请求,对虚拟机镜像文件进行加锁授权处理,如果加锁授权成功,则向目的节点返回加锁成功信息。

在具体实现的时候,源节点在接收到目的节点所发送的镜像文件的加锁请求后,会根据加锁请求,对虚拟机镜像文件进行加锁授权处理,并在加锁授权成功时,向目的节点返回加锁成功信息,将镜像文件的操作权限锁定为目的节点。

目的节点在接受到源节点返回的加锁成功信息后,还会基于加锁成功信息,将第一锁资源信息中所包括的目的节点对于锁资源的锁状态信息设置为加锁状态,然后向源节点发送源节点发送锁资源控制权限迁移请求。

可选地,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移方法中,在接收目的节点所发送的锁资源控制权限迁移请求之后,还包括:

将其他节点所发送的加锁请求作为待处理加锁请求进行悬挂;

将各个节点对于锁资源的锁状态信息发送给目的节点之后,还包括:

接收目的节点所发送的迁移成功信息;

将待处理加锁请求发送至目的节点,以使目的节点对加锁请求进行加锁授权处理。

在具体实施中,可以参见上述图2对应的实施例的记载,在此不再赘述。

基于同一发明构思,本发明实施例中还提供了与上述图1-图2所描述的镜像文件的分布式锁资源控制权限迁移方法对应的镜像文件的分布式锁资源控制权限迁移装置,由于本发明实施例中的装置解决问题的原理与本发明实施例上述镜像文件的分布式锁资源控制权限迁移方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参见图5所示,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置安装于虚拟机迁移的目的节点,该装置包括:

第一锁资源信息生成模块10,用于在虚拟机迁移的目的节点生成与该虚拟机的镜像文件对应的第一锁资源信息;第一锁资源信息包括:第一锁资源信息的标识、源节点的标识以及目的节点对于锁资源的锁状态信息;其中,源节点为虚拟机迁移之前镜像文件的owner节点;

迁移请求发送模块20,用于根据源节点的标识,向源节点发送锁资源控制权限迁移请求;锁资源控制权限迁移请求中携带有第一锁资源信息的标识;第一锁资源信息的标识用于源节点返回与第一锁资源信息的标识对应的各个节点对于锁资源的锁状态信息;

第二锁资源信息生成模块30,用于将第一锁资源信息中的源节点的标识替换为目的节点的标识,以及将目的节点对于锁资源的锁状态信息替换为源节点返回的各个节点对于锁资源的锁状态信息,得到第二锁资源信息,并通知其他节点更新后的owner节点为目的节点,以便其他节点在向目的节点发起针对镜像文件的访问请求时,基于第二锁资源信息控制其他节点对于镜像文件的访问权限。

通过该镜像文件的分布式锁资源控制权限迁移装置,能够在虚拟机进行迁移时,将与虚拟机打开的镜像文件对应的锁资源的owner节点随同虚拟机一起从源节点迁移至目的节点,虚拟机迁移后对镜像文件进行操作的时候,不需要通过网络向owner节点发送加锁请求,而通过调用节点内核程序与owner进行交互,从而能够避免虚拟机所在节点和owner节点不同所造成的通过网络传输加锁请求,从而减少虚拟机加锁的时延和计算资源的开销,避免由于此问题导致的虚拟机读写性能下降。

可选地,第一锁资源信息生成模块10,具体用于:生成与镜像文件的名称对应的第一锁资源信息的标识;

向其它节点广播owner查询指令;owner查询指令中携带有第一锁资源信息的标识;

接收源节点根据第一锁资源信息的标识返回的owner节点的标识以及目的节点对于锁资源的锁状态信息;

根据第一锁资源信息的标识,第一锁资源信息的标识返回的owner节点的标识以及目的节点对于锁资源的锁状态信息,创建第一锁资源信息;owner节点的标识为源节点的标识。

可选地,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置还包括:加锁请求发送模块,用于生成与该虚拟机的镜像文件对应的第一锁资源信息之后,向源节点发送锁资源控制权限迁移请求之前,根据源节点的标识信息,向源节点发送虚拟机镜像文件的加锁请求;

当接收到源节点返回的加锁成功信息后,生成锁资源控制权限迁移请求。

可选地,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置还包括:处理模块,用于得到第二锁资源信息之后,向源节点发送迁移成功信息;迁移成功信息用于源节点返回其他节点所发送的待处理加锁请求;

对待处理加锁请求进行加锁授权处理。

基于同一发明构思,本发明实施例中还提供了与上述图3-图4所描述的镜像文件的分布式锁资源控制权限迁移方法对应的镜像文件的分布式锁资源控制权限迁移装置,由于本发明实施例中的装置解决问题的原理与本发明实施例上述镜像文件的分布式锁资源控制权限迁移方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参见图6所示,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置安装于虚拟机迁移的源节点,该装置包括:

接收模块40,用于虚拟机迁移的源节点接收虚拟机迁移的目的节点所发送的锁资源控制权限迁移请求;锁资源控制权限迁移请求中携带有第一锁资源信息的标识;目的节点为虚拟机迁移之后镜像文件的owner节点;

获取模块50,用于获取与第一锁资源信息的标识对应的各个节点对于锁资源的锁状态信息;

发送模块60,用于将各个节点对于锁资源的锁状态信息发送给目的节点,用于目的节点生成第二锁资源信息。

通过该镜像文件的分布式锁资源控制权限迁移装置,能够在虚拟机进行迁移时,将与虚拟机打开的镜像文件对应的锁资源的owner节点随同虚拟机一起从源节点迁移至目的节点,虚拟机迁移后对镜像文件进行操作的时候,不需要通过网络向owner节点发送加锁请求,而通过调用节点内核程序与owner进行交互,从而能够避免虚拟机所在节点和owner节点不同所造成的通过网络传输加锁请求,从而减少虚拟机加锁的时延和计算资源的开销,避免由于此问题导致的虚拟机读写性能下降。

可选地,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置还包括:第一处理模块,用于接收目的节点所发送的锁资源控制权限迁移请求之前,接收目的节点所发送的owner查询指令;owner查询指令中携带有第一锁资源信息的标识;

获取与第一锁资源信息的标识对应的owner节点的标识以及目的节点对于锁资源的锁状态信息;

将owner节点的标识以及目的节点对于锁资源的锁状态信息发送至目的节点,用于目的节点创建第一锁资源信息。

可选地,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置还包括:第二处理模块,用于在接收目的节点所发送的锁资源控制权限迁移请求之前,接收目的节点所发送的镜像文件的加锁请求;

根据加锁请求,对虚拟机镜像文件进行加锁授权处理,如果加锁授权成功,则向目的节点返回加锁成功信息。

可选地,本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移装置还包括:第三处理模块,用于接收目的节点所发送的锁资源控制权限迁移请求之后,将其他节点所发送的加锁请求作为待处理加锁请求进行悬挂;

将各个节点对于锁资源的锁状态信息发送给目的节点之后,还包括:

接收目的节点所发送的迁移成功信息;

将待处理加锁请求发送至目的节点,以使目的节点对加锁请求进行加锁授权处理。

如图7所示,为本申请另一实施例所提供的镜像文件的分布式锁资源控制权限迁移装置示意图,该镜像文件的分布式锁资源控制权限迁移装置100包括:第一处理器110、第一存储器120和第一总线130,第一存储器120存储有执行指令,当装置运行时,第一处理器110与第一存储器120之间通过第一总线130通信,第一处理器110执行第一存储器120中存储的如下执行指令:

虚拟机迁移的目的节点生成与该虚拟机的镜像文件对应的第一锁资源信息;第一锁资源信息包括:第一锁资源信息的标识、源节点的标识以及目的节点对于锁资源的锁状态信息;

根据源节点的标识,向源节点发送锁资源控制权限迁移请求;锁资源控制权限迁移请求中携带有第一锁资源信息的标识;第一锁资源信息的标识用于源节点返回与第一锁资源信息的标识对应的各个节点对于锁资源的锁状态信息;

将第一锁资源信息中的源节点的标识替换为目的节点的标识,以及将目的节点对于锁资源的锁状态信息替换为源节点返回的各个节点对于锁资源的锁状态信息,得到第二锁资源信息,并通知其他节点更新后的锁资源控制权限拥有者为目的节点,以便其他节点在向目的节点发起针对镜像文件的加锁请求时,基于第二锁资源信息控制其他节点对于镜像文件的访问权限。

可选地,第一处理器110具体用于:生成与镜像文件的名称对应的第一锁资源信息的标识;

向其它节点广播锁资源控制权限拥有者owner查询指令;owner查询指令中携带有第一锁资源信息的标识;

接收源节点根据第一锁资源信息的标识返回的owner节点的标识以及目的节点对于锁资源的锁状态信息;

根据第一锁资源信息的标识,第一锁资源信息的标识返回的owner节点的标识以及目的节点对于锁资源的锁状态信息,创建第一锁资源信息;owner节点的标识为源节点的标识。

可选地,第一处理器110还用于生成与该虚拟机的镜像文件对应的第一锁资源信息之后,向源节点发送锁资源控制权限迁移请求之前根据源节点的标识信息,向源节点发送虚拟机镜像文件的加锁请求;

当接收到源节点返回的加锁成功信息后,生成锁资源控制权限迁移请求。

可选地,第一处理器110还用于得到第二锁资源信息之后,向源节点发送迁移成功信息;迁移成功信息用于源节点返回其他节点所发送的待处理加锁请求;

对待处理加锁请求进行加锁授权处理。

如图8所示,为本申请另一实施例所提供的镜像文件的分布式锁资源控制权限迁移装置示意图,该镜像文件的分布式锁资源控制权限迁移装置200包括:第二处理器210、第二存储器220和第二总线230,第二存储器220存储有执行指令,当装置运行时,第二处理器210与第二存储器220之间通过第二总线230通信,第二处理器210执行第二存储器220中存储的如下执行指令:虚拟机迁移的源节点接收目的节点所发送的锁资源控制权限迁移请求;锁资源控制权限迁移请求中携带有第一锁资源信息的标识;

获取与第一锁资源信息的标识对应的各个节点对于锁资源的锁状态信息;

将各个节点对于锁资源的锁状态信息发送给目的节点,用于目的节点生成第二锁资源信息。

可选地,第二处理器210还用于:接收目的节点所发送的锁资源控制权限迁移请求之前,接收目的节点所发送的owner查询指令;owner查询指令中携带有第一锁资源信息的标识;

获取与第一锁资源信息的标识对应的owner节点的标识以及目的节点对于锁资源的锁状态信息;

将owner节点的标识以及目的节点对于锁资源的锁状态信息发送至目的节点,用于目的节点创建第一锁资源信息。

可选地,第二处理器210还用于:接收目的节点所发送的锁资源控制权限迁移请求之前,接收目的节点所发送的镜像文件的加锁请求;

根据加锁请求,对虚拟机镜像文件进行加锁授权处理,如果加锁授权成功,则向目的节点返回加锁成功信息。

可选地,第二处理器210还用于:接收目的节点所发送的锁资源控制权限迁移请求之后,将其他节点所发送的加锁请求作为待处理加锁请求进行悬挂;

将各个节点对于锁资源的锁状态信息发送给目的节点之后,接收目的节点所发送的迁移成功信息;

将待处理加锁请求发送至目的节点,以使目的节点对加锁请求进行加锁授权处理。

本申请实施例所提供的镜像文件的分布式锁资源控制权限迁移方法以及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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