做網(wǎng)站的銷售團隊站長之家最新網(wǎng)站
前言
大家好我是jiantaoyab,這是我所總結(jié)作為學習的筆記第十八篇,在這里分享給大家,這篇文章講虛擬技術(shù)就是大家平時用到的云服務(wù)器是什么。
虛擬機技術(shù)變遷
虛擬機(Virtual Machine)技術(shù),其實就是指在現(xiàn)有硬件的操作系統(tǒng)上,能夠模擬一個計算機系統(tǒng)的技術(shù)。而模擬一個計算機系統(tǒng),最簡單的辦法,其實不能算是虛擬機技術(shù),而是一個模擬器(Emulator)。
解釋型虛擬機
要模擬一個計算機系統(tǒng),最簡單的辦法,就是兼容這個計算機系統(tǒng)的指令集。我們可以開發(fā)一個應(yīng)用程序,跑在我們的操作系統(tǒng)上。
這個應(yīng)用程序呢,可以識別我們想要模擬的、計算機系統(tǒng)的程序格式和指令,然后一條條去解釋執(zhí)行。
在這個過程中,我們把原先的操作系統(tǒng)叫作宿主機(Host),把能夠有能力去模擬指令執(zhí)行的軟件,叫作模擬器(Emulator),而實際運行在模擬器上被“虛擬”出來的系統(tǒng)呢,我們叫客戶機(Guest VM)。
開發(fā)機上跑的 Android 模擬器,其實就是這種方式。
這種解釋執(zhí)行方式的最大的優(yōu)勢就是,模擬的系統(tǒng)可以跨硬件。
比如,Android 手機用的 CPU 是 ARM 的,而開發(fā)機用的是 Intel X86 的,兩邊的 CPU 指令集都不一樣,但是一樣可以正常運行。
Type-2
我們需要一個“全虛擬化”的技術(shù),也就是說,我們可以在現(xiàn)有的物理服務(wù)器的硬件和操作系統(tǒng)上,去跑一個完整的、不需要做任何修改的客戶機操作系統(tǒng)(Guest OS)。
那么,我們怎么在一個操作系統(tǒng)上,再去跑多個完整的操作系統(tǒng)呢?
答案就是就是加入一個中間層。在虛擬機技術(shù)里面,這個中間層就叫作虛擬機監(jiān)視器,英文叫 VMM(Virtual Machine Manager)或Hypervisor。
如果說我們宿主機的 OS 是房東的話,這個虛擬機監(jiān)視器呢,就好像一個二房東。我們運行的虛擬機,都不是直接和房東打交道,而是要和這個二房東打交道。我們跑在上面的虛擬機呢,會把整個的硬件特征都映射到虛擬機環(huán)境里,這包括整個完整的 CPU 指令集、I/O 操作、中斷等等。
在 Type-2 虛擬機里,虛擬機監(jiān)視器好像一個運行在操作系統(tǒng)上的軟件。客戶機的操作系統(tǒng)把最終到硬件的所有指令,都發(fā)送給虛擬機監(jiān)視器。而虛擬機監(jiān)視器,又會把這些指令再交給宿主機的操作系統(tǒng)去執(zhí)行。
Type-1
在數(shù)據(jù)中心里面用的虛擬機,我們通常叫作 Type-1 型的虛擬機。
這個時候,客戶機的指令交給虛擬機監(jiān)視器之后呢,不再需要通過宿主機的操作系統(tǒng),才能調(diào)用硬件,而是可以直接由虛擬機監(jiān)視器去調(diào)用硬件。
另外,在數(shù)據(jù)中心里面,我們并不需要在 Intel x86 上面去跑一個 ARM 的程序,而是直接在 x86 上虛擬一個 x86 硬件的計算機和操作系統(tǒng)。所以,我們的指令不需要做什么翻譯工作,可以直接往下傳遞執(zhí)行就好了,所以指令的執(zhí)行效率也會很高。
所以,在 Type-1 型的虛擬機里,我們的虛擬機監(jiān)視器其實并不是一個操作系統(tǒng)之上的應(yīng)用層程序,而是一個嵌入在操作系統(tǒng)內(nèi)核里面的一部分。
無論是 KVM、XEN 還是微軟自家的 Hyper-V,其實都是系統(tǒng)級的程序。
Docker
Type-1 型的虛擬機有一個資源的浪費,在我們實際的物理機上,我們可能同時運行了多個的虛擬機,而這每一個虛擬機,都運行了一個屬于自己的單獨的操作系統(tǒng)。
多運行一個操作系統(tǒng),意味著我們要多消耗一些資源在 CPU、內(nèi)存乃至磁盤空間上。
其實我們很多時候想要租用的不是“獨立服務(wù)器”,而是獨立的計算資源。
在服務(wù)器領(lǐng)域,我們開發(fā)的程序都是跑在 Linux 上的。其實我們并不需要一個獨立的操作系統(tǒng),只要一個能夠進行資源和環(huán)境隔離的“獨立空間”就好了。使用 Docker 來搭建微服務(wù)。
mg-10N78Av6-1710751743445)]
[外鏈圖片轉(zhuǎn)存中…(img-U6YIWV1k-1710751743446)]
通過 Docker,我們不再需要在操作系統(tǒng)上再跑一個操作系統(tǒng),而只需要通過容器編排工具,比如 Kubernetes 或者 Docker Swarm,能夠進行各個應(yīng)用之間的環(huán)境和資源隔離就好了。