openstack:nova中“從雲硬碟啟動”建立虛擬機器的流程
原文網址:http://blog.csdn.net/xiangpingli/article/details/47912601
先使用cinder建立雲硬碟
然後在nova中建立示例的時候,會先在_prep_block_device中掛載cinder中建立的卷,然後建立虛擬機器
流程如下:
- (1)從cinder建立系統盤的流程
- cinder.volume.rpcapi.VolumeAPI.create_volume
- ->cinder.volume.manager.VolumeManager.create_volume
-
->cinder.volume.flows.manager.create_volume.get_flow
- ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask.execute
- ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask._create_from_image (_create_raw_volume、_create_from_snapshot)
-
->cinder.volume.derivers.glusterfs.create_volume (這裡是具體驅動的create_volume, VS底層使用glusterfs)
- ->cinder.volume.derivers.glusterfs._do_create_volume (這裡很重要,可能是我們的切入點)
- ->cinder.volume.derivers.remotefs._create_sparsed_file(class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver)會調到父類的方法)
-
->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask._copy_image_to_volume
- ->cinder.volume.derivers.remotefs.copy_image_to_volume(class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver)會調到父類的方法)
- ->cinder.image.image_utils.fetch_to_raw
- ->cinder.image.image_utils.fetch_to_volume_format
- ->cinder.image.image_utils.fetch (從fetch到fetch再到download和2.6中的流程很像了)
- ->cinder.image.glance.download(從glance下載映象到卷)
- ->cinder.volume.flows.manager.create_volume.CreateVolumeFromSpecTask._handle_bootable_volume_glance_meta (設定為可啟動)
- 建立映象完畢
- (2)nova中從雲硬碟啟動虛擬機器的流程
- 從雲硬碟啟動還是從虛擬機器啟動,在如下地方有差別:
- A 在Nova.virt.libvirt.driver._create_image中有差別
- 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.ComputeManager.build_and_run_instance
- ->nova.compute.manager.ComputeManager.build_and_run_instance
- ->nova.compute.manager.ComputeManager._locked_do_build_and_run_instance
- ->nova.compute.manager.ComputeManager._do_build_and_run_instance
- ->nova.compute.manager.ComputeManager._build_and_run_instance
- ->nova.compute.manager.ComputeManager._build_networks_for_instance //準備網路資源
- ->nova.compute.manager.ComputeManager._prep_block_device //準備塊裝置
- ->nova.compute.manager.ComputeManager.attach_block_devices
- ->nova.virt.block_device.DriverImageBlockDevice.attach:volume_api.attach
- ->Nova.volume.API.attach
- ->nova.volume.cinder.API.attach
- -> client = cinderclient(context) ; client.volumes.attach(size, **kwargs)//掛載cinder建立好的卷(雲硬碟)
- ->nova.virt.libvirt.driver.LibvirtDriver.spawn
- ->Nova.virt.libvirt.driver._create_image //建立系統盤
- 這裡會檢查是從雲硬碟啟動,還是不從雲硬碟啟動:
- booted_from_volume = self._is_booted_from_volume(
- instance, disk_mapping)
- ...
- ifnot booted_from_volume:
- ->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
相關推薦
openstack:nova中“從雲硬碟啟動”建立虛擬機器的流程
原文網址:http://blog.csdn.net/xiangpingli/article/details/47912601 先使用cinder建立雲硬碟 然後在nova中建立示例的時候,會先在_prep_block_device中掛載cinder中建立的卷,然後建
Openstack:Nova中“從雲硬碟啟動”、“從映象啟動”、“從映象啟動(建立一個卷)”_prep_block_device中的差異
原文網址:http://blog.csdn.net/xiangpingli/article/details/47913059 在前面跟蹤分析了:“從映象啟動”、“從映象啟動(建立一個新卷)”過程中,卷的建立是在_build_resources->_prep_blo
openstack:nova中“從映象啟動(建立一個新卷)”建立虛擬機器的流程
原文網址: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 ②在
【OpenStack】Nova中的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原始
OpenStack中nova元件建立虛擬機器的原始碼流程
此處以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
OpenStack之Nova分析——建立虛擬機器(五)
上篇兩篇文章分析了Nova Scheduler服務,這篇文章我們繼續來分析建立虛擬機器的過程。先來回顧一下。 class FilterScheduler(driver.Scheduler): def scheduler_run_instance(self, cont
在雲伺服器上安裝虛擬機器,再通過xshell訪問到虛擬機器中的linux
這個題有點繞哈這是一次異想天開的行動,當時是需要安裝fastDfs圖片伺服器的,但是不想安裝,手裡又有圖片伺服器的虛擬機器壓縮包,於是在阿里雲買了一臺windows伺服器一個月試試水,如下這是在5月份,讀大二,大二下學期,也就是一個多月後就要去找實習了,嘿嘿,我的專案需要用到
OpenStack之Nova分析——建立虛擬機器(七)——建立虛擬機器映象檔案
虛擬機器的映象檔案主要是指磁碟映象檔案,當然有的還包括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