云計(jì)算核心-服務(wù)器虛擬化技術(shù)原理與應(yīng)用_第1頁
云計(jì)算核心-服務(wù)器虛擬化技術(shù)原理與應(yīng)用_第2頁
云計(jì)算核心-服務(wù)器虛擬化技術(shù)原理與應(yīng)用_第3頁
云計(jì)算核心-服務(wù)器虛擬化技術(shù)原理與應(yīng)用_第4頁
云計(jì)算核心-服務(wù)器虛擬化技術(shù)原理與應(yīng)用_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

服務(wù)器虛擬化技術(shù)原理與應(yīng)用2021/5/91內(nèi)容提要虛擬化技術(shù)簡介虛擬化實(shí)現(xiàn)技術(shù)硬件輔助虛擬化原理KVM/QEMU實(shí)現(xiàn)分析容器虛擬化Libvirt簡介2021/5/92虛擬化簡介虛擬化(Virtualization)的本質(zhì)

虛擬化是資源的邏輯表示,不受物理限制的約束。其技術(shù)本質(zhì)就是由位于下層的軟件模塊,通過向上一層軟件模塊提供一個(gè)與它原先所期待的運(yùn)行環(huán)境完全一致的接口和方法,抽象出一個(gè)虛擬機(jī)的軟件或硬件接口,是的上層軟件可以直接運(yùn)行在虛擬機(jī)的環(huán)境上。虛擬化的層面

硬件層虛擬化:通過虛擬硬件抽象層來實(shí)現(xiàn)虛擬機(jī),為虛擬機(jī)操作系統(tǒng)呈現(xiàn)和物理硬件相似或接近的硬件層。

操作系統(tǒng)層虛擬化:指操作系統(tǒng)的內(nèi)核可以提供多個(gè)互相隔離的用戶態(tài)實(shí)例,各自有自己獨(dú)立的文件系統(tǒng)、網(wǎng)絡(luò)和系統(tǒng)設(shè)置、庫函數(shù)等等。又叫容器虛擬化。

內(nèi)存虛擬化:操作系統(tǒng)通過段式頁式管理,提供用戶態(tài)所有應(yīng)用程序一個(gè)連續(xù)完整的內(nèi)存空間,從而屏蔽物理內(nèi)存細(xì)節(jié),簡化應(yīng)用開發(fā)。

編程語言層的虛擬化:由虛擬機(jī)runtime系統(tǒng)將中間代碼動態(tài)翻譯成硬件的機(jī)器語言執(zhí)行,從而在不同硬件和操作系統(tǒng)上運(yùn)行,例如java的JVM。2021/5/93虛擬化簡介系統(tǒng)虛擬化在系統(tǒng)虛擬化中,物理資源通常稱為宿主(host),而虛擬出來的資源稱為客戶(guset),而虛擬化管理軟件成為VMM2021/5/94虛擬化簡介虛擬化的優(yōu)點(diǎn)

封裝性:以虛擬機(jī)為粒度的封裝似的虛擬機(jī)運(yùn)行環(huán)境的保存非常便捷,部署、備份和恢復(fù)都非常迅速。

多實(shí)例:在一個(gè)計(jì)算機(jī)上運(yùn)行多個(gè)虛擬機(jī)使得硬件資源的利用率更高。通過多態(tài)硬件服務(wù)器組成的集群資源池,可以根據(jù)負(fù)載動態(tài)啟用或關(guān)閉服務(wù)器。

隔離:相比同一操作系統(tǒng)中的多任務(wù),每個(gè)應(yīng)用程序可以在自己的操作系統(tǒng)中獨(dú)立的運(yùn)行,不會影響到其他程序。

硬件無關(guān)性:通過虛擬化模擬出的應(yīng)用程序所需的硬件資源,從而使得應(yīng)用和具體硬件關(guān)聯(lián)性大大降低;通過動態(tài)遷移技術(shù)更是可以將運(yùn)行狀態(tài)的虛擬機(jī)無縫的遷移到其他服務(wù)器上運(yùn)行。2021/5/95虛擬化實(shí)現(xiàn)技術(shù)系統(tǒng)虛擬化的實(shí)現(xiàn)方式基于軟件完全虛擬化:又稱全虛擬化,通過軟件的方式完整模擬底層硬件環(huán)境,讓客戶機(jī)操作系統(tǒng)完全覺察不到是運(yùn)行在一個(gè)虛擬平臺上。這樣的虛擬平臺可以直接運(yùn)行現(xiàn)有的操作系統(tǒng),而無需對操作系統(tǒng)進(jìn)行任何修改。具體的內(nèi)容包括對處理器、內(nèi)存和I/O的虛擬化處理。代表是Boches,Qemu

硬件輔助的全虛擬化:基于軟件的完全虛擬化方式中,由于所有的指令執(zhí)行都需要通過軟件去模擬,在性能上會有一定的損失,導(dǎo)致虛擬機(jī)運(yùn)行效率明顯低于物理機(jī)。如果能把部分硬件(如物理CPU)能處理的指令直接交給硬件執(zhí)行,而對于硬件不支持的操作則采用軟件模擬的方式,這樣就會大大提高效率。代表是基于KVM的QEMU,VMWare。

半虛擬化:通過修改操作系統(tǒng)的代碼來解決虛擬化過程中的問題來實(shí)現(xiàn)虛擬化。代表是Xen(Xen也支持全虛擬化)2021/5/96虛擬化實(shí)現(xiàn)技術(shù)異質(zhì)與同質(zhì)虛擬化

異質(zhì)虛擬化:在一種指令體系架構(gòu)的宿主機(jī)中虛擬另一種體系架構(gòu)下的虛擬機(jī)。例如,x86虛擬arm,所有指令都需要重新翻譯、模擬后執(zhí)行,效率非常低下,通常不會超過10%。同質(zhì)虛擬化:虛擬機(jī)和宿主機(jī)是同種指令體系架構(gòu),例如,x86虛擬x86,powerpc虛擬powerpc。同質(zhì)虛擬化中很多指令可以直接在物理硬件上運(yùn)行,而不需要逐條指令翻譯。效率較高,現(xiàn)代實(shí)用級別服務(wù)器系統(tǒng)虛擬化都是同質(zhì)虛擬化。

敏感指令:同質(zhì)虛擬化中,那些由于會產(chǎn)生沖突無法直接在物理硬件上運(yùn)行的指令稱作敏感指令。例如,涉及到硬件設(shè)備、內(nèi)存尋址等方面的指令。

同質(zhì)虛擬化的實(shí)現(xiàn)本質(zhì)就是捕獲與模擬。即補(bǔ)獲敏感指令,模擬實(shí)現(xiàn)其行為。2021/5/97虛擬化實(shí)現(xiàn)技術(shù)實(shí)現(xiàn)同質(zhì)全虛擬化需要解決的問題 CPU虛擬化:實(shí)現(xiàn)CPU指令的模擬;中斷和異常的模擬和注入

內(nèi)存虛擬化:提供所有虛擬機(jī)一個(gè)從0開始的連續(xù)物理內(nèi)存空間;在各虛擬機(jī)之間有效隔離、調(diào)度以及共享內(nèi)存資源。 IO虛擬化:管理有限的外設(shè)資源,截獲guestos對設(shè)備的訪問請求,通過軟件模擬的方式來模擬真實(shí)設(shè)備的效果。

2021/5/98硬件輔助虛擬化硬件需求:確定機(jī)器有VTgrepvmx/proc/cpuinfo(INTEL芯片)grepsvm/proc/cpuinfo(AMD芯片)確保BIOS里開啟VTIntel(R)VirtualizationTech[Enabled]確保內(nèi)核版本較新,支持KVM用uname–r查看內(nèi)核版本,如果在2.6.20以下的linux版本,需升級內(nèi)核。2021/5/99硬件輔助虛擬化虛擬化漏洞與硬件輔助虛擬化基本原理x86硬件支持4個(gè)特權(quán)級(Ring),一般內(nèi)核運(yùn)行在Ring0,用戶應(yīng)用運(yùn)行在Ring3一些關(guān)鍵操作指令只能在最高特權(quán)級別上執(zhí)行,它們一般被稱為特權(quán)指令。如果在非特權(quán)級別上試圖執(zhí)行特權(quán)指令,將生成一個(gè)一般保護(hù)異常非特權(quán)指令則可以在任何一個(gè)權(quán)限級別執(zhí)行敏感指令是VMM不可以輕易讓客戶操作系統(tǒng)執(zhí)行的指令,如果所有敏感指令都是特權(quán)指令,就可以利用保護(hù)異常實(shí)現(xiàn)虛擬化當(dāng)一部分敏感指令并不是特權(quán)指令,這就出現(xiàn)問題了。非特權(quán)指令在Ring1~Ring3上是可以執(zhí)行。VMM不會處理這些指令。這就是硬件架構(gòu)上的虛擬化漏洞2021/5/910硬件輔助虛擬化VT-x引入兩種模式,統(tǒng)稱VMX模式根模式(VMXRootOperation):VMM運(yùn)行的模式非根模式(VMXNon-Root):客戶機(jī)所運(yùn)行的模式非根模式的下所有敏感指令的行為被重新定義,他們不經(jīng)虛擬化就直接運(yùn)行或通過陷入再模擬的方式運(yùn)行,在根模式下所有的指令行為沒有變化非根模式下敏感指令引起的“陷入”稱為VM-Exit,VM-Exit自動從非根模式轉(zhuǎn)換為根模式VM-Entry操作由VMM發(fā)起,通常是調(diào)度某個(gè)客戶機(jī)運(yùn)行,此時(shí),CPU由根模式切換到非根模式VT-x引入了VMCS,VMCS保存CPU需要的相關(guān)狀態(tài),VMCS主要提供CPU使用,CPU發(fā)生VM-Exit和VM-Entry時(shí)會自動更新VMCS。VMM通過指令配置VMCS,進(jìn)而影響CPU2021/5/911VMCS(Virtual-MachineControlStructure)VMCS是保存在內(nèi)存中的數(shù)據(jù),包含了虛擬CPU相關(guān)寄存器的內(nèi)容和虛擬CPU相關(guān)的控制信息,每個(gè)VMCS對應(yīng)一個(gè)虛擬CPU,任何時(shí)刻VMCS與物理CPU是一對一的綁定關(guān)系VMCS不同時(shí)刻可以綁定到不同的物理CPU,這種綁定關(guān)系的變化稱為VMCS的遷移VT-x提供了兩條指令用于VMCS的綁定和解除綁定:VMPTRLD<VMCS地址>:將指定的VMCS與執(zhí)行該指令的物理CPU綁定VMCLEAR:將執(zhí)行該指令的物理CPU與他的VMCS解除綁定。該指令將物理CPU緩存中的VMCS結(jié)構(gòu)同步到內(nèi)存中,保證VMCS和新物理CPU綁定時(shí),內(nèi)存中的值是最新的VM-x提供兩條指令用于VMX的打開和關(guān)閉VMXON:打開VMX操作模式VMXOFF:關(guān)閉VMX操作模式2021/5/912VMCS格式字節(jié)偏移描述0VMCS數(shù)據(jù)格式4VMX終止提示(VM-Exit執(zhí)行不成功時(shí)產(chǎn)生VMX終止,CPU在吃出存入終止原因,以方便調(diào)試)8VMCS數(shù)據(jù)域與cpu(相關(guān),不同格式CPU可能不同格式)VMREAD<索引>:讀VMCS中“索引”的數(shù)據(jù)VMWRITE<索引><數(shù)據(jù)>:寫VMCS中索引指定的域VMCS數(shù)據(jù)域包括六大信息:Gueststatearea:虛擬機(jī)狀態(tài)域Hoststatearea:宿主機(jī)狀態(tài)域VM-ExecutioncontrolfileldsVM-entrycontorlfileldsVM-exitcontrolfileldsVM退出信息VMCS塊格式2021/5/913VM-Entry與VM-Exit執(zhí)行基本的檢查來確保VM-Entry能開始對VMCS中的宿主機(jī)狀態(tài)有效性檢查,以確保下一次VM-Exit發(fā)生時(shí)可以正確的從客戶機(jī)環(huán)境切換到VMM環(huán)境檢查VMCS中客戶機(jī)狀態(tài)域的有效性;根據(jù)VMCS中客戶機(jī)狀態(tài)域來裝載處理器狀態(tài)根據(jù)VMCS中VM-EntryMSR-load區(qū)域裝載MSR寄存器根據(jù)VMCS中VM-Entry事件注入控制的配置,可能需要注入一個(gè)事件到客戶機(jī)中CPU首先將此次VM-Exit的原因記錄到VMCS相應(yīng)的信息域中,VM-Entryinterruption-information字段有效位(bit31)清零CPU狀態(tài)被保存到VMCS客戶機(jī)狀態(tài),根據(jù)設(shè)置,CPU也可能將客戶機(jī)MSR保存到VM_ExitMSR-Store區(qū)域根據(jù)VMCS中宿主機(jī)狀態(tài)和VM-Exit控制域中的設(shè)置,將宿主機(jī)狀態(tài)加載到CPU相應(yīng)寄存器。CPU由非根模式切換到根模式,從宿主機(jī)狀態(tài)域中CS:RIP指定的VM_Exit入口函數(shù)開始執(zhí)行

VM-Entry的過程:VM-Exit的過程:2021/5/914內(nèi)存虛擬化X86體系內(nèi)存管理架構(gòu)2021/5/915內(nèi)存虛擬化內(nèi)存尋址與頁表結(jié)構(gòu)2021/5/916內(nèi)存虛擬化虛擬機(jī)影子頁表技術(shù)客戶機(jī)頁表GVA>GPA載入硬件MMU無法訪問真正物理內(nèi)存影子頁表GVAHPA載入硬件MMU訪問真正物理內(nèi)存載入硬件MMU,TLB緩存影子頁表表項(xiàng)兩者關(guān)系客戶機(jī)修改客戶機(jī)頁表TLB刷新INVLPG影子頁表同步客戶機(jī)頁表VTLB2021/5/917內(nèi)存虛擬化EPT(ExtendedPageTable)被用于支持內(nèi)存虛擬化。EPT在非根模式下將客戶機(jī)物理地址(gpa)轉(zhuǎn)換為宿主機(jī)物理機(jī)地址(hpa),客戶機(jī)的虛擬地址(gva)到客戶機(jī)的物理地址(gpa)的轉(zhuǎn)換由客戶機(jī)頁表實(shí)現(xiàn)CPU同時(shí)使用兩套頁表(在原有的CR3控制器頁表的基礎(chǔ)上引入了EPT頁表的另一次映射)兩次頁表轉(zhuǎn)換都由CPU硬件自動完成通過VMCS的“VM-Execution控制域”中的EnableEPT字段進(jìn)行激活EPT在VMentry時(shí)生效當(dāng)EPT生效時(shí),EPTbasepointer指向ExtendedPageTable

當(dāng)VMexit時(shí)EPT失效EPT硬件輔助技術(shù)2021/5/918內(nèi)存虛擬化使用EPT硬件直接從GVA轉(zhuǎn)換到HPA2021/5/919KVM虛擬機(jī)簡介kernel-basedVirtualMachine(KVM),是一個(gè)開源的系統(tǒng)虛擬化模塊,自Linux2.6.20之后集成在Linux的各個(gè)主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,KVM的虛擬化需要硬件支持(如IntelVT技術(shù)或者AMDV技術(shù))。是基于硬件的完全虛擬化kvm由兩個(gè)部分組成:一個(gè)是KVMDriver,已經(jīng)成為linux內(nèi)核的一個(gè)模塊,負(fù)責(zé)虛擬機(jī)的創(chuàng)建,虛擬機(jī)內(nèi)存的分配,虛擬機(jī)寄存器的讀寫以及虛擬CPU的運(yùn)行等。另外是一個(gè)稍微修改過的qemu,用于模擬PC硬件的用戶空間組件,提供I/O設(shè)備模型以及訪問外設(shè)的途徑。qemu是一種模擬處理器,現(xiàn)在運(yùn)用最多的就是將KVM和QEMU結(jié)合起來KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用戶空間工具了2021/5/920KVM基本結(jié)構(gòu)2021/5/921KVM在Linux內(nèi)核態(tài)與用戶態(tài)的實(shí)現(xiàn)內(nèi)核空間代碼實(shí)現(xiàn)的功能包括以下幾個(gè)方面:實(shí)現(xiàn)硬件輔助的虛擬化的核心功能。提供用戶空間對KVM控制。對x86平臺設(shè)備進(jìn)行仿真。實(shí)現(xiàn)IOPort空間和MMIO空間的仿真。MMU虛擬化的支持。PCI-Passthrough相關(guān)的功能。KVM在用戶態(tài)的實(shí)現(xiàn)(qemu)包括以下部分:實(shí)現(xiàn)與KVM內(nèi)核接口的用戶空間邏輯。各種層次和類型的硬件設(shè)備的仿真。虛擬塊設(shè)備的不同磁盤Image文件格式的支持。VNC,SPICE等表示層協(xié)議的支持。Virtio設(shè)備的后端。QMP協(xié)議的支持。2021/5/922KVM在Linux內(nèi)核態(tài)與用戶態(tài)的實(shí)現(xiàn)內(nèi)核空間代碼實(shí)現(xiàn)的功能包括以下幾個(gè)方面:實(shí)現(xiàn)硬件輔助的虛擬化的核心功能。提供用戶空間對KVM控制。對x86平臺設(shè)備進(jìn)行仿真。實(shí)現(xiàn)IOPort空間和MMIO空間的仿真。MMU虛擬化的支持。PCI-Passthrough相關(guān)的功能。KVM在用戶態(tài)的實(shí)現(xiàn)(qemu)包括以下部分:實(shí)現(xiàn)與KVM內(nèi)核接口的用戶空間邏輯。各種層次和類型的硬件設(shè)備的仿真。虛擬塊設(shè)備的不同磁盤Image文件格式的支持。VNC,SPICE等表示層協(xié)議的支持。Virtio設(shè)備的后端。QMP協(xié)議的支持。2021/5/923KVM/QEMU的執(zhí)行路徑2021/5/924QEMU的設(shè)備虛擬化設(shè)備虛擬化基本原理:1.模擬設(shè)備所具有的所有請求和響應(yīng)的邏輯模塊2.從操作系統(tǒng)的角度,模擬目標(biāo)設(shè)備的軟件接口,實(shí)現(xiàn)相應(yīng)的功能3.對于真實(shí)設(shè)備硬件的內(nèi)部邏輯以及同其他設(shè)備的連接,則不需要精確模擬2021/5/925QEMU的設(shè)備虛擬化設(shè)備模型的軟件接口:PCI配置空間尋址方式通過平臺相關(guān)的寄存器訪問,由兩個(gè)寄存器組成,一個(gè)指定設(shè)備和偏移,一個(gè)讀取或?qū)懭霐?shù)據(jù)。2021/5/926QEMU的設(shè)備虛擬化2.PCI配置空間偏移地址PCI配置空間的模擬:

客戶機(jī)發(fā)現(xiàn)和初始化設(shè)備時(shí)會訪問PCI配置空間。由于客戶機(jī)使用相同的配置空間寄存器來訪問設(shè)備的配置空間,因此只要攔截對這些寄存器的訪問,就可以用進(jìn)行相應(yīng)的模擬2021/5/927QEMU的設(shè)備虛擬化不同訪問設(shè)備方式的模擬:端口IO(pic,dma):通過特定的指令訪問IO空間,x86平臺包括in,out,ins,outs。 qemu會事先注冊特定端口的讀寫處理函數(shù),當(dāng)向這些端口發(fā)出IO指令時(shí),就會調(diào)用相應(yīng)的處理函數(shù),完成指定的處理邏輯MMIO:某些內(nèi)存區(qū)域沒有被映射到RAM存儲器,而是設(shè)備的MMIO或寄存器.操作系統(tǒng)通過頁表將相應(yīng)的內(nèi)存區(qū)域映射到虛擬內(nèi)存空間,并通過類似訪問內(nèi)存的方式訪問設(shè)備寄存器。 和端口IO類似,不同的是頁表中并不存在相應(yīng)的映射,因此會導(dǎo)致缺頁異常,KVM攔截這些異常,進(jìn)行處理或交給qemu進(jìn)行處理2021/5/928QEMU的設(shè)備虛擬化DMA和中斷的模擬:DMA(DirectMemoryAccess):操作系統(tǒng)向特定的硬件寄存器寫入DMA地址,然后向另一寄存器地址寫入DMA命令來發(fā)起DMA操作。

由于DAM會讀寫IO端口或MMIO,因此可以用相應(yīng)的讀寫處理函數(shù)進(jìn)行攔截和模擬中斷:當(dāng)設(shè)備需要操作系統(tǒng)處理中斷時(shí),會通過虛擬中斷控制器發(fā)出中斷,CPU相應(yīng)中斷時(shí),通過讀寫特定寄存器清除中斷

QEMU通過模擬中斷控制器來進(jìn)行處理2021/5/929QEMU的磁盤虛擬化IDE簡介與數(shù)據(jù)傳輸模式: IDE是英文IntegratedDriveElectronics的縮寫,翻譯成中文叫做“集成驅(qū)動器電子裝置”,它的本意是指把控制器與盤體集成在一起的硬盤驅(qū)動器。通常我們所說的IDE指的是硬盤等設(shè)備的一種接口技術(shù)。 IDE接口也叫ATA(AdvancedTechnologyAttachment)接口,即高級技術(shù)附加。 PIO模式(ProgrammingInput/OutputModel):一種通過CPU執(zhí)行IO端口指令來進(jìn)行數(shù)據(jù)讀寫的數(shù)據(jù)交換模式。 DMA模式(DirectMemoryAccess)是一種不經(jīng)過CPU而直接從內(nèi)存存取數(shù)據(jù)的數(shù)據(jù)交換模式2021/5/930QEMU的磁盤虛擬化QEMU的PIO模擬2021/5/931QEMU的磁盤虛擬化QEMU的DMA模擬2021/5/932QEMU的磁盤虛擬化QEMU的磁盤Cache2021/5/933QEMU的磁盤虛擬化半虛擬化驅(qū)動與QEMU中的VirtIO2021/5/934容器虛擬化技術(shù)什么是容器虛擬化?輕量級的虛擬化僅隔離進(jìn)程和上下文相關(guān)資源模擬操作系統(tǒng)行為而不是硬件行為不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜特性更少的硬件資源需求,更快的運(yùn)行速度。相同硬件條件下,可同時(shí)支撐虛擬機(jī)的數(shù)量以及創(chuàng)建、啟動虛擬機(jī)的速度是全虛擬化的數(shù)十到數(shù)百倍典型代表:OpenVZ,LXC2021/5/935容器虛擬化技術(shù)傳統(tǒng)(硬件輔助)全虛擬化架構(gòu)容器虛擬化架構(gòu)2021/5/936容器虛擬化技術(shù)LXC簡介 LXC為LinuxContainer的簡寫??梢蕴峁┹p量級的虛擬化,以便隔離進(jìn)程和資源,而且不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜性。

提供了在單一可控主機(jī)節(jié)點(diǎn)上支持多個(gè)相互隔離的servercontainer同時(shí)執(zhí)行的機(jī)制。LinuxContainer有點(diǎn)像chroot,提供了一個(gè)擁有自己進(jìn)程和網(wǎng)絡(luò)空間的虛擬環(huán)境,但又有別于虛擬機(jī),因?yàn)閘xc是一種操作系統(tǒng)層次上的資源的虛擬化。

除了內(nèi)核特性之外,LXC提供了一套用戶態(tài)管理工具,常用的有: lxc-execute,lxc-start,lxc-kill,lxc-destroy,lxc-info,lxc-ps

等等2021/5/937容器虛擬化技術(shù)LXC的關(guān)鍵技術(shù)ControlGroups(cgoups) cgroups允許定義一個(gè)包括一個(gè)或多個(gè)進(jìn)程(例如,sshd、apache等),然后設(shè)置一系列資源控制和記賬選項(xiàng)來控制該組和其他子系統(tǒng)分離,包括:文件系統(tǒng)訪問、通用設(shè)備訪問、內(nèi)存資源、網(wǎng)絡(luò)設(shè)備資源、CPU帶寬、塊設(shè)備IO帶寬等POSIXFileCapabilities POSIX文件能力是一種分配權(quán)限給一個(gè)進(jìn)程允許更多的特定安全控制而不是傳統(tǒng)的’root’對應(yīng)’user’的常規(guī)unix操作系統(tǒng)權(quán)限分離2021/5/938容器虛擬化技術(shù)Docker簡介docker是一個(gè)基于LXC的高級容器引擎。Docker基于底層的LXC特性基礎(chǔ)上,在上層構(gòu)建了一套更高層次的具備多個(gè)強(qiáng)大功能的工具集。Docker定義了一個(gè)將應(yīng)用打包的規(guī)范,而它的所有依賴都被封裝到了一個(gè)簡單對象里,它可以被傳輸?shù)饺我庖慌_能運(yùn)行Docker的機(jī)器,并且在這里啟動Docker的實(shí)例之后,它能夠確保承載應(yīng)用的執(zhí)行環(huán)境將會與之前所定義的完全一致。2021/5/939容器虛擬化技術(shù)Docker的技術(shù)實(shí)現(xiàn): LXC≈Cgroup+namespace+Chroot+veth+用戶態(tài)控制腳本 Docker

≈LXC+AUFS+構(gòu)建與控制工具2021/5/940容器虛擬化技術(shù)Docker的常用命令示例

獲取docker:配置好centos-extras軟件源,yuminstalldocker

啟動docker:servicedockerstart或systemctlstartdocker.service

下載一個(gè)鏡像:dockerpullcentos

查看確認(rèn)鏡像:dockerimagescentos

運(yùn)行一個(gè)容器并進(jìn)入其bash:dockerrun-i–tcentos/bin/bash

查看正在運(yùn)行的容器列表:dockerps

在容器中安裝軟件包并退出:yuminstallwget;exit

保存容器:dockercommitid(dockerps查看的id的前2位即可)wget_centos(名稱)

停止容器:dockerstopid(dockerkill也類似,但stop發(fā)送SIGTERM,kill發(fā)送SIGKILL)2021/5/941容器虛擬化技術(shù)Docker的常用命令示例續(xù): host與容器之間拷貝文件:dockercpcontain_id:/tmp/a.txt/root(類似scp,也可以反過來從host拷貝到容器里,但需要先停止容器)

刪除一個(gè)容器:dockerrmid

刪除一個(gè)模板:dockerrmiimage_name

刪除所有容器:dockerrm`dockerps-a–q`

2021/5/942容器虛擬化技術(shù)容器虛擬化的局限虛擬機(jī)只能部署同類操作系統(tǒng)(Linux)基于相同內(nèi)核,虛擬機(jī)無法加載特定內(nèi)核模塊或驅(qū)動隔離性不如全虛擬化,host更容易受到影響2021/5/943Libvirt簡介什么是libvirtlibvirt是一套免費(fèi)、開源的支持Linux下主流虛擬化工具的C函數(shù)庫。

其旨在為包括kvm、vmware、xen、lxc等等在內(nèi)的各種虛擬化平臺提供一套方便、可靠的編程接口。

支持與C,C++,Ruby,Python,Java等多種主流開發(fā)語言的綁定。2021/5/944Libvirt簡介什么是libvirtlibvirt是一套免費(fèi)、開源的支持Linux下主流虛擬化工具的C函數(shù)庫。

其旨在為包括kvm、vmware、xen、lxc等等在內(nèi)的各種虛擬化平臺提供一套方便、可靠的編程接口。

支持與C,C++,Ruby,Python,Java等多種主流開發(fā)語言的綁定。2021/5/945Libvirt簡介更詳細(xì)的libvirt架構(gòu)圖2021/5/946Libvirt簡介Libvirt的優(yōu)點(diǎn):提供統(tǒng)一、穩(wěn)定、開放的源代碼的應(yīng)用程序接口(API)、守護(hù)進(jìn)程(libvirtd)和和一個(gè)默認(rèn)命令行管理工具(virsh)。提供了對虛擬化客戶機(jī)和它的虛擬化設(shè)備、網(wǎng)絡(luò)和存儲的管理。提供了一套較為穩(wěn)定的C語言應(yīng)用程序接口。目前,在其他一些流行的編程語言中也提供了對libvirt的綁定,在Python、Perl、Java、Ruby、PHP、OCaml等高級編程語言中已經(jīng)有l(wèi)ibvirt的程序庫可以直接使用。它對多種不同的Hypervisor的支持是通過一種基于驅(qū)動程序的架構(gòu)來實(shí)現(xiàn)的,便于擴(kuò)展。它作為中間適配層,屏蔽了底層各種Hypervisor的細(xì)節(jié),為上層管理工具提供了一個(gè)統(tǒng)一的、較穩(wěn)定的接口(API)。它使用XML來定義各種虛擬機(jī)相關(guān)的受管理對象。2021/5/947Libvirt簡介Libvirt中的主要對象

1)VirConnectPtr:代表了一個(gè)特定VMM建立的連接。每一個(gè)基于Libvirt的應(yīng)用程序都應(yīng)該先提供一個(gè)URI來指定本地或遠(yuǎn)程的某個(gè)VMM,從而獲得一個(gè)VirConnectPtr連接。比如qemu+ssh://host-virt/代表了通過ssh連接一個(gè)在host-virt機(jī)器上運(yùn)行的qemuVMM。拿到virConnectPtr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論