Nova在OpenStack中的位置
Nova是Openstack最核心的服務模塊,負責管理和維護雲計算環境的計算資源,負責整個雲環境虛擬機生命周期的管理。
Nova系統架構
Nova架構
Nova組件
組件 | 功能 | 一般部署位置 |
---|---|---|
nova-api | 接受rest消息 | 控制節點 |
nova-scheduler | 選擇合適的主機 | 控制節點 |
nova-conductor | 數據庫操作、復雜流程控制 | 控制節點 |
nova-compute | 虛擬機生命周期管理和資源管理 | 計算節點 |
nova-novncproxy | novnc訪問虛擬機代理 | 控制節點 |
nova-consoleauth | novnc訪問虛擬機鑒權 | 控制節點 |
Nova特點
- 基於Rest API
- 友好的服務訪問方式
- 支持線性擴展(水平擴展)
- 支持虛擬機實例數量隨着節點的增加,線性增長
- 與硬件無關,支持多種標准硬件
- 無需定制專門的硬件設備
- 與虛擬化平台無關,支持多種Hypervisor
- 例如:KVM、LXC、QEMU、ESX、Xen、Hyper-V
- 支持主流虛擬化平台,不依賴特定的廠商
Nova計算資源模型
-
Region(地區):指不同的地理區域(如公有雲的廣州、上海等)
-
AZ(Availability Zone 可用分區):指使用同一個供電或者制冷系統的主機集合,實際表示機房
-
主機聚合(Host Aggregate 主機組):使用相同配置的主機的集合,比如相同的CPU 型號、相同的硬盤燈
VM操作與對象
Nova典型操作
分組 | 說明 |
---|---|
虛擬機生命周期管理 | 虛擬機創建、刪除、啟動、關機、重啟、重建、規格更改、暫停、解除暫停、掛起、繼續、遷移、在線遷移、鎖定、解鎖、疏散,拯救,解拯救,擱置,刪除擱置, 恢復擱置,備份,虛擬機導出鏡像、列表、詳細信息、信息查詢更改,密碼修改。 |
卷和快照管理操作 | 本質上是對Cinder API的封裝。卷創建、刪除、列表、詳細信息查詢。快照創建、刪除、列表、詳細信息查詢。 |
虛擬機卷操作 | 虛擬機掛卷、虛擬機卸卷、虛擬機掛卷列表、虛擬機掛卷詳細信息查詢。 |
虛擬網絡操作 | 本質上是對Neutron API的封裝。虛擬網絡創建、刪除、列表、詳細信息查詢。 |
虛擬機虛擬網卡操作 | 虛擬機掛載網卡、虛擬機卸載網卡、虛擬機網卡列表。 |
虛擬機鏡像的操作 | 本質上是對Glance API的封裝,支持鏡像的創建、刪除、列表、詳細信息查詢。 |
虛擬機HA | 自研虛擬機的可靠性操作。可手動觸發(FS5.1)。 |
其他資源其他操作 | Flavor,主機組,keypairs,quota等。 |
… | ... |
- 名詞解釋:
- 疏散:把一個實例從一個有故障或已停止運行的 compute 節點上移到同一個環境中的其它主機服務器上。
- 拯救:虛擬機正常,但是系統有問題(如忘記密碼,系統文件損壞),可以通過拯救從一個新的鏡像啟動,將原來的系統掛載到一個分區進行恢復。解拯救:再從原來的系統盤啟動。
- 擱置:將長時間不使用的VM從底層釋放,從而節約服務器資源。用戶要使用時可再次恢復。
- 備份:對鏡像啟動的虛擬機進行做備份,上傳到glance,並保留用戶指定的最新個個數。目前不支持卷后端的。
- 導出鏡像:支持導出本地和卷的。卷啟動的虛擬機所有卷都會做快照,本次磁盤啟動的只對本地系統盤做快照。
Nova重要概念
名稱 | 簡介 | 說明 |
---|---|---|
Server/instance | 虛擬機 | Nova管理提供的雲服務資源。Nova中最重要的數據對象。 |
Server metadata | 虛擬機元數據 | 通常用於為虛擬機附加必要描述信息:key/value。 |
Flavor | 虛擬機規格模板 | 用於定義一種虛擬機類型,如一種具有2個VCPU、4GB內存、40GB本地存儲空間的虛擬機。Flavor由系統管理員創建,供普通用戶在創建虛擬機時使用。 |
Quota | 資源配額 | 用於指定租戶最多能夠使用的邏輯資源上限。 |
Hypervisor / node | 節點 | 對於KVM、Xen等虛擬化技術,一個node即對應於一個物理主機。對於vCenter,一個node對應於一個cluster。 |
Host | 主機 | 對於KVM、Xen等虛擬化技術,一個host即對應於一個物理主機,同時對應於一個node。對於vCenter,一個host對應於一套vCenter部署。 |
Nova重要對象 - Flavor實例模板
屬性 Property |
描述 Description |
示例 Value for example |
---|---|---|
name | 描述性名稱 | m1.small |
ram | 虛擬機內存大小(MB) | 2048 |
disk | 虛擬根磁盤大小(GB) | 50 |
ephemeral | 次要數據盤大小(GB) | 100 |
swap | 實例交換空間大小 | 1 |
vcpu | vCPU個數 | 8 |
is_public | 實例類型私有還是公共 | True |
extra_specs | 鍵值對(額外規格) | {"hw:mem_page_size":"2048“,"aggregate_instance_extra_specs:aggregate01": "true“, "quota:cpu_period": "1000000", "quota:cpu_shares": "1024", "quota:cpu_quota": "10000"} |
extra_specs鍵值解釋
“quota:cpu_period”: “1000000”:Specifies the enforcement interval (unit:microseconds) for QEMU and LXC hypervisors
“quota:cpu_shares”: “1024”:Specifies the proportional weighted share for the domain,For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024
“quota:cpu_quota”: “10000“:Specifies the maximum allowed bandwidth (unit: microseconds); You can use this feature to ensure that all vCPUs run at the same speed.
Nova重要對象 - Image
屬性 Property |
描述 Description |
示例 Value for example |
---|---|---|
name | 鏡像名 | cirros-0.3.2-x86_64 |
disk_format | 磁盤格式,可用格式:ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso. | qcow2 |
container_format | 鏡像容器(理解為打包格式),可用格式: ami,ari, aki, bare, and ovf. | bare |
is_public | 鏡像是否可公共使用 | True |
min_disk | 啟動鏡像所需的最小磁盤大小(GB) | 20 |
min_ram | 啟動鏡像所需的最小內存大小(MB) | 2048 |
status | 鏡像大小(Bytes) | queued/active |
Property‘hw_disk_bus’ | 與鏡像關聯的任意屬性(鍵值對) | scsi |
- Property屬性,一方面可以用於scheduler中的調度,選擇合適的主機,另一方面對底層hypervisor的一些配置。可選的如下:
- Property ‘hw_scsi_model
- Property ‘hw_watchdog_action’(優先級高於在flavor的extra_spec中的設置)
- Property ‘architecture’
- Property ‘hw_video_ram’
- Property ‘hw_vif_model’
- Property ‘hw_qemu_guest_agent’
- Property ‘hw_rng_model’
- disk_format:虛擬機的磁盤格式指的是底層的磁盤鏡像格式,虛擬設備廠商有不同的格式來放置虛擬機磁盤鏡像包含的信息。
- container_format:鏡像容器格式表示包含虛擬機鏡像的文件是否也包含虛擬機的metadata數據。
- Qcow2(QEMU 寫時復制版本2),格式通常是KVM使用,相比裸格式,它有額外的特性,例如:
- 使用稀疏文件呈現方式,因此鏡像尺寸更小。支持快照。
- AMI/AKI/ARI 格式是亞馬遜 EC2 雲最初支持的格式。
Nova重要對象 - Block device mapping v2
屬性 Property |
描述 Description |
示例 Value for example |
---|---|---|
id(uuid) | 鏡像id,快照id,卷id | 5e7ceccc-189f-492f-8a95-9064e8f5eeec |
source(source_type) | 塊的源類型 | image, snapshot, volume or blank |
dest(destination_type) | 塊的目的類型 | volume or local |
bus | 設備總線(僅限libvirt) | ide/usb/virtio/scsi |
type | 設備類型(僅限libvirt) | disk/cdrom |
device(device_name) | 設備名稱 | vda |
size | 塊設備的大小(GB)[可選] | 10 |
format(guest_format) | 設備將被格式化為(文件系統) | ntfs |
Bootindex(boot_index) | 磁盤引導順序(整數) | 0 |
shutdown(delete_on_termination) | 關機行為 | preserve/remove |
Nova模塊功能
Nova模塊 - api
-
nova-api作用:
- 對外提供rest接口的處理
- 對傳入的參數進行合法性校驗和約束限制
- 對請求的資源進行配額(quota)的校驗和預留
- 資源的創建,更新,刪除,查詢等
- 虛擬機生命周期的入口
- 可水平拓展部署
-
nova-api處理流程:
- WSGI Server + Paste + WebOb
- Nova所有的rest請求的入口
-
nova-api層提供了三個服務:
- osapi_compute:該服務主要處理openstack類型的rest請求消息
- ec2:該服務用於處理兼容亞馬遜類型的信息
- metadata:該服務提供虛擬機相關信息的獲取,比如虛擬機內置了cloud-init服務后,啟動的時候會從metadata服務獲取虛擬機的名稱等設定到虛擬機內部
-
架構均使用Python的第三方庫來實現
Nova模塊 - conductor
-
nova-conductor作用:
- OpenStack G版本引入的組件
- 數據庫操作
- 解耦其他組件(nova-compute)數據庫訪問
- Nova復雜流程控制
- 例如:創建,冷/熱遷移,虛擬機規格調整,虛擬機重建
- 其他組件的依賴
- 例如:nova-compute需要依賴nova-conductor啟動成功后才能啟動成功
- 其他組件的心跳定時寫入nova-consoleauth
- 可水平拓展部署
-
nova-conductor的好處:
- 提高安全性
- 避免nova-compute直接訪問數據庫,假設某個計算節點被攻擊,則攻擊者可以輕易獲取數據庫的全部權限,隨意操作數據庫。
- 方便升級
- 將數據庫與nova-compute解耦,若數據庫模式發生變更,nova-compute無需升級。
- 性能優化
- 提高並發
- 原來:nova-compute通過唯一一個os線程直接訪問數據庫(阻塞)
- 現在:nova-conductor通過rpc調用,rpc call的執行返回前不會阻塞其他綠色線程的執行,這種模式提高了並發
- 提高並發
- 提高安全性
-
nova-conductor代碼結構
- ConductorManager:主要負責與數據庫相關操作的類
- ComputeTaskManager:主要負責流程調度的類
Nova模塊 - scheduler
-
nova-scheduler功能:
- Scheduler在創建實例的時候,會為實例選擇出合適的主機(host),這個過程分為兩步:過濾(Fliter)和計算權重(Weight)
- 過濾:過濾掉不符合我們要求,或鏡像要求的主機,留下符合過濾算法的主機集合
- 計算權重:通過指定的權重計算算法,計算在物理節點上申請VM的cost,cost越大,權重weight就越大(調度算法會優先選擇權重最小的主機)。
- 選擇策略
- 基於內存權重的選擇
- 散列:在候選的一個大小范圍內的主機中,隨機選擇一個主機
- Filter:對主機進行過濾的實體,支持自研擴展
- scheduler_default_filters配置新寫的filter
- scheduler_available_filters指定擴展的filter目錄的收集函數
- 指定主機創建,遷移的時候該調度失效
- Scheduler在創建實例的時候,會為實例選擇出合適的主機(host),這個過程分為兩步:過濾(Fliter)和計算權重(Weight)
-
版本中用的Filter列表(部分華為自研)
調度器 功能 備注 RetryFilter 過濾掉之前已經嘗試過失敗的主機 原生 HuaweiAvailabilityZoneFilter 過濾指定AZ的主機 自研 RamFilter 過濾出內存資源充足的主機 原生 HuaweiDiskFilter 過濾出本地磁盤資源充足的主機 自研 ComputeFilter 過濾出狀態為up的計算主機 原生 ImagePropertiesFilter 通過鏡像的屬性過濾主機 原生 SameHostFilter 過濾出指定虛擬機集合所在的主機 原生 DifferentHostFilter 過濾掉指定虛擬機集合所在的主機 原生 CoreFilter 過濾出vcpu資源充足的主機 原生 AggregateInstanceExtraSpecsFilter 過濾出指定主機組的主機 原生 PhysicalNetworkFilter 過濾出擁有指定物理網絡的主機 自研 CpuBindFilter Numa/evs/IO muma親和性過濾主機 自研 ServerGroupAntiAffinityFilter 過濾掉指定虛擬機集合所在的主機 原生 ServerGroupAffinityFilter 過濾出指定虛擬機集合所在的主機 原生 PciPassthroughFilter 過濾出擁有網絡PCI設備的主機 原生 BandwidthFilter PCI設備網卡帶寬過濾 自研 HypervisorInstanceExtraSpecsFilter 級聯使用 自研
Nova模塊 - compute
-
nova-compute框架一欄(如上圖)
- Manager
- Driver
- 每個Driver對應一種虛擬化
- hypervisor
-
nova-compute功能:
- 虛擬機各生命周期操作的真正執行者(會調用對應的hypervisor的driver)
- 底層對接不同虛擬化的平台(KVM,VMware,Xen,FusionCompute,Hyper-V等)
- 內置周期性任務,完成資源刷新,虛擬機狀態同步等功能。
- 資源管理模塊(resource_tracker)配合插件機制,完成資源的統計。
- Claim模塊完成資源的分配和釋放。
-
nova-compute代碼結構
-
nova-compute周期性任務
- 綠色線程執行
- 通過對方法加裝飾器來實現
- 裝飾器指定執行的周期間隔,默認為60s
-
nova-compute周期性任務
周期性函數 功能 周期 備注 _check_instance_build_time 檢查虛擬機是否卡在building狀態,目前不生效。 60S 原生 _heal_instance_info_cache 從neutorn同步port的狀態到nova數據庫中。 60S 原生 _poll_rebooting_instances 檢測虛擬機是否卡在rebooting狀態,目前不生效。 60S 原生 _poll_rescued_instances 檢測虛擬機是否卡在rescued狀態,目前不生效。 60S 原生 _poll_unconfirmed_resizes 虛擬機修改規格后,在一定時間內自動確認,目前不生效。 60S 原生 _poll_shelved_instances 將shelved的虛擬機的資源刪除,目前不生效。 3600S 原生 _instance_usage_audit 定期通知虛擬機的存在,目前不生效。 60S 原生 _poll_bandwidth_usage 更新虛擬機網卡帶寬的使用,目前不生效。 600S 原生 _poll_volume_usage 更新卷的使用。目前不生效。 原生 _sync_power_states 周期性虛擬機狀態的同步 60S 原生重寫 _reclaim_queued_deletes 軟刪除虛擬機后刪除虛擬機 60S 原生 update_available_resource 周期性資源同步任務 60S 原生 _cleanup_running_deleted_instances 關閉(或刪除)上層已經刪除,但是底層殘留的虛擬機 600S 原生 _run_image_cache_manager_pass 目前不生效 原生 _run_pending_deletes 刪除殘留虛擬機的文件 300S 原生 pull_instances_with_exceptional_state 解決由於存儲准備慢導致的虛擬機拉起失敗 60S 自研 _cycle_change_vnc_passwd 定時修改虛擬機的vnc密碼 60S 自研 _auto_update_vm_tools_of_instances 自動更新VMTools 60S 自研 _run_emulatorpin_update 更新虛擬機的emulator的cpu 60S 自研
Nova模塊 - novncproxy
- nova-novncproxy功能:
- novnc訪問虛擬機代理,一般部署在控制節點,提供控制台功能,查看虛擬機的運行狀態
- 補充:
- 每獲取一次vnc url會修改一次密碼
- 獲取url后,周期性任務會十分鍾后修改一次密碼
Nova模塊 - consoleauth
- nova-consoleauth功能:
- novnc訪問虛擬機鑒權,一般部署在控制節點,對控制台訪問進行鑒權
noVNC連接建立流程
-
noVNC
- 該模塊與OpenStack無關,但OpenStack依賴於該第三方模塊,該模塊通過nova-novncproxy與vnc server建立連接需要經過以下6次握手。
-
進行ProtocolVersion握手,根據server返回的版本來確定client的版本。
-
進行Security握手,由server和client決定使用的Security的類型,該類型決定了后一步Authentication的方法。目前支持的Security類型有(1,2,16,22)。
-
根據Security類型,決定Authentication的方法
1:不需要鑒權
2:vnc鑒權
16:TightVNC鑒權
22:XVP鑒權
對於novnc用的是類型2的鑒權,默認通過DES進行加密,具體方法是用server端返回的值+密碼,然后用DES加密發送到server端進行鑒權
-
進行SecurityResult驗證,如果server端返回0標識鑒權通過,否則失敗。
-
進行ClientInitialisation,客戶端初始化。
-
進行ServerInitialisation,server端初始化,包括窗口大小,像素格式和顯示的標題等。
-
完成以上后,client和server真正建立了連接
-
nova-consoleauth說明
- nova-novncproxy依賴於此服務進行token的鑒權。
Nova資源管理
Nova資源管理圖解
- 底層周期性任務調用Hypervisor driver獲取原始資源信息
- 原始資源信息在nova-compute中經過資源管理對象resource_tracker經過計算后保存在本地的self.compute對象中,並最后將該內容持久化到數據庫中
- nova-scheduler每次調度時從數據庫中獲取該資源信息,並更新到內存的host_state_map對象中,后面的資源扣除會在該內存對象中進行。
- 在虛擬機的生命周期中會觸發資源的分配和釋放
- 每個資源可以通過插件式管理,便於擴展
- 資源更新的地方需要加鎖進行控制,避免資源競爭導致的資源扣除不准確
Nova資源管理周期
-
資源發現
- Nova負責發現各個物理主機上的物理資源數量(物理CPU、內存、本地存儲空間、PCI設備等),並根據配置值將其換算為邏輯資源數量(如CPU超額分配)。
-
資源上報與刷新
- Nova負責將各個物理節點上的邏輯資源數量上報至數據庫,並定期刷新數據庫記錄,以使記錄能夠盡可能反映當前的實際資源狀態。
-
資源記錄
- DataBase負責持久化記錄Nova管理下的各個物理節點上的邏輯資源數量。
-
資源申請
- 用戶在創建虛擬機時,通過指定的flavor,對Nova提出具體的資源使用量申請。
-
資源調度
- Nova根據flavor描述的資源類型與數量,對DataBase中記錄的各個物理節點上的邏輯資源數量進行判斷,選出符合用戶需求的節點,供創建虛擬機使用。
-
資源占用
- Nova在選定的物理節點上創建虛擬機,此時實際占用資源。
-
資源釋放
- 當用戶刪除虛擬機時,虛擬機占用的資源被真正釋放。
Nova中的存儲
- 本地存儲
名稱 | 映射到虛擬機 | 備注 |
---|---|---|
root ephemeral volume | disk | 一般用於系統盤 |
additional ephemeral volume | disk.local | 一般是數據盤 |
Swap盤 | disk.swap | swap盤 |
Config driver | disk.config | 配置盤 |
- 持久化卷存儲
- 通過調用cinder的接口實現卷的創建,刪除。
- Block-device-mapping
- Block-device
- 通過調用cinder的接口實現卷的創建,刪除。
Nova中的網絡
網絡類型 | PORT類型 | 對應虛擬機類型 | 描述 | 是否自研 | 是否交付 |
---|---|---|---|---|---|
OVS | normal | 普通軟交換虛擬機 | 網卡設備為ovs網橋上創建的port | 原生 | 交付 |
EVS | vhostuser | 用戶態EVS虛擬機 | 網卡設備為evs網橋上創建的port | 自研 | 交付 |
SRIOV | direct | 硬直通虛擬機 | 使用特殊網卡設備創建的VF設備 | 原生 | 交付 |
Netmap | softdirect | 軟直通虛擬機 | 使用Netmap虛擬網口 | 自研 | 非商業交付 |
注意:
- 創建虛擬機對不同點網絡使用方式不同。除ovs網絡外,其他網絡類型創建虛擬機必須指定對應的port
- EVS、SRIOV和netmap需要特殊物理網卡支持
虛擬機狀態介紹
-
虛擬機狀態類型
- Vm_State:數據庫中記錄的虛擬機狀態
- Task_State:當前虛擬機的任務狀態,一般是個中間態或者None
- Status:對外呈現的虛擬機狀態
- Power_State:從hypervisor獲取的虛擬機的真實狀態
-
狀態之間的關系
- 系統內部只記錄vm_state和task_state,power_state
- Status是由vm_state和task_state聯合生成的
-
舉例
- vm_state為active,task_state為rebooting,則status為REBOOT
- vm_state為building,則status為BUILD
Numa親和性相關概念
Numa/EVS/IO Numa親和性
- numa親和性指的是虛擬機分享同一個numa上的內存,cpu資源。
- EVS和ionuma親和性指的是虛擬機在分享同一個numa上內存,cpu和PCI資源。
Numa綁核和超線程
參數 | 可選值 | 含義 |
---|---|---|
vcpuAffinity | 0 | 綁定物理線程。 |
1 | 不綁定物理線程 | |
hyperThreadAffinity | any | vCPU 可與該虛擬機或任何其他虛擬機的vCPU隨時共享線程。 |
internal | 虛擬機的vCPU不能與其他虛擬機的vCPU共享線程,但是可以與同一虛擬機的其他vCPU 共享線程。此時“vcpuAffinity”的值只能全為0。 | |
none | 虛擬機的vCPU彼此不共享線程。此時“vcpuAffinity”的值只能全為1。 | |
sync | 功能類似"none",同時還實現了虛擬機vCPU與物理CPU超線程一一映射,即虛擬機vCPU與物理CPU具有相同的拓撲結構。此時"vcpuAffinity"的值只能全為1。 | |
Lock | 在"sync"的基礎上增加MCCP對實時虛擬機的要求,即隔離虛擬機中斷到其他CPU上。此時"vcpuAffinity"的值只能全為1。 | |
numaOpts | 0 | 未開啟numa親和性,虛擬機內存,vcpu分配可能跨numa節點。 |
1 | 開啟numa親和性,虛擬機內存,vcpu只能分配一個numa節點。 | |
2 | 開啟IO numa親和性,虛擬機跟pci在同一個numa節點。 |
Numa示例
hirmid –v | python –m json.tool
"vm_list": {
"instance-00000011": {
"current node": "0-1",
"io thread pin list": "0-15",
"master node": "0-1",
"use cpus list": "0-15",
"use node memory": {
"node 0": 17,
"node 1": 525
}
},
"instance-00000026": {
"current node": "1",
"io thread pin list": "0-2",
"master node": "1",
"use cpus list": "0-2",
"use node memory": {
"node 0": 0,
"node 1": 517
}
}
}
- current node和master node相同表示沒有跨numa,不同表示跨numa。
- use cpus list表示分配的物理cpu號
虛擬機創建
相關准備
- Flavor:實例規格
- 網絡:port或net
- 鏡像:glance中注冊的鏡像(qcow2、iso等)
- 卷:需要掛載的數據卷或者啟動卷
- 其他信息(可選)
- schduler_hint
- Meta data
- User date,az,max-count,config driver,key-name等
創建流程
- 創建流程圖
【重點】nova虛擬機創建流程:
一、准備計算資源(CPU、內存)
1.user向nova-api發出創建虛擬機的請求(rest-api的POST請求)
2.nova-api接收、處理(1.身份認證鑒權|2.配額校驗申請|3.虛擬機對象寫入DB)
3.nova-api組裝request和scheduler相關信息(flavor/az/image等)發送給nova-conductor
4.nova-conductor轉發組合信息給nova-scheduler選擇主機
5.nova-scheduler根據前面的scheduler選擇合適主機(1.filter過濾不適合的主機|2.weight權重計算,cost小的勝出或者散列策略在合適區間隨機選一個)
6.nova-scheduler把主機返回給nova-conductor
7.nova-conductor調用該主機對應的nova-compute來創建虛擬機
8.nova-compute對計算資源加鎖(阻塞)
二、准備網絡資源
9.nova-compute請求neutron准備port
三、准備存儲和鏡像
10.nova-compute請求cinder准備disk
11.啟動虛擬機
12.nova-compute去glance下載鏡像
13.生成虛擬機
14.通過driver調用libvirt去拉起虛擬機
-
創建flavor
Nova flavor-create testflavor 123 1024 5 2 --ephemeral 5
-
注冊鏡像
glance image-create --disk-format qcow2 --container-format bare --file cirros --name testimage
-
創建網絡或者port
neutron net-create evs_net002 --provider:network_type vlan --provider:physical_network evs_net --provider:segmentation_id 102
neutron subnet-create 768e4013-a682-4989-93e3-cf7b5eb6f8b8 10.10.20.0/24
neutron port-create 768e4013-a682-4989-93e3-cf7b5eb6f8b8 -- binding:vnic_type=vhostuser --name litao04
-
指定網絡創建虛擬機
nova boot --flavor 123 --image testimage --nic net-id=671686c2-177f-4d62-9870-fd0d0368dde9 test_vm01
-
指定port創建虛擬機
nova boot --flavor 123 --image testimage --nic port-id=671686c2-177f-4d62-9870-fd0d0368dde9 test_vm02
-
EVS虛擬機
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --hint numaOpts=1 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm03
-
EVS親和性虛擬機
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --hint numaOpts=1 --hint evsOpts=1 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm04
-
硬直通虛擬機
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm06
-
IO Numa親和性硬直通虛擬機
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --hint numaOpts=2 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm07
-
Numa親和性虛擬機
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["1"] --hint hyperThreadAffinity=any numa_vm1
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["0"] --hint hyperThreadAffinity=any numa_vm2
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["1"] --hint hyperThreadAffinity=sync numa_vm3
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["1"] --hint hyperThreadAffinity=none numa_vm4
nova boot --flavor 31 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["0"] --hint hyperThreadAffinity=internal numa_vm5
- hirmd -v | python -m json.tool :查看虛擬機的所占用的numa信息
-
從卷啟動虛擬機
nova boot --flavor 100 --nic net-id=654859f8-2540-4562-8884-26463f016005 --block-device source=volume,dest=volume,id=433cd085-5be6-4336-9163-b4a1094691aa,bus=ide,bootindex=0 yy_1
nova boot --boot-volume 433cd085-5be6-4336-9163-b4a1094691aa --flavor 100 --nic net-id=654859f8-2540-4562-8884-26463f016005 --block-device source=image,dest=volume,id=433cd085-5be6-4336-9163-b4a1094691aa,bus=ide,bootindex=-1 yy_2
-
指定鏡像啟動攜帶數據卷
nova boot --image windows.iso --flavor 100 --nic net-id=654859f8-2540-4562-8884-26463f016005 --block-device source=volume,dest=volume,id=433cd085-5be6-4336-9163-b4a1094691aa,bus=ide,bootindex=-1 yy_1
虛擬機可靠性處理
-
創建過程中
- 創建過程中,若在某一個主機上失敗,會觸發重調度機制,重新選擇主機創建
- 目前的重試次數為6次
-
創建完成
- HA機制:虛擬機或主機故障,由ceilometer檢測到VM狀態異常,然后上報告警,由heat觸發VM的重建。存在本地磁盤的虛擬機HA后,磁盤的數據會丟失。
- Heat收到告警后的等待時間(默認為5分鍾)可以在創建虛擬機的meta中指定,也可以創建成功后更新
虛擬機冷遷移
- 冷遷移確認后,無法回滾
- 本地磁盤的冷遷移要開啟互信
虛擬機熱遷移
- evs,sriov,netmpa不支持熱遷移(FS5.1)
- 不支持CPU異構的Host之間的虛擬機熱遷移