我目前的工作是做aiops,為基礎(chǔ)設(shè)施的運(yùn)維指標(biāo)數(shù)據(jù)提供基于算法的分析,提前發(fā)現(xiàn)業(yè)務(wù)運(yùn)維的故障,降低故障的解決時(shí)間。對于基礎(chǔ)設(shè)施的底層接觸不多,但是希望把底層摸透。
虛擬機(jī)是什么?
虛擬機(jī)(英文:virtual machine),在計(jì)算機(jī)科學(xué)中的體系結(jié)構(gòu)中,是指一種特殊的軟件,可以在計(jì)算機(jī)平臺(tái)和終端用戶之間創(chuàng)建一種環(huán)境,而終端用戶則是基于虛擬機(jī)這個(gè)軟件所創(chuàng)建的環(huán)境來操作其他軟件。虛擬機(jī)(vm)是計(jì)算機(jī)系統(tǒng)的仿真器,通過軟件模擬具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算系統(tǒng),能提供物理計(jì)算機(jī)的功能。
目的,模擬計(jì)算機(jī)系統(tǒng)環(huán)境。
虛擬機(jī)比較
下列的軟件產(chǎn)品可以用來虛擬硬件,所以可以用在各種操作系統(tǒng)。


私有是付費(fèi)的,免費(fèi)的功能會(huì)很少,GPL是開源的,即自有軟件。
什么是虛擬化?
虛擬化(技術(shù))是一種資源管理技術(shù),是將計(jì)算機(jī)的各種實(shí)體資源(CPU、內(nèi)存、磁盤空間、網(wǎng)絡(luò)適配器等),予以抽象、轉(zhuǎn)換后呈現(xiàn)出來并可供分隔、組合為一個(gè)或多個(gè)電腦配置環(huán)境。
虛擬化技術(shù)是一個(gè)廣義的術(shù)語,根據(jù)不同的對象類型可以細(xì)分為:
- 平臺(tái)虛擬化(platform virtualization):針對計(jì)算機(jī)和操作系統(tǒng)的虛擬化。
- 資源虛擬化(resource virtualization):針對特定的系統(tǒng)資源的虛擬化,如內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)資源等。
-
應(yīng)用程序虛擬化(application virtualization):包括仿真、模擬、解釋技術(shù)等,如java虛擬機(jī)(JVM)。
image.png
1960中期,IBM在Thomas J.Watson Reasearch Center(NY)進(jìn)行M44/44X計(jì)算機(jī)研究項(xiàng)目。M44/44X項(xiàng)目基于IBM 7044(M44)實(shí)現(xiàn)了多個(gè)具有突破性的虛擬化概念,包括部分硬件共享(partial hardware sharing)、時(shí)間共享(time sharing)、內(nèi)存分頁(memory paging)以及實(shí)現(xiàn)了虛擬內(nèi)存管理的VMM。
中期發(fā)展的類型I和類型II跳過
直到上世紀(jì)80-90年代,intel公司(戈登 摩爾)提出了摩爾定律,windows、MAC等PC(personal computer)電腦被廣泛使用,wintel聯(lián)盟勢如破竹,還出現(xiàn)了神一般的linux服務(wù)器操作系統(tǒng)。
隨著x86服務(wù)器和桌面部署的增長也為企業(yè)IT基礎(chǔ)架構(gòu)帶來了新的難題:
- 基礎(chǔ)架構(gòu)利用率低
- 基礎(chǔ)架構(gòu)成本高
- IT運(yùn)維成本高
- 故障切換和災(zāi)難保護(hù)不足
- 最終用戶桌面的維護(hù)成本高昂
而解決這些難題就是新時(shí)代賦予虛擬化技術(shù)的歷史任務(wù),整個(gè)80-90年代,虛擬化技術(shù)及公司如雨后春筍般涌現(xiàn)。
1.虛擬化的發(fā)展:縱觀虛擬化技術(shù)的發(fā)展歷史,可以看到它始終如一的目標(biāo)就是實(shí)現(xiàn)對IT資源的充分利用。
2.虛擬化與云計(jì)算:虛擬化是IT資源的抽象,云計(jì)算則是基于虛擬化實(shí)現(xiàn)的更上層的對企業(yè)業(yè)務(wù)能力的抽象。
3.云計(jì)算與開源:開源是引誘開發(fā)者的蘋果,而開發(fā)者則是企業(yè)的核心資產(chǎn)。
Vmware、Xen、KVM、Docker區(qū)別
Vmware
VMM模擬執(zhí)行的就是CPU指令。對于虛擬機(jī)中的操作系統(tǒng),VMM需要完整模擬底層的硬件設(shè)備,包括處理器、內(nèi)存、時(shí)鐘、I/O設(shè)備、中斷等等,換句話說,VMM用純軟件的形式"模擬"出一臺(tái)計(jì)算機(jī)供虛擬機(jī)中的操作系統(tǒng)使用。
這種完全模擬一臺(tái)計(jì)算機(jī)的技術(shù)也成為全虛擬化,這樣做的好處顯而易見,虛擬機(jī)中的操作系統(tǒng)感知不到自己是在虛擬機(jī)中,代碼午需任何改動(dòng),直接可以安裝。而缺點(diǎn)也是可以想象:完全用軟件模擬,轉(zhuǎn)換翻譯執(zhí)行,性能堪憂!
這個(gè)模擬過程實(shí)際上相當(dāng)?shù)膹?fù)雜,涉及到大量底層技術(shù),并且如此模擬費(fèi)時(shí)費(fèi)力,于是催生出了半虛擬化,就是下面要解釋的XEN。
XEN
如果把操作系統(tǒng)中所有執(zhí)行敏感指令的地方都改掉,改程一個(gè)接口調(diào)用(HyperCall),接口的提供方VMM實(shí)現(xiàn)對應(yīng)處理,省去了捕獲和模擬硬件流程等一大段工作,性能將獲得大幅度提升。
這就是半虛擬化,這項(xiàng)技術(shù)的代表就是XEN,一個(gè)誕生于2003年的開源項(xiàng)目。
這項(xiàng)技術(shù)一個(gè)最大的問題是:需要修改操作系統(tǒng)源碼,做響應(yīng)的適配工作。這對于像linux這樣的開源軟件還能接受,充其量多了些工作量。但是對于windows這樣閉源的商業(yè)操作系統(tǒng),修改它的代碼,是無發(fā)做到的。
vmware從5.5版本開始引入對硬件輔助虛擬化的支持,隨后在2011年的8.0版本中正式全面支持。于是乎,我們在創(chuàng)建虛擬機(jī)的時(shí)候,可以選擇要使用哪一種虛擬化引擎技術(shù),是用原先的二進(jìn)制翻譯執(zhí)行,還是基于硬件輔助虛擬化的新型技術(shù)。
同一時(shí)期的XEN從3.0版本也加入對硬件輔助虛擬化的支持,從此基于XEN的虛擬機(jī)中也能夠運(yùn)行windows系統(tǒng)了。
KVM-QEMU
有了硬件輔助虛擬化的加持,虛擬化技術(shù)開始呈現(xiàn)井噴之勢。virtualbox、hyper-V、kvm等技術(shù)如雨后春筍般接連面世。這其中在云計(jì)算領(lǐng)域聲名鵲起的當(dāng)屬開源的KVM技術(shù)。
KVM全稱for Kernel-based virtual machine,意為基于內(nèi)核的虛擬機(jī)。
在虛擬化底層技術(shù)上,kvm和vmware后續(xù)版本一樣,都是基于硬件輔助虛擬化實(shí)現(xiàn)。
不同的是vmware作為獨(dú)立的第三方軟件可以安裝在linux、windows、macos等多種不同的操作系統(tǒng)之上,而kvm作為一項(xiàng)虛擬化技術(shù)已經(jīng)集成到linux內(nèi)核之中,可以認(rèn)為linux內(nèi)核本身就是一個(gè)hypervisor,這也是kvm名字的含義,因此kvm技術(shù)只能在linux服務(wù)器上使用。
kvm技術(shù)常常搭配qemu一起使用,成為kvm-qemu架構(gòu)。前面提到,在x86架構(gòu)CPU的硬件輔助虛擬化技術(shù)誕生之前,qemu就已經(jīng)采用全套軟件模擬的辦法來實(shí)現(xiàn)虛擬化,只不過這種方案下的執(zhí)行能力非常低下。
KVM本身基于硬件輔助虛擬化,僅僅實(shí)現(xiàn)CPU和內(nèi)存的虛擬化,但是一臺(tái)計(jì)算機(jī)不僅僅有CPU和內(nèi)存,還需要各種各樣的I/O設(shè)備,不過KVM不負(fù)責(zé)這些。這個(gè)時(shí)候,QEMU就和KVM搭上線了,經(jīng)過改造后的QEMU,負(fù)責(zé)外部設(shè)備的虛擬,KVM負(fù)責(zé)底層執(zhí)行引擎和內(nèi)存的虛擬,兩者彼此互補(bǔ),成為新一代云計(jì)算虛擬化方案的寵兒。
容器技術(shù)-LXC & Docker
不同于虛擬化技術(shù)要完整虛擬化一臺(tái)計(jì)算機(jī),容器技術(shù)更像是操作系統(tǒng)層面的虛擬化,它只需要虛擬出一個(gè)操作系統(tǒng)環(huán)境。
XC技術(shù)就是這種方案的一個(gè)典型代表,全稱是Linux Container,通過linux內(nèi)核的Cgroups技術(shù)和namespace技術(shù)的支撐,隔離操作系統(tǒng)文件、網(wǎng)絡(luò)等資源,在原生操作系統(tǒng)上隔離出一個(gè)單獨(dú)的空間,將應(yīng)用程序至于其中運(yùn)行,這個(gè)空間的形態(tài)上類似于一個(gè)容器將應(yīng)用程序包含在其中,故取名容器技術(shù)。
舉個(gè)不是太恰當(dāng)?shù)谋扔?,一套原來是三居室的房子,被二房東拿來改造成三個(gè)一居室的套間,每個(gè)一居室套間里面都配備了衛(wèi)生間和廚房,對于住在里面的人
