本发明涉及一种光盘的动态插入方法,更具体地说是涉及一种在openstack中,不需要重启虚拟机就能实现光盘的动态插入方法。
背景技术:
目前在openstack中,给虚拟机插入光盘,需要重启虚拟机才能发现光盘,使用光盘,在实际工作中,操作不方便,工作效率低。
技术实现要素:
本发明要解决的问题是提供一种给虚拟机插入光盘时,不需要重启虚拟机就能发现光盘,使用光盘的方法,该方法简单实用,操作方便,提高了工作效率。
为解决上述技术问题,本发明的技术方案为:
一种基于openstack的虚拟机免重启的光盘动态插入方法,包括如下步骤:
1、预先在虚拟机挂载一个空光盘,
2.修改openstack代码使用virshattach-disk的linux命令来动态更新光盘,
3.为计算服务增加执行virsh命令的权限。
本发明的有益效果是在openstack中,给虚拟机插入光盘时,不需要重启虚拟机就能发现光盘,使用光盘,操作方便,提高了工作效率。
具体实施方式
为了使本发明解决的技术问题、采用的技术方案、取得的技术效果易于理解,下面,对本发明的具体实施方式做进一步说明。
计算服务的架构比较复杂,包含很多组件,这些组件以子服务(后台守护进程)的形式运行,可以分为以下几类:
1.应用程序接口,
nova-api接收和相应客户的应用程序接口调用。
2.计算核心,
nova-scheduler虚机调度服务,负责决定在哪个计算节点上运行虚机;
nova-compute管理虚机的核心服务,通过调用hypervisor应用程序接口实现虚机生命周期管理;
hypervisor计算节点上跑的虚拟化管理程序,虚机管理最底层的程序;
nova-conductor经常需要更新数据库,比如更新虚机的状态。
3.控制台接口,
a)nova-console用户可以通过多种方式访问虚机的控制台;
b)nova-consoleauth负责对访问虚机控制台请求提供token认证;
c)nova-cert提供x509证书支持。
4.数据库,
计算服务会有一些数据需要存放到数据库中,一般使用mysql。
5.消息队列,
计算服务包含众多的子服务,这些子服务之间需要相互协调和通信;为解耦各个子服务,计算服务通过消息队列作为子服务的信息中转站。
本发明为了实现基于openstack的虚拟机免重启光盘动态插入,为了让用户体验更好,操作更方便,特详细描述其具体操作步骤如下:
1、预先在虚拟机挂载一个空光盘,
挂载一个空光盘之前,使用命令virshedit查看虚拟机配置文件,挂载一个空光盘之后,虚拟机配置多了一个cdrom设备。
2、修改openstack代码使用virshattach-disk的linux命令来动态更新光盘,具体命令如下:
1)novacliet/v2/shell.py增加shell命令行的操作函数;
2)novacliet/v2/servers.py客户端增加一个post的请求函数,函数包含两种action:insert(插入)和eject(弹出);
3)nova/api/openstack/compute/servers.py相应的,服务也要有针对客户端请求处理的函数;
4)nova/compute/api.py接着,计算服务的应用程序接口会把请求转交给compute的api;
5)nova/compute/rpcapi.py计算服务compute应用程序接口的请求都会通过rpcapi来发送rpc请求至相应的计算节点;
6)nova/compute/manager.py计算节点接受到相应的rpc请求后就会调用相应的manager中实现函数,而manager已经预先设置了driver(默认是libvirt);
7)nova/virt/libvirt/driver.py整个请求的最后环节就到driver了,driver是负责真正的实现。插入光盘之后,配置里面增加了挂载的光盘文件。
注意:这里有一个地方需要注意:我们实现动态更新光盘的原理是预先在虚拟机里挂好一个空白的光盘,然后使用virshattach-disk的linux命令来动态更新。
3、为计算服务增加执行virsh命令的权限,
nova默认是没有执行virsh命令的权限的,所以我们需要在每个计算节点的/usr/share/nova/rootwrap/目录下面增加相应的权限,而在项目部署的阶段,就需要将这个文件释放到对应的路径下面,路径如下:
#vi/usr/share/nova/rootwrap/virsh.filters;
[filters];
virsh:commandfilter,virsh,root。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。