一种在XenServer中实现分布式存储的方法和装置与流程

文档序号:17772589发布日期:2019-05-28 19:36阅读:1008来源:国知局
一种在XenServer中实现分布式存储的方法和装置与流程

本发明涉及存储技术领域,特别涉及一种在xenserver中实现分布式存储的方法和装置。



背景技术:

xenserver是思杰公司(citrix)推出的一种服务器虚拟化平台,软件包中包含所有需要创建和管理部署的虚拟x86计算机上运行的xen开放源码,准虚拟化的虚拟机管理程序与近乎完美的性能。xenserver对windows和linux进行了特殊优化,不需要底层操作系统,可直接运行与服务器硬件上,是一个具有高效率和高扩展行的系统。

现有实现中,xenserver没有分布式存储,这对citrixxenserver在超融合hci上是最致命的,不利于创建基于xenserver的“超融合”一体机。



技术实现要素:

有鉴于此,本发明的目的在于提供一种在xenserver中实现分布式存储的方法和装置,能够使xenserver支持分布式存储。

为了达到上述目的,本发明提供了如下技术方案:

一种在xenserver中实现分布式存储的方法,该方法包括:

接收用户触发的存储库建立消息,将在分布式存储集群中建立的存储池用作xenserver的存储库;

接收用户触发的物理块设备pbd创建消息,确定pbd创建消息携带的所有xenserver主机信息,创建用于连接每一xenserver主机和所述存储库的pbd,并挂载创建的所有pbd;

接收用户触发的虚拟磁盘映像vdi创建消息,在xenserver中创建vdi并存储到所述存储库;

接收用户触发的虚拟磁盘映射消息,建立分布式存储集群中各块设备与所述存储库中各vdi的映射关系。

一种在xenserver中实现分布式存储的插件,该插件包括:接收单元和处理单元;

所述接收单元,用于接收用户触发的存储库建立消息;用于接收用户触发的物理块设备pbd创建消息;用于接收用户触发的虚拟磁盘映像vdi创建消息;用于接收用户触发的虚拟磁盘映射消息;

所述处理单元,用于接收单元接收到用户触发的存储库建立消息时,将在分布式存储集群中建立的存储池用作xenserver的存储库;用于接收单元接收到用户触发的pbd创建消息时,确定pbd创建消息携带的所有xenserver主机信息,创建用于连接每一xenserver主机和所述存储库的pbd,并挂载创建的所有pbd;用于接收单元接收到用户触发的vdi创建消息时,在xenserver中创建vdi并存储到所述存储库;用于接收单元接收到用户触发的虚拟磁盘映射消息时,建立分布式存储集群中各块设备与所述存储库中各vdi的映射关系。

由上面的技术方案可知,本发明中,在分布式存储集群中建立存储池,将该存储池用作xenserver的一个存储库;将该存储库与xenserver中的主机通过创建和挂载pbd实现对接,然后再在该存储库中创建多个vdi,建立该存储库中的各vdi与分布式存储集群中各块设备之间的映射关系,从而将分布式存储集群引入到xenserver中,实现了xenserver对分布式存储的支持。

附图说明

图1是本发明实施例在xenserver中实现分布式存储的方法流程图;

图2是本发明实施例在xenserver中实现分布式存储的插件的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并据实施例,对本发明的技术方案进行详细说明。

参见图1,图1是本发明实施例在xenserver中实现分布式存储的方法流程图,如图1所示,该方法包括以下步骤:

步骤101、接收用户触发的存储库建立消息,将在分布式存储集群中建立的存储池用作xenserver的存储库。

本发明实施例中,分布式存储集群为基于ceph的分布式存储集群,可以预先在该分布式存储集群中创建一个用于存储vdi(虚拟磁盘映像)的存储池,当将应用本发明实现的插件安装到xenserver之后,用户可以在xenserver中触发存储库建立消息,后台接收到该存储库建立消息后,可以将该存储池用作xenserver的存储库。

在实际应用中,可以预先配置一个用于创建存储库的应用程序接口,该应用程序接口的输入参数为存储池信息(如存储池的uuid)、存储库的属性信息(例如存储库支持的块设备类型),实现的主要功能是:根据xenserver提供的sr-introduce命令创建一个以该输入参数指定存储池为基础的存储库,具有该输入参数指定的存储库属性。

以下是执行xenserver提供的存储库建立命令(sr-introduce)的示例:

#xesr-introducename-label="cephrbdstorage"type=rbduuid=cda789de-c8d3-4d0d-8510-7deaa8c53aa8shared=truecontent-type=user

上述命令中,cda789de-c8d3-4d0d-8510-7deaa8c53aa8是存储池的uuid。上述命令执行后,创建得到一个基于该存储池的存储库,并且得到存储库的uuid(假设存储库uuid为4ceb0f8a-1539-40a4-bee2-450a025b04e1)。

在上述命令中,将存储库支持的块设备类型(存储库属性之一)设置为rbd(即type=rbd),表明该存储库中存储的vdi对应的块设备类型为rbd。

因此,在本步骤中,用户可以在xenserver提供存储库建立消息触发界面中指定存储池和存储库属性,然后触发存储库建立消息(携带所述指定的存储池信息和存储库属性信息),后台接收到用户触发的存储库建立消息后,可以将该存储库建立消息携带的信息作为输入参数,调用该用于创建存储库的应用程序接口,从而将用户指定的存储池用作xenserver中的存储库。

步骤102、接收用户触发的物理块设备pbd创建消息,确定pbd创建消息携带的所有xenserver主机信息,创建用于连接每一xenserver主机和所述存储库的pbd,并挂载创建的所有pbd。

本发明实施例中,为了使建立的存储仓库与xenserver实现对接,通过创建物理块设备(pbd)将xenserver中的部分或全部主机与该存储库连接起来。

在实际应用中,可以预先配置一个用于创建pbd的应用程序接口,该应用程序接口的输入参数为xenserver主机信息(如各主机的uuid)、存储库信息(例如存储库的uuid)、和pbd属性信息,实现的主要功能是:根据xenserver提供的pbd-create命令创建一个用于连接xenserver主机和存储库的pbd,该pbd具有该输入参数指定的pbd属性。

需要说明的是,该应用程序接口的输入参数中,xenserver主机信息可以有一个或多个,由该应用程序接口的具体实现决定,如果只能有一个xenserver主机信息,则当需要建立该存储库与多个xenserver主机的连接时,可以多次执行本步骤。

以下是执行xenserver提供的pbd创建命令(pbd-create)的示例:

#xepbd-createsr-uuid=4ceb0f8a-1539-40a4-bee2-450a025b04e1host-uuid=83f2c775-57fc-457b-9f98-2b9b0a7dbcb5

上述命令中,sr-uuid和host-uuid分别为存储库的uuid和主机的uuid。执行上述命令后即可创建一个用于连接该主机和该存储库的pbd(假设该pbd的uuid为aec2c6fc-e1fb-0a27-2437-9862cffe213e,存储库的uuid即为上述步骤101的示例中创建的存储库的uuid)。

本步骤中,用户可以在xenserver提供pbd创建消息触发界面中指定xenserver主机、存储库、及pbd属性信息,然后触发pbd创建消息(携带上述指定信息),后台接收到用户触发的pbd创建消息后,可以将该pbd创建消息携带的信息作为输入参数,调用该用于创建pbd的应用程序接口,从而实现建立用于连接用户指定的xenserver主机和存储库的pbd,且该pbd具有用户指定的pbd属性。

发明实施例中,pbd属性信息主要包括以下几种:

1)存储库安装模式(rbd-mode),主要有以下几种取值:kernel(此种模式更快但功能错误)、fuse(此种模式速度比较慢,为实现对此种模式的支持,需要在xenserver中安装rbd-fuse应用程序)、nbd(此种模式实现比较稳定为实现对此种模式的支持,需要在xenserver中安装rbd-nbd应用程序)。本发明中,优选的存储库安装模式为nbd模式,可以将此种模式设置为默认值。

上述安装rbd-fuse应用程序和rbd-nbd应用程序的实现代码如下:

2)驱动程序类型(driver-type),主要有以下几种取值:vhd、dmp、rbd。本发明中,优选驱动程序类型为vhd,可以将其设置为默认值。

3)权限用户(cephx-id),表明使用此pbd的用户,默认取值为管理员(admin)。

4)使用rbd元数据(use-rbd-meta):用于指示vdi参数的存放位置,取值为true时,表明将vdi参数存储在rbd元数据中,取值为false时,表明需要使用单独的图像存储vdi参数。

5)存储库前缀(rbd-pool-suffix),用于指示存储库的名字前缀,例如“rbd_xenstorage”。

6)vdi的容量更新(vdi-update-existing),用于指示当存储库中的vdi的存储数据减小时,是否需要对vdi的容量进行更新,取值为true表明需要更新,取值为false表明不需要更新。

在实际应用中,在创建pbd时,如果pbd的权限用户是admin,则需要判断分布式存储系统中的admin和xenserver中的admin是否使用相同的key密钥文件,如果是,则可以继续创建pbd,并根据调用的相应应用程序接口的输入参数设置pbd属性,否则,不可继续创建pbd,此时可以终止pbd创建,同时输出pbd创建失败信息以提示用户。如果pbd的权限用户不是admin,则可以直接创建pbd并根据调用的相应应用程序接口的输入参数设置pbd属性。

在本发明实施例中,创建了pbd之后,还需要挂载pbd才能够真正实现xenserver与存储库的对接。因此,本发明中还可以在用于创建pbd的应用程序接口中根据xenserver提供的pbd挂载命令(pbd-plug)实现pbd挂载,也可以单独配置用于挂载pbd的应用程序接口,在该用于挂载pbd的应用程序接口中根据xenserver提供的pbd挂载命令实现pbd挂载。

单独配置用于挂载pbd的应用程序接口的情况下,pbd挂载也可以由用户触发,过程与上述的触发存储库建立消息和pbd创建消息的过程相同,即用户在xenserver提供pbd挂载消息触发界面中指定pbd,然后触发pbd挂载消息(携带上述指定pbd信息),后台接收到用户触发的pbd挂载消息后,可以将该pbd挂载消息携带的pbd信息作为输入参数,调用该用于挂载pbd的应用程序接口,从而实现用户指定的pbd的挂载。

以下是执行xenserver提供的pbd挂载命令(pbd-create)的示例:

#xepbd-pluguuid=aec2c6fc-e1fb-0a27-2437-9862cffe213e

上述命令中,uuid的取值(aec2c6fc-e1fb-0a27-2437-9862cffe213e)为需要挂载的pbd的uuid。

步骤103、接收用户触发的vdi创建消息,在xenserver中创建vdi并存储到所述存储库。

本步骤中,创建vdi并存储到存储库中。可以通过多次执行本步骤创建多个vdi。

本发明实施例中,可以配置用于创建vdi的应用程序接口。用于创建vdi的应用程序接口的输入参数包括vdi属性信息(包括:vdi所属存储库、vdi镜像名称、vdi类型和vdi镜像磁盘大小),实现的主要功能是:根据xenserver提供的vdi创建命令(vdi-create)创建一个vdi。

在实际应用中,用户可以在xenserver提供的vdi创建消息触发界面中指定vdi属性信息,然后触发vdi创建消息(携带用户指定的vdi属性信息),后台接收到用户触发的vdi创建消息后,可以将该vdi创建消息携带的vdi属性信息作为输入参数,调用该用于创建vdi的应用程序接口创建vdi。

以下是执行xenserver提供的vdi创建命令(vdi-create)的示例:

#xevdi-createsr-uuid=<sr-uuid>name-label=<镜像名字>type=<system/user>virtual-size=<size_of_virtual_disk文件大小>。

步骤104、接收用户触发的虚拟磁盘映射消息,建立所述存储库中各vdi与分布式存储集群中各块设备之间的映射关系。

本步骤中,将分布式存储集群中的块设备映射到存储库中的vdi,建立起块设备与vdi之间一一对应的映射关系,从而使得分布式存储集群中的块设备在xenserver中可通过映射的vdi被访问。

本发明实施例中,可以预先配置用于建立vdi与分布式存储集群中的块设备的映射关系的应用程序接口,该应用程序接口的输入参数包括存储库信息(存储库的uuid)和vdi信息(vdi的uuid),实现的主要功能是:根据rbd-nbd应用程序提供的映射命令(map)建立输入参数中的存储库中该vdi域分布式存储集群中的一个块设备之间的映射关系。

在实际应用中,用户可以在xenserver提供的虚拟磁盘映射消息触发界面中指定存储库和vdi,然后触发虚拟磁盘映射消息(携带用户指定的vdi信息和块设备信息),后台接收到用户触发的虚拟磁盘映射消息后,调用该用于建立vdi与分布式存储集群中的块设备的映射关系的应用程序接口,建立该虚拟磁盘映射消息携带的vdi到分布式存储集群中的一个块设备之间的映射关系。

以下是执行rbd-nbd应用程序提供的映射命令(map)的示例:

rbd-nbdmaprbd_xenstorage-cda789de/rbd-17efad10

上述命令中,“/”之前的rbd_xenstorage-cda789de是存储库的uuid,“/”之后的rbd-17efad10是vdi的uuid。

本步骤104可以多次执行,实现多个块设备到多个vdi的一一对应的映射关系。

可以看出,上述步骤101、102实现了存储库创建并将存储库与xenserver对接,然而此时的存储库中并未存储任何vdi,本步骤103、104中,通过创建vdi并建立vdi与分布式存储集群中的块设备之间的映射关系,从而使得分布式存储集群中的块设备作为vdi加入到xenserver中,因此实现了xenserver对分布式存储的支持。

图1所示本发明实施例中,由于分布式存储集群为基于ceph的分布式存储集群,所述分布式集群中的块设备类型为rbd,为了能够在xenserver中识别rbd设备,需要预先在xenserver中配置rbd块设备类型,具体地,可以在xenserver的xapi.conf文件中增加对rbd块设备类型的支持,为实现该目的,可以在xapi.conf文件中增加如下内容:

另外,上述步骤101中,将在分布式存储集群中建立的存储池用作xenserver的存储库时,还需要进一步基于所述存储库建立消息(消息中携带的存储库支持的设备类型的取值为rbd),设置该存储库支持的块设备类型为rbd。

另外,还需要对xenserver中的tap-ctl文件进行修改,增加用于磁盘格式转换的tap磁盘函数,修改内容如下:

基于以上修改内容,当在xenserver中捕获到rbd设备类型的磁盘文件时,可以通过调用所述tap磁盘函数实现rbd块设备支持的磁盘格式(如aio格式)到xenserver支持的磁盘格式(如vhd格式)的转换或与之相反的磁盘格式转换。这里,当建立起存储库中的vdi与分布式存储集群中的块设备之间的映射关系后,即可捕获/检测到rbd设备类型的磁盘文件。

在实际应用中,上述步骤104中建立了vdi和分布式存储集群中的块设备之间的映射关系后,还可以取消该映射关系。

可以预先配置用于取消vdi与分布式存储集群中的块设备的映射关系的应用程序接口,该应用程序接口的输入参数包括存储库信息(存储库的uuid)和vdi信息(vdi的uuid),实现的主要功能是:根据rbd-nbd应用程序提供的取消映射命令(unmap)取消输入参数中的存储库中该vdi的映射关系(即该vdi和其对应的块设备之间的映射关系)。

用户可以在xenserver提供的取消虚拟磁盘映射消息触发界面中指定存储库和vdi,然后触发取消虚拟磁盘映射消息(携带用户指定的信息),后台接收到用户触发的虚拟磁盘映射消息后,调用该用于取消vdi与分布式存储集群中的块设备的映射关系的应用程序接口,取消该虚拟磁盘映射消息携带的存储库中的该vdi的映射关系。

以下是执行rbd-nbd应用程序提供的映射命令(map)的示例:

rbd-nbdunmaprbd_xenstorage-cda789de/rbd-17efad10

上述命令中,“/”之前的rbd_xenstorage-cda789de是存储库的uuid,“/”之后的rbd-17efad10是vdi的uuid。

图1所示本发明实施例中,还支持生成vdi快照、vdi快照数据销毁、vdi删除和vdi分离等操作,以下分别介绍:

生成vdi快照:

本发明实施例中,可以配置用于生成vdi快照的应用程序接口。用于生成vdi快照的应用程序接口的输入参数包括vdi信息(vdi的uuid),实现的主要功能是:根据xenserver提供的快照生成命令(vdi-snapshot)为vdi生成快照,并将快照数据存入该vdi对应的快照虚拟磁盘(vdi对应的快照虚拟磁盘可以预先设定)。

在实际应用中,用户可以在xenserver提供的快照生成消息触发界面中指定vdi,然后触发快照生成消息(携带用户指定的vdi信息),后台接收到用户触发的快照生成消息后,可以将该快照生成消息携带的vdi信息作为输入参数,调用该用于建立vdi快照的应用程序接口,从而为该vdi生成对应的快照。

以下是执行xenserver提供的快照生成命令(vdi-snapshot)的示例:

#xevdi-snapshotuuid=<uuid_of_vdi>。

vdi快照数据销毁:

本发明实施例中,可以配置用于销毁快照虚拟磁盘的应用程序接口。用于销毁快照虚拟磁盘的应用程序接口的输入参数包括vdi信息(vdi的uuid),实现的主要功能是:根据xenserver提供的快照数据销毁命令(vdi-data-destroy)销毁vdi对应的快照虚拟磁盘。

在实际应用中,用户可以在xenserver提供的快照数据销毁消息触发界面中指定vdi,然后触发快照数据销毁消息(携带用户指定的vdi信息),后台接收到用户触发的快照数据销毁消息后,可以将该快照数据销毁消息携带的vdi信息作为输入参数,调用该用于销毁快照虚拟磁盘的应用程序接口,从而将该快照数据销毁消息指定的vdi对应的快照虚拟磁盘销毁。

以下是执行xenserver提供的快照数据销毁命令(vdi-data-destroy)的示例:

#xevdi-data-destroyuuid=<uuid_of_vdi>

vdi删除:

本发明实施例中,可以配置用于删除vdi的应用程序接口。用于删除vdi的应用程序接口的输入参数包括vdi信息(vdi的uuid),实现的主要功能是:根据xenserver提供的vdi删除命令(vdi-destroy)删除指定的vdi。

在实际应用中,用户可以在xenserver提供的vdi删除消息触发界面中指定vdi,然后触发vdi删除消息(携带用户指定的vdi信息),后台接收到用户触发的vdi删除消息后,可以将该vdi删除消息携带的vdi信息作为输入参数,调用该用于删除vdi的应用程序接口,从而将该vdi删除消息指定的vdi删除。

以下是执行xenserver提供的vdi删除命令(vdi-destroy)的示例:

#xevdi-data-destroyuuid=<uuid_of_vdi>

vdi分离:

本发明实施例中,可以配置用于分离vdi的应用程序接口。用于分离vdi的应用程序接口的输入参数包括vdi信息(vdi的uuid),实现的主要功能是:根据xenserver提供的vdi分离命令(vdi-forget)分离指定的vdi。

在实际应用中,用户可以在xenserver提供的vdi分离消息触发界面中指定vdi,然后触发vdi分离消息(携带用户指定的vdi信息),后台接收到用户触发的vdi分离消息后,可以将该vdi分离消息携带的vdi信息作为输入参数,调用该用于分离vdi的应用程序接口,从而将该vdi分离消息指定的vdi分离。

以下是执行xenserver提供的vdi分离命令(vdi-forget)的示例:

#xevdi-forgetuuid=<uuid_of_vdi>

图1所示所示本发明实施例中,还提供快照导入/导出时的磁盘格式转换。

本发明实施例中,可以配置用于导出快照的应用程序接口。用于导出快照的应用程序接口的输入参数包括虚拟机信息(虚拟机的uuid)、目标文件信息、和预设磁盘格式,实现的主要功能是:根据xenserver提供的快照导出命令(vm-export)导出指定虚拟机的快照,并在导出时执行磁盘格式转换。

在实际应用中,用户可以在xenserver提供的快照导出消息触发界面中指定vm、目标文件和预设磁盘格式,然后触发快照导出消息(携带用户指定的信息),后台接收到用户触发的快照导出消息后,可以将该快照导出消息携带的信息作为输入参数,调用该用于导出快照的应用程序接口,从而将指定vm的快照导出到指定目标文件中,并在导出时将导出数据执行快照支持的磁盘格式到预设磁盘格式的转换。

以下是执行xenserver提供的快照命令(vm-export)的示例:

#xevm-exportvm=0d166725-92a8-f3a7-2817filename=export.xva

本发明实施例中,可以配置用于导入快照的应用程序接口。用于导入快照的应用程序接口的输入参数包括虚拟机信息(虚拟机的uuid)、目标文件信息、和预设磁盘格式,实现的主要功能是:根据xenserver提供的快照导入命令(vm-import)从指定目标文件中导入指定虚拟机的快照,并在导入时执行磁盘格式转换。

在实际应用中,用户可以在xenserver提供的快照导入消息触发界面中指定vm、目标文件和预设磁盘格式,然后触发快照导入消息(携带用户指定的信息),后台接收到用户触发的快照导入消息后,可以将该快照导入消息携带的信息作为输入参数,调用该用于导入快照的应用程序接口,从而从指定的目标文件中导入指定vm的快照,并在导入时执行预设磁盘格式到快照支持的磁盘格式的转换。

以下是执行xenserver提供的快照命令(vm-import)的示例:

#xevm-importvm=0d166725-92a8-f3a7-2817filename=export.xva

在实际实现中,上对于快照导入/导出以及导入/导出的磁盘格式转换,可以通过修改xenserver中的sparse_dd、vhd-tool文件实现,其中,

对sparse_dd的修改如下:

对vhd-tool文件的修改内容如下:

需要说明的是,由于在xenserver中建立vm时,需要为vm指定磁盘(即块设备),而本发明中又建立了块设备与vdi的映射关系,因此,这里对指定vm的快照的导入/导出,实际上是对vm的磁盘(即其对应的vdi)中数据的导入/导出。

图1所示本发明实施例中,还支持vdi克隆、vdi扩容、vdi快照合并等操作,以下分别介绍:

vdi克隆:

本发明实施例中,可以配置用于克隆vdi的应用程序接口。用于克隆vdi的应用程序接口的输入参数包括vdi信息(vdi的uuid),实现的主要功能是:根据xenserver提供的vdi克隆命令(vdi-clone)克隆指定的vdi。

在实际应用中,用户可以在xenserver提供的vdi克隆消息触发界面中指定vdi,然后触发vdi克隆消息(携带用户指定的vdi信息),后台接收到用户触发的vdi克隆消息后,可以将该vdi克隆消息携带的vdi信息作为输入参数,调用该用于克隆vdi的应用程序接口,从而对该vdi克隆消息指定的vdi进行克隆。

以下是执行xenserver提供的vdi克隆命令(vdi-clone)的示例:

#xevdi-cloneuuid=<uuid_of_the_vdi>

vdi扩容:

本发明实施例中,可以配置用于vdi扩容的应用程序接口。用于vdi扩容的应用程序接口的输入参数包括vdi信息(vdi的uuid)和扩容信息,实现的主要功能是:根据xenserver提供的vdi扩容命令(vdi-resize)对指定的vdi进行扩容。

在实际应用中,用户可以在xenserver提供的vdi扩容消息触发界面中指定vdi和扩容信息(扩容后大小),然后触发vdi扩容消息(携带用户指定的vdi信息和扩容信息),后台接收到用户触发的vdi扩容消息后,可以将该vdi扩容消息携带的vdi信息和扩容信息作为输入参数,调用该用于vdi扩容的应用程序接口,从而根据该vdi扩容消息指定的扩容信息对指定的vdi进行扩容。

以下是执行xenserver提供的vdi扩容命令(vdi-resize)的示例:

#xevdi-resizeuuid=<vdi_uuid>disk-size=<new_size_for_disk>

vdi快照合并:

本发明实施例中,可以配置用于合并vdi快照的应用程序接口。用于合并vdi快照的应用程序接口的输入参数包括快照信息(快照的uuid)和目标文件信息,实现的主要功能是:根据xenserver提供的快照合并命令(snapshot-export-to-template)将指定的快照合并到目标文件中。

在实际应用中,用户可以在xenserver提供的快照合并消息触发界面中指定快照和目标文件,然后触发快照合并消息(携带用户指定的快照信息和目标文件信息),后台接收到用户触发的快照合并消息后,可以将该快照合并消息携带的快照信息和目标文件信息作为输入参数,调用该用于合并vdi快照的应用程序接口,从而将该快照合并消息指定的快照合并到目标文件中。

以下是执行xenserver提供的快照合并命令(snapshot-export-to-template)的示例:

#xesnapshot-export-to-templatesnapshot-uuid=30e4b27d-2e95-8a87-c340filename=/win07bak.xva

以上对本发明在xenserver中实现分布式存储的方法进行了详细说明,本发明还提供了一种在xenserver中实现分布式存储的插件,以下结合图2进行详细说明。

参见图2,图2是本发明实施例在xenserver中实现分布式存储的插件的结构示意图,如图2所示,该插件包括:接收单元201和处理单元202;其中,

接收单元201,用于接收用户触发的存储库建立消息;用于接收用户触发的物理块设备pbd创建消息;用于接收用户触发的虚拟磁盘映像vdi创建消息;用于接收用户触发的虚拟磁盘映射消息;

处理单元202,用于接收单元201接收到用户触发的存储库建立消息时,将在分布式存储集群中建立的存储池用作xenserver的存储库;用于接收单元201接收到用户触发的pbd创建消息时,确定pbd创建消息携带的所有xenserver主机信息,创建用于连接每一xenserver主机和所述存储库的pbd,并挂载创建的所有pbd;用于接收单元201接收到用户触发的vdi创建消息时,在xenserver中创建vdi并存储到所述存储库;用于接收单元201接收到用户触发的虚拟磁盘映射消息时,建立分布式存储集群中各块设备与所述存储库中各vdi的映射关系。

图2所示插件还包括配置单元203;

所述分布式存储集群为基于ceph的分布式存储集群,所述分布式集群中的块设备类型为rbd;

所述配置单元203,用于预先在xenserver中配置rbd块设备类型;

所述处理单元202,将在分布式存储集群中建立的存储池用作xenserver的存储库时,进一步基于所述存储库建立消息,设置该存储库支持的块设备类型为rbd;

所述处理单元202,建立分布式存储集群中各块设备与所述存储库中各vdi的映射关系后,进一步包括:捕获到rbd类型的块设备时,将该块设备的磁盘格式由所述分布式存储集群支持的磁盘格式转换为xenserver支持的磁盘格式。

图2所示插件中,

所述pbd创建消息携带pbd属性信息,所述pbd属性信息包括权限用户信息和存储库安装模式;

所述处理单元202,创建用于连接每一xenserver主机和所述存储库的pbd,并挂载创建的所有pbd时,进一步确定所述pbd创建消息携带pbd属性信息中的权限用户信息,如果该权限用户是管理员,则判断分布式存储集群的管理员与该管理员是否使用相同密钥文件,若是,则根据所述pbd属性信息对创建的pbd进行属性配置,若否,则终止pbd创建,并输出pbd创建失败信息;如果该权限用户不是管理员,则根据所述pbd属性信息对创建的pbd进行属性配置。

图2所示插件中,

所述接收单元201,进一步用于接收用户触发的虚拟磁盘映射取消消息;

所述处理单元202,进一步用于在接收单元201接收到用户触发的映射取消消息时,根据该映射取消消息携带的rbd快设备和vdi信息,基于xenserver提供的映射取消命令,取消该rbd块设备与该vdi之间的映射关系。

图2所示插件中,

所述接收单元201,进一步用于接收用户触发的快照生成消息、接收用户触发的快照数据销毁消息、接收用户触发的vdi删除消息、以及接收用户触发的vdi分离消息;

所述处理单元202,进一步用于在接收单元201接收到用户触发的快照生成消息时,基于xenserver提供的快照生成命令,建立该快照生成消息指定的vdi对应的快照,并将快照数据存入该vdi对应的快照虚拟磁盘;在接收单元201接收到用户触发的快照数据销毁消息时,基于xenserver提供的快照数据销毁命令,将该快照数据销毁消息指定的vdi对应的快照虚拟磁盘销毁;在接收单元201接收到用户触发的vdi删除消息时,基于xenserver提供的vdi删除命令,将该vdi删除消息指定的vdi删除;在接收单元201接收到用户触发的vdi分离消息时,基于xenserver提供的vdi分离命令,将该vdi分离消息指定的vdi分离。

图2所示插件中,

所述接收单元201,进一步用于接收用户触发的快照导出消息;用于接收用户触发的快照导入消息;

所述处理单元202,进一步用于在接收单元201接收到用户触发的快照导出消息时,基于xenserver提供的快照导出命令,将该快照导出消息指定的虚拟机vm的快照导出到该快照导出消息指定的目标文件,并在导出时执行快照支持的磁盘格式到预设磁盘格式的转换;用于在接收单元201接收到用户触发的快照导入消息时,基于xenserver提供的快照导入命令,将该快照导入消息指定的虚拟机vm的快照从该快照导入消息指定的目标文件导入,并在导入时执行预设磁盘格式到快照支持的磁盘格式的转换。

图2所示插件中,

所述接收单元201,进一步用于:接收用户触发的vdi克隆消息、接收用户触发的vdi扩容消息、以及接收用户触发的vdi扩容消息;

所述处理单元202,进一步用于在接收单元201接收到用户触发的vdi克隆消息时,基于xenserver提供的vdi克隆命令对该vdi克隆消息指定的vdi进行克隆;在接收单元201接收到用户触发的vdi扩容消息时,确定该vdi扩容消息携带的vdi信息和扩容信息,基于xenserver提供的vdi扩容命令,按照所述扩容信息对该vdi进行扩容;在接收单元201接收到用户触发的快照合并消息时,确定该快照合并消息携带的快照信息和目标文件信息,基于xenserver提供的快照合并命令,将该快照合并到目标文件中。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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