1. 程式人生 > >openstack:nova中“從雲硬碟啟動”建立虛擬機器的流程

openstack:nova中“從雲硬碟啟動”建立虛擬機器的流程

原文網址:http://blog.csdn.net/xiangpingli/article/details/47912601

先使用cinder建立雲硬碟

然後在nova中建立示例的時候,會先在_prep_block_device中掛載cinder中建立的卷,然後建立虛擬機器

流程如下:

  1. 1)從cinder建立系統盤的流程  
  2. cinder.volume.rpcapi.VolumeAPI.create_volume  
  3. ->cinder.volume.manager.VolumeManager.create_volume  
  4. ->cinder.volume.flows.manager.create_volume.get_flow  
  5. ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask.execute  
  6. ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask._create_from_image (_create_raw_volume、_create_from_snapshot)  
  7. ->cinder.volume.derivers.glusterfs.create_volume (這裡是具體驅動的create_volume, VS底層使用glusterfs)  
  8. ->cinder.volume.derivers.glusterfs._do_create_volume (這裡很重要,可能是我們的切入點)  
  9. ->cinder.volume.derivers.remotefs._create_sparsed_file(class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver)會調到父類的方法)  
  10.     ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask._copy_image_to_volume  
  11. ->cinder.volume.derivers.remotefs.copy_image_to_volume(class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver)會調到父類的方法)  
  12. ->cinder.image.image_utils.fetch_to_raw  
  13. ->cinder.image.image_utils.fetch_to_volume_format  
  14.     ->cinder.image.image_utils.fetch (從fetch到fetch再到download和2.6中的流程很像了)  
  15. ->cinder.image.glance.download(從glance下載映象到卷)  
  16. ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask._handle_bootable_volume_glance_meta (設定為可啟動)  
  17. 建立映象完畢  
  18. 2)nova中從雲硬碟啟動虛擬機器的流程  
  19. 從雲硬碟啟動還是從虛擬機器啟動,在如下地方有差別:  
  20. A 在Nova.virt.libvirt.driver._create_image中有差別  
  21. nova.api.openstack.compute.servers.Controller.create  
  22. ->nova.compute.api.API.create  
  23. ->nova.compute.api.API._create_instance  
  24. ->nova.comductor.ComputeTaskAPI.build_instances  
  25. ->nova.conductor. rpcapi.ComputeTaskAPI.build_instances  
  26. ->nova.conductor. manager.ComputeTaskAPI.build_instances  
  27. ->nova.compute.rpcapi.ComputeManager.build_and_run_instance  
  28. ->nova.compute.manager.ComputeManager.build_and_run_instance   
  29. ->nova.compute.manager.ComputeManager._locked_do_build_and_run_instance  
  30. ->nova.compute.manager.ComputeManager._do_build_and_run_instance  
  31. ->nova.compute.manager.ComputeManager._build_and_run_instance  
  32.   ->nova.compute.manager.ComputeManager._build_networks_for_instance //準備網路資源  
  33.   ->nova.compute.manager.ComputeManager._prep_block_device //準備塊裝置  
  34.     ->nova.compute.manager.ComputeManager.attach_block_devices   
  35.       ->nova.virt.block_device.DriverImageBlockDevice.attach:volume_api.attach  
  36.         ->Nova.volume.API.attach  
  37.           ->nova.volume.cinder.API.attach  
  38.             -> client = cinderclient(context) ; client.volumes.attach(size, **kwargs)//掛載cinder建立好的卷(雲硬碟)  
  39. ->nova.virt.libvirt.driver.LibvirtDriver.spawn   
  40. ->Nova.virt.libvirt.driver._create_image //建立系統盤  
  41. 這裡會檢查是從雲硬碟啟動,還是不從雲硬碟啟動:  
  42. booted_from_volume = self._is_booted_from_volume(  
  43.             instance, disk_mapping)  
  44. ...  
  45. ifnot booted_from_volume:  
  46.  ->Nova.virt.libvirt.driver._try_fetch_image_cache  
  47.  ->Nova.virt.libvirt.imagebackend.Image.cache  
  48.  ->Nova.virt.libvirt.imagebackend.Qcow2.create_image  
  49.    ->Nova.virt.libvirt.imagebackend.Qcow2.create_image:prepare_template即fetch_image  
  50.      ->Nova.virt.libvirt.utils.fetch_image  
  51.        ->Nova.virt.images.fetch_to_raw  
  52.          ->Nova.virt.images.fetch            #下載系統映象到/var/lib/nova/instances/_base/目錄
  53.            ->nova.image.glance.GlanceImageService.download  
  54.              ->nova.image.glance.GlanceClientWrapper.call  
  55.   ->Nova.virt.images.convert_image    #若映象不是raw格式,且nova.conf中force_raw_images=True,則將backing file強制轉換為raw格式
  56.   ->Nova.virt.libvirt.imagebackend.Qcow2.create_image:copy_qcow2_image  
  57.   ->nova.virt.libvirt.utils.create_cow_image  

相關推薦

openstacknova硬碟啟動建立虛擬機器流程

原文網址:http://blog.csdn.net/xiangpingli/article/details/47912601 先使用cinder建立雲硬碟 然後在nova中建立示例的時候,會先在_prep_block_device中掛載cinder中建立的卷,然後建

OpenstackNova硬碟啟動”、“映象啟動”、“映象啟動建立一個卷)”_prep_block_device的差異

原文網址:http://blog.csdn.net/xiangpingli/article/details/47913059 在前面跟蹤分析了:“從映象啟動”、“從映象啟動(建立一個新卷)”過程中,卷的建立是在_build_resources->_prep_blo

openstacknova映象啟動建立一個新卷)”建立虛擬機器流程

原文網址:http://blog.csdn.net/xiangpingli/article/details/47912777 nova還有一種啟動方式:“從映象啟動(建立一個新卷)” 這個流程中,nova會在_prep_block_device中的attach_blo

openstack建立虛擬機器流程介面任務發起,到nova等元件處理,到虛機建立完成

1.客戶端使用自己的使用者名稱密碼請求認證。 2.keystone通過查詢在keystone的資料庫user表中儲存了user的相關資訊,包括password加密後的hash值,並返回一個token_id(令牌),和serviceCatalog(一些服務的endpoint地址,cinder、glance-ap

Nova API服務 之 建立虛擬機器流程(1)

本小節,將以虛擬機器建立請求為例,分析底層Controller類的HTTP請求處理方法。 一、回憶總結 1、處理HTTP請求的核心工作都在底層Controller物件中定義。Resource物件在底層Controller物件的基礎上,實現 數據的轉化工作。 2、Resour

戴爾固態硬碟啟動系統

  新加好固態硬碟,重灌好系統之後 開機顯示:   1. 重啟,按F2進入進bios設定 2. 在General中: ①在Advanced bootOptions中,勾選Enable Legacy Option ROMs    ②在

OpenStackNova的create_image

Nova中的create_image 本部落格歡迎轉發,但請保留原作者資訊 新浪微博:@孔令賢HW; QQ:363210168 部落格地址:http://blog.csdn.net/lynn_kong 內容系本人學習、研究和總結,如有雷同,實屬榮幸! 更新記錄: 2013.

openstack分析——NOVA的RabbitMQ解析

轉載自:http://blog.csdn.net/gaoxingnengjisuan 相關文章: http://blog.csdn.net/gaoxingnengjisuan/article/category/1461395/2     本篇文章是由本人閱讀NOVA原始

OpenStacknova元件建立虛擬機器的原始碼流程

此處以OpenStack mitaka版本為例,實際最新的Ocata版本也差不多,以建立一個虛擬機器為例來分析nova原始碼中執行流程,該流程有助於二次開發,閱讀原始碼前最好先熟悉一下pastedeploy、webob、stevedore等openstack中的

OpenStack Nova啟動一個虛擬機器內部流程

這篇文章描述了Nova啟動一個例項的內部流程,原文地址是: 我作了一個簡單的翻譯,希望對英文不是很發了的同學有所幫助,如果你英文還可以,建立你看原文 概況 啟動一個例項涉及到nova內部的多個元件: API服務: 處理使用者請求並轉發到雲控制器雲控制器: 處理計算節點,網路控制服務API服務和排程之間的

OpenStack使用CentOS7官方通用映象建立虛擬機器例項

實驗環境: OpenStack Queens社群版 1控制節點、1計算節點、1塊儲存節點 單網絡卡provider供應商網路模式 作業系統版本 [root@controller ~]# cat /etc/redhat-release Cent

OpenStackNova分析——建立虛擬機器(五)

上篇兩篇文章分析了Nova Scheduler服務,這篇文章我們繼續來分析建立虛擬機器的過程。先來回顧一下。 class FilterScheduler(driver.Scheduler): def scheduler_run_instance(self, cont

伺服器上安裝虛擬機器,再通過xshell訪問到虛擬機器的linux

這個題有點繞哈這是一次異想天開的行動,當時是需要安裝fastDfs圖片伺服器的,但是不想安裝,手裡又有圖片伺服器的虛擬機器壓縮包,於是在阿里雲買了一臺windows伺服器一個月試試水,如下這是在5月份,讀大二,大二下學期,也就是一個多月後就要去找實習了,嘿嘿,我的專案需要用到

OpenStackNova分析——建立虛擬機器(七)——建立虛擬機器映象檔案

虛擬機器的映象檔案主要是指磁碟映象檔案,當然有的還包括ramdisk和kernel映象來配合磁碟映象檔案使用,這篇文章我們來重點分析一下建立虛擬機器磁碟映象的整個過程。 虛擬機器磁碟映象是虛擬機器正常執行不可缺少的映象檔案,它是虛擬機器的主磁碟。先來概述一下建立虛擬機器磁碟

vxworks開發simulator的使用之建立虛擬網卡

vxworks 說明 卸載 tor 默認 strong ive evel 幫助 在使用windriver workben ch開發vxWorks應用時,有時需要在本機上利用Simulator跑一下程序,這就需要你安裝一個虛擬的網卡。vxWorks自帶了這些工具,下面,以wi

安裝minikube 0.25,複雜的網路結構,配置容易出問題,vmware虛擬機器 centos7伺服器

vmware虛擬機器 centos7伺服器 判斷開啟虛擬化 egrep '(vmx|svm)' /proc/cpuinfo 關閉防火牆 systemctl stop firewalld && sudo systemctl disable firewalld

VirtualBox安裝Ubuntu12.04/Ubuntu14.04虛擬機器

1、下載所需檔案 在Ubuntu官網,你如果下載32位的,那麼ISO檔案是以i386.iso結尾,如果是下載64位的,那麼ISO是以amd64.iso結尾,i386是x86系列的32位處理器。 amd64是64位處理器。intel有自家的64位的,但不向下相容,64位以amd64最先推出

無意修改了配置檔案後虛擬機器進入緊急模式

為了實現虛擬機器和主機的檔案共享,筆者曾經在虛擬機器上調了很多命令(結果最後發現可以直接複製貼上,淚目),結果無意中就修改了虛擬機器本身的配置檔案,重啟虛擬機器以後,就打不開了,並且提示進入了緊急模式。 這個時候不要慌,仔細回憶自己改動的在哪裡,改動的是什麼。然後重啟,跳出一個灰色框框,選擇

使用命令列啟動 VirtualBox 虛擬機器

檢視所有虛擬機器 "D:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms 檢視正在執行的虛擬機器 "D:\Program Files\Oracle\VirtualBox\VBoxManage.e

OpenStack之Neutron分配VIP提供給兩臺虛擬機器做高可用

一. 簡單介紹 在openstack私有云平臺的應用場景中,涉及多臺虛擬機器例項進行高可用的繫結,這裡我們需要在雲平臺中提供一個IP給高可用場景切換,這裡介紹keepalived + allow_address_pairs實現虛擬機器的高可用 二.建立port和指定vip [[email prote