談?wù)勌摂M化技術(shù)深度解密(上)
發(fā)展歷史
早在計(jì)算機(jī)還是龐然大物的上世紀(jì)60年代,虛擬化技術(shù)已經(jīng)開始悄悄發(fā)展了。
- 1964年 IBM M44/44X被認(rèn)為是世界上***個(gè)支持虛擬化的系統(tǒng),其技術(shù)方式是:像分時(shí)系統(tǒng)一樣,在每個(gè)時(shí)間片,一個(gè)IBM 7044大型機(jī)獨(dú)占所有硬件資源來運(yùn)行,并且提出了分頁的概念,由于其依賴硬件來實(shí)現(xiàn)虛擬化,史稱硬件虛擬化。
- 1974年,論文Formal requirements for virtualizable third generation architectures提出了虛擬化系統(tǒng)結(jié)構(gòu)的三個(gè)基本條件[1]。
- 1972年著名的天才法國程序員Fabrice Bellard出生。
- 1979年的 Unix 第7版引入了 chroot 機(jī)制,chroot 就是讓一個(gè)進(jìn)程把指定的目錄作為根目錄,它的所有文件系統(tǒng)操作都只能在這個(gè)指定目錄里進(jìn)行。
- 1990年 Xen hypervisor 的Xenoserver初始代碼工程由 Keir Fraser 和 Ian Pratt 創(chuàng)建。
- 1998年,很著名的 X86 模擬器 Bochs 出現(xiàn)了,其正式版本的推出時(shí)間為1998年11月。
- 1999年,Vmware 公司率先推出針對 X86 平臺(tái)的商用虛擬機(jī) Vmaware workstation。
- 2001年,目前***的采用動(dòng)態(tài)二進(jìn)制翻譯技術(shù)的虛擬化軟件 Qemu(Quick EMUlator) 發(fā)布***個(gè)版本,其作者是Fabrice Bellard。
- 2003年,劍橋大學(xué)發(fā)布了*** Public 的 Xen 版本,通過半虛擬化技術(shù)實(shí)現(xiàn)了對包括 x86-64 平臺(tái)多個(gè)平臺(tái)的虛擬化支持。
- 同年,Intel 公布了將在 x86 平臺(tái)的 CPU 上支持虛擬化技術(shù) VT。
- 2007年1月,Sun 公司發(fā)布了開源虛擬化 VirtualBox 。
- 2007年2月,Linux Kernel 主線版本2.6.20合入了由以色列公司 Qumranet開發(fā)的 KVM(Kernel-based Virtual Machine ),支持KVM的前提是 CPU 必須要支持硬件虛擬化。
- 2008年***季度,微軟連同 Windows Server 2008 同時(shí)發(fā)布了虛擬化產(chǎn)品 Hyper-V。
- 2008年6月, Linux Container 發(fā)布了0.1.0版本,其可以提供輕量級的虛擬化,用來隔離進(jìn)程和資源。
- 2008年9月4,Red Hat 收購了色列公司 Qumranet,并著手開始用 KVM 替換在 Red Hat 中的使用的 Xen [Xen開始在主流Linux 發(fā)行廠商中衰落]。
- 2010年10月21日,NASA 發(fā)布了可以提供基礎(chǔ)設(shè)施即服(IaaS)服務(wù)的云平臺(tái) OpenStack ,并提供了***個(gè)版本。
- 2011年1月11日,Ubuntu的創(chuàng)始人 Mark shuttleworth 宣布,Ubuntu 將采用 Openstack 作為基礎(chǔ)的云平臺(tái),在之前的版本 Ubuntu 采用的是 Eucalyptus。
- 2013年3月15,在加利福尼亞州圣克拉拉召開的 Python 開發(fā)者大會(huì)上,DotCloud 的創(chuàng)始人兼***執(zhí)行官 Solomon Hvkes 在一場僅五分鐘的微型演講中,***提出了 Docker 這一概念,并于會(huì)后將源碼進(jìn)行了開源,托管在了Github上。
- 2014年6月,Docker發(fā)布了***個(gè)正式版本1.0,彼時(shí),Docker的下載量已經(jīng)超過 275萬次 ,1年之內(nèi) Redhat 和 AWS 就宣布為 Docker 提供官方支持。
- 2015年國外國內(nèi)涌現(xiàn)各種從事云的公司,并提供了各種云服務(wù),諸如Laas,Paas,Saas等。
從上述時(shí)間線,我們的發(fā)現(xiàn),各種如春筍般的新技術(shù)的出現(xiàn),必將有舊技術(shù)的沒落,技術(shù)的革新比我們想象的要快太多。
基礎(chǔ)概念
什么是虛擬化?
這里簡單歸納一下我的理解:
1. 虛擬化是資源的一種邏輯表示,并不會(huì)受限于物理資源。
2. 運(yùn)行的環(huán)境不在真實(shí)的硬件上,而是硬件之上的虛擬內(nèi)存中的一段,或者說是虛擬的環(huán)境中。
3. 虛擬化為數(shù)據(jù)、計(jì)算能力、存儲(chǔ)資源等提供了一個(gè)邏輯視圖,而不是物理視圖。
4. 虛擬化的發(fā)展,大幅降低了IT硬件成本,減少了資源的浪費(fèi),并且提升了系統(tǒng)的穩(wěn)定性和安全性。
全虛擬化
全虛擬化(Full Virtualization)也稱為原始虛擬化技術(shù),該模型使用虛擬機(jī)協(xié)調(diào)Guest操作系統(tǒng)和原始硬件,VMM在Guest操作系統(tǒng)和裸硬件之間用于工作協(xié)調(diào),一些受保護(hù)指令必須由Hypervisor(虛擬機(jī)管理程序)來捕獲處理。 全虛擬化的運(yùn)行速度要快于硬件模擬,但是性能方面不如裸機(jī),因?yàn)镠ypervisor需要占用一些資源。
半虛擬化
半虛擬化(Para Virtualization)是另一種類似于全虛擬化的技術(shù),它使用Hypervisor分享存取底層的硬件,但是它的Guest操作系統(tǒng)集成了虛擬化方面的代碼。該方法無需重新編譯或引起陷阱,因?yàn)椴僮飨到y(tǒng)自身能夠與虛擬進(jìn)程進(jìn)行很好的協(xié)作。 半虛擬化需要Guest操作系統(tǒng)做一些修改,使Guest操作系統(tǒng)意識到自己是處于虛擬化環(huán)境的,但是半虛擬化提供了與原操作系統(tǒng)相近的性能。
虛擬化技術(shù)的關(guān)鍵特性
同質(zhì) - Equivalence
即VM的運(yùn)行環(huán)境和物理機(jī)的環(huán)境在本質(zhì)上是相同的,表現(xiàn)上允許有一些差異。如CPU的橋片必須一致,CPU core的個(gè)數(shù)以及內(nèi)存可以不同,不必使用同類型的網(wǎng)絡(luò)適配器驅(qū)動(dòng)等等。
高效 - Efficiency
即VM的性能必須接近物理機(jī)。因此,常見的虛擬系統(tǒng)模擬器(Boches,simics等)就不能成為VM。為達(dá)此目的,軟件在虛擬系統(tǒng)上運(yùn)行時(shí),大多數(shù)指令要直接運(yùn)行在硬件上執(zhí)行,只有少量指令需要VMM的模擬或翻譯處理。
資源受控 - Resource control
即VMM(Virtual Machine Monitor)對物理機(jī)的所有資源有絕對的控制力。虛擬機(jī)不允許直接執(zhí)行敏感指令。