资源描述:
《Havana中VM的reboot分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Havana中VM的reboot分析2013.10.27本文主要是对比OpenStack的E版本和H版本中实例reboot的代码实现过程,从中可以看出OpenStack在各个版本迭代过程中,变得越来越稳定!同时也希望能给还在被Essex的各种bug折磨的童鞋们一点参考。做了注释的地方就是H比E处理得好的方法。Havana中VM的rebootdefreboot(self,context,instance,network_info,reboot_type='SOFT',block_device_info=None,bad_volumes_callback=None):"""Rebootavirt
2、ualmachine,givenaninstancereference."""ifreboot_type=='SOFT':#NOTE(vish):Thiswillattempttodoagracefulshutdown/restart.###此处处理_create_domain()运行时产生的异常#当有异常产生时,设置soft_reboot_success为False,表示softreboot失败,用hardreboot实例,这一点在Essex中是没有的。try:soft_reboot_success=self._soft_reboot(instance)exceptlibvirt.libv
3、irtErrorase:LOG.debug(_("Instancesoftrebootfailed:%s"),e)soft_reboot_success=False#softreboot失败后用hardrebootifsoft_reboot_success:LOG.info(_("Instancesoftrebootedsuccessfully."),instance=instance)returnelse:LOG.warn(_("Failedtosoftrebootinstance.""Tryinghardreboot."),instance=instance)returnself._ha
4、rd_reboot(context,instance,network_info,block_device_info)def_soft_reboot(self,instance):"""Attempttoshutdownandrestarttheinstancegracefully.Weuseshutdownandcreateheresowecanreturniftheguestrespondedandactuallyrebooted.Notethatthismethodonlysucceedsiftheguestrespondstoacpi.Thereforewereturnsuccesso
5、rfailuresowecanfallbacktoahardrebootifnecessary.:returns:Trueiftherebootsucceeded"""dom=self._lookup_by_name(instance["name"])(state,_max_mem,_mem,_cpus,_t)=dom.info()state=LIBVIRT_POWER_STATE[state]old_domid=dom.ID()#NOTE(vish):Thischeckallowsustorebootaninstancethat#isalreadyshutdown.ifstate==pow
6、er_state.RUNNING:dom.shutdown()#shutdown正常关闭虚拟机#NOTE(vish):Thisactuallycouldtakeslightylongerthanthe#FLAGdefinesdependingonhowlongtheget_info#calltakestoreturn.self._prepare_pci_devices_for_use(pci_manager.get_instance_pci_devs(instance))forxinxrange(CONF.libvirt_wait_soft_reboot_seconds):dom=self.
7、_lookup_by_name(instance["name"])(state,_max_mem,_mem,_cpus,_t)=dom.info()state=LIBVIRT_POWER_STATE[state]new_domid=dom.ID()#NOTE(ivoks):BycheckingdomainIDs,wemakesureweare#notrecreatingdomainthat'salreadyr