虚拟化考点
第一章
1.虛擬化是對資源的邏輯抽象,隔離,再分配,管理的一個過程;
2.廣義的虛擬化:將不存在的事物或現象“虛擬”成為存在的事物或現象的方法;計算機科學中的虛擬化包括平臺虛擬化、存儲虛擬化、網絡虛擬化、設備虛擬化。狹義的虛擬化:在計算機上模擬運行多個操作系統平臺;
3.計算機的服務層次結構:硬件(Hardware)--操作系統(OS)--框架庫(Framework)--應用程序(Application)--服務(Service)
4.虛擬化的做法:為了避免層次之間的緊密依賴性,將上一層對下一層的依賴撤銷。也就是,將本層的依賴從底層中抽離出來。可以說“虛擬化就是一個不斷抽離依賴的過程”
5.虛擬化的目的:對IT基礎設施和資源管理方式的簡化,以幫助企業減少IT資源的開銷,整合資源,節約成本。
6.虛擬機的發展歷程:
(1):第一階段是大型機上的虛擬化,就是簡單地、硬性地劃分硬件資源;
(2):第二階段就是大型機技術開始向UNIX系統或類UNIX系統遷移;
(3).第三個階段就則是針對X86平臺地虛擬化技術地出現;
(4).第四階段就是近幾年開始出現或者被人注意地虛擬化技術;
7.虛擬化分類的方法
(1).從虛擬化支持的層次劃分:軟件輔助的虛擬化和硬件支持的虛擬化
(2).從虛擬化平臺的角度來劃分:全虛擬化和半虛擬化
(3).從虛擬化實現的結構:Hypervisor型虛擬化、宿主虛擬化和混合模型虛擬化
(4).從虛擬化在云計算中被應用的領域來劃分:服務器虛擬化、存儲虛擬化、應用程序虛擬化、平臺虛擬化、桌面虛擬化
7.全虛擬化為虛擬機的配置提供了最大程度的靈活性,不需要對客戶機操作系統做任何修改,即可正常運行任何非虛擬機環境中已存在的基于X86平臺的操作系統和軟件
8.全虛擬化的優點是客戶機操作系統不用修改直接就可以使用
9.主流的虛擬化產品:KVM、Xen、VMware、Hyper-v、VirtualBox
9.KVM的初始化過程:
(1).初始化CPU硬件
(2).打開CPU控制寄存器CR4中的虛擬化模式開關,并通過執行特定指令將宿主機操作系統置于虛擬化模式中的跟模式
(3).KVM模塊創建特殊設備文件/dev/kvm,并等待來自用戶空間的命令
(4).用戶空間使用工具的創建、管理,以及關閉虛擬客戶機。
第二章
1.系統虛擬化的核心思想是:用虛擬化技術將一臺物理計算機系統虛擬化為一臺或多臺虛擬計算機系統
2.虛擬環境由三部分組成:硬件、VMM和虛擬機
3.通過虛擬化層的模擬,虛擬機中的操作系統認為自己獨占一個操作系統
4.虛擬機所具有的三個典型特征:同質、高效和資源受控
5.特權指令:系統中和管理關鍵系統資源的指令。特權指令只能夠在最高特權上正確執行,如果在非最高特權級上執行,特權指令就會引發異常,使得處理器陷入到最高特權級,交由系統軟件來處理
6.敏感指令:虛擬化世界里操作特權資源的指令,包括修改虛擬機運行模式或者物理機的狀態,讀寫敏感的寄存器或內存
所有的特權指令都是敏感指令,但并非所有的敏感指令都是特權指令
7.“陷入再模擬”:將VMM運行在系統的最高權限上,而將客戶機操作系統運行在非最高特權級上。此時,當客戶機操作系統因執行敏感指令而陷入到VMM時,VMM模擬執行引起異常的敏感指令。
8.處理器虛擬化實現技術--Intel VT-x技術
9.全虛擬化可以采用二進制代碼動態翻譯技術,半虛擬化可以通過修改客戶機操作系統 來解決虛擬機執行特權指令的問題。被虛擬化平臺托管的客戶機操作系統需要修改其操作系統,將所有敏感指令替換為對底層虛擬化平臺的超級調用。
10.在KVM環境中有三種模式:用戶,內核,客戶 模式
11.vCPU本質是一個結構體,vCPU可以劃分為兩個部分:VMCS結構、VMCS沒有保存而由VMM使用和更新的內容(VMCS以外的部分)
12.vCPU:創建(創建vCPU描述符)
13.Intel VT-x為處理器增加了一套名為虛擬機擴展的指令集 在非跟模式下包括19條不能被虛擬化的敏感指令
14.內存都是從物理地址0開始;內存地址都是連續的,或者說至少在一些大的粒度上連續
15.內存虛擬化面對的問題:物理內存要被多個客戶機操作系統實驗,但是物理內存只有一份,物理地址0也只有一個,無法滿足所有客戶及操作系統從0開始的需求(EPT/NPT技術);由于使用內存分區方式,把物理地址分給多個客戶機操作系統使用,雖然可以保證虛擬機的內存訪問是連續的,但是內存使用效率低。
16.在引入客戶機物理地址空間后,可以通過兩次地址轉換來支持地址空間的虛擬機,客戶機虛擬地址--客戶機物理地址--宿主機物理地址
17.Intel EPT是Intel VT-x 提供的內存虛擬化支持技術
18.EPT頁表相對于影子頁表,其表現方式大大簡化,主要地址轉化工作都由硬件自動完成,而且客戶機內部的缺頁異常也不會導致VM-Exit,因此客戶機性能更好,開銷更小
19.I/O虛擬化實現技術--Intel VT-d
20.設備所有的DMA傳輸都會被DMA重映射硬件截獲
21.跟條目:描述PCI總線,每條總線對應一個跟條目,由于PCI架構支持最多256條總線,故最多可以有256個跟條目;上下文條目 :描述某個具體的PCI設備(邏輯設備)
KVM是x86架構且硬件支持虛擬化技術的Linux全核全虛擬化的解決法方案。 Hypervisor也叫VMM虛擬機監控器,任務:管理真實的物理硬件平臺,為每一個虛擬客戶機提供對應的虛擬硬件平臺。
Linux-RHEL6中,集成了最新的KVM虛擬機
Xen支持半虛擬化。在裸機物理硬件上引導系統時,Xen虛擬機管理程序自動啟動一個名為Domain0或管理域的著虛擬機,該虛擬機提供了對所有在該物理主機上運行的其他虛擬機
虛擬化架構模型基本分為三類,一類是一般的Hypervisor虛擬化架構模型,也叫Hypervisor型虛擬化;另一類是Linux作為Hypervisor的虛擬化架構模型,也叫宿主模型虛擬化;還有一類是混合模型的虛擬化架構模型,綜合了以上兩種虛擬化技術
Hypervisor模型:虛擬機監控器在系統加電之后首先加載運行,傳統的操作系統運行在其創建的虛擬機中。這類Hypervisor可以視為一個特別為虛擬機而優化裁剪的操作系統內核,Hypervisor運行在最底層,實現諸如系統的虛擬化,物理資源的管理等功能。此外,對虛擬機進行創建、調度和管理,與操作系統對進程的創建、調度和管理相似。這一類型的Hypervisor通常會提供一個具有一定特權的特殊虛擬機,由這個特殊虛擬機來運行提供用戶日常操作和管理使用的操作系統環境
KVM模塊讓Linux主機成為一個虛擬機監視器,并且在原有的Linux兩種執行模式的(內核模式和用戶模式)基礎上新增加了客戶模式,客戶模式擁有自己的內核模式。
KVM模塊的職責就是打開并初始化系統硬件以支持虛擬機的運行
QEMU本身并不是KVM的一部分,是一套由Febrice Bellard編寫的模擬處理器的自由軟件
QEMU的運作模式:User Mode 模擬模式;System Mode模擬模式
KVM模塊僅僅是Linux內核的一個模塊,管理和創建完整的KVM虛擬機
KVM和QUMU相輔相成,QEMU通過KVM達到了硬件虛擬化的速度,而KVM則通過QEMU來模擬設備
QEMU和KVM的關系:KVM之模擬CPU和內存,因此一個客戶機操作系統可以在宿主機上面跑起來,但是你看不到它,無法和它溝通
KVM需要硬件虛擬化技術的支持,在X86-64架構的處理器中,KVM必需的硬件虛擬化支持分別為:英特爾的虛擬化技術(Intel VT和AMD的AMD-V技術
處理器不僅需要在硬件上支持VT技術,還需要BIOS中將其功能打開 ,因為打開后KVM才能使用
虛擬化技術條件的支持:芯片組自身的支持、BIOS提供的支持、處理器自身的支持、操作系統的支持
創建一個用于安裝KVM的硬盤 qemu-ing create -f qcow2 ubuntu.img 10G
啟動KVM:qemu-system-x86_64 -m 1024 -smp 4 -boot order=cd -hda ubuntu.img -cdrom /root/kvm/ubuntu-12.04-desktop-and64.iso
硬件和BIOS對虛擬化的支持是KVM運行的先行條件,因此,在搭建KVM環境之前,需要對硬件環境進行查看、對BIOS進行配置,代開BIOS中對虛擬化的支持
第四章
1.QEMU命令的基本格式:qemu-kvm [options] [disk_image],標準選項主要涉及主機類型、CPU模式、NUMA、軟驅設備、光驅設備以及硬件設備等。可以使用命令“qemu-system-x86_64 -M?”獲取所支持的所有類型
2.在QEMU中,主要給客戶機提供的網絡配置方案:基于網橋(Bridge)的虛擬網卡模式;基于NAT的虛擬網絡模式;QEMU內置的用戶模式網絡;直接分配網絡設備模式
3.如果沒有配置任何的“net”參數,則默認使用“-net nic -net user”參數。即指示QEMU使用一個QEMU內置的用戶模式網絡,這種模式是默認的。
4.在網橋模式下,客戶機和宿主機共享一個物理網絡,客戶機的IP是獨立的,它和宿主機是在同一個網絡里面??蛻魴C可以訪問外部網絡,外部網絡也可以訪問這臺客戶機
5.使用NAT模式,就是讓客戶機借助NAT功能,通過宿主機所在的網絡來訪問互聯網
6.KVM內核指的是一個提供硬件的抽象層,磁盤及文件系統控制的多任務、多功能的系統軟件
第五章
1.KVM作為開源虛擬化軟件,與其他虛擬化技術相比有獨特的特征
(1).基于x86架構且硬件支持虛擬化技術(Intel VT-x、AMD-V)的Linux全虛擬化解決方案
(2).KVM包含一個為處理器提供底層虛擬化的可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-amd.ko)
(3).KVM需要一個經過修改的QEMU軟件作為虛擬機的上層控制和應用界面
(4).KVM能在不改變Linux或Windows鏡像的情況下同時運行多個虛擬機,即多個虛擬機使用同一鏡像,并未每一個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器、處理器)
2.KVM API是一組ioctls指令的集合,主要功能是為了控制虛擬機的整個生命周期
3./dev/kvm作為Linux系統的一個標準字符設備,可以使用常見的系統調用如open、close、ioctl
4.作為VMM,KVM分為兩部分,分別是運行于Kernel模式的KVM內核模塊和運行于User模式的QEMU模塊
5.KVM保證客戶機正確執行的基本手段就是當客戶機執行I/O指令或者其他特權指令時,引發處理器異常,從而陷入到跟操作模式,由KVM Driver模擬執行??梢哉f,虛擬化保證客戶機正確執行的基本手段就是異常處理機制。和此相關的一個重要數據結構是虛擬機控制結構VMCS
6.VMCS數據域包含了六類信息:客戶機狀態域、宿主機狀態域、VM-Execution控制域,VM-Entry控制域、VM-Exit控制域以及VM-Exit信息域
第六章
1.QEMU采用動態翻譯技術,先將目標代碼翻譯成一系列等價的被稱為“微操作”的指令,然后再對這些指令進行拷貝、修改、鏈接,最后產生一塊本地代碼。這些微操作排列復雜,從簡單的寄存器轉換模擬到整數/浮點數數學函數模擬 再到load/store操作模擬,其中load/store操作的模擬需要目標操作系統分頁機制支持。
2.QEMU的精確模擬:中斷控制器、總線驅動器、磁盤驅動、鍵盤、鼠標、顯卡以及網卡的模擬
3.QEMU特征:全系統仿真模擬、用戶態仿真模擬
4.QEMU的通用特征:
(1).用戶態空間或者全系統模擬;(2)在合理的時間內動態翻譯成本地代碼;(3).可以在x86、x86_64和PowerPC 32/64等架構的宿主機運行;
(4).支持代碼的自動修改; (5).支持精確的異常提示;(6).支持浮點數運算庫
5.QEMU全系仿真特征:
(1).為了保證更大的可移植性,QEMU使用了一個全軟件的MMU;(2).QEMU可以選擇性地使用一個內核級地加速器,比如KVM;
(3).可以仿真不同地硬件設備
6.QEMU用戶態仿真特征:
(1).通用Linux系統調用轉換,包括大部分ioctls系統函數;(2)函數clone()仿真使用本地CPU克隆函數來調用Linux的線程調度
(3).通過宿主信號到目標信號的重映射從而保證信號的精確處理
7.對于QEMU來說,除了支持KVM之外,還支持全虛擬機和kqemu加速模塊方式
(1).第一種模式是通過kqemu加速模塊來實現內核態的加速
(2).第二種模式是在不借用任何底層加速模塊的情況下直接在用戶態下運行QEMU
(3).第三種模式利用Linux內核中集成的KVM加速模塊
8.QEMU線程事件模型:當一個文件描述符準備完畢、一個定時器過期或者是一個BHs被調度時,事件循環就會調用一個回調函數來回應這些事件
9.QEMU主線程:函數main_loop_wait是主線程主要執行函數,當文件描述符、定時器或下半部觸發相應事件后,將執行相應的回調函數
10.KVM開發小組提供libkvm模塊,包裝了針對設備文件/dev/kvm具體的ioctl操作,使libkvm模塊成為了一個可重復使用的用戶空間的控制模塊,供其他程序開發包所使用,如:libvirt
11.Virtio是半虛擬化Hypervisor中位于設備上的抽象層
第七章
1.libvirt包含了一個守護進程和一個管理工具,能提供對虛擬化客戶機的管理和對虛擬化網絡和存儲的管理
2.libvirt的主要目標是提供一種單一的方式,管理多種不同的虛擬化提供方式和Hypervisor
3.libvirt概念
(1).節點(node):通常是指一個物理機器,在這個物理機器上通常運行著多個虛擬客戶機
(2).Hypervisor:通常指VMM,Hypervisor可以控制一個節點,讓其能夠運行多個虛擬機
(2)域(domain):指在Hypervisor上運行的一個虛擬機操作系統實例
4.libvirt主要功能:
(1).虛擬機管理 ;(2).遠程節點的管理; (3).存儲管理; (4).網絡接口管理; (5).虛擬NAT和基于路由的網絡
5.libvirt概括起來包含一個程序編程接口庫(API)庫,一個daemon(守護進程,libvirtd)和一個命令行工具(virsh)
6.libvirt分為三個層次結構:接口層(virsh,libvirt API),抽象驅動層(libvirt libary,libvirtd),具體驅動層(qemu,xen,LXC)
7.libvirtd是libvirt虛擬化管理工具的服務器端的守護程序,libvirtd負責執行其他管理工具發送給他的虛擬化管理操作指令
8.virsh是一個虛擬化管理工具,是一個用于管理虛擬化環境中的客戶機和Hypervisor的命令行工具
9.libvirt API介紹:
(1).libvirt-domain:管理libvirt域的API,提供了一系列以virDomain開頭的函數
(2).libvirt-event:管理事件的API,提供了一系列virEvent開頭的函數
(3).libvirt-host:管理宿主機的API
(4).libvirt-network:管理網絡的API,提供了一系列以virConnect和virNetwork開頭的函數
(5).libvirt-nodedev:管理節點的API,提供了一系列virNode開頭的函數
(6).libvirt-storage管理存儲池和卷的API,提供了一系列以virStorage開頭的函數
(7).libvirt-stream:管理數據流的API,提供了一系列以virStream開頭的函數
(8).virterror:處理libvirt庫的錯誤處理接口
總結
- 上一篇: 选择什么样的时机将IT运维服务外包
- 下一篇: 虚拟化是什么,主要有哪些虚拟化技术?