一种检测虚拟机盘符的方法技术

技术编号:13972226 阅读:64 留言:0更新日期:2016-11-10 22:16
本发明专利技术涉及云计算技术领域,特别是一种检测虚拟机盘符的方法。所述的方法涉及宿主机和虚拟机两个模块,其中,在虚拟机上安装并启动qemu代理服务;并设置虚拟机自动激活并分配盘符给新增存储设备;在宿主机上:格式化待挂载的块设备;本地挂载块设备并往里面写入特征文件;将所述块设备挂载给虚拟机;调用命令检测挂载的块设备在虚拟机中对应盘符。采用本发明专利技术提供的方法可以实现直接在宿主机中获取块设备对应的虚拟机盘符,以便读取磁盘里面的内容进行后续如应用自动部署等操作。

【技术实现步骤摘要】

本专利技术涉及云计算
,特别是一种检测虚拟机盘符的方法
技术介绍
用户在使用虚拟机的过程中,需要扩展虚拟机的存储;一般都是通过将宿主机上面的磁盘文件或者逻辑卷等挂载给虚拟机来实现。通常给虚拟机挂载之后用户就可以登录虚拟机进行后续的分配盘符、格式化等操作。这种使用方式可以满足大部分的需求,但是存在如下的不足:1、宿主机给虚拟机挂载磁盘文件或者逻辑卷之后,不能立刻知道其在虚拟机里面对应的是什么盘符。2、即使宿主机在挂载的时候通过配置文件指定磁盘文件和逻辑卷在虚拟机里面的盘符,也可能会因为环境因素的影响不能正确对应上,这样就会导致磁盘盘符的不确定。3、当用户通过挂盘的形式传递软件包从而在虚拟机里面进行应用部署时,必须要在不需要登录虚拟机的情况下就能够确定获取指定磁盘文件或者逻辑卷在虚拟机里面的盘符。Qemu Guest AgentQemu Guest Agent,简称qga,是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protocol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换。
技术实现思路
本专利技术解决的技术问题在于提供一种简单的检测虚拟机盘符的方法,以便当用户在跟虚拟机挂载磁盘文件或者逻辑卷等跟虚拟机增加磁盘的时候,能够快速的在宿主机上面就知道其在虚拟机对应的磁盘盘符,方便后续从宿主机上直接操作磁盘上面的文件进行自动化相关功能实现。本专利技术解决上述技术问题的技术方案是,所述的方法涉及宿主机和虚拟机两个模块,其中,在虚拟机上安装并启动qemu代理服务;并设置虚拟机自动激活并分配盘符给新增存储设备;在宿主机上:格式化待挂载的块设备;本地挂载块设备并往里面写入特征文件;将所述块设备挂载给虚拟机;调用命令检测挂载的块设备在虚拟机中对应盘符。所述的虚拟机是指云平台上所有的Linux类型虚拟机和Windows类型虚拟机;所述的qemu代理是指Qemu Guest Agent,是一个运行在虚拟机内部的普通应用程序,其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络;所述的块设备可以是宿主机上面一个指定格式的磁盘文件,或是一个逻辑卷,也可以是一个分布式存储的块设备,如ceph rbd卷。所述的格式化是指向块设备里面注入文件系统;所述的文件系统需要被windows和linux所识别,例如NTFS、FAT等。所述的特征文件是一个普通文件,其存在目的是为了方便后面调用命令通过查找该文件来判断设备对应的盘符;特征文件的格式和内容由用户自定义。所述的命令是指virsh qemu-agent-command相关命令,该命令会与虚拟机里面的qemu guest agent服务程序进行通信。所述的配置虚拟机自动分配盘符在linux虚拟机中无需额外配置,在windows虚拟机中执行mountvol命令即可。本专利技术方案的有益效果如下:1、提供一种方法实现在宿主机直接获取挂载给虚拟机的块设备对应的磁盘盘符。2、本专利技术方法具有通用性,能够同时满足windows虚拟机和Linux虚拟机。3、本专利技术可以为虚拟机的自动化配置、自动化应用部署等提供技术支持。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图。具体实施方式请参见图1,为本专利技术实施例提供的一种检测虚拟机盘符的方法的流程示意图。虚拟机配置方面,我们可以通过修改虚拟机的镜像进行,主要有下载安装qemu guest agent代理程序,并将qemu-guest-agent服务配置为开机启动;然后启动cmd.exe执行mountvol/e,保证虚拟机里面能够自动给新发现的硬件分配盘符。宿主机里面我们以挂载ceph rbd卷作为块设备挂载该虚拟机为例进行描述,其他形式的块设备存储类似。首先我们需要在云平台的物理节点上搭建一个ceph集群,通常情况下由于云平台的存储资源需要,ceph集群都处于正常运行状态。利用如下命令创建一个ceph rbd卷并映射到本地:rbd create volumes/software_base-size 100000rbd map volumes/software_base如上我们在ceph的volumes池中创建了一个100GB的卷software_base,并利用map命令将其映射到本地。映射过程会返回一个映射的物理设备路径,如/dev/rbd12,并在/dev/rbd/volumes/目录下生成一个软链接文件software_base。然后对该物理设备进行格式化,格式化后的文件系统要保证被linux和windows虚拟机所识别。这里我们采用了最常用的NTFS文件格式,格式化命令如下:mkfs.ntfs-f/dev/rbd12特别注意的是这个格式化的命令只需要执行一次,后面如果再次执行则会损坏里面已有的虚拟机文件。将格式化后的rbd卷以读写形式挂载到服务节点并向其写入特征文件,挂载实现如下:mkdir/software_base_rbdmount-t ntfs-3g/dev/rbd12/software_base_rbdtouch/software_base_rbd/look_for_disk_in_linux_vm.shtouch/software_base_rbd/look_for_disk_in_windows_vm.batumount/software_base_rbd如上我们想块设备写入了特征文件look_for_disk_in_linux_vm.sh和look_for_disk_in_windows_vm.bat分别用于对windows虚拟机和linux虚拟机的检测。利用如下xml文件将块设备挂载给虚拟机:挂载命令:virsh attach-device i-xxxxxxxx rbd-file.xml通过上述命令我们将宿主机上面的块设备挂载给了虚拟机,并且前面对虚拟机的配置保证了虚拟机自动给新增加的块设备分配了盘符。下面我们将在宿主机上面通过轮询探测性的去执行virsh qemu-agent-command命令去检测块设备对应的磁盘盘符。例如Windows虚拟机我们执行如下命令:virsh qemu-agent-command i-xxxxxxxx′{″execute″:″guest-exec″,″arguments″:{″path″:″E:\\\\look_for_disk_in_vm.bat″本文档来自技高网
...

【技术保护点】
一种检测虚拟机盘符的方法,其特征在于,所述的方法涉及宿主机和虚拟机两个模块,其中,在虚拟机上安装并启动qemu代理服务;并设置虚拟机自动激活并分配盘符给新增存储设备;在宿主机上:格式化待挂载的块设备;本地挂载块设备并往里面写入特征文件;将所述块设备挂载给虚拟机;调用命令检测挂载的块设备在虚拟机中对应盘符。

【技术特征摘要】
1.一种检测虚拟机盘符的方法,其特征在于,所述的方法涉及宿主机和虚拟机两个模块,其中,在虚拟机上安装并启动qemu代理服务;并设置虚拟机自动激活并分配盘符给新增存储设备;在宿主机上:格式化待挂载的块设备;本地挂载块设备并往里面写入特征文件;将所述块设备挂载给虚拟机;调用命令检测挂载的块设备在虚拟机中对应盘符。2.根据权利要求1所述的方法,其特征在于:所述的虚拟机是指云平台上所有的Linux类型虚拟机和Windows类型虚拟机;所述的qemu代理是指Qemu Guest Agent,是一个运行在虚拟机内部的普通应用程序,其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络;所述的块设备可以是宿主机上面一个指定格式的磁盘文件,或是一个逻辑卷,也可以是一个分布式存储的块设备,如ceph rbd卷。3.根据权利要求1所述的方法,其特征在于,所述的格式化是指向块设备里面注入文件系统;所述的文件系统需要被windows和linux所...

【专利技术属性】
技术研发人员:熊梦杨松季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1