一种虚拟机的光盘热插拔方法及系统与流程

文档序号:12612152阅读:365来源:国知局
一种虚拟机的光盘热插拔方法及系统与流程

本发明涉及热插拔技术,更具体地,涉及一种虚拟机的光盘热插拔方法及系统。



背景技术:

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

镜像文件是将资料和程序结合而成的文件,它将来源资料经过格式转换后在硬盘上存成与目的光盘内容完全一样的文件,然后将这个文件以一比一对应的方式刻入光盘中。镜像文件是一种光盘文件信息的完整拷贝文件,其包括光盘所有信息,需要专门的虚拟光驱软件载入此种镜像文件进行读取。

光盘镜像文件也叫光盘映像文件,形式上只有一个文件,存储格式和光盘文件相同,所以可以真实反映光盘的内容,它可由刻录软件或者镜像文件制作工具创建。镜像文件的格式有很多种,其中一种是国际标准ISO9660,符合此标准的光盘镜像文件一般以iso为扩展名,iso是最为通用的光盘镜像格式,能够被大多数刻录软件及虚拟光驱软件所支持。

目前虚拟机对光盘的操作,一般是通过直接访问ISO光盘文件进行挂载。但这种方式需要拷贝文件或者虚拟机系统共享存储环境,操作和管理上的效率都很低。为了提高操作效率,目前采用的方法主要是对虚拟化管理层进行优化,具体包括:

一是,针对xen虚拟机,采用xenstore的配置和linux的loop设备支持,通过挂载的方式实现。此方式具体是利用Xenserver(虚拟化服务器)中的xenstore提供一种虚拟机共享存储的支持,通过xen管理命令对xenstore的ISO光盘文件进行loop设备挂载,但通常虚拟化管理平台需要支持多种类型的hypervisor,这种方案仅适用于xen,且会带来兼容性的问题,对于windows系统虚拟机还需要额外安装虚拟光驱来支持。

二是,把硬件光驱分配给虚拟机使用,实体光盘媒介的插拔映射到虚拟机操作。把硬件光驱直接分配给虚拟机使用,如果多个虚拟机需要同时使用光盘的插拔支持,这种方式仍受限于硬件资源分配限制。

可见,上述两种方案虽然解决了光盘热插拔操作的效率问题,但是对特定的hypervisor依赖过多,或者需要对硬件光驱的独占来支持,在管理的灵活性和硬件资源的利用上要承受很大的代价。



技术实现要素:

本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种高效率、灵活的虚拟机的光盘热插拔方法。

本发明还提供一种高效率、灵活的虚拟机的光盘热插拔系统。

为解决上述技术问题,本发明的技术方案如下:

一种虚拟机的光盘热插拔方法,包括:

调用libvirt api,libvirt 根据配置文件创建带虚拟光驱的虚拟机;

根据创建的虚拟机信息更新数据库记录;

光盘资源共享存储区域中设有共享目录,光盘文件上传至共享目录中;

使用virsh工具的媒体文件切换接口,执行插入或者弹出光盘命令,完成对共享目录中的光盘热插拔操作。

libvirt是开源的虚拟机管理库,它支持各种hypervisor,包括 Xen 、 KVM、QEMU 和用于其他操作系统的一些虚拟产品,对外提供统一的api接口。本发明通过调用libvirt的api进行虚拟机的管理,hypervisor的类型通过配置xml文件时指定但hypervisor的类型不受限制,不同的hypervisor都统一采用libvirt接口进行管理,屏蔽hypervisor的差异。而且光盘文件上传至光盘资源共享存储区域的共享目录中,使得光盘文件可以跨物理节点共享,不同的物理机可以访问同一个存储区域的光盘文件,从而降低了管理成本。此外,本发明的方法借助虚拟机的虚拟光驱完成光盘的热插拔,不需要硬件光驱的支持,实现高效率、灵活的光盘热插拔功能。

上述方案中,调用libvirt api,libvirt 根据配置文件创建带虚拟光驱的虚拟机的具体步骤包括:

配置xml文件,指定hypervisor类型;

配置xml文件,为虚拟机分配虚拟光驱;

选定一个物理机节点,远程连接到该物理机节点上的libvirt;

调用libvirt api创建虚拟机,libvirt根据xml文件的配置确定hypervisor类型以及虚拟光驱,创建带虚拟光驱的虚拟机。

上述方案中,光盘资源共享存储区域通过NFS、glusterfs或SAN方式搭建。

上述方案中,对共享目录中的光盘完成热插拔中的热插入操作的具体步骤包括:

查询数据库,获取虚拟机所在的物理机节点;

远程连接到物理机节点上的libvirt;

调用libvirt的change-media接口,以插入方式指定光盘文件分配给虚拟机,完成光盘插入操作。

上述方案中,对共享目录中的光盘完成热插拔中的热拔除操作的具体步骤包括:

查询数据库,获取虚拟机所在的物理机节点;

远程连接到物理机节点上的libvirt;

调用libvirt的change-media接口,以弹出方式弹出光盘文件,完成光盘拔除操作。

一种虚拟机的光盘热插拔系统,包括:

虚拟机创建模块,用于调用libvirt api,libvirt 根据配置文件创建带虚拟光驱的虚拟机;

数据库更新模块,用于根据创建的虚拟机信息更新数据库记录;

光盘文件处理模块,用于将光盘文件上传至光盘资源共享存储区域的共享目录;

光盘热插拔模块,用于使用virsh工具的媒体文件切换接口,执行插入或者弹出光盘命令,完成对共享目录中的光盘热插拔操作。

libvirt是开源的虚拟机管理库,它支持各种hypervisor,包括 Xen 、 KVM、QEMU 和用于其他操作系统的一些虚拟产品,对外提供统一的api接口。本发明通过调用libvirt的api进行虚拟机的管理,hypervisor的类型通过虚拟机创建模块配置xml文件时指定但hypervisor的类型不受限制,不同的hypervisor都统一采用libvirt接口进行管理,屏蔽hypervisor的差异。而且光盘文件处理模块将光盘文件上传至光盘资源共享存储区域的共享目录中,使得光盘文件可以跨物理节点共享,不同的物理机可以访问同一个存储区域的光盘文件,从而降低了管理成本。此外,本发明的系统借助虚拟机的虚拟光驱完成光盘的热插拔,不需要硬件光驱的支持,实现高效率、灵活的光盘热插拔功能。

上述方案中,虚拟机创建模块具体包括:

Xml文件配置模块,用于配置xml文件,指定hypervisor类型和为虚拟机分配虚拟光驱;

远程调用模块,用于选定一个物理机节点,远程连接到该物理机节点上的libvirt;

创建模块,用于调用libvirt api创建虚拟机,libvirt根据xml文件的配置确定hypervisor类型以及虚拟光驱,创建带虚拟光驱的虚拟机。

上述方案中,光盘资源共享存储区域通过NFS、glusterfs或SAN方式搭建。

上述方案中,光盘热插拔模块具体包括:

查询模块,用于查询数据库,获取虚拟机所在的物理机节点;

远程连接模块,用于远程连接到物理机节点上的libvirt;

热拔插模块,用于调用libvirt的change-media接口,以插入方式指定光盘文件分配给虚拟机,完成光盘插入操作;以及,调用libvirt的change-media接口,以弹出方式弹出光盘文件,完成光盘拔除操作。

本发明对不同的hypervisor统一采用libvirt接口进行管理,屏蔽了虚拟化层hypervisor的差异,光盘文件可以跨物理机共享,不需要硬件光驱的支持,实现高效率、灵活的光盘热插拔功能。而且本发明跨节点共享存储,使得可以在不同的物理机上访问同一个存储区域的光盘文件,从而降低管理成本。

附图说明

图1为本发明一种虚拟机的光盘热插拔方法具体实施例的流程图。

图2为本发明一种虚拟机的光盘热插拔方法具体实施例的逻辑架构图。

图3为本发明一种虚拟机的光盘热插拔系统具体实施例的架构图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

在本发明的描述中,需要理解的是,此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含所指示的技术特征的数量。由此,限定的“第一”、“第二”的特征可以明示或隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以是通过中间媒介间接连接,可以说两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明的具体含义。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1

如图1所示,为本发明一种虚拟机的光盘热插拔方法具体实施例的流程图。参见图1,本具体实施例一种虚拟机的光盘热插拔方法的具体步骤包括:

S110.调用libvirt api,libvirt 根据配置文件创建带虚拟光驱的虚拟机。此步骤中使用Libvirt的xml配置文件定义虚拟机资源,具体步骤包括:

S111. 配置xml文件,指定hypervisor类型;

S112.配置xml文件,为虚拟机分配虚拟光驱;

S113.选定一个物理机节点,远程连接到该物理机节点上的libvirt;

S114.调用libvirt api创建虚拟机,libvirt根据xml文件的配置确定hypervisor类型以及虚拟光驱,创建带虚拟光驱的虚拟机。

具体实现时,配置文件中包含以下描述用于分配一个虚拟光驱:

<disk type='block' device='cdrom'>

<driver name='qemu' type='raw'/>

<target dev='hdr' bus='ide'/>

<readonly/>

</disk>

其中driver name项根据不同的hypervisor来指定,本例中采用QEMU作为hypervisor,如需切换到其他hypervisor,修改xml文件的配置即可完成。

执行virsh create guest.xml 即可创建一个带虚拟光驱的虚拟机。

所创建的虚拟机实际上是运行在安装了libvirt的物理机节点上的,libvirt只对运行在本物理机上的虚拟机进行管理。

S210.根据创建的虚拟机信息更新数据库记录;数据库是用mysql创建在系统部署的物理机上的,由系统远程连接访问。通过此步骤,虚拟机的信息会记录在数据库中,方便后续步骤获取虚拟机信息。

S310.光盘资源共享存储区域中设有共享目录,光盘文件上传至共享目录中;光盘资源共享存储区域在环境搭建时指定,可以是NFS、glusterfs或SAN方式。在本例中采用NFS,光盘文件上传和删除操作可以通过调用服务接口完成。在光盘资源共享存储区域中创建一个共享目录/source/media/,将光盘文件上传到此目录中,hypervisor以只读方式访问光盘文件,因此多个虚拟机同时访问光盘文件时可以互不影响,此方式保证了同一个光盘文件可以同时被多个虚拟机使用,基于此,可以实现跨节点共享存储,在不同的虚拟机上可以访问同一个存储区域的光盘文件,降低了管理成本。

S410.使用virsh工具的媒体文件切换接口,执行插入或者弹出光盘命令,完成对共享目录中的光盘热插拔操作。具体地,光盘热拔插中的热插入和热拔除操作具体为:

(1)热插入操作

查询数据库,获取虚拟机所在的物理机节点;

远程连接到物理机节点上的libvirt;

调用libvirt的change-media接口,以插入方式指定光盘文件分配给虚拟机,完成光盘插入操作;

(2)热拔除操作:

查询数据库,获取虚拟机所在的物理机节点;

远程连接到物理机节点上的libvirt;

调用libvirt的change-media接口,以弹出方式弹出光盘文件,完成光盘拔除操作。

步骤S410使用virsh工具的媒体文件切换接口,执行一句命令,即可实现对共享目录中的光盘进行热插拔操作,具体命令为:

插入光盘:执行virsh guest1 hdr change-media --insert /source/media/test.iso

弹出光盘:执行virsh guest1 hdr change-media --eject。

如图2所示,为本具体实施例一种虚拟机的光盘热插拔方法的逻辑结构示意图。参见图2,该逻辑分层包括接口层、管理层和虚拟机,接口层提供服务接口,管理层设置了物理机,光盘资源共享存储区域在环境搭建时指定类型,如使用NFS,光盘文件上传和删除操作可以通过调用接口层的服务接口完成,在光盘资源共享存储区域中创建了一个共享目录/source/media/来存储光盘文件。虚拟机是运行在安装了libvirt的物理机节点上的,libvirt只对运行在本物理机上的虚拟机进行管理,虚拟机的信息会记录在数据库中。

本具体实施例的方法对不同的hypervisor统一采用libvirt接口进行管理,屏蔽了虚拟化层hypervisor的差异,光盘文件可以跨物理机共享,不需要硬件光驱的支持,实现高效率、灵活的光盘热插拔功能。而且本发明跨节点共享存储,使得可以在不同的物理机上访问同一个存储区域的光盘文件,从而降低管理成本。

实施例2

在实施例1的基础上,本发明还提供了一种虚拟机的光盘热插拔系统。参见图3,本具体实施例一种虚拟机的光盘热插拔系统具体包括虚拟机创建模块510、数据库更新模块610、光盘文件处理模块710和光盘热插拔模块810;具体地:

虚拟机创建模块510,用于调用libvirt api,libvirt 根据配置文件创建带虚拟光驱的虚拟机。具体的,虚拟机创建模块据包括:

Xml文件配置模块,用于配置xml文件,指定hypervisor类型和为虚拟机分配虚拟光驱;具体实现时,配置文件中包含以下描述用于分配一个虚拟光驱:

<disk type='block' device='cdrom'>

<driver name='qemu' type='raw'/>

<target dev='hdr' bus='ide'/>

<readonly/>

</disk>

其中driver name项根据不同的hypervisor来指定,本例中采用QEMU作为hypervisor,如需切换到其他hypervisor,修改xml文件的配置即可完成。

远程调用模块,用于选定一个物理机节点,远程连接到该物理机节点上的libvirt;

创建模块,用于调用libvirt api创建虚拟机,libvirt根据xml文件的配置确定hypervisor类型以及虚拟光驱,创建带虚拟光驱的虚拟机。具体实现时,执行virsh create guest.xml创建一个带虚拟光驱的虚拟机。

数据库更新模块610,用于根据创建的虚拟机信息更新数据库记录;虚拟机的信息会记录在数据库中,方便查询虚拟机信息。

光盘文件处理模块710,用于将光盘文件上传至光盘资源共享存储区域的共享目录。光盘资源共享存储区域在环境搭建时指定,可以是NFS、glusterfs或SAN方式。在本例中采用NFS,光盘文件处理模块710可以通过调用服务接口完成光盘文件上传和删除操作。在光盘资源共享存储区域中创建有一个共享目录/source/media/,将光盘文件上传到此目录中,hypervisor以只读方式访问光盘文件,因此多个虚拟机同时访问光盘文件时可以互不影响,此方式保证了同一个光盘文件可以同时被多个虚拟机使用,基于此,可以实现跨节点共享存储,在不同的虚拟机上可以访问同一个存储区域的光盘文件,降低了管理成本。

光盘热插拔模块810,用于使用virsh工具的媒体文件切换接口,执行插入或者弹出光盘命令,完成对共享目录中的光盘热插拔操作。其具体包括:

查询模块,用于查询数据库,获取虚拟机所在的物理机节点;

远程连接模块,用于远程连接到物理机节点上的libvirt;

热拔插模块,用于调用libvirt的change-media接口,以插入方式指定光盘文件分配给虚拟机,完成光盘插入操作;以及,调用libvirt的change-media接口,以弹出方式弹出光盘文件,完成光盘拔除操作。

本发明的系统对不同的hypervisor接口进行统一管理,屏蔽hypervisor的差异,光盘文件可以跨物理机节点共享,使得可以在不同的物理机上访问同一个存储区域的光盘文件,从而降低了管理成本。与此同时,该方法不需要硬件光驱的支持,实现高效率、灵活的光盘热插拔功能。

相同或相似的标号对应相同或相似的部件;

附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

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