openstack:nova中“从镜像起动”创建虚拟机的流程
openstack:nova中“从镜像启动”创建虚拟机的流程
openstack版本为K版本。
从镜像启动虚拟机之:创建镜像+创建虚拟机并开机的流程
nova.api.openstack.compute.servers.Controller.create ->nova.compute.api.API.create ->nova.compute.api.API._create_instance ->nova.comductor.ComputeTaskAPI.build_instances ->nova.conductor. rpcapi.ComputeTaskAPI.build_instances ->nova.conductor. manager.ComputeTaskAPI.build_instances ->nova.compute.rpcapi.ComputeAPI.build_and_run_instance ->nova.compute.manager.ComputeAPI.build_and_run_instance ->nova.compute.manager.ComputeAPI._locked_do_build_and_run_instance ->nova.compute.manager.ComputeAPI._do_build_and_run_instance ->nova.compute.manager.ComputeAPI._build_and_run_instance ->nova.virt.libvirt.driver.LibvirtDriver.spawn ->Nova.virt.libvirt.driver._create_image //创建系统盘 ->Nova.virt.libvirt.driver._try_fetch_image_cache ->Nova.virt.libvirt.imagebackend.Image.cache ->Nova.virt.libvirt.imagebackend.Qcow2.create_image ->Nova.virt.libvirt.imagebackend.Qcow2.create_image:prepare_template即fetch_image ->Nova.virt.libvirt.utils.fetch_image ->Nova.virt.images.fetch_to_raw ->Nova.virt.images.fetch #下载系统镜像到/var/lib/nova/instances/_base/目录 ->nova.image.glance.GlanceImageService.download ->nova.image.glance.GlanceClientWrapper.call ->Nova.virt.images.convert_image #若镜像不是raw格式,且nova.conf中force_raw_images=True,则将backing file强制转换为raw格式 ->Nova.virt.libvirt.imagebackend.Qcow2.create_image:copy_qcow2_image ->nova.virt.libvirt.utils.create_cow_image ->nova.virt.libvirt.driver._get_guest_xml //创建虚拟机的xml文件 ->nova.virt.libvirt.driver._create_domain_and_network //创建主机和主机网络 ->nova.virt.driver.block_device_info_get_mapping //块设备映射 ->nova.virt.driver.get_image_from_system_metadata //获取镜像和元数据 ->nova.virt.libvirt.driver.LibvirtDriver.attach_volume //挂载云硬盘 ->nova.virt.libvirt.firewall.prepare_instance_filter //准备网络 ->nova.virt.libvirt.driver.LibvirtDriver._create_domain //创建主机 ->nova.virt.libvirt.driver.LibvirtDriver._create_domain :domain = self._conn.defineXML ->/usr/lib64/python2.7/site-packages/libvirt.py:defineXML ->nova.virt.libvirt.firewall.apply_instance_filter//使用网络,实际上全在prepare_instance_filter中做了,这里都是空 ->nova.virt.libvirt.driver.power_on //开机
版权声明:本文为博主原创文章,未经博主允许不得转载。