小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

云計算虛擬化技術(shù)

 代碼小伙兒 2021-02-17

虛擬化是云計算系統(tǒng)中的一種基礎(chǔ)技術(shù),可以說當(dāng)前一個云計算服務(wù)必定是構(gòu)建在虛擬化的基礎(chǔ)上的。

現(xiàn)代計算機系統(tǒng)是一個龐大的整體,整個計算機系統(tǒng)被分成了多個自下而上的層次,每一個層次都向上一層次呈現(xiàn)一個抽象,并且每一層只需知道下層抽象的接口,而不需要了解其內(nèi)部運作機制。這樣以層的方式抽象資源的好處是每一層只需要考慮本層設(shè)計以及與相鄰層間的相互交互,從而大大降低了系統(tǒng)設(shè)計的復(fù)雜性,提高了軟件的移植性。

本質(zhì)上,虛擬化就是由位于下層的軟件模塊,通過向上一層軟件模塊提供一個與它原先所期待的運行環(huán)境完全一致的接口的方法,抽象出一個虛擬的軟件或硬件接口,使得上層軟件可以直接運行在虛擬的環(huán)境上。虛擬化可以發(fā)生在現(xiàn)代計算機系統(tǒng)的各個層次上,不同層次的虛擬化會帶來不同的虛擬化概念。

虛擬化技術(shù)起始于IBM370體系結(jié)構(gòu),經(jīng)過四十余年的發(fā)展,當(dāng)前存在諸多實現(xiàn)在不同層次的虛擬化技術(shù),原理不盡相同,且每一種技術(shù)都相當(dāng)復(fù)雜。血衫整理了一些資料,大部分來源于本文開頭提到的文章——虛擬化技術(shù)的分類及介紹,對目前存在的較流行的虛擬化技術(shù)進行分類,并對其原理進行初步介紹,以便對紛繁復(fù)雜的虛擬化技術(shù)有個整體認(rèn)識,厘清不同虛擬化技術(shù)之間的相互關(guān)系。

零、虛擬化的分類

在虛擬化的語境中,物理資源通常有一個定語稱為宿主(Host),而虛擬出來的資源通常有一個定語稱為客戶(Guest)。

在計算機系統(tǒng)中,從底層至高層依次可分為:

1.硬件層2.操作系統(tǒng)層3.函數(shù)庫層4.應(yīng)用程序?qū)?/span>

在對某層實施虛擬化時,該層和上一層之間的接口不發(fā)生變化,而只變化該層的實現(xiàn)方式。

從使用虛擬資源的Guest的角度來看,虛擬化可發(fā)生在上述四層中的任一層。

應(yīng)當(dāng)注意,在對Guest的某一層進行虛擬化時,并未對Host在哪一層實現(xiàn)它作出要求,這一點是時常引起混淆的地方。

一、硬件層虛擬化/系統(tǒng)級虛擬化

實現(xiàn)在此層的虛擬化技術(shù)可以對整個計算機系統(tǒng)進行虛擬,即可將一臺物理計算機系統(tǒng)虛擬化為一臺或多臺虛擬計算機系統(tǒng),故又可稱作系統(tǒng)級虛擬化。

每個虛擬計算機系統(tǒng)(簡稱為虛擬機)都擁有自己的虛擬硬件(如CPU、內(nèi)存和設(shè)備等),來提供一個獨立的虛擬機執(zhí)行環(huán)境。

每個虛擬機中的操作系統(tǒng)可以完全不同,并且它們的執(zhí)行環(huán)境是完全獨立的。由于客戶機操作系統(tǒng)所能看到的是硬件抽象層,因此,客戶機操作系統(tǒng)的行為和在物理平臺上沒有什么區(qū)別。

在每臺虛擬機中都有屬于它的虛擬硬件,通過虛擬化層的模擬,虛擬機中的操作系統(tǒng)認(rèn)為自己仍然是獨占一個系統(tǒng)在運行,這個虛擬化層被稱為虛擬機監(jiān)控器(Virtual Machine Monitor,VMM)。VMM對物理資源的虛擬可以歸結(jié)為三個主要任務(wù):處理器虛擬化、內(nèi)存虛擬化和I/O虛擬化。其中,處理器虛擬化是VMM中最核心的部分,因為訪問內(nèi)存或進行I/O本身就是通過一些指令來實現(xiàn)的。

系統(tǒng)級虛擬化又可以按照實現(xiàn)方法分類和實現(xiàn)結(jié)構(gòu)進行:

·實現(xiàn)方法如果一個體系結(jié)構(gòu)上存在敏感指令不屬于特權(quán)指令,那么其就存在虛擬化漏洞。從解決虛擬化漏洞的實現(xiàn)方法出發(fā)分為如下三類:·仿真(Bochs),所有指令都采用模擬來實現(xiàn),就是取一條指令,就模擬出這條指令執(zhí)行的效果。這種方法稱作仿真。使用仿真方法的主要問題是速度會非常慢。由于每條指令都必須在底層硬件上進行仿真,因此速度減慢100倍的情況也并不稀奇。·完全虛擬化,無須對操作系統(tǒng)進行任何修改,因此這種方式被稱為完全虛擬化。Intel的VT-x和AMD的AMD-V是這一方向的代表。以VT-x為例,其在處理器上引入了一個新的執(zhí)行模式用于運行虛擬機,當(dāng)虛擬機執(zhí)行在這個特殊模式中時,它仍然面對的是一套完整的處理器寄存器集合和執(zhí)行環(huán)境。完全虛擬化的任何敏感操作都會被處理器截獲并報告給VMM,以此來避免虛擬化漏洞,典型的有知名的產(chǎn)品有:·VirtualBox·KVM·VMware Workstation和VMware vSphere·Xen·類虛擬化/半虛擬化(Xen和微軟的Hyper-V),通過修改操作系統(tǒng)內(nèi)核的代碼,使得操作系統(tǒng)內(nèi)核完全避免這些難以虛擬化的指令,避免了虛擬化漏洞。類虛擬化可以自定義出高度優(yōu)化的協(xié)議I/O。這種I/O協(xié)議完全基于事務(wù),可以達到近似物理機的速度。·實現(xiàn)結(jié)構(gòu)從Host實現(xiàn)VMM(是否偷懶?)的角度出發(fā),還可以將當(dāng)前主流的虛擬化技術(shù)按照實現(xiàn)結(jié)構(gòu)分為如下三類:·Hypervisor模型(VMware vSphere)在早期計算機界,操作系統(tǒng)被稱為Supervisor,因而能夠在其他操作系統(tǒng)上運行的操作系統(tǒng)被稱為 Hypervisor。在Hypervisor模型中,VMM首先可以被看做是一個完備的操作系統(tǒng),不過和傳統(tǒng)操作系統(tǒng)不同的是,VMM是為虛擬化而設(shè)計的,因此還具備虛擬化功能:·所有的物理資源如處理器、內(nèi)存和I/O設(shè)備等都?xì)wVMM所有,因此,VMM承擔(dān)著管理物理資源的責(zé)任·VMM需要向上提供虛擬機用于運行客戶機操作系統(tǒng),因此,VMM還負(fù)責(zé)虛擬環(huán)境的創(chuàng)建和管理。由于設(shè)備驅(qū)動開發(fā)的工作量是很大的,在實際的產(chǎn)品中,基于Hypervisor模型的VMM通常會根據(jù)產(chǎn)品定位,有選擇地挑選一些I/O設(shè)備來支持,而不是支持所有的I/O設(shè)備。·宿主模型(KVM、VirtualBox和VMware Workstation)在宿主模型中,物理資源由宿主機操作系統(tǒng)管理。VMM通常是宿主機操作系統(tǒng)獨立的內(nèi)核模塊。VMM通過調(diào)用宿主機操作系統(tǒng)的服務(wù)來獲得資源, 實現(xiàn)處理器、內(nèi)存和I/O設(shè)備的虛擬化。VMM創(chuàng)建出虛擬機之后,通常將虛擬機作為宿主機操作系統(tǒng)的一個進程參與調(diào)度。由于物理資源由宿主機操作系統(tǒng)控制,因此,VMM虛擬化的效率和功能會受到一定影響。安全方面,由于VMM是宿主機操作系統(tǒng)內(nèi)核的一部分,虛擬機的安全不僅依賴于VMM的安全,也依賴于宿主機操作系統(tǒng)的安全。·混合模型(Xen)混合模型是上述兩種模式的匯合體。VMM依然位于最低層,擁有所有的物理資源,但VMM 會主動讓出大部分I/O設(shè)備的控制權(quán),將它們交由一個運行在特權(quán)虛擬機中的特權(quán)操作系統(tǒng)控制。相應(yīng)地,VMM 虛擬化的職責(zé)也被分擔(dān).處理器和內(nèi)存的虛擬化依然由VMM來完成,而I/O的虛擬化則由VMM和特權(quán)操作系統(tǒng)共同合作來完成?;旌夏P图辛松鲜鰞煞N模型的優(yōu)點。VMM可以利用現(xiàn)有操作系統(tǒng)的I/O設(shè)備驅(qū)動程序,不需要另外開發(fā)。VMM直接控制處理器、內(nèi)存等物理資源,虛擬化的效率也比較高。采用這種模型的典型是。

另外,不是所有處理器架構(gòu)都能夠虛擬化的。

相同體系結(jié)構(gòu)的系統(tǒng)虛擬化通常會有比較好的性能,并且VMM實現(xiàn)起來也會比較簡單。這種情況下虛擬機的大部分指令可以在處理器上直接運行,只有那些與硬件資源關(guān)系密切的敏感指令才會由VMM進行處理。

此時面前的一個問題是,要能將這些敏感指令很好地篩選出來。但事實上,某些處理器在設(shè)計之初并沒有充分考慮虛擬化的需求,導(dǎo)致沒有辦法識別出所有的敏感指令,因而不具備一個完備的可虛擬化結(jié)構(gòu)。

為了VMM可以完全控制系統(tǒng)資源,它不允許虛擬機上操作系統(tǒng)直接執(zhí)行敏感指令。如果一個系統(tǒng)上所有敏感指令都是特權(quán)指令,則能夠用一個很簡單的方法來實現(xiàn)一個虛擬環(huán)境:將VMM運行在系統(tǒng)的最高特權(quán)級上,而將客戶機操作系統(tǒng)運行在非最高特權(quán)級上,當(dāng)客戶機操作系統(tǒng)因執(zhí)行敏感指令而陷入到VMM時,VMM模擬執(zhí)行引起異常的敏感指令。

判斷一個架構(gòu)是否可虛擬化,其核心就在于該結(jié)構(gòu)對敏感指令的支持上。如果一個架構(gòu)中所有敏感指令都是特權(quán)指令,則稱其為可虛擬化架構(gòu),否則稱為不可虛擬化架構(gòu)。

在x86架構(gòu)中,所有的特權(quán)指令都是敏感指令,然而并不是所有的敏感指令都是特權(quán)指令。

二、操作系統(tǒng)層虛擬化

操作系統(tǒng)層上的虛擬化是指操作系統(tǒng)的內(nèi)核可以提供多個互相隔離的用戶態(tài)實例。這些用戶態(tài)實例(經(jīng)常被稱為容器)對于它的用戶來說就像是一臺真實的計算機,有自己獨立的文件系統(tǒng)、網(wǎng)絡(luò)、系統(tǒng)設(shè)置和庫函數(shù)等。

由于這是操作系統(tǒng)內(nèi)核主動提供的虛擬化,因此操作系統(tǒng)層上的虛擬化通常非常高效,它的虛擬化資源和性能開銷非常小,也不需要有硬件的特殊支持。

但它的靈活性相對較小,每個容器中的操作系統(tǒng)通常必須是同一種操作系統(tǒng)。另外,操作系統(tǒng)層上的虛擬化雖然為用戶態(tài)實例間提供了比較強的隔離性,但其粒度是比較粗的。

在操作系統(tǒng)虛擬化技術(shù)中,每個節(jié)點上只有唯一的系統(tǒng)內(nèi)核,不虛擬任何硬件設(shè)備。通過使用操作系統(tǒng)提供的功能,多個虛擬環(huán)境之間可以相互隔離。

通常所說的容器(Container)技術(shù),如目前為止最流行的容器系統(tǒng)Docker,即屬于操作系統(tǒng)級虛擬化。

相比較于硬件層虛擬化,操作系統(tǒng)層虛擬化有以下優(yōu)點:

·操作系統(tǒng)領(lǐng)域一直以來面臨的一個主要挑戰(zhàn)來自于應(yīng)用程序間的相互獨立性和資源共享之間的矛盾,即每個應(yīng)用程序都希望能運行在一個相對獨立的系統(tǒng)環(huán)境下,不受到其他程序的干擾,同時又能以方便快捷的方式與其他程序交換和共享系統(tǒng)資源。當(dāng)前通用操作系統(tǒng)更強調(diào)程序間的互操作性,而缺乏對程序間相對獨立性的有效支持,然而對于許多分布式系統(tǒng)如Web服務(wù)、數(shù)據(jù)庫、游戲平臺等應(yīng)用領(lǐng)域,提供高效的資源互操作同保持程序間的相對獨立性具有同等重要的意義。主流虛擬化產(chǎn)品VMware和Xen等均采用Hypervisor模型。該模型通過將應(yīng)用程序運行在多個不同虛擬機內(nèi),實現(xiàn)對上層應(yīng)用程序的隔離。但由于Hypervisor 模型傾向于每個虛擬機都擁有一份相對獨立的系統(tǒng)資源,以提供更為完全的獨立性,這種策略造成處于不同虛擬機內(nèi)的應(yīng)用程序間實現(xiàn)互操作非常困難。例如, 即使是運行在同一臺物理機器上,如果處于不同虛擬機內(nèi),那么應(yīng)用程序間仍然只能通過網(wǎng)絡(luò)進行數(shù)據(jù)交換,而非共享內(nèi)存或者文件。而如果使用容器技術(shù),由于各容器共享同一個宿主操作系統(tǒng),能夠在滿足基本的獨立性需求的同時提供高效的系統(tǒng)資源共享支持。·容器技術(shù)還可以更高效地使用系統(tǒng)資源,由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,相比虛擬機技術(shù),一個相同配置的主機,往往可以運行更多數(shù)量的應(yīng)用。·容器還具有更快速的啟動時間,傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘,而對于容器由于,直接運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng),因此可以做到秒級、甚至毫秒級的啟動時間,大大的節(jié)約了應(yīng)用開發(fā)、測試、部署的時間。

操作系統(tǒng)級的虛擬化實現(xiàn)包括:

1.chroot容器的概念始于 1979 年的 UNIX chroot,它是一個 UNIX 操作系統(tǒng)上的系統(tǒng)調(diào)用,用于將一個進程及其子進程的根目錄改變到文件系統(tǒng)中的一個新位置,讓這些進程只能訪問到該目錄。這個功能的想法是為每個進程提供獨立的磁盤空間。其后在 1982年,它被加入到了 BSD 系統(tǒng)中。2.LXCLXC 的意思是 LinuX Containers,它是第一個最完善的 Linux 容器管理器的實現(xiàn)方案,是通過 cgroups 和 Linux namespace 實現(xiàn)的。LXC 存在于 liblxc 庫中,提供了各種編程語言的 API 實現(xiàn),包括 Python3、Python2、Lua、Go、Ruby 和 Haskell 等。與其它容器技術(shù)不同的是, LXC 可以工作在普通的 Linux 內(nèi)核上,而不需要增加補丁。現(xiàn)在 LXC project 是由 Canonical 公司贊助并托管的。3.DockerDocker 是到現(xiàn)在為止最流行和使用廣泛的容器管理系統(tǒng)。它最初是一個叫做 dotCloud 的 PaaS 服務(wù)公司的內(nèi)部項目,后來該公司改名為 Docker。Docker 開始階段使用的也是 LXC ,之后采用自己開發(fā)的 libcontainer 替代了它。不像其它的容器平臺,Docker 引入了一整個管理容器的生態(tài)系統(tǒng),這包括高效、分層的容器鏡像模型、全局和本地的容器注冊庫、清晰的 REST API、命令行等等。4.Linux VServerLinux-VServer 也是一個操作系統(tǒng)級虛擬化解決方案。Linux-VServer 對 Linux 內(nèi)核進行虛擬化,這樣多個用戶空間環(huán)境—又稱為 Virtual Private Server(VPS) 就可以單獨運行,而不需要互相了解。Linux-VServer 通過修改 Linux 內(nèi)核實現(xiàn)用戶空間的隔離。Linux-VServer 也使用了 chroot 來為每個 VPS 隔離 root 目錄。雖然 chroot 允許指定新 root 目錄,但還是需要其他一些功能(稱為 Chroot-Barrier)來限制 VPS 脫離其隔離的 root 目錄回到上級目錄。給定一個隔離的 root 目錄之后,每個 VPS 就可以擁有自己的用戶列表和 root 密碼。5.Virtuozzo/OpenVZVirtuozzo是SWsoft公司(目前SWsoft已經(jīng)改名為Parallels)的操作系統(tǒng)虛擬化軟件的命名,Virtuozzo是商業(yè)解決方案,而OpenVZ是以Virtuozzo為基礎(chǔ)的開源項目,它們采用的也是操作系統(tǒng)級虛擬化技術(shù)。OpenVZ 類似于 Linux-VServer,它通過對 Linux 內(nèi)核進行補丁來提供虛擬化、隔離、資源管理和狀態(tài)檢查。每個 OpenVZ 容器都有一套隔離的文件系統(tǒng)、用戶及用戶組等。

三、函數(shù)庫層虛擬化

操作系統(tǒng)通常會通過應(yīng)用級的庫函數(shù)提供給應(yīng)用程序一組服務(wù),例如文件操作服務(wù)、時間操作服務(wù)等。這些庫函數(shù)可以隱藏操作系統(tǒng)內(nèi)部的一些細(xì)節(jié),使得應(yīng)用程序編程更為簡單。

不同的操作系統(tǒng)庫函數(shù)有著不同的服務(wù)接口,例如Linux的服務(wù)接口是不同于Windows的。

庫函數(shù)層上的虛擬化就是通過虛擬化操作系統(tǒng)的應(yīng)用級庫函數(shù)的服務(wù)接口,使得應(yīng)用程序不需要修改,就可以在不同的操作系統(tǒng)中無縫運行,從而提高系統(tǒng)間的互操作性。

例如,Wine就是在Linux上模擬了Windows的庫函數(shù)接口,使得一個Windows應(yīng)用程序能夠在Linux上正常運行。

四、應(yīng)用程序虛擬化

編程語言層上的虛擬機稱為語言級虛擬機,例如JVM(Java Virtual Machine)和微軟的CLR(Common Language Runtime)。

這一類虛擬機運行的是進程級的作業(yè),所不同的是這些程序所針對的不是一個硬件上存在的體系結(jié)構(gòu),而是一個虛擬體系結(jié)構(gòu)。這些程序的代碼首先被編譯為針對其虛擬體系結(jié)構(gòu)的中間代碼,再由虛擬機的運行時支持系統(tǒng)翻譯為硬件的機器語言進行執(zhí)行。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多