偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

從虛擬機(jī)到容器,詳談各種服務(wù)虛擬化技術(shù)及其應(yīng)用場景

云計算 虛擬化
近幾年容器(Container)、Kubernetes等技術(shù)在數(shù)據(jù)中心、云計算、各互聯(lián)網(wǎng)公司的業(yè)務(wù)服務(wù)中得到廣泛應(yīng)用。

本文轉(zhuǎn)載自微信公眾號「 jameswhale的技術(shù)人生」,轉(zhuǎn)載本文請聯(lián)系 jameswhale的技術(shù)人生公眾號。

原文鏈接:https://mp.weixin.qq.com/s/LOXB36aevXoH9EQHFr5E9Q

原文出處: jameswhale的技術(shù)人生

微信公眾號的ID:jameswhale的技術(shù)人生

[[329556]]

前言

近幾年容器(Container)、Kubernetes等技術(shù)在數(shù)據(jù)中心、云計算、各互聯(lián)網(wǎng)公司的業(yè)務(wù)服務(wù)中得到廣泛應(yīng)用,和20世紀(jì)60年代就興起的虛擬機(jī)(Virtual Machine,VM)技術(shù)一樣,容器也是一種服務(wù)虛擬化技術(shù)(Server Virtualization),但是它更加輕量,同時將焦點從Machine轉(zhuǎn)移到Application,極大提高了開發(fā)、測試、生產(chǎn)環(huán)境部署的效率,不過其安全性和隔離性比虛擬機(jī)稍遜一籌,在一些場景下也無法完全替代虛擬機(jī)。本文主要從以下幾部分來梳理虛擬機(jī)和容器技術(shù),詳細(xì)講一下他們的區(qū)別與聯(lián)系。

  • 為何需要服務(wù)虛擬化技術(shù)
  • 虛擬化技術(shù)分類
  • Host-based server virtualization(虛擬機(jī))架構(gòu)
  • OS virtualization(容器)架構(gòu)
  • 內(nèi)核對容器的支持
  • 虛擬機(jī)技術(shù)舉例(VMWare ESXi)
  • 容器技術(shù)舉例(Docker Container)
  • 虛擬化技術(shù)在云平臺的應(yīng)用( Google Cloud Platform, GCP )

為何需要服務(wù)虛擬化技術(shù)?

  1. 節(jié)省硬件資源(機(jī)房、服務(wù)器、冷卻系統(tǒng)等),提高資源利用率:12306網(wǎng)站的負(fù)載存在明顯的峰值和低谷(節(jié)日前夕較大,春運最為明顯,而在平時則比較低),若完全用實體服務(wù)器去抗峰值流量,在平時則會出現(xiàn)巨大浪費。通過服務(wù)虛擬化(Server Virtualization/Machine Virtualization)技術(shù)構(gòu)建的云計算平臺(Cloud Computer Platform)則可以有效解決這一難題,峰值時增加算力去滿足購票需求,低谷時則將算力售賣出去以提高資源的利用率。騰訊云可以按照CPU、內(nèi)存、存儲(比如1C/1G/50GB)等方式對外提供服務(wù),普通用戶不用為購買服務(wù)器、搭建機(jī)房、規(guī)劃網(wǎng)絡(luò)訪問、數(shù)據(jù)容災(zāi)而煩勞,就像購買水、電、煤氣等基本市政服務(wù)一樣。
  2. 邏輯資源整合:通過虛擬機(jī)(Virtual Machine,簡稱VM)技術(shù),多個不同的Guest操作系統(tǒng)(及運行在其上的各種應(yīng)用程序)可以運行在一臺物理服務(wù)器上面,例如,郵件服務(wù)器、數(shù)據(jù)庫服務(wù)器、Web服務(wù)器等應(yīng)用可以部署在一起,同時可以做到有效的隔離(資源和訪問)。
  3. 服務(wù)器可移植性:Virtual Machine Monitor/Hypervisor屏蔽底層差異,同一Guest操作系統(tǒng)可以在硬件架構(gòu)完全不同的服務(wù)器上運行(Mac,X86等),沒有硬件依賴,它可以從一種硬件服務(wù)器遷移到另外一臺完全不同的硬件服務(wù)器,不需要做改變和適配,用戶無感知。
  4. 應(yīng)用程序可靠性:虛擬機(jī)(VM)所在的硬件服務(wù)器損壞后,可以快速遷移到另外一臺硬件服務(wù)器(都部署有Virtual Machine Monitor/Hypervisor),極大提高了其中運行的應(yīng)用程序的可靠性。容器(Container)所在的Linux服務(wù)器無法訪問后,容器管理者(比如,K8s)可以在另外一臺Linux服務(wù)器創(chuàng)建一個新容器,業(yè)務(wù)不會受到影響。(借助虛擬機(jī)技術(shù),容器也可以在非Linux服務(wù)器上運行,Guest操作系統(tǒng)為Linux即可。)
  5. 網(wǎng)絡(luò)和存儲也在采用虛擬化技術(shù):從使用獨立磁盤冗余陣列(RAID)開始,存儲虛擬化已經(jīng)出現(xiàn)了很多年,RAID提供了一種對物理磁盤進(jìn)行邏輯分組并將這些分組作為一個或多個虛擬磁盤呈現(xiàn)給操作系統(tǒng)的方法。華為的OceanStor系列存儲陣列屬于存儲區(qū)域網(wǎng)絡(luò)(SAN),通過DevLun(設(shè)備邏輯單元號)來呈現(xiàn)給上層主機(jī)訪問,內(nèi)部封裝了各種算法(SmartVirtualiztion,SmartQos,smartPartition等)保障主機(jī)的I/O訪問質(zhì)量。網(wǎng)絡(luò)虛擬化是另一種已經(jīng)存在了幾十年的虛擬化形式,例如,虛擬局域網(wǎng)(VLAN)長期以來提供了一種對物理網(wǎng)絡(luò)交換機(jī)進(jìn)行邏輯細(xì)分的方法。因此,主機(jī)對其本地交換機(jī)的視圖并不局限于它所連接的交換機(jī)的物理組成,而是由VLAN本身的邏輯表示來確定。

服務(wù)虛擬化技術(shù)的分類

  • 基于主機(jī)的服務(wù)器虛擬化技術(shù)(Host-based server virtualization ,虛擬機(jī))允許具有不同操作系統(tǒng)的多個虛擬機(jī)(Virtual Machine)在同一物理主機(jī)系統(tǒng)上并發(fā)運行,又可以細(xì)分為如下三類。
  1. 完全虛擬化(Full virtualization):完全虛擬化提供了完整的硬件模擬,這有一個優(yōu)勢,即完全的虛擬機(jī)可移植性,例如,允許在Dell服務(wù)器上運行的虛擬機(jī)重新定位到HP服務(wù)器,而不會出現(xiàn)任何問題。代價是性能會降低,內(nèi)存讀寫大概損失2%,網(wǎng)絡(luò)和硬盤I/O大概損失8%~20%。
  2. 半虛擬化(Paravirtualizaton):虛擬機(jī)中的Guest操作系統(tǒng)需要重新編譯,讓其知道處于虛擬化環(huán)境中,以便可以和 Host 操作系統(tǒng)或者VMM/Hypervisor協(xié)調(diào)工作??梢酝ㄟ^兩種方式來實現(xiàn)半虛擬化:1)重新編譯操作系統(tǒng)內(nèi)核,這需要操作系統(tǒng)品牌商提供和半虛擬化環(huán)境兼容的OSbuild;2)安裝半虛擬化的內(nèi)核模式驅(qū)動,通過安裝半虛擬化的內(nèi)核模式存儲和網(wǎng)絡(luò)驅(qū)動,可以有效降低硬盤和網(wǎng)絡(luò)讀寫延遲(從完全虛擬化的8%~20%降到2%)。
  3. 硬件輔助虛擬化( Hardware-Assisted Virtualization ):英特爾和AMD都積極致力于使其處理器實現(xiàn)虛擬化,意識到虛擬環(huán)境的存在,CPU可以直接和VMM/Hypervisor交互,讓其運行在Ring-1,這樣一來,Guest操作系統(tǒng)可以運行在Ring0,從而不需要借助于VMM/Hypervisor的Trap中斷來執(zhí)行特權(quán)指令,極大降低了特權(quán)指令的執(zhí)行延遲。在提高處理性能的同時,通過分配不同的硬件地址空間給虛擬機(jī)從而在硬件層面實現(xiàn)有效隔離。

綜合以上,直接訪問資源可以提供本機(jī)級別的性能,但是會犧牲可移植性,為了獲得更好的可移植性,虛擬化供應(yīng)商將進(jìn)一步開發(fā)可感知VMM/Hypervisor的半虛擬化Guest操作系統(tǒng)驅(qū)動程序,這些驅(qū)動程序?qū)⒈硎竞铣商摂M設(shè)備,如網(wǎng)卡和存儲控制器。使用合成設(shè)備驅(qū)動程序?qū)⒃试S Guest 操作系統(tǒng)看到一組一致的硬件資源(即使遷移到不同的Host),同時仍然能夠提供接近本機(jī)的性能。

  • 操作系統(tǒng)虛擬化技術(shù)(OS virtualization ,容器)

操作系統(tǒng)虛擬化以應(yīng)用程序為中心,允許多個虛擬環(huán)境(VE)共享一個通用操作系統(tǒng),每個環(huán)境的運行開銷比完全虛擬化的主機(jī)少得多。單就內(nèi)存而言,虛擬機(jī)的需求就相當(dāng)大。例如,假設(shè)八個虛擬機(jī)在一個Host服務(wù)器上運行,并且每個 Guest操作系統(tǒng)使用512MB的RAM。這意味著,在不計算應(yīng)用程序或VMM開銷的情況下,虛擬化的成本將是8x512 MB,或者是4GB的RAM。假設(shè)每個操作系統(tǒng)安裝需要4GB的磁盤空間,那么物理主機(jī)系統(tǒng)上需要32GB的磁盤空間來存儲所有Guest操作系統(tǒng)。

操作系統(tǒng)虛擬化的另一個好處是它不需要虛擬環(huán)境中的任何驅(qū)動程序或完整硬件仿真。這允許虛擬環(huán)境中的I/O以接近本機(jī)的性能運行。由于VE作為應(yīng)用程序外殼運行,它們提供了與VM相同的可移植性,不需要依賴于主機(jī)系統(tǒng)硬件(但是必須都在Linux操作系統(tǒng)上)。

安全性和隔離性不如虛擬機(jī)(操作系統(tǒng)提供的應(yīng)用級別隔離),單就這一點,容器技術(shù)無法替代虛擬機(jī)技術(shù)。

Host-based server virtualization(虛擬機(jī))架構(gòu)

根據(jù)有無 Host 操作系統(tǒng),虛擬機(jī)分為兩大類。

  • Type1(無操作系統(tǒng),VMM直接運行在裸硬件上)

 

Type2(有操作系統(tǒng))

 

VMM(Virtual Machine Monitor)/Hypervisor的作用

  • 為VM提供硬件模擬(完全虛擬化場景下,其他場景是直接訪問硬件)。
  • 隔離VM彼此之間的訪問(只可以通過網(wǎng)絡(luò)進(jìn)行通信,例如socket)。
  • 限制單個VM對系統(tǒng)資源的訪問,防止不穩(wěn)定的VM影響整個系統(tǒng)性能。

指令的執(zhí)行等級

指令執(zhí)行等級分為Ring0~Ring3,通常操作系統(tǒng)內(nèi)核運行在Ring0,設(shè)備驅(qū)動運行在Ring1~Ring2(也可都運行在Ring0),應(yīng)用程序運行在Ring3。

  • 傳統(tǒng)X86架構(gòu)

 

  • 虛擬機(jī)場景下(CPU硬件未協(xié)助)

 

  • 虛擬機(jī)場景下(CPU硬件協(xié)助)

 

操作系統(tǒng)虛擬化技術(shù)(OS virtualization ,容器)

架構(gòu)OS虛擬化層借助Linux操作系統(tǒng)內(nèi)核的特性(比如namespace,cgroup等)為每個應(yīng)用程序構(gòu)建獨立的虛擬環(huán)境(VE-id),各自擁有獨立的根文件系統(tǒng)、啟動腳本、init、進(jìn)程ID(同一虛擬環(huán)境下的進(jìn)程ID不重復(fù),不同虛擬環(huán)境下的進(jìn)程ID可以重復(fù)),使其認(rèn)為獨占了整個硬件系統(tǒng)。虛擬環(huán)境(VE)不需要安裝操作系統(tǒng)、設(shè)備驅(qū)動等,相比虛擬機(jī),要省去了很多內(nèi)存和硬盤開銷。同時,不需要模擬硬件指令(直接調(diào)用操作系統(tǒng)的system Call),虛擬環(huán)境中的應(yīng)用程序執(zhí)行性能接近本機(jī)。

 

內(nèi)核對容器的支持

基于容器的虛擬化使用了內(nèi)核提供的許多功能,以便隔離進(jìn)程或?qū)崿F(xiàn)其他有助于實現(xiàn)此目的的目標(biāo),大多數(shù)解決方案都基于Linux內(nèi)核,由于內(nèi)核提供了所需的大部分功能,容器工具包通常不必再次實現(xiàn)它們,內(nèi)核代碼已經(jīng)被其他被認(rèn)為是穩(wěn)定的并且已經(jīng)在生產(chǎn)中使用的軟件所使用。如果內(nèi)核提供的機(jī)制存在安全問題,則會隨著內(nèi)核更新而分發(fā)修復(fù)程序,這意味著不需要修補(bǔ)容器軟件,用戶只需保持內(nèi)核的最新狀態(tài)。

  • chroot:chroot機(jī)制允許更改進(jìn)程及其所有子進(jìn)程的根目錄,用于限制對單個文件夾的文件系統(tǒng)訪問,目標(biāo)進(jìn)程及其子進(jìn)程將該文件夾視為根文件夾(/)(不提供進(jìn)程隔離)。
  • namespace(by IBM):內(nèi)核命名空間是進(jìn)程隔離的基礎(chǔ),是實現(xiàn)基于容器的虛擬化的關(guān)鍵概念之一,它能夠隔離進(jìn)程、進(jìn)程組甚至完整的子系統(tǒng)(如進(jìn)程間通信或者內(nèi)核的網(wǎng)絡(luò)子系統(tǒng))。每個命名空間中的進(jìn)程ID分配是獨立的,不同命名空間中的進(jìn)程可能具有相同的進(jìn)程ID。
  • Control group(by Google ):cgroup是一種跟蹤進(jìn)程和進(jìn)程組(包括創(chuàng)建的子進(jìn)程)的機(jī)制,它提供的鉤子允許其他子系統(tǒng)擴(kuò)展這些功能,并實現(xiàn)細(xì)粒度的資源控制和限制。將資源分配給進(jìn)程、進(jìn)程組并管理這些分配的能力允許規(guī)劃和控制容器的使用。同樣,若有進(jìn)程已聲明了對某些資源的占用,其他進(jìn)程則無法使用。
  • Mandatory Access Control :MAC策略通常用于限制對敏感資源的訪問(而這些訪問在一定上下文下是不需要的),以減輕從容器內(nèi)部對主機(jī)和其他容器的攻擊,從而提高容器虛擬化技術(shù)的安全性。

虛擬機(jī)技術(shù)舉例(VMWare ESXi)

VMWare在虛擬機(jī)市場處于領(lǐng)導(dǎo)地位,以VMWare的ESXi舉例。

 

VMkernel提供與操作系統(tǒng)類似的功能,例如,進(jìn)程創(chuàng)建與控制,信號,文件系統(tǒng),進(jìn)程和線程等,它是專門設(shè)計用來支持運行多個虛擬機(jī),提供如下核心功能:資源調(diào)度,設(shè)備驅(qū)動,輸入輸出棧等。直接運行在硬件設(shè)備上面,不再需要借助通用的操作系統(tǒng)。

VMWareESXi優(yōu)勢(相比其他虛擬機(jī)平臺)

  • 極少的狀態(tài)信息:ESXi系統(tǒng)可以作為無狀態(tài)計算節(jié)點來處理,所有的狀態(tài)信息都可以從保存的配置文件中輕松上傳。
  • 更好的安全性:ESXi僅使用少量的內(nèi)存(32MB),接口少,從而使得被攻擊的危險降到最低。
  • 硬件級的可靠性:當(dāng)它集成到固件中時,軟件比存儲在磁盤上時更不容易損壞,通過消除本地磁盤驅(qū)動器可以提供更高的系統(tǒng)可靠性。

容器技術(shù)舉例(Docker)

Docker鏡像樣例

 

從鏡像到容器(實例化)

 

鏡像內(nèi)容分發(fā)

 

容器虛擬化技術(shù)從FreeBSD jails,solaris Zones,到Linux Containers(LXC),再到這幾年名聲大噪的Docker Containers,極大的提高了開發(fā)、測試、生產(chǎn)環(huán)境部署的效率。Docker容器技術(shù)通常是指如下三個部分。

  • 鏡像(image):鏡像是一個靜態(tài)規(guī)范,包括應(yīng)用程序代碼和運行時配置設(shè)置,規(guī)定了容器運行起來后是什么樣子,它由若干個只讀層組成,一旦創(chuàng)建完成就不能修改(除非基于此鏡像再創(chuàng)建一個新鏡像),可通過Dockerfile來組織創(chuàng)建鏡像的多個命令。
  • 容器(Container):容器是指鏡像的實例化,每個運行的容器在只讀的鏡像基礎(chǔ)上有一個可寫層,在容器運行期間發(fā)生變化的數(shù)據(jù)都保存在這個可寫層,容器被刪除后,這個可寫層內(nèi)容也會被刪除。通過Docker–commit可顯示的進(jìn)行保存(生成另外一個新的鏡像),不過,在實際業(yè)務(wù)場景,一般不會也不需要這么做。
  • Docker Daemon(或者叫Docker Engine):介于容器和Linux操作系統(tǒng)之間的一個廋層,用于管理容器的持久運行時環(huán)境,正因為通過這一層來屏蔽底層差異,才可以讓Docker容器運行在任何Linux服務(wù)器上。

虛擬化技術(shù)在云平臺的應(yīng)用(Google Cloud Platform,GCP)

Google Compute Engine(GCE,Google計算引擎)是Google云平臺的基礎(chǔ)設(shè)施即服務(wù)(IaaS)組件,它建立在運行Google搜索引擎、Gmail、YouTube和其他服務(wù)的全球基礎(chǔ)設(shè)施之上。GCE允許用戶按需啟動虛擬機(jī)(VMs),VMs可以從用戶創(chuàng)建的標(biāo)準(zhǔn)圖鏡像或自定義鏡像啟動。

GCE采用KVM作為其虛擬機(jī)的VMM/Hypervisor,KVM(Kernel-based Virtual Machine)是一個完全虛擬化方案,同時包含了CPU硬件提供的虛擬化技術(shù)擴(kuò)展(IntelVT或AMD-V),適用于x86硬件上的Linux??杉虞d的內(nèi)核模塊(kvm.ko,intel的是kvm-intel.ko,amd的是kvm-amd.ko)提供核心虛擬化基礎(chǔ)架構(gòu)。使用KVM,可以運行多個含有未經(jīng)修改的Linux或Windows Guest OS的虛擬機(jī),每個虛擬機(jī)都有專用的虛擬硬件:網(wǎng)卡、磁盤、圖形適配器等。

通過K8s容器編排系統(tǒng)在VMs之上部署多個容器,一方面可以快速啟動程序(容器比虛擬機(jī)啟動時間要小很多),二是可以有效降低虛擬機(jī)的額外負(fù)載(容器可以部署多個,虛擬機(jī)則只能部署少量的),三是可以實現(xiàn)容器的自動升級、節(jié)點修復(fù)、自動擴(kuò)縮容等特性。

 

責(zé)任編輯:武曉燕 來源: jameswhale的技術(shù)人生
相關(guān)推薦

2013-04-28 14:21:47

服務(wù)器虛擬化

2013-05-09 09:28:30

服務(wù)虛擬化云計算

2021-01-16 23:27:32

云計算容器工具

2014-05-19 16:46:00

虛擬化技術(shù)虛擬機(jī)

2009-07-29 17:19:02

hypervisor-container-b

2010-03-11 16:06:34

云計算服務(wù)

2021-07-15 18:01:14

虛擬化應(yīng)用測試軟件開發(fā)

2012-05-16 11:52:23

虛擬化

2014-06-03 11:19:00

文思海輝虛擬賬戶支付寶

2010-11-19 16:53:14

桌面虛擬化虛擬機(jī)

2023-05-29 07:30:56

容器虛擬機(jī)硬件

2012-07-18 10:30:57

CA服務(wù)虛擬化社區(qū)

2011-06-27 09:24:19

虛擬化私有云

2021-06-28 10:13:41

虛擬服務(wù)器物理服務(wù)器服務(wù)器

2015-09-09 11:24:40

數(shù)據(jù)中心虛擬化容器

2013-04-18 09:45:43

服務(wù)器虛擬化云計算

2012-08-17 11:36:23

虛擬化

2014-02-21 11:20:34

KVMXen虛擬機(jī)

2017-06-06 15:34:55

2013-03-27 09:48:05

CA虛擬化軟件
點贊
收藏

51CTO技術(shù)棧公眾號