基于虚拟机的设备热替换方法及装置的制造方法_3

文档序号:9524046阅读:来源:国知局
,可以仅是针对已故障设备,也可以是对正常的设备。
[0058]在一个例子中,如图4所示,假设,物理磁盘410出现故障(传统机械硬盘中的磁头故障导致物理磁盘410不能正常访问);由于在VMM的逻辑设备402,即为通过设备驱动连接的物理磁盘410,故逻辑设备402也故障;进一步虚拟磁盘401故障;虚拟磁盘401故障最终VM用于驱动虚拟磁盘401的设备驱动故障;进而导致VM中需要访问该设备的应用程序无法正常工作。
[0059]图6为本发明实施例提供的替换操作流程图。如图6所示,若需要在不关闭VM的情况下,对逻辑设备402进行热替换,使得VM能够对虚拟磁盘401进行访问,那么可以执行如下步骤:
[0060]S501,用户态在CLI中触发设备替换操作,用户输入如下参数:〈VM:1d,虚拟磁盘:Id,操作类型-replace (替换)>。
[0061]S502,CLI直接将设备替换请求转发给HAL (Hard Adapter Layer,硬件模拟层)。
[0062]S503,HAL建立模拟逻辑设备403,该设备具有标识:proxy_dev_fd。
[0063]S504,模拟逻辑设备403的标识proxy_dev_fd继承与逻辑设备402关联的虚拟磁盘401的控制信息与状态:盘扇区数量、盘扇区大小、设备ID、盘类型。
[0064]S505,HAL断开逻辑设备402的标识与虚拟磁盘401的标识之间的映射关系。
[0065]S506,HAL建立模拟逻辑设备403的标识与虚拟磁盘401的标识的映射关系。
[0066]S507、返回执行结果。
[0067]通过以上操作,让模拟逻辑设备403承接来自虚拟磁盘401的控制操作命令,且当对逻辑设备402进行热插拔时,并不影响VM的工作。
[0068]图7为本发明实施例提供的拔出操作流程图。如图7所示,当需要对虚拟磁盘401拔出时,还可以进行如下步骤操作。
[0069]S701,用户通过CLI触发热拔出操作,用户输入如下参数:〈VM:1d,虚拟磁盘401:Id,操作类型:hot-unplug(拔出)>。
[0070]S702,CLI将热拔出请求转发给HAL。
[0071]S703,HAL在此将请求提交给Hl(Event Handler,事件处理模块)。
[0072]S704,H1根据VM Id,找到对应的VM,然后将请求〈虚拟磁盘401:1d,操作类型:hot-unplug>通过共享页面方式发送给VM中的HP(hp driver,热插拔驱动)。
[0073]S705,HP根据虚拟磁盘401的Id,找到其对应的设备驱动,然后将请求〈虚拟磁盘401,操作类型:hot-unplug>转发给设备驱动。
[0074]S706,VM的设备驱动处理热拔出操作请求:1)解除虚拟磁盘401与VM中看到的设备的映射关系;2)释放和回收已分配给虚拟磁盘401的资源。
[0075]S707,VM的设备驱动向VMM请求关闭虚拟磁盘401电源。
[0076]S708,VMM中的HAL解除虚拟磁盘401的标识与模拟逻辑设备403的标识的映射关系Ο
[0077]S709,HAL关闭模拟逻辑设备403,并回收相关资源后。
[0078]S710,HAL向CLI返回执行结果。
[0079]总之,通过本发明实施例,在VMM中引入代理设备对象,当需要进行热插拔操作时,通过代理设备对象与虚拟磁盘的映射,替换需要进行热插拔的真实设备与虚拟磁盘的映射,用代理设备对象响应VM对真实设备的操作请求,所以,即使真实设备出现故障,那么对该故障设备进行热插拔,不影响VM的正常工作,从而使虚拟机的热插拔技术。
[0080]图8为本发明另一个实施例提供的一种基于虚拟机的设备热替换方法的流程图。如图6所示,在另一个实施例中,在前述实施例中执行完步骤S350后,可以不删除虚拟磁盘的标识与模拟逻辑设备的标识之间的映射关系,以及分配给虚拟磁盘的资源,在前述实施例的基础上,本实施例还需执行如下步骤:
[0081]S860,接收热插入命令。
[0082]需要说明的是,逻辑设备由于被修复等原因需要重新插入该被修复的逻辑设备的标识已经发生变化,或者插入新的逻辑设备替换原被拔出的逻辑设备时,VMM可以通过CLI或GUI接收一个热插入请求,该请求中携带有虚拟磁盘的标识,以及需要新插入逻辑设备的标识。
[0083]S870,删除虚拟磁盘的标识与模拟逻辑设备的标识之间的映射关系。
[0084]由于执行完步骤S350后,在VM中的通过设备驱动依然能够看到虚拟磁盘,且在VMM中与模拟逻辑设备之间的映射关系是依然存在的,且模拟逻辑设备代替前述待替换的逻辑设备。所以,可以通过热插入请求中携带的虚拟磁盘的标识,以及新插入逻辑设备的标识,确定对应的虚拟设备以及逻辑设备;并用新插入逻辑设备替换模拟逻辑设备。首先需要删除虚拟磁盘的标识与模拟逻辑设备的标识之间的映射关系。
[0085]S880,建立虚拟磁盘的标识与逻辑设备的标识之间的映射关系。
[0086]需要说明的是,在此过程中,模拟逻辑设备是一个过渡的设备,为修复已故障的逻辑设备或者替换新的逻辑设备提供了,时间以及技术上支持。并且这个过程对于VM来说是相对透明的,也就是说,并不影响VM的正常工作。
[0087]在另一个例子中,图9为已修复逻辑设备与虚拟磁盘的映射关系示意图。在前述例子的基础上,替换逻辑设备后,VMM中还保存有虚拟磁盘与模拟逻辑设备之间的映射关系,以及分配给虚拟磁盘的资源,在不关闭VM、VMM的情况下,图10为本发明实施例提供的插入已修复逻辑设备的操作流程图。如图10所示,将已修复的逻辑设备插入的过程需要执行如下步骤:
[0088]S901、用户通过CLI触发热插入操作,用户输入如下参数:〈VM:1d,虚拟磁盘:Id,逻辑设备:盘符,操作类型:hot-plUg(热插入)>。
[0089]S902、CLI将请求转发给HAL。
[0090]S903、HAL删除模拟逻辑设备与虚拟磁盘之间的映射关系。
[0091]S904、HAL建立已修复的逻辑设备与虚拟磁盘之间的映射关系。
[0092]S905、HAL回收分配给模拟逻辑设备的相关资源,删除模拟逻辑设备。
[0093]S906、HAL返回执行结果。
[0094]通过上述步骤,实现了对已故障逻辑设备的热插拔,且对于VM是透明的。
[0095]总之,本发明实施例通过在VMM中模拟逻辑设备与虚拟磁盘的映射以及逻辑设备与虚拟磁盘的映射之间的切换,实现了逻辑设备的热插拔操作相对于VM是透明的,从而,当逻辑设备出现故障时,可以不用关闭VM,且不影响VM的正常操作的情况下,对已故障的设备进行拔出、维修、插入,从而使得对于基于虚拟机的热插拔技术更完善。
[0096]综上,本发明实施例提供的方法,在VMM中引入模拟逻辑设备,当需要进行热插拔操作时,通过模拟逻辑设备与虚拟磁盘的映射,替换需要进行热插拔的逻辑设备与虚拟磁盘的映射,用模拟逻辑设备响应VM对逻辑设备的操作命令,所以,即使逻辑设备出现故障,那么对该故障设备进行热插拔(热替换),不影响VM的正常工作,从而使虚拟机的热插拔技术更实用。
[0097]本发明实施例在具体实施过程中,还可以实现逻辑设备的热插拔(热替换)操作相对于VM是透明的,从而,当逻辑设备出现故障时,可以不用关闭VM,且不影响VM的正常操作的情况下,对已故障的设备进行拔出、维修、插入;即使逻辑设备出现故障,那么也可以在VM中,将虚拟设备热插拔,并将VM、VMM分配给该设备的资源进行释放,从而使得虚拟机的热插拔技术更完善,能够应对更多的需要。
[0098]图2为本发明一个实施例提供的基于虚拟机的设备热替换装置的示意图。其中该装置主要用于实现前述基于虚拟机的热替换方法,如图2所示,该装置可以包括虚拟机监视
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1